Trap · frequency · patient PT009
q8h read as eight doses a day
Every eight hours is three doses, not eight. The misreading raises alarms on orders that are fine.
The patient's rows
Exactly what the agent sees for PT009, copied from the chart. The value this mistake misreads is underlined.
| patient_id | age_years | sex | weight | weight_unit |
|---|---|---|---|---|
| PT009 | 39 | F | 59 | kg |
| patient_id | creatinine | creatinine_unit | collected_at |
|---|---|---|---|
| PT009 | 0.9 | mg/dL | 2026-10-31T05:48 |
| order_id | patient_id | drug | dose_mg | frequency | start_time | status |
|---|---|---|---|---|---|---|
| RX4864 | PT009 | Cylvarone | 200 | q12h (the value this mistake misreads) | 2026-10-18T07:55 | active |
| RX3742 | PT009 | Exalmizide | 600 | q8h (the value this mistake misreads) | 2026-10-24T00:13 | active |
Two readings of the same rows
Every step is shown. Where the careless reading goes wrong, the value is underlined.
What a careless agent computes
Takes the number in qNh as doses per day, so q8h becomes 8 a day and q12h becomes 12.
- Weight
- 59 read as kg → 59 kg
- Creatinine
- 0.9 mg/dL (2026-10-31T05:48) read as mg/dL → 0.90 mg/dL
- CrCl
- (140 − 39) × 59 ÷ (72 × 0.90) × 0.85 = 78.2 mL/min
| Order | Daily dose | Limit | Flagged |
|---|---|---|---|
| RX4864Cylvarone | 200 × 12 = 2400 mg (the value this mistake misreads) | 900 mgCrCl 45-90 | yes (the value this mistake misreads) |
| RX3742Exalmizide | 600 × 8 = 4800 mg (the value this mistake misreads) | 2000 mgCrCl ≥ 70 | yes (the value this mistake misreads) |
Output line: {"crcl_ml_min":78.2,"flagged_order_ids":["RX3742","RX4864"]}
The correct answer
Reads the unit, status, frequency and time columns as the instruction says, and flags only a daily dose strictly over the band's limit.
- Weight
- 59 read as kg → 59 kg
- Creatinine
- 0.9 mg/dL (2026-10-31T05:48) read as mg/dL → 0.90 mg/dL
- CrCl
- (140 − 39) × 59 ÷ (72 × 0.90) × 0.85 = 78.2 mL/min
| Order | Daily dose | Limit | Flagged |
|---|---|---|---|
| RX4864Cylvarone | 200 × 2 = 400 mg | 900 mgCrCl 45-90 | no |
| RX3742Exalmizide | 600 × 3 = 1800 mg | 2000 mgCrCl ≥ 70 | no |
Output line: {"crcl_ml_min":78.2,"flagged_order_ids":[]}
The test that catches it
The careless output, graded by the task's real test file. This is what pytest printed.
Flagged set exact · PT009test_flagged_orders_exact[PT009]
AssertionError: PT009: flagged ['RX3742', 'RX4864'] vs expected []
@pytest.mark.parametrize("pid", PATIENT_IDS)
def test_flagged_orders_exact(by_patient, pid):
assert pid in by_patient, f"no output for {pid}"
got = by_patient[pid].get("flagged_order_ids")
assert isinstance(got, list)
assert set(got) == set(EXPECTED[pid]["flagged_order_ids"]), \
f"{pid}: flagged {sorted(got)} vs expected {EXPECTED[pid]['flagged_order_ids']}"
No other patient's answer moves under this mistake, so this one failure is the whole signal.