Trap · frequency · patient PT010

BD read as once a day

Twice daily counted once halves the daily dose on paper and hides a real overdose.

The patient's rows

Exactly what the agent sees for PT010, copied from the chart. The value this mistake misreads is underlined.

patients.csv
patient_idage_yearssexweightweight_unit
PT01080M68kg
labs.csv
patient_idcreatininecreatinine_unitcollected_at
PT0102.1mg/dL2026-11-01T06:17
meds.csv
order_idpatient_iddrugdose_mgfrequencystart_timestatus
RX5724PT010Aldrovexin500BD (the value this mistake misreads)2026-10-31T11:51active
RX3857PT010Bremazotan100OD2026-10-22T10:35active

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

Reads BD, Latin for twice a day, as once daily.

Weight
68 read as kg → 68 kg
Creatinine
2.1 mg/dL (2026-11-01T06:17) read as mg/dL → 2.10 mg/dL
CrCl
(140 − 80) × 68 ÷ (72 × 2.10) = 27 mL/min
OrderDaily doseLimitFlagged
RX5724Aldrovexin500 × 1 = 500 mg (the value this mistake misreads)750 mgCrCl 15-30no (the value this mistake misreads)
RX3857Bremazotan100 × 1 = 100 mg200 mgCrCl 25-50no

Output line: {"crcl_ml_min":27,"flagged_order_ids":[]}

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
68 read as kg → 68 kg
Creatinine
2.1 mg/dL (2026-11-01T06:17) read as mg/dL → 2.10 mg/dL
CrCl
(140 − 80) × 68 ÷ (72 × 2.10) = 27 mL/min
OrderDaily doseLimitFlagged
RX5724Aldrovexin500 × 2 = 1000 mg750 mgCrCl 15-30yes
RX3857Bremazotan100 × 1 = 100 mg200 mgCrCl 25-50no

Output line: {"crcl_ml_min":27,"flagged_order_ids":["RX5724"]}

The test that catches it

The careless output, graded by the task's real test file. This is what pytest printed.

  • Flagged set exact · PT010test_flagged_orders_exact[PT010]

    AssertionError: PT010: flagged [] vs expected ['RX5724']
tests/test_outputs.py
@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.