Propose TGA PI and WA source links for 48 more high-risk medicines, signable as the live TGA search (#05WXHX)

Merged
BI
22d ago
+1843-179

Requested by Josh · project thread

Summary

  • Second #05WXHX batch. src/data/medication-source-links.json now proposes sources for 74 of 330 medicines (was 26).
  • New: other anticonvulsants (oxcarbazepine, topiramate, phenytoin, levetiracetam), gabapentinoids, oral antipsychotics, QTc-prolonging antiemetics (ondansetron, domperidone), TCAs and other overdose-risk antidepressants, benzodiazepines and Z-drugs, buprenorphine, S8 stimulants, ketamine, propranolol and clonidine.
  • Each maps to its TGA Product Information search link. Stimulants, alprazolam, buprenorphine, ketamine and the gabapentinoids also map to the WA Monitored Medicines Prescribing Code (Parts 2, 3, 6, 7, 8 read from the PDF) and ScriptCheckWA.
  • Owner decision 2026-10-22 (decision card in the project thread): the live TGA PI search is the PI source, signed with no fixed version, because www.ebs.tga.gov.au/robots.txt is Disallow: / and no PI version or date can be read. Adds dateModel: "live_product_information" in src/lib/sources/acquisition-ledger.ts. It is narrow: only publisherCode TGA with the eBS PICMI search URL (t=pi, non-empty q), the fixed version "Current TGA-approved Product Information (live search)", and no publication, review, update or expiry date. missing_dates is exempt from the capture-defect floor only for that shape (acquisitionRecordMetadataDefects).
  • All 71 TGA PI records (26 existing + 45 new) move from rejected to candidate under that model, so the owner can sign them with npm run clinical:review -- --pack --kind source.
  • Captures WA High Risk Medication Management Policy MP 0131/20 v2.0 (amended 18 Dec 2025) as an unmapped candidate.
  • Decision recorded in docs/decisions/2026-10-22-tga-pi-live-search-source.md, linked from the source protocol. Ledger update request queued for #05WXHX.

No visible change. medicationSourceLinks shows a record only when it is adopted, owner-attested against its current digest and current. Nothing here is adopted or attested, and the test asserts every one of the 74 slugs still renders nothing.

Verification

  • npm run check:source-acquisitions: "Source acquisition ledger passed." (173 candidate, 14 rejected)
  • npm run check:source-catalogue: "Source catalogue coverage passed."
  • npx vitest run tests/source-acquisition-ledger.test.ts tests/medication-source-links.test.ts tests/source-catalogue-providers.test.ts tests/medication-record-page.dom.test.tsx: 4 files, 114 tests passed (5 new tests for the live model)
  • npm run check:decisions: 0 errors. npm run check:instructions: pass. check:ledger-write-discipline: passed.
  • npm run clinical:review -- --pack --kind source builds a pack with all 71 TGA PI records
  • eslint on changed TS files clean; Prettier applied

Risk and rollout

  • Risk: low. Register data and one ledger validation rule. No retrieval, ranking or authority-register change, nothing rendered until owner sign-off and adoption.
  • Rollback: revert the two commits.
  • Provider or production effects: None.

RAG impact: no retrieval behaviour change. Source register records and ledger validation only. No publisher registered and no ranking surface touched.

Clinical Governance Preflight

  • Source-backed claims still require linked source verification before clinical use
  • No patient-identifiable document workflow was introduced or expanded without explicit governance approval
  • Supabase target remains PsychSift Production (sjrfecxgysukkwxsowpy)
  • Service-role keys and private document access remain server-only
  • Demo/synthetic content remains clearly separated from real clinical sources
  • Source metadata, review status, and outdated/unknown-source behavior remain conservative
  • Deployment classification/TGA SaMD impact was checked when clinical decision-support behavior changed

Notes

  • Known tooling gap, not widened here: signing does not adopt, and adopting after signing stales the attestation, so making a link visible currently takes sign, adopt, then sign again.

🤖 Generated with Claude Code

https://claude.ai/code/session_01A9mseShVV3W5j4edvB7roR