Skip to main content
Every inferred medication comes back with three fields you need to understand before acting on the data: status, confidence, and (when verbosity="full") an evidence trail.

status — what we think the medication’s state is

Status mirrors FHIR’s MedicationRequest.status vocabulary:
StatusMeaning
activePatient is currently taking this medication
completedCourse finished (end date in past, or explicit completed status)
stoppedExplicitly stopped by a clinician
cancelledOrder was cancelled before dispensing
unknownNot enough evidence to classify, or all data is too stale
See the full triggers table for the rules that produce each status.

confidence — how sure we are of the status

A float from 0.0 to 1.0. This is confidence in the status assignment, not probability the patient is taking the drug. It reflects data quality:
  • Multiple corroborating signals bump it up (e.g., active order + recent dispense → ~0.95)
  • Missing dates knock it down (-0.20)
  • Missing RxNorm codes knock it down (-0.05)
  • Staleness applies a decay curve past 90 days
Use status AND confidence >= threshold together. A common pattern: show confidently-active meds prominently (confidence ≥ 0.80), show low-confidence meds in a secondary list with a “verify with patient” label.

evidence — which rules fired (full verbosity only)

When you request verbosity="full", each medication’s provenance entry includes the list of rules that contributed to the status. Examples:
Evidence tagWhat it means
recent_dispenseA dispense was recorded within the last 90 days
active_orderA MedicationRequest is status=active and authored within 180 days
self_reported_activePatient-reported MedicationStatement with reported=true
course_completedExplicit completed status or effectivePeriod.end in the past
prescription_expiredOrder authored >365 days ago with no recent fill activity
order_stoppedMedicationRequest has status=stopped
order_cancelledMedicationRequest has status=cancelled
The evidence list is the audit trail. If a clinician or user asks “why is this marked active?”, the answer is in provenance[med_id].evidence.

A worked example

Request:
{
  "verbosity": "full",
  "resources": [
    {
      "resourceType": "MedicationRequest",
      "id": "mr-1",
      "status": "active",
      "intent": "order",
      "authoredOn": "2026-03-05",
      "medicationCodeableConcept": { "coding": [{ "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "617312" }] }
    },
    {
      "resourceType": "MedicationDispense",
      "id": "md-1",
      "status": "completed",
      "whenHandedOver": "2026-04-09",
      "medicationCodeableConcept": { "coding": [{ "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "617312" }] }
    }
  ]
}
Response (trimmed):
{
  "medications": [
    {
      "id": "med_abc123",
      "display_name": "Atorvastatin 40 MG Oral Tablet",
      "status": "active",
      "confidence": 0.95,
      ...
    }
  ],
  "provenance": {
    "med_abc123": {
      "sources": ["MedicationRequest/mr-1", "MedicationDispense/md-1"],
      "evidence": ["active_order", "recent_dispense"],
      "enrichments": []
    }
  }
}
Two separate FHIR resources were deduplicated to one medication via RxNorm grouping. Two rules fired: active_order (the order is recent and active) and recent_dispense (a fill within 90 days). The corroborating signals drive confidence to 0.95.

Acting on low-confidence results

Low confidence (< 0.7) usually means:
  • Only one signal fired (no corroboration)
  • The data is old
  • Key fields were missing (dates, RxNorm codes)
Don’t ignore low-confidence medications — they’re often the most interesting cases for clinical review. Surface them in a “needs verification” bucket rather than hiding them.