Articles
Mostly about building products, healthcare tech, and lessons learned along the way.
Mostly about building products, healthcare tech, and lessons learned along the way.
FDA's 2026 clinical decision support guidance is silent on generative AI. What changed, and how to build LLM CDS clinicians can independently review.

FDA's January 2026 clinical decision support guidance does not create a special lane for generative AI. It widens what you may output. The criterion 4 test from 2022 is unchanged. Can the clinician independently review the basis for the recommendation, so they don't rely primarily on the software? If your system can't prove that, the new permissions don't help you.
The mistake I still see builders make is treating "the clinician can review it" as a UI claim. It's a system property. Review only means something if three things hold. The basis is on screen next to the recommendation. The output can't silently be empty or truncated. The write path can't run without the review.
I build clinician-facing AI: MedScrub, MedHook, eSpiral. The design choice I'd point to in MedScrub is one sentence we put in front of every skill. It tells the model it is:
a clinical research assistant, NOT the treating clinician… State facts plainly and let the physician decide: write 'A1c 8.2% (06/14/2026)', never 'A1c above target.'
"Above target" is a judgment with a hidden threshold. "8.2% on 6/14" is something a physician can check in two seconds. One is a directive. The other is a reviewable fact.
The sentence alone isn't enough. We found the guardrails had been written into the skill configs but weren't enforced on the main write path. A rule that only exists in a JSON file is a slide, not a control. That pushed us to two enforced rails. First, every claim has to cite the chart data it came from. No citation means the UI shows "No citations found — verify" and the EHR write is blocked. Second, nothing goes into the EHR until the physician ticks "I've reviewed this output." That box resets on every run.
FDA issued the updated final guidance on January 6, 2026 and re-issued it on January 29, according to FDA's own town hall transcript. It replaces the September 2022 version and is nonbinding.
No. The guidance text is silent on generative AI, as the 2022 version was, and says nothing about clinician-facing chatbots. CDRH released a separate discussion paper on generative AI-enabled devices on August 18, 2026, with comments due October 19, 2026 under docket FDA-2026-N-7874.
FDA judges software by the role its output plays, not how the output is generated, so an LLM faces the same four criteria as a rules engine. Inputs count too. Piping a 14-day glucose trace into the context window feeds the model patterns and changes your regulatory posture.
The 2026 revision removed the 2022 language saying a risk score disqualifies software from non-device CDS. Clint labels LLM confidence "model self-assessment, not a calibrated probability" and shows "unknown" when the model gives none. A real probability needs calibration against labeled data first.
FDA says software for critical, time-sensitive decisions generally fails criterion 4 because clinicians lack time to review the basis. Its device examples include stroke and sepsis alarms. The guidance doesn't define "time-critical," so Clint keeps LLM output in chart prep, note review and research.
The changes that matter to an engineer:
Enforcement discretion is also not clearance, not a safety finding, and not permanent (MedAI Directory).
If anything the test got sharper, because automation bias now sits inside criterion 4.
FDA judges software by the role its output plays, not by how the output is generated. A rules engine, a regression model and an LLM all get the same lens. So stop asking whether "AI CDS" is a device. Read the four criteria as requirements on your system:
FDA recommends that outputs flag missing or unusual inputs and show the patient-specific factors that were used (CITI). That is a UI and data-flow requirement.
In eSpiral, residents didn't believe the assistant was using this patient's chart. I had to explain it out loud. So we added a chip on the chat that says "Using this patient's N conditions, YYYY–YYYY." Now the basis is visible before anyone reads a word of output. It has to be on the screen, not in the architecture diagram.
Citations work the same way. A claim tied to a specific Observation with a date can be reviewed. A claim with no source can't, so the system says so and refuses to write it. If you're relying on the model to "explain itself" instead, interpretability won't save you yet. Grounding every claim in a source will.
The scariest outputs we saw were plumbing failures, not hallucinated diagnoses.
A clinician can't check the basis of an output that silently lost its inputs. We fixed the flow, not the prompt. Every provider path now treats empty, truncated or reasoning-only output as an error the clinician sees, and write receipts come from what the EHR actually confirms. The shape of the gate:
function canWrite(run: Run): Decision {
if (run.output.status !== "complete") // empty, truncated, reasoning-only
return block("Model output incomplete. Not written.");
if (run.claims.some(c => c.citations.length === 0))
return block("No citations found — verify");
if (run.review?.runId !== run.id) // review resets every run
return block("Review required");
return allow();
}
// Show "Written" only when the EHR confirms the write.
Three checks, all on the write path. The review check deserves the most care. A checkbox that stays checked across runs is automation bias you designed in: the clinician reviewed yesterday's output, and today's goes through on the same tick. Tie each approval to a run ID, reset it on every regeneration, and make it a precondition of the write, not a suggestion in the UI. I wrote more about why silent failures are worse than loud ones.
FDA says software for critical, time-sensitive decisions generally fails criterion 4, because clinicians don't have time to review the basis. Its device examples include stroke and sepsis alarms, and outputs that direct immediate intervention (CITI). The guidance doesn't define "time-critical."
My rule: if the feature only works when the clinician acts before they could reasonably check the sources, it's not non-device CDS. Put LLM output where there is time to read it, such as chart prep, note review and research. Don't put it in an interruptive alert in an urgent workflow. Pick that boundary in the product spec, not after launch.
This is where I reversed myself. At first I refused to build confidence scores, because LLM self-confidence isn't calibrated. Two weeks later we built them anyway, because clinicians wanted a signal. The same write-path discovery pushed this one. They're labeled "model self-assessment, not a calibrated probability." If the model doesn't give one, the UI shows "unknown," never a made-up number.
The 2026 guidance dropped the language that disqualified risk scores. That doesn't make an uncalibrated number honest. A labeled self-assessment is something a clinician can weigh. A bare "87%" invites them to rely on it, which is the opposite of what criterion 4 asks for. If you want a real probability, you need real validation. Calibrate against labeled data before you show one.
If you deliver through CDS Hooks, the card format already gives you most of what criterion 4 needs. In the 2.0 spec, a card carries a short summary, an indicator and a source. Use them to state facts, cite sources and say what the software is:
{
"summary": "3 chart findings relevant to diabetes follow-up",
"indicator": "info",
"source": { "label": "AI-drafted summary. Clinician review required." },
"detail": "- A1c 8.2% (06/14/2026) [Observation/a1c-0614]\n- Self-assessment: unknown",
"links": [{ "label": "View cited chart data", "url": "https://app.example.com/runs/123", "type": "absolute" }]
}
The spec also defines a feedback endpoint that reports whether each card was accepted or overridden, with a timestamp. Wire it up. Then log what your side knows: the inputs actually sent (after any truncation), model and prompt version, every claim with its citations, the reviewer and run ID, and the EHR's confirmation. That record shows the software drafted, the clinician decided, and the write happened only after review. If someone asks what role your software played, answer with that log, not a diagram.
On August 18, 2026, CDRH released a discussion paper on generative AI-enabled medical devices. It doesn't propose a separate evidence standard for generative AI, and it asks whether agentic systems need extra oversight. Comments are due October 19, 2026 under docket FDA-2026-N-7874. If you ship LLM features to clinicians, read it and comment. The people writing these rules need to hear from engineers who have watched a "success" response hide a failed write.