AI MedAgent
Medication screening over CDS Hooks · coverage reported on every call

What it is

A medication screening service that a hospital's electronic health record calls at the moment a clinician selects an order, and that reports, on every single call, how many of the eight standard screening classes it was actually able to perform. It is reachable today at https://aimedagent.net/cds-services and anyone can verify it from a browser without asking permission.

It speaks CDS Hooks, a published HL7 standard. Epic supports it and lists medication ordering decision support among its own integration playbooks. Oracle Health and MEDITECH are both named contributors to Da Vinci Coverage Requirements Discovery, which is built on CDS Hooks. A service is an HTTPS endpoint, which means there is no agent to install, no interface engine change, no database, and no vendor in the middle.

The method, which is the protected asset

Every clinical decision support product ever built goes silent when it finds nothing, and every clinician has learned to read that silence as checked, and fine. It is not. It is checked whatever I happen to check, which you have never been told.

This service inverts that. It returns a coverage card on every invocation, findings or not, stating how many screening classes ran, how many ran against a maintained drug knowledge base, and naming the ones that did not with the reason each was refused. The count is measured against a taxonomy the system did not invent: the eight published module names of Wolters Kluwer's Medi-Span clinical screening APIs. Measured against a vendor's own published list, the figure can be checked by anyone.

The design rule that makes it useful rather than harmful. The coverage card is returned with indicator info, never warning. A warning that fires on every order is noise, and within a week it is invisible noise. An informational card that appears every time is a status line. Promoting it to a warning would turn this into the alert fatigue it exists to prevent.

How it connects

Electronic health record Clinician selects an order order-select fires before signing Epic · Oracle Health · any CDS Hooks client draft orders + prefetch AI MedAgent service 1  Data integrity screen before any clinical content 2  Eight screening classes each one performed or refused 3  Coverage counted stateless · stores nothing Drug knowledge socket · empty · 7 of 8 unserved Cards, in the order screen critical  allergy contraindication warning  duplicate therapy info     coverage, every time Clinician decides Drug knowledge base not connected one module fills the socket below
The socket is drawn empty on purpose. That is the honest state of the system, and it is the shape of what a drug data partner would fill. Nothing else in the diagram changes when it is filled.

The eight screening classes

Class names are transcribed from Wolters Kluwer's published Medi-Span clinical screening API module list. Status is what the service performs today, without any commercial drug data source connected.

Screening classWhat it answersToday
Drug Allergy ScreeningAn ordered medication against a recorded allergenPartial. Substance-name text match, drafts included. No ingredient or cross-reactivity check
Drug Interaction ScreeningDrug against drug, food and alcoholNo source. NLM discontinued the free RxNav interaction API on 2 January 2024 and named no replacement
Duplicate Therapy ScreeningTwo orders that do the same job under different namesPartial. Ingredient-name collision after stripping strength and form. Blind to two drugs of one class
Dose Screening + Drug OrdersDose, frequency and duration against the accepted rangeNo source
Drug Disease ContraindicationsA medication against a disease state. Renal and hepatic adjustment live hereContext only. Surfaces renal function and counts the orders. Maps no drug to any disease
Pregnancy, Lactation, Age, and Gender ScreeningPatient attributes that change whether a drug is appropriate at allNo source
Route ContraindicationsA route contraindicated for this productNo source
US Controlled SubstancesDEA and state schedule statusNo source
Every output the service produces carries this table's live state as a count. On a representative record that count reads: one of eight performed, zero against a maintained drug knowledge base.

What it refuses to answer, and why that is the feature

A screen that had no data to screen against returns NOT PERFORMED. It never returns zero findings. Zero findings and no data look identical on a screen and mean opposite things at a bedside. The refusal is enforced above the screening logic, so a more capable drug data source cannot argue its way past a missing input.

Four states of "no allergies", which are not one state

StateWhat it meansAllergy screen
blockedThe application is not permitted to read allergy data for this patientRefused
notstartedEpic's List.emptyReason. A list exists and has never been opened. Nobody has askedRefused
emptyA search ran and returned nothing. This cannot distinguish a patient with no allergies from a patient nobody asked, because FHIR returns an identical empty Bundle for bothRefused
recordedAt least one allergen is on filePerformed
All four refuse the screen. They refuse it for different reasons, and the card says which. Collapsing them into "no known allergies" is the single cheapest way for a reasoning layer to harm a patient.

Data integrity, checked before any clinical content

You cannot reason over a record you have not validated, so the integrity screen runs first and its findings are printed above the clinical section rather than in a footnote. Seven checks run today. All are arithmetic, every finding cites the FHIR resource it came from, and each is reproducible from the record.

Impossibility bounds are not reference ranges. Nothing in that table says a value is abnormal. It says a value is not a measurement of the thing its code claims. A potassium of 7.8 mmol/L is a medical emergency and belongs in the clinical section. A potassium of 78 is not potassium. Two of the published bounds were wrong on first release and were corrected; the table ships as data so that it can be argued with.

Security and governance

What the service does

  • Stores nothing. No database, no cache, no state. It reasons over what the hook sends and forgets it when the response is written.
  • Logs no patient data. Card counts and coverage numbers only. Never a request body, a patient identifier or a drug name.
  • TLS in transit, served from managed edge hosting.

What it does not do yet

  • No authentication. The CDS Hooks security model requires a signed JWT from the client, verified against its published JWK Set. Not implemented.
  • No write-back. Read and reason only. Nothing is filed into any chart.
  • Both service descriptions in the discovery document carry the words DEMONSTRATION ENDPOINT so it cannot be wired to a production EHR by accident.

What it is not

It is not a medical device, and it is not for clinical use. It is not a replacement for a pharmacist, a drug knowledge base, or an EHR's native decision support. It does not diagnose, and it does not prescribe. It makes no claim to improve any outcome, and no outcome has been measured. It is a demonstration that the method is doable and credible, built deliberately so that what it cannot do is visible in its own output rather than in a disclaimer.

Verification

ClaimHow to check it
The endpoint is real and conformanthttps://aimedagent.net/cds-services returns a CDS Hooks discovery document
It runs inside somebody else's toolPoint the public sandbox at sandbox.cds-hooks.org to https://aimedagent.net
The eight classes are not inventedWolters Kluwer publishes the Medi-Span clinical screening module list on their own site
Problem list duplication is common in real recordsWang EC, Wright A. Characterizing outpatient problem list completeness and duplications in the electronic health record. JAMIA 2020;27(8):1190–1197. doi:10.1093/jamia/ocaa125
Extremely low HbA1c has real, non-artifactual causesWang P. What clinical laboratorians should do in response to extremely low hemoglobin A1c results. Lab Med 2017;48(1):89–92. doi:10.1093/labmed/lmw050
The free federal interaction source is goneNLM RxNav notice: the Drug Interaction API was discontinued on or about 2 January 2024, with no replacement named
The synthetic patients are reproducibleMITRE Synthea public sample set, by named patient identifier

Patent and provenance

AI MedAgent is a patent-pending method. This datasheet describes the medication screening and CDS Hooks interface only; the continuous encounter method is covered in the companion advisory datasheet. Live records shown in the demonstration are drawn from Epic's public FHIR sandbox, which contains no real patient. Synthetic records are generated by Synthea, an open MITRE project, from published incidence and prevalence statistics; they describe no real person.

Daniel Pettus · aimedagent.net · dan@aimedagent.net
AI MedAgent · medication screening over CDS HooksDemonstration only. Not a medical device. Not for clinical use.