AMBIENT_DOCUMENTATION

Clinical
Automation
with FHIR

Audio → Transcribe → Structure → Generate notes/codes → FHIR resources in EHR

SMART-on-FHIR platform with Medplum. Privacy-first, on-prem deployment serving 20M+ patients.

ENCOUNTERS/DAY
847
DRAFT_TIME_T90
42s
ACCURACY
96.8%
PHI_EGRESS
ZERO
MEDPLUM
SMART_ON_FHIR
ASR_PIPELINE
LANG2FHIR
THE_PROBLEM

One-shot scribe demos rarely make it into production

Clinicians spend hours per day on documentation, prior-auth letters, patient messages, and structured coding — time that should go to care.

Shadow IT and brittle pilots never scale system-wide because they fail at the integration layer.

WHY_DEMOS_FAIL
PHI Privacy
1
FHIR Interoperability
2
Auditability
3
User-in-the-Loop Review
4
Downtime Resilience
5
EHR Integration
6
End-to-end, workflow-integrated ambient documentation with FHIR-native records, full audit trails, and zero data egress

Medplum

v2025
SMART-on-FHIR Developer Platform • 20M+ Patients Under Management
CDR
01
Clinical Data Repository
FHIR R4 storage with query/search
Auth
02
Authentication & Authorization
OAuth2/OIDC with SMART scopes
API
03
RESTful FHIR API
Standard endpoints + subscriptions
SDK
04
Client Libraries
TypeScript/React for app development
The Backbone for Clinical ML Workflows

Medplum gives FHIR storage, auth, SDKs, and subscriptions so every ML output is a first-class, queryable clinical record with provenance — no ad-hoc JSON blobs.

github.com/medplum/medplum
2025 releases

Architecture

FHIR-Native Pipeline
Mic / Telehealth Audio
Edge agent, browser, or mobile
01
ASR (Whisper/Conformer)
Clinical NLP sectioning
02
LLM Planner & Tools
Summarize, code, prior auth
03
Lang→FHIR Mapper
Facts to FHIR resources
04
Medplum (Auth + CDR)
Validation & provenance
05
Clinician Review UI
SMART-on-FHIR redlines
06
EHR / Payer / HIE
FHIR REST subscriptions
07
FHIR Storage
Every output is a first-class clinical record
Provenance
Full audit trail with AuditEvent tracking
Subscriptions
Trigger downstream workflows on resource writes

Technical Pipeline

ASR_DIARIZATION
Audio Stream
On-prem Whisper or enterprise ASR
Diarization
Separate clinician/patient speakers
Timestamp Segments
Sentence-level attribution
CLINICAL_NLP
Sectioning
CC, HPI, ROS, PE, A/P
Entity Extraction
Problems, meds, allergies, social history
Normalization
SNOMED CT / RxNorm / LOINC
LLM_PLANNING
Summarize into structured SOAP with attribution
Suggest codes (ICD-10/CPT) with rationales
Draft prior auth letters using payer criteria
Guardrails: profanity/PII filters, risk-word alerts
LANG_TO_FHIR_MAPPING
# Deterministic mappers turn extracted facts into FHIR resources

facts = extract_facts(transcript)

resources = [
    Condition(code=snomed_code, subject=patient),
    MedicationStatement(medication=rxnorm, subject=patient),
    AllergyIntolerance(code=rxnorm, patient=patient),
    Observation(code=loinc, value=value, subject=patient),
    Composition(section=[...], author=practitioner)
]

for resource in resources:
    validate_fhir(resource)  # profiles / bindings
    medplum.create(resource)  # audited write with token scopes
Demo app (Medplum + Lang2FHIR) shows NL→FHIR conversion patterns
FHIR_R4

Data Model

Patient / Practitioner / Organization
Context entities
01
Encounter
Visit/appointment context
02
Composition
Signed clinical note with sections
03
Condition / AllergyIntolerance
Problems and allergies
04
MedicationStatement / Procedure
Medications and procedures
05
Observation
Vitals, labs, findings
06
ServiceRequest / Claim
Orders and coding
07
Task
Review/attestation workflow
08
Provenance / AuditEvent / Consent
Governance & compliance
09
All resources validated against FHIR R4 profiles with referential integrity checks

Case Blueprints

A
CASE_A

Primary-Care SOAP with Coding & Orders

FLOW
Audio → ASR → SOAP + problems/meds/allergies → ICD-10/CPT suggestions → Composition + Condition/MedicationStatement + ServiceRequest
ACCEPTANCE_GATES
Factuality diffs vs transcript • Code confidence ≥ τ • Clinician override rate trending ↓
B
CASE_B

Prior Authorization Assistant

FLOW
Extract indications from note → map to payer criteria → generate PA letter template with citations → DocumentReference/Communication
ACCEPTANCE_GATES
Payer-specific policies • Human approval required before send • Status tracked as Task
C
CASE_C

Specialty (Oncology) Consult Letter

FLOW
Summarize multi-source history (previous Compositions/Observations/Procedures) → generate specialist letter with tables → Composition + attachments
ACCEPTANCE_GATES
Maintain sources via Provenance links • Multi-document references validated
MEDPLUM_SDK_EXAMPLE
import { MedplumClient } from '@medplum/core';

const medplum = new MedplumClient({
  fetch,
  baseUrl: process.env.MEDPLUM_BASE_URL
});

// Write a signed Composition (draft mode first)
await medplum.createResource({
  resourceType: 'Composition',
  status: 'preliminary',
  type: {
    coding: [{
      system: 'http://loinc.org',
      code: '11506-3',
      display: 'Progress note'
    }]
  },
  subject: { reference: 'Patient/123' },
  encounter: { reference: 'Encounter/enc-789' },
  author: [{ reference: 'Practitioner/doc-456' }],
  section: [{
    title: 'Assessment & Plan',
    text: { status: 'generated', div: '<div>...</div>' }
  }]
});
MLOps
KPIs & Validation
Throughput
Encounters processed/day/tenant
1,000+
Latency
Draft note T90
≤ 60 s
Quality
Chartable facts correctness
≥ 95%
Coding
Human changes to suggested ICD/CPT
≤ 20%
Safety
PHI leakage to external endpoints
0
Ops
Write success (FHIR 2xx)
≥ 99.5%
Governance
Provenance coverage
100%
VALIDATION_PROTOCOL
1
Retrospective Replay
500+ encounters vs ground truth
2
Prospective Shadow
2–4 weeks draft-only with edit tracking
3
Canary Rollout
10–20% clinicians with rollback triggers
4
Audit Package
Full Provenance/AuditEvent with error taxonomy
Model Registry
Shadow/Canary
Rollbacks
Observability
DR

Governance

Privacy • Safety • Compliance
1
PHI Boundary
All processing within customer VPC/on-prem
2
Access Control
OAuth2/OIDC (SMART), role-scoped tokens via Medplum Auth
3
Audit & Provenance
FHIR Provenance for every write; AuditEvent for user actions
4
De-Identification
Text/voice de-id before analytics export with linkable hashed IDs
5
Clinician-in-the-Loop
Nothing posts "final" without human sign-off; redlines preserved
ZERO PHI EGRESS
By design • By policy • By architecture
Ambient documentation that becomes valuable

FHIR-native, governed, and reviewable inside the EHR workflow

Using Medplum as backbone for on-prem/VPC ambient scribe, coding, and prior-auth assistants that write auditable FHIR resources

1,000+
encounters/day
≤60s
draft note T90
20M+
patients (Medplum)
SMART-on-FHIR platform
Multi-million patient scale
2025 releases & active maintenance
Lang→FHIR conversion patterns
Medplum • FHIR R4 • SMART Scopes • Provenance • AuditEvent • On-Prem/VPC