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

Capability Fire Arrow Aidbox
Storage technology HAPI FHIR JPA on PostgreSQL. Standard HAPI schema; data is portable to any HAPI-based system. PostgreSQL with custom JSONB layout, indexes, and extensions tuned by Health Samurai for high-throughput FHIR workloads.
Implementation language Java 17, Spring Boot, on top of HAPI FHIR JPA Clojure
FHIR versions FHIR R4 Multi-version (FHIR R3, R4, R5, R6)
Authorisation model Rules combining role, resource type, and operation, dispatched to a validator (compartments, organisation-scoped, care-team, identity-conditional). Property filters and side-channel protection on search. AccessPolicy resources evaluated through one of several engines: Matcho pattern matching, JSON Schema, raw SQL queries, and complex AND/OR combinations. Linkable to User, Client, and Operation resources.
GraphQL API Read-only on Fire Arrow Server, with separate GraphQL authorisation operations so REST and GraphQL share the same access boundary Built-in GraphQL endpoint
SQL on FHIR HFQL (beta) on Fire Arrow Server, evaluated through the same authorisation rules as REST and GraphQL Native SQL-on-FHIR via ViewDefinition resources, materialised as views, tables, or materialised views in the database
Terminology services Not included in the server itself. Fire Arrow Server runs alongside an external FHIR terminology service such as Snowstorm Lite (free) or Snowstorm, deployed next to it. Built-in terminology server with ICD-10, SNOMED CT, LOINC support and custom code system / value set management
Implementation Guide management Not provided. Profiles can be loaded as FHIR resources but there is no IG management surface. Artifact Registry for runtime loading of Implementation Guides (US Core, mCODE, IPS, IPA, custom IGs)
Custom resource types Use FHIR Extensions or define new types via implementation guides handled at the application layer Custom resources defined via FHIR Schema or StructureDefinition, with new database tables generated for them
Multi-tenancy Per-deployment tenancy. Multiple Fire Arrow Servers can run side by side; the application-layer rules can also model multi-organisation patterns inside a single deployment via the organisation-scoped legitimate-interest rule. Logical multi-tenancy via Organization-scoped endpoints, plus Multibox for fully separate databases per tenant
Structured data capture Materialised CarePlans schedule Questionnaires to patients, raise Tasks at their due time, and store the answers as standard QuestionnaireResponse resources. The form renderer and Form Builder UI are not included in the server. Built-in SDC engine and Form Builder UI
CarePlan-to-Task scheduling Server-side materialisation: CarePlan activities become Task resources on a recurring schedule, transitioning to ready at their due time, with Subscriptions firing for each Build via Aidbox subscriptions, jobs, or external code
Subscription channels REST hook, email, WebSocket, Azure Storage Queue Topic-based FHIR Subscriptions
Patient matching (MPI) Out of scope Built-in patient matching
Admin UI Resource browser, GraphQL explorer, rule debugger, configuration UI Aidbox UI: FHIR viewer, AccessPolicy debugger, IG and ViewDefinition management
Extension model Configuration first. Server: rule-based authorisation, scheduling, and subscriptions configured rather than coded. Core: pre/post-request and pre-response webhooks for custom validators or response enrichment. SDKs in TypeScript, Python, and C#. Raw SQL access. RPC operations registered as resources.
Open-source components HAPI FHIR JPA (data layer) is open source. Fire Arrow's application layer is commercial. Aidbox is commercial. Health Samurai contributes related open-source projects (FHIR Schema, SDKs, AidboxUI components).
Deployment options Self-hosted Docker container plus PostgreSQL Self-hosted on-prem or cloud (Docker, Kubernetes), or managed Aidbox Cloud operated by Health Samurai

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.

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.