---
name: medication-reconciliation
description: "Use when reconciling two medication lists across a care transition (home vs. admission, discharge vs. prior) — classifies every drug as continue / modify / stop / new, and surfaces therapeutic-class duplicates, dose or frequency discrepancies, and omissions for a human to resolve, instead of silently merging the lists into one guessed list. Do NOT use for interaction screening, single-drug dose checking, or transcribing one list into the chart."
metadata:
  decimalai-skill-id: "ec832d85-909e-475e-8ed2-e582cb50c389"
  decimalai-version-id: "2f2bbf10-2795-4afd-8863-ae332b5158d3"
  decimalai-version: "1"
  decimalai-body-sha256: "627a0eea622fa588c7ed0fee7d97d4c5c97714cbb4afbe56a11038c6e908ebb5"
  decimalai-name: "medication-reconciliation"
  decimalai-format: "1"
  decimalai-invocation: "model"
  decimalai-category: "science"
  decimalai-source: "https://app.decimal.ai/s/medication-reconciliation@1/SKILL.md"
---
# Medication reconciliation

At a care transition — admission, transfer, discharge — the patient has an *old* list (home meds,
prior orders) and a *new* list (admission orders, discharge plan). Reconciliation is the disciplined
comparison of the two: decide what happens to each drug, and **surface every discrepancy** so a
clinician resolves it. The failure this prevents is a bare model quietly producing one merged list —
picking a dose when the two lists disagree, dropping a home drug that isn't re-ordered, or listing two
different drugs of the same class as if both belong. Those silent merges are exactly how medication
errors reach the patient. Reconciliation **flags; it does not decide.**

## The output: classify every drug, then flag every concern

Walk the union of both lists. Give **each** medication exactly one status:

- **continue** — present on both lists, same drug, same dose and frequency. Carried forward unchanged.
- **modify** — present on both lists, same drug, but the dose, frequency, route, or formulation
  differs. A dose change is a *modify*, never a stop-of-the-old plus a new-start of the same drug.
- **stop** — on the old list, intentionally not carried forward (discontinued, held, or replaced).
- **new** — on the new list, not on the old list. A newly started medication.

Then, across the reconciled set, surface these concerns — **each is a flag for a human, not a silent fix:**

1. **Therapeutic-class duplication.** Two *different* drugs of the *same* class both active at once
   (see the class table). Flag it by name and class — e.g. "lisinopril and enalapril are both ACE
   inhibitors." This is the concern a bare model misses most, because the drug *names* differ.
2. **Dose / frequency discrepancy.** The same drug appears on both lists at conflicting strength or
   schedule. Surface *both* values and mark it *modify* — never merge to one guessed number.
3. **Omission.** A drug on the old list is absent from the new list with **no stated reason**. Surface
   it as a possible unintended omission for confirmation — do not silently drop it. (An omission with
   a documented rationale is a *stop*, not an unexplained omission.)

Never emit a single merged list that resolves a discrepancy on its own. When the two lists disagree and
nothing on the record says which is right, the correct output is the **flagged discrepancy**, not a pick.

## Same drug vs. same class — the two distinct checks

- **Same drug, two names** (brand vs. generic — "Lipitor" and "atorvastatin", "Glucophage" and
  "metformin") is **one** medication. It is *continue* (or *modify* if the dose differs), **not** a
  duplication. Do not flag brand/generic pairs as duplicates.
- **Different drugs, same class** both active (two ACE inhibitors, two proton pump inhibitors, two
  benzodiazepines) **is** a therapeutic duplication — flag it.
- **Same class but sequential, not concurrent** — the old one is *stopped* as the new one *starts*
  (glyburide stopped, glipizide begun) — is a within-class **substitution**, not a duplication,
  because only one is active. Flagging requires *both* to be active at the same time.

## Therapeutic classes (flag when two different members are concurrently active)

| Class | Common members |
|---|---|
| ACE inhibitors | lisinopril, enalapril, ramipril, captopril, benazepril |
| ARBs | losartan, valsartan, olmesartan, candesartan, irbesartan |
| Proton pump inhibitors (PPIs) | omeprazole, pantoprazole, esomeprazole, lansoprazole |
| Statins | atorvastatin, simvastatin, rosuvastatin, pravastatin, lovastatin |
| Beta-blockers | metoprolol, atenolol, carvedilol, bisoprolol, propranolol |
| Benzodiazepines | lorazepam, alprazolam, diazepam, clonazepam, temazepam |
| SSRIs | sertraline, fluoxetine, escitalopram, citalopram, paroxetine |
| Loop diuretics | furosemide, bumetanide, torsemide |
| Sulfonylureas | glipizide, glyburide, glimepiride |
| NSAIDs | ibuprofen, naproxen, diclofenac, celecoxib, meloxicam |
| Opioids | oxycodone, hydrocodone, morphine, tramadol, hydromorphone |
| Anticoagulants | warfarin, apixaban, rivaroxaban, dabigatran, edoxaban |

A **special case worth flagging even across classes:** an ACE inhibitor together with an ARB is dual
blockade of the same pathway (the renin–angiotensin system) — treat two concurrent agents there as a
duplication concern too, even though the class labels differ. A fuller class catalog for lookup is in
`references/drug_classes.md`; the classes above are the ones you will meet most often.

## Procedure

1. Build the union of both lists, matching the *same drug* across brand and generic names.
2. For each medication, assign one status — continue / modify / stop / new — by the rules above.
3. For every *modify*, state both the old and new value; never collapse to one.
4. Scan the concurrently-active set for two different members of one class → duplication flag.
5. Scan the old list for drugs absent from the new list with no rationale → omission flag.
6. Emit the per-drug statuses **and** the list of flags. Do not hide a discrepancy inside a clean-looking
   merged list.

## Worked example

Old (home): metformin 500 mg BID · lisinopril 10 mg daily · atorvastatin 20 mg daily · levothyroxine 75 mcg daily
New (admission): metformin 500 mg BID · lisinopril 10 mg daily · enalapril 5 mg BID · atorvastatin 40 mg daily

- metformin → **continue** (identical).
- lisinopril → **continue**, but see the flag below.
- atorvastatin → **modify** (20 mg → 40 mg; surface both values).
- enalapril → **new**.
- levothyroxine → on the old list, absent from the new list with no reason → **omission flag** (confirm; do not drop).
- **Duplication flag:** lisinopril + enalapril are both ACE inhibitors, both now active.

The wrong output is a single tidy list showing enalapril and atorvastatin 40 mg with levothyroxine
quietly gone — that has silently merged, dropped an omission, and hidden a class duplication.
