docs(issues): re-grade #322 to P1 — the two Warfarin records are complementarily incomplete - #2020
Conversation
…lementarily incomplete Traced rather than inferred. The row claimed the two records share ZERO interaction rows; that is wrong, and it understates the defect. Rows 0 (CYP2C9 inhibitors) and 2 (dietary vitamin K) ARE shared. The real problem is complementary incompleteness landing on psychiatric drugs: - warfarin-vka has a CRITICAL CYP2C9 inducers row (carbamazepine, St John's Wort) that warfarin-anticoagulant lacks - warfarin-anticoagulant has a HIGH NSAID/Aspirin/SSRI bleeding row with twelve counterparties, six of them SSRIs, that warfarin-vka lacks Resolution is strictly per-slug — medication-interactions.ts:207 and :241 read INDEX.bySlug[slug], and INDEX.names maps slug to display name, not name to slugs. There is no union anywhere. So a psychiatrist checking warfarin against sertraline sees the bleeding warning only if they opened warfarin-anticoagulant, and nothing if they opened warfarin-vka. Carbamazepine is the mirror image. Both records display as "Warfarin". Also recorded: each record lists the other as a counterparty, so the duplicate is treated as interacting with itself. Scope is explicit — this establishes the structural inconsistency only. Whether either record's content is clinically correct is not assessed and is not an agent's call. Merging is flagged as the obvious candidate precisely because the sets are complementary, but it stays a clinician's decision. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017paT42ZVMf8jaLtkjFxdy5
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 39 minutes Limit details: You’ve used all 1 included review currently available under your plan. You completed 94 included PR reviews in the past 7 days; at that activity level, included reviews refill at 1 review per hour. Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
Comment |
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017paT42ZVMf8jaLtkjFxdy5
Summary
One queued
updaterequest re-grading#322P2 → P1 and correcting its central claim. Traced against the data and the resolution code, not inferred from the row's prose.#322says the two records carry "three interaction rows each with ZERO in common". They are not zero in common: row 0 (Pharmacokinetic — CYP2C9 inhibitors: amiodarone, fluconazole, metronidazole, cotrimoxazole) and row 2 (Dietary — vitamin K) are substantively shared.warfarin-vkawarfarin-anticoagulantNeither record is complete alone, and each omits a psychiatrically central interaction the other holds.
src/lib/medication-interactions.ts:207and:241readINDEX.bySlug[slug], andINDEX.namesmaps slug → display name, not name → slugs. So which record a clinician opens determines what they see, and both display as "Warfarin" with nothing distinguishing them.warfarin-anticoagulant, and sees nothing if they openedwarfarin-vka. Checking warfarin against carbamazepine is the exact mirror. That is the reason for P1: it is not a duplicate-data hygiene issue, it is a silently incomplete answer on a narrow-therapeutic-index anticoagulant.warfarin-vkarow-0 counterparties includewarfarin-anticoagulant), so the duplicate is being treated as a drug that interacts with itself.Scope is stated explicitly in the row. This establishes the structural inconsistency only. Whether either record's interaction content is clinically correct is not assessed here and is not an agent's call. Merging is flagged as the obvious candidate precisely because the two sets are complementary — but that remains a clinician's decision, and the row says so and forbids patching the catalogue automatically.
The row is also grouped with
#318as the clinical-content cluster: both are unvalidated medication-interaction surfaces in a prescribing tool.Verification
npm run verify:pr-localEvidence came from reading
data/medication-interaction-index.json(bothbySlugentries in full) andsrc/lib/medication-interactions.ts. No provider access, no writes, no catalogue data changed by this PR.UI verification not run: no UI, routing, styling, or browser-behaviour change in this diff.
Risk and rollout
docs/outstanding-issues-inbox/. No application source, no catalogue data, no schema. The canonical ledger is untouched until a reconcile applies it. The subject is high-risk, which is the point of the re-grade.git revertthe single commit, or delete the request file before reconciliation. A re-grade is also trivially reversible via another--priupdate.Clinical Governance Preflight
Not applicable as a checklist —
classifyPullRequestFilesreturnsclinicalRisk: false,operationalRisk: false,ragRanking: false,ui: falsefordocs/outstanding-issues-inbox/**, and this diff changes no ingestion, answer-generation, ranking, source-rendering, document-access or privacy code. It describes a clinical-content defect rather than touching one. The governance work this row calls for — a clinician deciding between merge, delete and relabel, then confirming the merged interaction set is complete — is deliberately left to the owner and is recorded as such.Generated by Claude Code