US Core Implementation Guide, published by HL7 International / Cross-Group Projects. This guide is not an authorized publication; it is the continuous build for version 9.0.0-ballot built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/US-Core/ and changes regularly. See the Directory of published versions
| Page standards status: Informative |
This page is new for US Core Version 9.0.0-ballot
This page defines a US Core approach to writing clinical notes using the FHIR R4 DocumentReference resource.
It complements the US Core Clinical Notes (read) guidance (which exposes notes via DocumentReference and certain DiagnosticReport categories) and adopts conventions used in Writing Vital Signs (SMART scopes, CapabilityStatement documentation, error semantics).
In scope
DocumentReference.DocumentReference fields.Out of scope
transaction support; a single POST suffices. FHIR Bundle transactions (type='transaction') are out of scope for this specification; clients SHALL rely on individual POST/PUT operations. However, servers MAY support transactions extensionally (e.g., for creating paired resources like DocumentReference + DiagnosticReport), and clients MAY use them where available.US Core Clinical Notes requires servers to expose notes through DocumentReference and, for some content, also via DiagnosticReport.
This write guidance standardizes writes via DocumentReference. Servers MAY also create a paired DiagnosticReport.presentedForm to maintain read parity. (US Core Clinical Notes)
POSTs a DocumentReference.POSTs a DocumentReference with meta.security including PATAST.PATAST by policy (e.g., based on authorization context), even if omitted by the client. Servers that inject SHOULD document the conditions.This write profile builds directly on the US Core DocumentReference profile.
author and context.encounter when known.How to populate. The reference.reference element SHALL contain either:
"Practitioner/123"), or"#prac1") when a resolvable reference is not possible.display string for usability.Practitioner, PractitionerRole, Organization, Device, Patient, RelatedPerson.Encounter reference.DocumentReference.date represents the time the reference was created (an instant).context.period.identifier.If-None-Exist) for idempotency.content.format for additional detail.context.* elements.meta.security with code PATAST when data are patient-supplied.PATAST by policy.text/plain; charset=utf-8, application/pdf.application/cda+xml or text/xml when paired with CDA content.format codes..attachment.url that point to larger files than thisOperationOutcome.status to entered-in-error.PUT request to a DocumentReference resource, including only the id, status (set to 'entered-in-error'), subject (for verification), and other top-level fields as needed—omitting the full content or context. Servers SHALL accept such partial updates without requiring the original document content and SHOULD transition the resource's status accordingly. Servers MAY subsequently exclude the resource from search results (e.g., to limit visibility), but SHALL still support read access via direct ID lookup if authorized.ValueSet/$expand operation with contextDirection=incoming to enable client discovery of supported note and report categories/codes (e.g., LOINC for DocumentReference.type). See the US Core Clinical Notes IG for details on invocation (e.g., contexts for us-core-documentreference category/type and equivalent DiagnosticReport elements): https://build.fhir.org/ig/HL7/US-Core/clinical-notes.html#using-expand. Note that discovery of supported MIME types (section 4.9) and content formats (section 4.6) is separate and out-of-band: Servers SHALL document these in their API documentation, including any limits or extensions beyond the minima in this specification.DocumentReference via POST and populate relatesTo with code = 'replaces' and targetReference to the original resource's ID. The new document SHALL include the updated content.relatesTo elements on create (and round-trip them) but MAY ignore the relationship for local policy decisions.Type. DocumentReference.type SHALL use LOINC and support at minimum the ten Common Clinical Notes. Servers SHALL support at minimum the following LOINC codes for DocumentReference.type (the 'Common Clinical Notes' from US Core):
Clients SHALL use these where applicable. For other note types, clients SHOULD use LOINC codes when available; servers MAY accept additional terminology (e.g., SNOMED) if no suitable LOINC exists, but SHALL round-trip them. (US Core Clinical Notes)
Category. Servers SHALL support the US Core DocumentReference Category (clinical-note). (US Core DocRef)
Servers SHALL support SMART v2 scopes for create/update and advertise them in /.well-known/smart-configuration. (Writing Vital Signs)
Recommended granular scopes
Patient-facing:
patient/DocumentReference.c?category=clinical-notepatient/DocumentReference.u?category=clinical-noteProvider/System-facing:
user/DocumentReference.c?category=clinical-notesystem/DocumentReference.c?category=clinical-noteuser/DocumentReference.u?category=clinical-notesystem/DocumentReference.u?category=clinical-noteCreate
POST [base]/DocumentReference201 Created (success), or 202 Accepted (for Mediated Submission).Update
PUT [base]/DocumentReference/{id}entered-in-error) via partial updates (see 4.12) or other changes. Clients SHOULD use POST with relatesTo (code='replaces') for document supersessions instead of in-place content updates (see 4.14).{
"resourceType": "DocumentReference",
"identifier": [{ "system": "https://ehr.example.org/doc-ids", "value": "CONS-2025-08-21-987" }],
"status": "current",
"type": { "coding": [{ "system": "http://loinc.org", "code": "11488-4", "display": "Consultation note" }] },
"category": [{ "coding": [{ "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", "code": "clinical-note" }] }],
"subject": { "reference": "Patient/123" },
"author": [{ "reference": "PractitionerRole/456", "display": "Dr. Rivera (Endocrinology)" }],
"date": "2025-08-22T16:00:00Z",
"content": [{
"attachment": {
"contentType": "text/plain; charset=utf-8",
"data": "VmlzaXQgc3VtbWFyeS4uLg==",
"size": 21
}
}],
"context": {
"encounter": [{ "reference": "Encounter/enc-789", "display": "Office visit 2025-08-21" }],
"period": { "start": "2025-08-21", "end": "2025-08-21" }
}
}
{
"resourceType": "DocumentReference",
"status": "current",
"type": { "coding": [{ "system": "http://loinc.org", "code": "11506-3", "display": "Progress note" }] },
"category": [{ "coding": [{ "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", "code": "clinical-note" }] }],
"subject": { "reference": "Patient/123" },
"author": [{ "display": "Dr. Alex Khan" }],
"contained": [{
"resourceType": "Encounter",
"id": "e1",
"identifier": [{ "system": "https://ehr.example.org/encounters", "value": "E-20250821-42" }],
"period": { "start": "2025-08-21T09:00:00Z", "end": "2025-08-21T09:30:00Z" }
}],
"context": {
"encounter": [{ "reference": "#e1", "display": "Office visit — identifier E-20250821-42" }],
"period": { "start": "2025-08-21", "end": "2025-08-21" }
},
"content": [{
"attachment": {
"contentType": "application/pdf",
"data": "JVBERi0xLjcKJcTl8uXrp/Og0MTGCg==",
"size": 20480
}
}],
"date": "2025-08-22T14:05:00Z"
}
{
"resourceType": "DocumentReference",
"meta": {
"security": [{ "system": "http://terminology.hl7.org/CodeSystem/v3-ObservationValue", "code": "PATAST", "display": "patient asserted" }]
},
"status": "current",
"type": { "coding": [{ "system": "http://loinc.org", "code": "11506-3", "display": "Progress note" }] },
"category": [{ "coding": [{ "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", "code": "clinical-note" }] }],
"subject": { "reference": "Patient/123" },
"contained": [{
"resourceType": "Device",
"id": "app1",
"deviceName": [{ "name": "Wellness Coach App", "type": "manufacturer-name" }]
}],
"author": [{ "reference": "#app1", "display": "Wellness Coach App" }],
"date": "2025-08-22T14:10:00Z",
"content": [{
"attachment": { "contentType": "application/pdf", "data": "JVBERi0xLjcKJcTl8uXrp/Og0MTGCg==", "size": 20480 }
}],
"context": { "period": { "start": "2025-08-20", "end": "2025-08-20" } },
"identifier": [{ "system": "https://app.example.org/notes", "value": "p-note-20250820-001" }]
}
PUT [base]/DocumentReference/abc
{ "resourceType": "DocumentReference", "id": "abc", "status": "entered-in-error", "subject": { "reference": "Patient/123" } }
Servers
☐ SHALL support create for DocumentReference; SHOULD support update.
☐ SHALL accept & persist all Mandatory and Must Support elements.
☐ SHALL accept inline content up to at least 5 MiB.
☐ SHALL accept author and context.
encounter either as resolvable relative references or contained resources, with optional display.
☐ SHALL accept text/plain; charset=utf-8 and application/pdf.
☐ SHALL support conditional create (If-None-Exist).
☐ SHALL document limits and mediated submission policy.
☐ SHALL accept partial PUTs for status = 'entered-in-error' without full content; SHOULD transition status and MAY suppress from searches.
☐ SHALL accept and round-trip relatesTo with code = 'replaces' on create; MAY ignore for policy.
☐ SHOULD return OperationOutcome on failed writes and when limits are exceeded.
☐ SHOULD allow status updates to entered-in-error.
☐ MAY support URLs for content with higher limits.
☐ MAY deduplicate using identifiers, hashes, or heuristics.
Clients
☐ SHALL supply status, type, category, subject, content, and content.attachment.contentType.
☐ SHALL support both inline and URL content.
☐ SHALL be capable of populating author and context.encounter with either resolvable or contained references.
☐ SHOULD provide stable identifiers.
☐ SHOULD populate date.
☐ SHOULD populate content.format.
☐ SHOULD populate context.period.
☐ SHOULD include PATAST for patient-asserted notes.
☐ SHOULD use relatesTo = 'replaces' for superseding documents instead of in-place updates.
☐ SHOULD use ValueSet/$expand?contextDirection=incoming for type discovery per US Core guidance.