AI MedAgent
Continuous medication oversight · patent pending
Live CDS Hooks endpoint
aimedagent.net/cds-services
The claim on this page

A medication engine that reads real EHR records, and puts in writing the questions it cannot answer.

Every figure below is produced by the running system, not written by hand. The live records come from the Epic, Oracle Health and MEDITECH public FHIR sandboxes. The synthetic patients come from Synthea, an open MITRE project. Nothing here is a mock-up, and the parts that do not work say so.

Run the sequence

Connection through to a card in the order screen
Every step but the last replays a real session against the vendor selected above, with the figures that session actually returned. A web page cannot call an EHR itself: a backend services connection is signed with an RS384 private key, and a key in a browser is a key that has been published. The last two steps are live. AI MedAgent Reasoning and the card are both made from your browser to the deployed endpoint at the moment you press Begin, and the model call happens inside that endpoint, after the deterministic screen and before the cards are written.
1
Where it plugs in

Into the workflow, not into a report nobody opens

CDS Hooks is 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, so building one requires nobody's permission, and the same engine answers any EHR that speaks it. AI MedAgent Reasoning runs inside this endpoint, after the deterministic screen and before the cards are written, and it is handed the coverage statement so that it knows which of the eight classes did not run.

The moment it firesorder-select
Clinician selects a medication order before signing EHR fires the hook draft orders + prefetch patient, problems, allergies, labs AI MedAgent integrity screen 8 screening classes AI MedAgent Reasoning coverage counted aimedagent.net/cds-services Drug knowledge socket empty. 7 of 8 classes unserved Cards, in the order screen findings + coverage

The socket is drawn empty on purpose. That is the honest state of the system today, and it is the shape of what a drug data partner would fill.

What the clinician actually seesboth surfaces drawn from the same live response
Order entry workstation
Signing
no order in scope
CancelSign order
Decision support
Order screen. Where order-select fires, at the moment before signing.
9:41●●●● ●
Order review
Pending signatureno order in scope
AlertsChartSign
Handheld. The same cards, reached through the EHR's own mobile client on rounds or in pharmacy review.

Neither of these is a screenshot, and neither is the product. CDS Hooks specifies the card and says nothing about its appearance, so the EHR draws it however it draws it. Both frames above are rendering the identical response. What a decision support company actually ships is the object below.

The JSON that produced both, exactly as the endpoint returned it
Press Begin above, or call the endpoint, to fill this.
Posts a real order-select request. AI MedAgent Reasoning runs inside it.
2
What goes in

The record, and the holes in it

Same engine, four sources, and it cannot tell which one it is reading. Epic proves a connection and then refuses two resources whose scopes it granted, the problem list and the allergy list. Oracle Health serves both to a request carrying no credentials at all. MEDITECH serves them too, along with everything else Epic answers with 403, but only behind an interactive browser login. Synthea supplies depth no sandbox has.

  
Every vendor we could evaluatemeasured, not assumed
VendorWhat it costs to get inStatusWhat we found

What four probes established. Epic returns HTTP 403 with a zero byte body for Condition, AllergyIntolerance and DocumentReference, while system/Condition.read sits in the granted token. The answer came from the error text on a different endpoint: "Combination of parameters is not valid for any authorized sub-resource." Epic authorizes below the OAuth scope, at sub-resource level. Their documentation does not say so. It was found by measurement.
3
What the engine finds first

Data integrity, 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, not in a footnote.

Stored and returned without warning

A system that calculates perfectly and understands nothing averages these into a trend line and hands a clinician a number.

One patient, four stages of one diseaseall active

Cole Corwin's problem list. Renal dosing is decided by stage.

Not a quirk of synthetic data. Wang and Wright measured duplication in 28.3 percent of diabetes problem lists across 383,404 entries and 327,695 patients. JAMIA 2020;27(8):1190–1197.

Laboratory plausibility
AnalyteLOINCOutside possibleObservedPossible

These are impossibility bounds, deliberately wide, not reference ranges. Nothing here says a value is abnormal. It says a value is not a measurement of the thing its code claims. Two of these bounds were wrong on the first attempt and were corrected; the table is published as data so it can be argued with.

4
The payoff

What it will not claim, counted

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

So this engine counts its own coverage, on every single run, against a taxonomy it did not invent: the eight published module names of Wolters Kluwer's Medi-Span clinical screening APIs. Measured against a vendor's own list, so anyone can check it.

Medication screening coverage
1 of 8 screening classes performed
0 against a maintained drug knowledge base
SIMULATED. Nothing is connected to Medi-Span. This shows which classes their published module list covers, not results from their product. No finding below is generated by any drug knowledge base.
The one thing this buys that a caveat does not. A paragraph of apology at the bottom of a report gets skimmed. "1 of 8, and 0 against a maintained drug knowledge base" does not. The gap stops being a complaint and becomes a measurement, printed next to the clinical content where a reader cannot skip it.
A worked example the engine is right not to findCole Corwin

Cole is 81. His most recent eGFR is . medications are active, and one of them is metformin.

The FDA label for metformin hydrochloride lists severe renal impairment, eGFR below 30 mL/min/1.73m², under CONTRAINDICATIONS.

AI MedAgent reports the eGFR. It reports the active orders. It states in writing that it cannot determine which of them are affected, because Drug Disease Contraindications has no source behind it. It finds nothing, claims nothing, and is exactly one module away from finding it.

That single line is hand-verified from the published FDA label for this demonstration. It was not returned by any drug knowledge base, and the engine does not pretend otherwise.

5
Why it matters, by who is asking

Same evidence, four different implications

Clinician

You are told what was not checked

An alert that fires on everything is noise within a week. A card that says 1 of 8, and here are the seven I could not do is a status line, and it is the difference between trusting a tool and learning to click past it.

Coverage is reported as info, never warning. Promoting it to a warning would make it exactly the alert fatigue it exists to prevent.

Hospital IT

One standard, no per-vendor build

CDS Hooks and SMART on FHIR. No agent on a server, no interface engine change, no database. The service stores nothing and reasons only over what the hook sends it.

Reads the same US Core resources your certified EHR already exposes. If it can fire a hook, it can call this.

Drug data vendor

The socket is cut and load bearing

One interface, one call shape, already written down. The classes it cannot perform are named in your taxonomy and counted in every output that leaves the system.

The free federal source for one of them is gone: NLM discontinued the RxNav drug interaction API on 2 January 2024 and named no replacement.

EHR vendor

A service that refuses cleanly

It declines to answer when the prefetch is incomplete rather than returning an empty result that reads as a clean screen. Absent allergy data produces NOT PERFORMED, never zero findings.

Four distinct states of "no allergies" are modelled, because a search returning nothing cannot distinguish a patient with none from a patient nobody asked.

6
Verify it yourself

Nothing here needs to be taken on trust

ClaimHow to check it in under a minute
The endpoint is real and conformantaimedagent.net/cds-services returns a CDS Hooks discovery document
It runs in somebody else's toolPoint sandbox.cds-hooks.org at https://aimedagent.net
The eight classes are not inventedWolters Kluwer publishes the module list on their own site
Problem list duplication is commonWang & Wright, JAMIA 2020;27(8):1190–1197, doi:10.1093/jamia/ocaa125
Metformin is contraindicated below eGFR 30FDA prescribing information, CONTRAINDICATIONS
The free interaction API is goneNLM RxNav notice, discontinued on or about 2 January 2024
The synthetic patients are reproducibleMITRE Synthea public sample set, named patient identifiers

DEMONSTRATION ONLY. NOT A MEDICAL DEVICE. NOT FOR CLINICAL USE. The CDS Hooks endpoint is unauthenticated and must not be connected to a production EHR. It stores nothing and logs no patient data.

Live records are drawn from Epic's public FHIR sandbox, which contains no real patient. Synthetic records are generated by Synthea, an open MITRE project, from population statistics; they describe no real person.

AI MedAgent · patent pending · aimedagent.net ·