Fire Arrow with Aidbox
Fire Arrow and Aidbox
Both Fire Arrow Server and Aidbox are self-contained FHIR backends running on PostgreSQL. Aidbox is a broad FHIR-first platform that bundles terminology services, Implementation Guide management, multi-version FHIR, structured data capture forms, multi-tenancy, and SDKs in one product. Fire Arrow Server is narrower, focused on the application backend layer for digital health products: rule-based authorisation tuned to clinical relationships, GraphQL with consistent search narrowing, server-side CarePlan scheduling that schedules Questionnaires to patients, FHIR Subscriptions, and an admin UI. Both speak FHIR R4, so a move between them is a FHIR Bulk Export followed by a FHIR import.
How Fire Arrow Server and Aidbox relate
- Both are self-contained FHIR backends
Each runs as a Docker container in front of PostgreSQL and serves a FHIR REST API plus additional surfaces (GraphQL, SQL-on-FHIR). Neither is a facade in front of someone else's FHIR server.
- Aidbox is broader
Aidbox is a FHIR-first platform: a built-in terminology server, an Artifact Registry for Implementation Guides, multi-version FHIR (R3 to R6) with profiling, multi-tenancy (Organization-scoped or via Multibox for separate databases), structured data capture forms, patient matching, and SDKs in TypeScript, Python, and C#.
- Fire Arrow Server is narrower and opinionated
FHIR R4 only. No bundled terminology server (Snowstorm Lite or Snowstorm runs alongside it where SNOMED CT lookup and ValueSet expansion are needed), no IG management UI, no SDC form renderer. The depth is in the application backend layer: clinical-relationship-aware authorisation, search narrowing applied consistently across REST and GraphQL, server-side CarePlan-to-Task scheduling that drives Questionnaires to patients, FHIR Subscriptions across REST hook, email, WebSocket, and Azure Storage Queue, durable and one-time API tokens, and a rule debugger.
- Different authorisation philosophies
Aidbox's AccessPolicy model is configurable through several engines (Matcho pattern matching, JSON Schema, raw SQL, and combinations). Fire Arrow's authorisation is a constrained rule model expressed as role plus resource plus operation plus a validator (compartments, organisation-scoped, care-team, identity-conditional). The two reflect different audiences: Aidbox favours a power-user, code-adjacent style; Fire Arrow favours a configuration-driven model that an audit reviewer can read top to bottom.
- Open-source data layer underneath Fire Arrow Server
Fire Arrow Server uses HAPI FHIR JPA as its data layer. The database schema is HAPI's, which keeps the storage tier portable to any HAPI-based system. Aidbox's storage is a custom PostgreSQL JSONB layout owned by Health Samurai.
- Migration via FHIR Bulk Export and import
Both servers implement the FHIR Bulk Data Access specification. A Bulk Export from one followed by a FHIR import into the other moves data over losslessly in one piece, without a custom ETL pipeline.
Who this is for
Architects, CTOs, and product leaders evaluating self-hosted FHIR backends for a digital health product or platform.
Clinical applicability
A product team building patient and clinician applications, with patient compartments, organisation scoping, care-team relationships, and scheduled patient questionnaires, can use Fire Arrow Server's validator and filter model to keep access rules close to the FHIR API. Terminology workloads are handled by an external service such as Snowstorm Lite or Snowstorm running next to Fire Arrow Server. A platform team that wants runtime Implementation Guide management, an embedded terminology server, an SDC form renderer, multi-tenancy, and broad SDK support across multiple languages bundled in one product may find Aidbox's wider surface a better fit.
Capability comparison
Two FHIR backends with different scopes
Aidbox and Fire Arrow Server occupy overlapping but distinct points in the FHIR backend space. Both run as self-contained services on PostgreSQL, both expose FHIR REST and additional read surfaces (GraphQL, SQL-on-FHIR), and both can be the system of record for a digital health product. The difference is scope.
Aidbox is a FHIR-first platform: terminology services, Implementation Guide management, multi-version FHIR, structured data capture forms, patient matching, and SDKs in three languages, all bundled in one product. The breadth makes it a strong fit for healthcare data platforms, clinical data repositories, and applications that need terminology, profiling, or analytics depth alongside the FHIR API.
Fire Arrow Server is narrower. It is a FHIR R4 backend focused on the application-facing layer: authorisation tuned to clinical relationships, GraphQL with the same access boundary as REST, server-side CarePlan-to-Task scheduling, FHIR Subscriptions, durable and one-time API tokens, and a rule debugger. Terminology workloads are handled by a service such as Snowstorm Lite or Snowstorm running alongside it. There is no IG management UI, no SDC form renderer, and no patient matching engine. For digital health products that primarily need a FHIR API with a strong authorisation and workflow layer, the smaller surface is the point.
Architecture and storage
Aidbox is built in Clojure on top of PostgreSQL. The storage layer is a custom JSONB layout with Health-Samurai-managed indexes and PostgreSQL extensions, tuned for FHIR query patterns. Aidbox publishes performance figures in the range of 20,000 resources per second on bulk import and several thousand requests per second on CRUD against multi-million-record datasets.
Fire Arrow Server is built in Java on Spring Boot, with HAPI FHIR JPA as its data layer and PostgreSQL underneath. The schema is HAPI's standard JPA schema. The trade-off is straightforward: Aidbox can tune its storage tier in ways HAPI cannot; Fire Arrow inherits HAPI's open-source data layer, which keeps the storage tier portable to any other HAPI-based deployment.
Authorisation models compared
Aidbox's AccessPolicy model is configurable through several evaluation engines. Matcho is a declarative pattern-matching syntax intended for the common cases. JSON Schema validates the request object. SQL embeds raw queries against the underlying database. Complex combines engines with AND and OR. Policies can link to User, Client, or Operation resources, and any number of policies can apply to a request: the request is authorised as soon as one of them passes. The flexibility is real, and so is the responsibility on the policy author to keep the rule set consistent across access paths.
Fire Arrow's authorisation is a constrained model. Each rule combines a role, a resource type, an operation, and a validator. Validators cover the standard FHIR compartments (Patient, Practitioner, RelatedPerson, Device), an organisation-scoped legitimate-interest rule, and a care-team membership rule. Identity-conditional rules narrow a rule to a subset of users in a role using FHIRPath expressions on the caller's identity resource. Property filters strip fields per role with explicit blocked-search-parameter lists to close the indirect-inference paths. The rule set is deny by default, and a debug header returns a structured trace of which rule matched and why a request was denied.
Both models can express the same access patterns at the bottom; they differ in shape. Aidbox's surface is power-first. Fire Arrow's surface is constraint-first, designed so the same configuration can be reviewed by a non-developer (an information security officer, a compliance reviewer) and traced top to bottom without reading SQL.
Where each goes deeper
Aidbox goes deeper on FHIR-data tooling: a built-in terminology server with ICD-10, SNOMED, and LOINC; an Artifact Registry that loads Implementation Guides at runtime; custom resource definitions through FHIR Schema or StructureDefinition; SQL-on-FHIR with materialised views; multi-FHIR-version support; multi-tenancy in two flavours (Organization-scoped or fully separate databases via Multibox); a Form Builder UI and SDC form renderer; SDKs in TypeScript, Python, and C#. The model is platform-shaped: customers extend Aidbox by writing code against it.
Fire Arrow Server goes deeper on the application backend layer: identity-aware authorisation rules tied to FHIR identity resources (Patient, Practitioner, RelatedPerson, Device); search narrowing applied at query time across REST, GraphQL, and SQL-on-FHIR; server-side CarePlan-to-Task materialisation that schedules Questionnaires to patients and stores their answers as standard QuestionnaireResponse resources; subscription channels including a direct Azure Storage Queue integration; durable and one-time API tokens tied to FHIR identities; a rule debugger that explains denied requests. Terminology workloads are delegated to a service such as Snowstorm Lite or Snowstorm running next to Fire Arrow Server. The model is product-shaped: customers configure Fire Arrow rather than writing SDK code against it.
Migration paths
Both servers implement the FHIR Bulk Data Access specification. The straightforward migration path between Aidbox and Fire Arrow Server, in either direction, is a FHIR Bulk Export from the source followed by a FHIR import into the target. The data moves over losslessly because both ends speak FHIR R4 with the same resource semantics. Implementation Guides, ValueSets, and CodeSystems used by the application are FHIR resources too and are exported alongside the rest.
Workflow primitives that are server-side on Fire Arrow (CarePlan-to-Task scheduling) but external on Aidbox (or vice versa) are configured rather than migrated: the underlying FHIR resources move with the rest of the data, and the scheduling or background-job configuration is reapplied on the destination side.
Fire Arrow Core does not target Aidbox. Core is built around Microsoft's open-source FHIR server, the same engine that powers Azure Health Data Services, and the connector model assumes that surface. Running Core in front of Aidbox is technically possible against the FHIR REST endpoint, but Aidbox already includes its own authentication, authorisation, and an admin UI, so the practical fit is limited.
When to choose which
Choose Aidbox when the platform is the product. A clinical data repository, a healthcare data platform serving multiple downstream applications, an interoperability hub, an EHR backend that needs runtime IG loading, terminology binding validation, multi-FHIR-version support, or a multi-tenant SaaS with strict per-tenant data isolation lives most comfortably on a broad FHIR platform. The breadth, the SDK story, and the managed cloud option are direct fits for that shape of work.
Choose Fire Arrow Server when the application is the product. A digital health product with patient, practitioner, and sponsor roles; a remote-monitoring or ePRO programme that needs scheduled patient questionnaires; an internal clinical workflow with CareTeams and organisation scoping; an AI-agent product that uses the FHIR backend as the authorisation boundary. The depth is in the application layer, the configuration is reviewable end to end, and HAPI underneath keeps the data layer portable.
Both servers can do most of what the other does. The choice is about which side of the stack should be the deepest part of the product.
Related docs
FAQ
Can Fire Arrow Server replace Aidbox without a custom migration tool?
Yes, in most cases. Both servers implement the FHIR Bulk Data Access specification. A FHIR Bulk Export from Aidbox followed by a FHIR import into Fire Arrow Server moves the data over losslessly. Custom resources defined in Aidbox via FHIR Schema or StructureDefinition need a deliberate review on the destination side, since Fire Arrow Server is FHIR R4 and treats custom types as Extensions or implementation-guide-defined resources rather than as new database tables.
Does Fire Arrow Server have a terminology server?
Not built in. Fire Arrow Server runs alongside an external FHIR terminology service deployed next to it. Snowstorm Lite (free) is a common choice for SNOMED CT lookup and ValueSet expansion; Snowstorm covers fuller terminology workloads. Aidbox includes a built-in terminology server, which is one of its differentiators.
Does Fire Arrow Server support multi-version FHIR?
No. Fire Arrow Server is FHIR R4. Aidbox supports FHIR R3 through R6 in a single deployment. If multi-version FHIR is a hard requirement, Aidbox is a closer fit.
Does Fire Arrow Server have SDKs?
No language-specific SDKs ship with Fire Arrow Server. Clients use the FHIR REST API and GraphQL directly, with any standard FHIR client library. Aidbox publishes TypeScript, Python, and C# SDKs alongside the server.
How do the authorisation models compare in practice?
Both models can express the same set of access patterns. Aidbox's AccessPolicy resource model is more flexible at the surface (raw SQL is available, multiple engines compose) and assumes a power-user audience writing policies as code. Fire Arrow's rule model is more constrained (role, resource type, operation, validator) and is designed to stay readable for non-developers and audit reviewers. The right answer depends on who owns the policies and how the team prefers to review them.
Why is Fire Arrow Core not a good fit in front of Aidbox?
Fire Arrow Core is built around Microsoft's open-source FHIR server, the same engine behind Azure Health Data Services. Aidbox already includes its own authentication, authorisation, GraphQL, and admin UI, so the value Core normally adds (auth + GraphQL in front of a managed FHIR service) overlaps with what Aidbox already provides. The clearer comparison is Fire Arrow Server vs Aidbox.
Are there managed hosting options for Fire Arrow Server?
Fire Arrow Server is self-hosted as a Docker container plus PostgreSQL today. Aidbox additionally offers a managed cloud option operated by Health Samurai. Where the regulatory or operational fit calls for managed hosting on the Fire Arrow side, Evoleen offers certified hosting as a separate engagement.