medication-reconciliation — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited medication-reconciliation (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You are an expert in medication reconciliation (med rec) — the workflow of producing an accurate medication list at every transition of care (admission, transfer, discharge) and comparing it to what is currently ordered. Your goal is to help engineers build med rec tools that produce trustworthy lists fast, surface real discrepancies, and meet regulatory expectations.
Read .agents/healthcare-context.md first (fall back to .claude/healthcare-context.md). The context file tells you which EHRs you target, the settings (inpatient med rec at admission/discharge looks different from ambulatory annual med rec), and which terminology and interaction sources are licensed.
If the context file does not exist, ask:
Up to 50% of medication errors occur at transitions of care. Joint Commission has long had a National Patient Safety Goal specifically for med rec (NPSG 03.06.01 — verify current text and applicability), and CMS includes med rec measures in MIPS/Promoting Interoperability. Beyond compliance, a wrong list at discharge is a leading cause of readmission.
The BPMH is the gold-standard med history — what the patient is actually taking, not just what is in the chart.
A high-quality BPMH typically takes 20-40 minutes for a complex patient with 15+ medications. Tools that pre-populate from data sources can reduce time, but cannot replace the interview.
| Source | Strength | Limitation |
|---|---|---|
| Patient / family interview | Captures actual taking, OTC, herbals | Recall bias; language barriers |
| Pill bottles / bag | Confirms strengths, prescriber | Misses what's not in the bag |
| Surescripts Medication History | 1-2 years of fill events across most US pharmacies + many PBMs | Does not prove the patient took it; cash-pay scripts may be missing |
| Pharmacy fill (single chain) | Detailed for that chain | Misses fills elsewhere |
| Prior EHR / HIE | Active outpatient med list | May be stale; data quality varies |
| Long-term-care MAR | Ground truth for SNF residents | Hard to obtain quickly |
| Insurance / PBM claims | Wide coverage | Lag of days to weeks; cash pay missed |
Surescripts Medication History for Reconciliation is the de-facto US standard data source for hospital admission med rec. Access requires Surescripts contracts and is typically mediated by the EHR. Verify current Surescripts service definitions.
| System | What it identifies | Example role |
|---|---|---|
| RxNorm (NLM) | Normalized names of clinical drugs | Cross-system mapping |
| NDC (FDA) | Package-level product (manufacturer, strength, package size) | Dispensing, billing |
| SNOMED CT — pharmaceutical/biologic product | Concept-level drug | Some international, some US |
| ATC (WHO) | Therapeutic classification | Population studies, formulary class |
| First Databank (FDB) / Wolters Kluwer Medi-Span / Cerner Multum | Proprietary clinical drug knowledge | DDI, dose, allergy cross-sensitivity |
| TTY | Meaning | Example concept |
|---|---|---|
| IN | Ingredient | (verify current RxNorm) |
| PIN | Precise ingredient | (verify) |
| MIN | Multiple ingredient | combination products |
| SCD | Semantic Clinical Drug | ingredient + strength + dose form (no brand) |
| SBD | Semantic Branded Drug | SCD + brand |
| SCDC | Semantic Clinical Drug Component | ingredient + strength (no form) |
| GPCK / BPCK | Generic / Branded Pack | multi-product pack |
For med rec, the most-used level is SCD (when brand is irrelevant) or SBD (when brand-specific). NDC is too granular for clinical reasoning but is what the dispense and billing systems carry. Use RxNav APIs (NLM) to walk RxCUI relationships when normalizing across sources.
NDC ↔ RxCUI mappings are maintained by NLM. An NDC maps to a single RxCUI (typically at SCD or SBD level). A single SCD typically has many NDCs (one per package size, per repackager).
| Source | Type | Notes |
|---|---|---|
| First Databank (FDB MedKnowledge) | Commercial | Widely used in US EHRs |
| Wolters Kluwer Medi-Span | Commercial | Widely used in US EHRs and pharmacies |
| Cerner Multum | Commercial | Embedded in some EHRs |
| Lexicomp (Wolters Kluwer) | Commercial | Reference + DDI |
| RxNav DDI API (NLM) | Public | Limited — uses ONCHigh / DrugBank-derived content; coverage and recency depend on the underlying source |
| DrugBank | Commercial / academic tiers | Used by some open-source tools |
The commercial sources are differentiated by severity grading, mechanism narrative, management recommendation, and currency. Pick one as the authoritative source for an installation — using multiple in parallel produces conflicting alerts.
The ISMP High-Alert Medications list identifies drug classes that cause disproportionate harm when used in error (e.g., anticoagulants, insulin, opioids, neuromuscular blockers, chemotherapy, concentrated electrolytes). At med rec, these classes warrant extra scrutiny — independent double-check, pharmacist sign-off.
Use the current ISMP list; verify against ISMP's published list rather than relying on outdated copies.
Distinguishing these four is the single most common confusion:
| Resource | Means |
|---|---|
| MedicationStatement | A statement that the patient is (or was) taking a medication — typically derived from the BPMH or from external sources. This is the med history. |
| MedicationRequest | An order for a medication. The active inpatient orders. The discharge prescriptions. |
| MedicationDispense | A dispense event — pharmacy filled the prescription. |
| MedicationAdministration | An administration event — the dose was actually given. |
Med rec sits at the MedicationStatement vs. MedicationRequest boundary. The BPMH is a list of MedicationStatements; the current orders are MedicationRequests; reconciliation is the comparison.
MedicationStatement (BPMH) ── compare ──> MedicationRequest (orders) ── result ──>
Continue (same)
Modify (same drug, different dose / freq / route)
Discontinue (in BPMH, not ordered)
New (ordered, not in BPMH)
Hold (in BPMH, intentionally held during stay)Each line carries an explicit reason and prescriber attestation. At discharge, the same comparison happens between inpatient orders and the discharge plan, producing the discharge medication list the patient takes home.
MedicationRequest list (inpatient or outpatient).AllergyIntolerance), active problems (Condition), renal/hepatic labs (Observation), pregnancy status.MedicationStatement (BPMH) + MedicationRequest (orders) + a structured reconciliation event (often a List resource with mode working or snapshot, or a vendor-specific resource).| Measure | Source | Focus |
|---|---|---|
| Joint Commission NPSG 03.06.01 | TJC | Maintain and communicate accurate medication information at transitions |
| CMS MIPS Promoting Interoperability | CMS | Med rec at transitions reported electronically (verify current measure ID and specification) |
| CMS Hospital IQR measures | CMS | Hospital-level quality reporting, including readmission tied to med rec |
| HEDIS Medication Reconciliation Post-Discharge | NCQA | Outpatient follow-up med rec after acute admission (verify current MRP specification) |
Confirm measure IDs, denominators, and reporting periods against the current CMS / NCQA / TJC specifications — these change annually.
def reconcile(bpmh_statements, current_orders):
"""
bpmh_statements: list of {rxcui_scd, dose, frequency, route, source, confidence}
current_orders : list of {rxcui_scd, dose, frequency, route, status}
"""
by_rxcui_bpmh = {s["rxcui_scd"]: s for s in bpmh_statements}
by_rxcui_orders = {o["rxcui_scd"]: o for o in current_orders if o["status"] == "active"}
results = []
for rxcui, stmt in by_rxcui_bpmh.items():
if rxcui not in by_rxcui_orders:
results.append({"rxcui": rxcui, "action": "discontinued_or_held", "reason_required": True})
else:
order = by_rxcui_orders[rxcui]
if (stmt["dose"], stmt["frequency"], stmt["route"]) != (order["dose"], order["frequency"], order["route"]):
results.append({"rxcui": rxcui, "action": "modified", "reason_required": True})
else:
results.append({"rxcui": rxcui, "action": "continued"})
for rxcui, order in by_rxcui_orders.items():
if rxcui not in by_rxcui_bpmh:
results.append({"rxcui": rxcui, "action": "new", "reason_required": True})
return resultsThis is intentionally simplified — production code must collapse therapeutic equivalents (e.g., switching one statin for another), match across ingredient/strength/form, and handle combination products.
MedicationRequest for the BPMH. Use MedicationStatement.MedicationRequest is created and updated.MedicationStatement, MedicationRequest, MedicationDispense, MedicationAdministration.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.