TensorBlue
AMBIENT_DOCUMENTATION

Clinical
Automation
with FHIR

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

SMART-on-FHIR platform with Medplum. Plan deployment boundaries, clinician review and FHIR integration.

Clinician-reviewed drafts
Tested EHR writeback
Documented data boundaries

Pilot planning, not measured clinical performance. Reviewed October 7, 2026.

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, tested provenance records, and agreed data boundaries

Plan an ambient documentation pilot

Define the recording workflow

Agree when recording starts and stops, how participants are informed, who can pause capture and how a failed recording is handled. Specify permitted audio processing, retention and deletion with the organization. Test background noise, multiple speakers and interruptions on representative permitted examples.

Separate transcription from note drafting

Evaluate speaker attribution and transcript omissions before evaluating the generated note. Define required note sections, what context may be retrieved and how contradictory information is displayed. Keep transcript evidence accessible to authorized reviewers and flag uncertain content instead of turning it into a confident statement.

Measure the clinician’s complete task

Compare drafting plus review and correction with the existing process on the same types of encounter. Record unsupported statements, missing facts, wrong attribution and editing effort. Define critical error categories with clinicians and retain difficult examples. A short generation time does not prove a reduction in documentation work.

Test the receiving EHR

Agree the actual resource profiles, patient and encounter identifiers, access scopes and note-status mapping with the EHR owner. Begin in a test environment. Validate duplicate prevention, expired tokens, partial failures, retries, amendments and revoked access. SMART authorization does not by itself prove compatibility with a particular writeback workflow.

Keep approval and rollout explicit

Treat generated notes as drafts until the authorized clinician reviews them. Document who can approve, amend and sign, and where those actions are recorded. Start with shadow operation and a bounded pilot group, with stop conditions and a fallback documentation process.

Hand over an operable system

Include data-flow and retention settings, connector contracts, evaluation findings, versioned prompts and models, monitoring and a rollback runbook. Estimate capture, transcription, generation, storage, integration and support costs separately. Scope acceptance around measured results from the proposed workflow.

Medplum provides FHIR-based developer tools. Its official documentation and SMART demonstration provide integration references; they do not establish the performance or compliance of a completed ambient scribe.

Healthcare workflow and data integration planning

Medplum

FHIR R4
SMART-on-FHIR developer platform for candidate integrations
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 teams can model reviewed outputs as clinical resources. Provenance, permissions and receiving-system compatibility still require explicit implementation and testing.

Medplum documentation
•
Validate the selected release

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
# Schematic pseudocode, not an executable SDK example.
# Extracted facts remain candidates until clinician review.

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)  # receiving profiles / bindings

reviewed = clinician_review(resources, transcript)
if reviewed.approved:
    write_with_identity_scope_and_retry_checks(reviewed)
Define patient identity, permissions, draft status, provenance and duplicate-write handling before implementing the receiving API.
FHIR_R4

Data Model

Patient / Practitioner / Organization
Context entities
01
Encounter
Visit/appointment context
02
Composition
Draft or attested note; status follows review
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
Consent, provenance and audit records
09
Candidate resources: validate against the receiving system’s profiles, terminology bindings and reference rules.

Illustrative Pilot Blueprints

Proposed workflows requiring evaluation, not measured client results.

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
ILLUSTRATIVE_TEST_ENVIRONMENT_EXAMPLE

This fragment uses synthetic references and omits authentication setup. Test the selected SDK and receiving profiles in a sandbox. A preliminary Composition is not a signed document; finalization and attestation require the agreed review workflow. See the FHIR R4 Composition specification.

import { MedplumClient } from '@medplum/core';

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

// Authenticated test client and synthetic references required.
// Create a preliminary draft, not a signed document.
await medplum.createResource({
  resourceType: 'Composition',
  status: 'preliminary',
  date: new Date().toISOString(),
  title: 'Illustrative draft progress note',
  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 xmlns="http://www.w3.org/1999/xhtml">Illustrative draft; clinician review required.</div>' }
  }]
});
MLOps
KPIs & Validation
Throughput
Completed drafts and failed encounters
Benchmark proposed load
Latency
Capture-to-review latency
Report tail latency
Quality
Omissions, invented facts and attribution errors
Clinician-reviewed test set
Coding
Corrections to suggested codes
Qualified coding review
Ops
Writeback success and duplicate records
Test failures and retries
Governance
Provenance and access coverage
Audit agreed requirements
VALIDATION_PROTOCOL
1
Retrospective Replay
Representative permitted encounters against reviewed notes
2
Prospective Shadow
2–4 weeks draft-only with edit tracking
3
Canary Rollout
Agreed clinician pilot group with stop conditions
4
Audit Package
Full Provenance/AuditEvent with error taxonomy
Model Registry
Shadow/Canary
Rollbacks
Observability
DR

Governance

Privacy • Safety • Compliance
1
PHI Boundary
Map audio, transcript, note, log and backup flows; agree approved processing locations
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
Evaluate redaction and permitted secondary uses; hashed identifiers alone do not establish de-identification
5
Clinician-in-the-Loop
Nothing posts "final" without human sign-off; redlines preserved
DOCUMENTED DATA BOUNDARIES
Verify approved flows, processing locations and retention
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

Measured load
representative encounter volumes
Measured latency
capture, draft and review timing
Reviewed integration
actual EHR access and writeback
SMART-on-FHIR platform
Measure workload capacity
Pin and test dependency versions
Lang→FHIR conversion patterns
Medplum • FHIR R4 • SMART Scopes • Provenance • AuditEvent • On-Prem/VPC

Frequently Asked Questions

How should an ambient documentation pilot be compared with an existing tool?

Evaluate both tools on the same representative encounters and note requirements. Compare omissions, unsupported statements, editing time and integration behavior; do not assume equivalent accuracy without measured evidence.

How should generated clinical notes be reviewed?

Define a clinician review and approval workflow before release. Test transcription, speaker attribution and note accuracy under representative conditions, and measure editing burden rather than assuming the tool saves time.