Nirmitee.io

FHIR integration services · United States

FHIR Integration Services

FHIR R4 APIs, SMART on FHIR apps, bulk data pipelines and CDS Hooks services for health tech products, payers and providers. We build to US Core 6.1.0 and SMART App Launch 2.0, put FHIR facades over systems that never spoke it, validate every profile and prove conformance with Inferno before your customers test it.

  • FHIR R4
  • US Core 6.1.0
  • SMART v2
  • Bulk $export
  • CDS Hooks
  • Inferno
  • USCDI v3
  • Da Vinci

From your data to a conformant FHIR API.
  1. 01Your systems

    A database, an HL7 v2 feed, a legacy EHR or an existing API holds the clinical data.

  2. 02FHIR layer

    Map to US Core profiles, bind LOINC, SNOMED CT and RxNorm, authorize with SMART and validate every resource.

  3. 03Consumers

    EHR-launched apps, patient apps, payers and analytics read by REST, bulk export or CDS Hooks.

The short answer

FHIR Integration Services, in Short

Nirmitee designs, builds and tests FHIR integrations for health tech companies, payers and providers. We build FHIR R4 APIs that conform to US Core 6.1.0, SMART on FHIR apps and backend services on SMART App Launch 2.0 with granular scopes, bulk data export pipelines, CDS Hooks services and FHIR facades over legacy databases and HL7 v2 feeds. We validate every resource against its profile, run the ONC Inferno test kits and publish our own work openly: our headless EHR passes all 47 (g)(10) SMART App Launch tests and our Da Vinci CRD, DTR and PAS servers are public with their Inferno results.

Who it is for
Health tech teams connecting to EHRs, EHR vendors pursuing (g)(10), payers building CMS-0057-F APIs, and providers modernizing legacy interfaces.
What we build
FHIR R4 servers and facades, US Core profiles and validation, SMART apps and backend services, bulk export pipelines, CDS Hooks services and HL7 v2 to FHIR mapping.
The outcome
A FHIR API or app that passes conformance testing, survives production load and gives your customers the data they expect.

FHIR standards

FHIR Standards and Versions We Build to

Published and required are different things. These are the versions US buyers are held to in 2026 and what each one means for your build.

StandardVersionWhat it coversWhat we design for
FHIR R44.0.1The base release used by US regulation, EHR APIs and payer APIsR4 as the contract, with the mapping layer kept separate so R5 or R6 later is a translation, not a rewrite
US Core6.1.0 (USCDI v3)Profiles, must-support elements and search parameters for US clinical dataThe version required for ONC (g)(10) certification from 1 January 2026, with must-support handled as optional data, not guaranteed data
SMART App Launch2.0OAuth 2.0 authorization for EHR launch, standalone launch and backend servicesGranular v2 scopes such as patient/Observation.rs, PKCE, asymmetric client authentication and token introspection
Bulk Data AccessFlat FHIR $exportAsynchronous export of populations as NDJSON at system, Group and Patient levelBackend services authorization, _since for incremental exports and pipelines that isolate export from live traffic
CDS Hooks2.0Decision support services called from the EHR at points such as patient-view and order-signResponse time budgets, prefetch templates and cards that clinicians act on
Da Vinci guidesCRD, DTR, PAS, PDexPrior authorization and payer data exchange under CMS-0057-FPayer APIs due from January 2027, with CRD on CDS Hooks and PAS mapped to X12 278
HL7 v2 to FHIRv2-to-FHIR guideMapping ADT, ORU, ORM and other messages to FHIR resourcesEvent feeds in v2, queries in FHIR, one model underneath

R5 (5.0.0) is published and R6 is in ballot, but US regulation and EHR APIs run on R4. We build R4 today and keep the path to later releases open.

The comparison that actually matters

Facade or Repository. Everything Else Follows from This.

Not “which FHIR server should we buy”: that's a procurement question. This is the one that decides your latency, your search surface, whether Bulk Export is even possible, and how much of certification you can pass.

A · FAÇADE: MAP ON EVERY REQUESTB · REPOSITORY: MAP ONCE, ON INGESTClientFHIR façadetranslate + mapYour databaseas it is todayEvery read is a live query✓ One copy of the truth, nothing to keep in sync✓ Always current, by construction✗ Your source system's latency becomes your API's latency✗ FHIR search is only as rich as what you can translate✗ Bulk Export means mapping the population, per export✗ _include, chaining and sorting get hard fastRight when: modest volume, freshness is critical, read-mostlySourceMap onceon ingestFHIR repositoryindexed, searchableReads never touch the source✓ Predictable latency under load✓ Full search: chaining, _include, sorting, paging✓ Bulk Export is a database job, not a mapping job✓ Validate the agreed conformance scope✗ You now own ingest, backfill and reconciliation✗ Data is as fresh as your pipeline, not your databaseRight when: scale, real search, Bulk Export, certification

A hybrid is the right answer for most production systems: a repository for everything that must be searchable or exportable, with a live pass-through for the few resources where a stale answer is unacceptable. Choosing that deliberately costs far less than arriving at it after a rebuild.

What you're deciding
Façade
Repository
Read latency
Inherited from the source, plus mapping on every call. A slow query stays slow.
Yours to control. Indexes are yours to tune.
Freshness
Always current. This is the one thing a façade wins outright.
As fresh as your ingest. Minutes, or seconds, but never zero.
Search surface
Limited to what you can translate into the source query language. Chained and reverse-chained search is where façades stall.
The full specification, if you index for it.
Bulk Export
Expensive: every export re-maps the population, and it competes with live traffic.
A batch job over data already in shape.
Where the cost lands
Runtime. It grows with traffic, forever.
Build and storage. It's paid once, then amortized.

The wrong way to arrive at an answer is to start coding before this conversation has happened. We settle it in the first two weeks, in writing.

The second decision

Four Ways Data Leaves a FHIR Server.

Most performance problems in FHIR products are really a mismatch between the access pattern and the use case. Pick the wrong one and no amount of tuning saves you.

REST Search and Read

One patient, now. The default, and the right answer more often than people admit.

1 to 10³
resources per call

Where it's right

Anything driven by a user looking at one patient. Chart views, decision support, a clinician opening your app. Latency matters, volume doesn't.

Where it breaks

  • _include and _revinclude quietly turning one call into thousands of rows
  • Deep paging: offset pagination degrades badly past a few pages
  • Chained search across resources a façade can't translate
  • Clients polling _lastUpdated because nobody built subscriptions

What we do

Design the search parameter set deliberately and index for it, cap includes, use cursor-style paging, and load-test with a realistic patient, not the three-resource test patient everyone develops against.

Most products need two of these. Very few need all four, and building all four is how a roadmap disappears.

What breaks in production

Six Failure Modes to Design for.

Include these scenarios in testing; successful sandbox requests alone do not establish production readiness.

01

The Three-resource Test Patient

Everything is fast against sandbox data. The first real patient has 900 Observations and eleven years of history, and the chart view times out.

What we doGenerate realistic synthetic populations and load-test before go-live, not after.
02

Must-support Treated as Guaranteed

A conformant server returns nothing for an element the UI assumed was always present. Blank screens, and an argument about whose bug it is.

What we doImplement the profile’s actual cardinality and must-support rules, and handle permitted missing data explicitly.
03

Terminology That Never Got Mapped

Codes arrive in a local system nobody translated to LOINC or SNOMED CT. The data stores fine and is invisible to every rule you wrote.

What we doValidate codes on ingest and quarantine the unrecognised instead of accepting them.
04

Pagination That Degrades

Offset paging works for three pages and collapses at three hundred. Usually found by whoever built the export, at the worst moment.

What we doCursor-based paging and bounded result sets from the first release.
05

Identity Assumed, Not Resolved

The same person arrives under different identifiers from different systems, and quietly becomes two patients in your product.

What we doResolve on assigning authority and identifier type, and treat merges as a tested event.
06

Scopes Locked in Too Wide

An over-broad scope set sails through development and fails a customer's security review after the registration has been locked.

What we doDesign the minimum viable scope set up front and validate it before anything is marked production-ready.

What we build

What Our FHIR Integration Services Build

Pick the workstreams your product needs. Each ships with a specification, tests and an owner.

01

FHIR R4 APIs and Servers

Conformant R4 APIs on HAPI FHIR, a managed FHIR store or your own service, with US Core profiles, search parameters, paging and a CapabilityStatement that tells the truth.

FHIR R4 · US Core 6.1.0 · CapabilityStatement

US Core implementation guide →
02

FHIR Facades Over Legacy Systems

A FHIR API in front of a database, legacy EHR or HL7 v2 feed, mapping on request or on ingest depending on latency, search and bulk export needs.

Facade · repository · hybrid · HL7 v2 to FHIR

FHIR facade architecture guide →
03

SMART on FHIR Apps and Backend Services

EHR-launched and standalone apps and backend services on SMART App Launch 2.0, with the smallest scope set that supports the workflow and app listing support for Epic and Oracle Health.

SMART v2 · PKCE · private_key_jwt · OpenID Connect

Epic SMART on FHIR →
06

Validation and Conformance Testing

Profile validation in CI with the HL7 validator, Inferno test kit runs for (g)(10), US Core and Da Vinci guides, and realistic synthetic patients for load testing.

HL7 validator · Inferno · Touchstone · Synthea

Testing a FHIR API with Inferno →

Buyer decisions

FHIR Build Options Compared

Buy the storage, build the mapping. These are the options we deploy most often, and where each one fits.

OptionBest fitStrengthsWhat to plan for
HAPI FHIR (open source)Teams that want full control and run JavaComplete R4 server, validation and search, widely usedYou run it: database tuning, upgrades and on-call
Managed FHIR store (AWS HealthLake, Google Cloud Healthcare API, Azure Health Data Services)Teams already on that cloudManaged scaling, bulk export and integration with the cloud's analyticsEach service's search and profile support, and cloud lock-in
Commercial FHIR serverPayers and large platforms with complex conformance needsVendor support, advanced search and toolingLicense cost and the vendor's roadmap
FHIR facade over your databaseProducts whose data already lives in their own modelOne copy of the data, always currentLatency, limited search and expensive bulk export
Interoply (our platform)Products that need FHIR, HL7 v2 and X12 behind one APIMapping, connectors and monitoring in one placeFit with your hosting and data residency rules

The architecture decision (facade, repository or hybrid) matters more than the server brand. We decide it with you on your data and volumes before anyone writes code.

Integration boundaries

FHIR Integration Boundaries: Who Owns What

FHIR projects stall on access and ownership, not code. We write the split down first.

EHR vendors and their customers

Epic, Oracle Health, athenahealth and others own app registration, scopes and production enablement, and each health system decides whether to turn your app on. We prepare the registration, security review answers and test evidence.

Your product

Owns the data model and the workflow. We map every field your product needs to a profile and list the ones FHIR does not carry.

The FHIR layer (ours)

Server or facade, profiles, mapping, terminology, SMART authorization, validation, bulk export and monitoring. Defects in this layer are ours to fix.

Certification and compliance

ONC certification is granted through an accredited test lab, and CMS-0057-F obligations are confirmed by your compliance team. We build and test to the named guides and hand over the Inferno evidence.

Security and PHI

We sign a BAA, design least-privilege scopes, encrypt in transit and at rest, and work inside our ISO 27001:2022 certified management system.

Deliverables

FHIR Integration Deliverables

Everything below lands in your repository and your runbook.

01

Architecture decision record

Facade, repository or hybrid, decided on your data, volumes and roadmap, in writing.

02

Mapping inventory

Every required field mapped to a resource, profile, element and terminology binding.

03

Code and configuration in your repository

Server or facade configuration, mappings, SMART setup and infrastructure as code.

04

Conformance evidence

HL7 validator results in CI and Inferno test kit reports for the guides in scope.

05

Performance and failure tests

Load tests with realistic patients, paging, _include limits, token expiry and outage behavior.

06

Runbook and API documentation

Endpoint documentation for your customers, monitoring, alerts and an upgrade plan for new US Core versions.

Delivery phases

FHIR Integration Timeline

A US Core FHIR API over existing data typically takes 10 to 16 weeks. A SMART app connecting to one EHR typically takes 6 to 10 weeks, and the EHR's app review sets much of that date.

  1. 01

    Architecture and mapping

    Weeks 1 to 3

    Architecture decision, mapping inventory, profile and version choices agreed

  2. 02

    Build

    Weeks 3 to 10

    Server or facade, mappings, SMART authorization and bulk export built with validation in CI

  3. 03

    Conformance and load testing

    Weeks 8 to 13

    Inferno runs, realistic load tests and security review answers prepared

  4. 04

    Launch and hypercare

    Weeks 12 to 16

    Production enablement with the EHR or customer, monitoring live and runbook handed over

Cost drivers

What Drives FHIR Integration Cost

You get a fixed scope and price after one scoping call. These are the factors that move it.

Resource and profile scope

The number of US Core or Da Vinci profiles in scope drives mapping and testing effort.

Source data quality

Clean, coded source data maps quickly; free text and local codes need terminology work.

Architecture

A facade, a repository with ingest and backfill, or a hybrid each carry different build and run costs.

Access patterns

REST reads, bulk export, subscriptions and CDS Hooks each add their own design and tests.

EHR and certification testing

App reviews with EHR vendors and (g)(10) or payer conformance testing add formal cycles.

Hosting and support

Server licensing or cloud costs, monitoring and on-call are priced per environment.

Book a call ↗

Proof

FHIR Work You Can Check

Client names are withheld. The code and test results linked here are public.

Public GitHub repository

Headless EHR: 47/47 ONC (G)(10) SMART Tests

Our open-source headless EHR serves FHIR R4 and passed all 47 tests in the ONC (g)(10) SMART App Launch STU2 standalone patient app scenario in Inferno on 11 June 2026, including SMART v1 and v2 scopes and asymmetric client authentication.

View the headless EHR on GitHub →

Public GitHub repositories

Da Vinci CRD, DTR and PAS Servers

Open-source servers for coverage requirements discovery on CDS Hooks, documentation templates and prior authorization support, tested with the Inferno Da Vinci test kits.

View the CRD server on GitHub →

Anonymized delivered work

FHIR-native Provider Platform

For a digital health company we built a provider platform in which every patient, appointment, care plan, lab result and invoice is a standard FHIR resource on a FHIR server, with no private schema.

Nirmitee platform

Interoply Integration Platform

Our platform runs FHIR, HL7 v2 and X12 connectors behind one API, with mapping, monitoring and replay built in.

See Interoply →

Security

ISO 27001:2022 Certified, BAAs Signed

We are ISO 27001:2022 certified and sign Business Associate Agreements for work that touches patient data.

FAQ

FHIR Integration Services: Questions Buyers Ask

What Are FHIR Integration Services?

FHIR integration services design, build and test the connections that exchange healthcare data using HL7 FHIR. The work covers architecture, mapping your data to FHIR resources and US Core profiles, terminology binding, SMART on FHIR authorization, bulk export, CDS Hooks, validation, conformance testing with Inferno, EHR app registration and production monitoring.

Which FHIR version and profiles should we build to?

Build to FHIR R4 (4.0.1). For US clinical data use US Core 6.1.0, which ONC (g)(10) certification requires from 1 January 2026 alongside USCDI v3 and SMART App Launch 2.0. Payer APIs under CMS-0057-F add the Da Vinci guides. R5 and R6 are not used by US regulation or EHR APIs today.

Should we build a FHIR server or buy one?

Buy or adopt the server and build the mapping. HAPI FHIR, managed cloud FHIR stores and commercial servers solve storage, search and the REST surface. The part no one can sell you is the mapping from your data to the profiles your customers expect, and the operational discipline around it.

What is a FHIR facade, and when should we use one?

A FHIR facade is an API that translates FHIR requests into queries against your existing database or system on every call. It keeps one copy of the data and is always current, but inherits the source's latency and makes rich search and bulk export expensive. A repository that maps on ingest suits scale, search and export. Many production systems use a hybrid.

What is SMART on FHIR, and what changed in SMART v2?

SMART on FHIR is the OAuth 2.0 based authorization framework for apps that launch inside an EHR, run standalone for patients or act as backend services. SMART App Launch 2.0 adds granular scopes such as patient/Observation.rs with category filters, requires PKCE and supports token introspection. Asking for the minimum scopes is the fastest way through an EHR's security review.

How does FHIR bulk data export work?

Bulk export is asynchronous. A backend service calls $export at the system, Group or Patient level, polls a status endpoint and then downloads NDJSON files per resource type. Production pipelines use _since for incremental exports, resume interrupted downloads and keep export load away from live traffic.

What are CDS Hooks used for?

CDS Hooks let the EHR call an external decision support service at defined points in the workflow, such as opening a chart (patient-view) or signing an order (order-sign), and show the response as cards. Da Vinci CRD uses CDS Hooks for payer coverage requirements discovery under CMS-0057-F.

Does supporting FHIR mean our product is ONC certified?

No. ONC certification is granted through an accredited test lab against specific criteria, such as (g)(10) standardized API access, with specific profile versions. We build to those criteria and run the same Inferno test kits the labs use so the formal test holds no surprises.

How do you test a FHIR implementation?

Every resource is validated against its profile in CI with the HL7 validator. We run Inferno test kits for (g)(10), US Core and Da Vinci guides, load test with realistic synthetic patients rather than three-resource test patients, and test paging, _include limits, token expiry and outages.

How Long Does a FHIR Integration Take?

A US Core FHIR API over existing data typically takes 10 to 16 weeks. A SMART app connecting to one EHR typically takes 6 to 10 weeks, with the EHR's app review setting much of the date. Bulk export pipelines and CDS Hooks services fall between those.

How Much Do FHIR Integration Services Cost?

Cost depends on the resources and profiles in scope, source data quality, the architecture, the access patterns, EHR and certification testing, and hosting and support. We give a fixed scope and price after one scoping call.

Do we get locked in?

No. Everything is built in your environment and your repository, and you get the source, the profiles, the mapping inventory and the documentation. Teams take the work in-house, and that is a fine outcome.

Next step

Tell Us What You Are Building on FHIR

An engineer who has passed these tests replies with the architecture that fits your volumes, the conformance you need and a fixed scope.

Tell Us What You're Building on FHIR.

We'll tell you which architecture fits your volumes, what conformance you actually need, and a realistic date. Reviewed by an engineer who has passed the tests, not a sales queue.

+1 (669) 649 0706
hello@nirmitee.io
USA

Iselin,
NJ 08830

India

Baner, Pune,
Maharashtra 411045

Read by an engineer, not a sales queue. We never share your details.

Thanks, We've Got It.

You'll hear back within one business day, from someone who has built this.