Skip to content

Medication Statement Profile

Canonical../StructureDefinition/nexus-emr-core-medicationstatement
Statusdraft (experimental) · 1.26.0
BaseMedicationStatement (constraint)
SourceFSH · JSON

Nexus EMR profile for MedicationStatement -- patient-reported medication use, distinct from prescriptions. First pass: status, text-first medication concept, effective timing, free-text dosage. Closed to SMART apps pending an exposure decision.

Overview

Overview

The Nexus EMR Core MedicationStatement profile records what the patient says they take. That is a different claim from what was prescribed, which is MedicationRequest: over-the-counter products, samples, medications started elsewhere, and "patient reports taking half of what is on the label" are all statement-shaped and none of them are order-shaped. Patient summaries load medication statements as one of their domains, and medication-reconciliation extraction produces them.

This is a first pass: status, the medication as a text-first concept, effective timing and free-text dosage. medicationReference, derivedFrom / basedOn chains back to an originating prescription, and adherence or statusReason vocabularies are deliberately unmodelled. The profile is closed to SMART apps pending an exposure decision.

status can invert the whole resource

status is 1..1 and takes active | completed | entered-in-error | intended | stopped | on-hold | unknown | not-taken. It is a modifier element, and not-taken is the case that punishes a consumer that ignores it: the resource then asserts that the patient is not taking the medication it names. Rendering a not-taken statement in a medication list without its status shows the patient on a drug they have told you they stopped.

medication[x] is a CodeableConcept, always

medication[x] is 1..1 and constrained to CodeableConcept only. Two reasons, both structural: there is no Medication catalog resource in this platform for a reference to resolve to, and patient-reported medications frequently arrive as free text that was never matched to a product.

Text is therefore required for readability and coding (DIN, ATC) is optional -- the same posture MedicationRequest takes on this IG. A consumer must be able to render a statement whose medication[x] carries text and nothing else, and must not treat a missing coding as a data error.

Timing and dosage in the first pass

  • effective[x] (0..1) -- when the reported use applies, as a dateTime or a Period.
  • dateAsserted (0..1) -- when the statement was captured, which is often much later than the use it describes.
  • dosage (0..*) with dosage.text (0..1) -- the whole first-pass dosage surface is free text ("81 mg once daily"). Structured timing, dose quantity and route are not modelled yet, so do not build dose arithmetic on this profile.

The declared effective date walks effectiveDateTime | effectivePeriod.start | dateAsserted, which is why dateAsserted is worth populating even when the period is known.

See MedicationStatement/nexus-emr-medicationstatement-example for a worked instance.