AI Adoption GuideHealthcareAssess
Symptom-to-differential generation
LLM synthesizes reported symptoms, vitals, and history into a ranked differential diagnosis list for the clinician to review and narrow.
Healthcare processAccessIntakeAssessDiagnoseTreatDischargeBillFollowup
By Don, DoneThat’s AI coach · updated
The list is a working draft, not a diagnosis
A symptom-to-differential generator reads what is already in the chart (reported symptoms, vitals, and history) and returns a ranked list for you to review and narrow. It does not close the encounter. The quality bar is simple: each differential item cites the symptom or vital that supports it. If the chart is silent, that line stays empty. The model does not invent a diagnosis. You still diagnose.
Treat the output the way you treat a colleague's spoken list at the bedside: useful when it is anchored in the record, dangerous when it is fluent and uncited. Epic, Microsoft, Oracle Health, and Abridge all sit in this class of assistive workflow. None of them replace the assessment you sign.
Rank is a presentation order, not a posterior probability. Accepting rank order as the diagnosis is the failure that looks like speed. A line that cannot point at a chart field is not a differential item. Discard it.
Load chart facts before any ranked line appears
Do not prompt from memory of the room. Load the facts the record already holds.
Pull the chief complaint and the HPI as written, not as you would rewrite them after the exam. Pull the vitals that have timestamps and units. Pull the problem list and the history that is actually documented: medications, allergies, prior diagnoses, relevant social history. If an ECG, troponin, or imaging result is not in the chart yet, it is not an input. Lab result anomaly detection is a different step. It flags values that already exist. This page is about generating a differential from symptoms, vitals, and history that are already recorded.
If ambient capture just wrote the note, read those sentences as reported symptoms, not as a confirmed exam. Ambient clinical documentation can put the patient's words into the chart. Those words remain patient report until you examine and attest.
Work in this order:
- Open the encounter and name the source fields you will send: chief complaint, HPI, vitals, history.
- Name what is absent. No ECG in the chart means no ST-segment language in the prompt.
- Send only those fields to the generator.
- Refuse to fill in a finding the nurse or you have not recorded.
Inventing a finding is the first failure mode worth watching on every use. A model that adds exertional dyspnea or pleuritic quality because those phrases often travel with chest pain has left the chart. Delete that line. If you needed the finding, go examine, document it, and regenerate from the updated record.
Every item cites a symptom, vital, or history field
The output you keep is a ranked list where each item has a cite. The cite is a pointer into the chart: a quoted symptom, a vital with its value, or a named history field. No cite, no keep.
A usable line names the candidate and the field: pulmonary embolism citing sudden-onset chest tightness in the HPI, HR 108 on arrival vitals, and no hypoxia or documented leg finding in the chart. The model should not invent unilateral swelling to make the line look stronger.
A line you discard looks like acute pericarditis with no pointer, or with a pointer to a friction rub nobody documented. That is a diagnosis with no symptom cite. It fails even if the disease is common in textbooks.
One illustrative pass. A 44-year-old in clinic or ED reports two hours of chest tightness, rates it 6/10, and says it started at rest. Arrival HR 108, BP 138/82, SpO2 97% on room air. History lists anxiety and a 15-pack-year smoking history. No ECG, no labs, no imaging in the chart yet.
A defensible ranked draft might include:
- Acute coronary syndrome, citing rest-onset chest tightness and smoking history. Vitals do not show hypotension. No ECG is in the chart, so the line must not claim ST elevation.
- Pulmonary embolism, citing sudden tightness and tachycardia. The chart does not contain hypoxia or leg findings, so the line must not claim them.
- Anxiety-related chest tightness, citing the documented anxiety history and rest onset. This line does not retire the first two.
What you do not accept: STEMI because the model assumed ST elevation; pneumonia with no cough, fever, or infiltrate in the record; GERD with no reflux history in the chart. Those are invented diagnoses or invented findings dressed as rank.
After you have a cited list, retrieve guidance only for the items you are still considering. Evidence-based guideline retrieval is the next assess move for diseases you have not discarded. It is not a substitute for citing the chart.
Silent chart, empty list
If the encounter has no usable symptoms, vitals, or history, the generator returns nothing you can use. Empty stays empty. Do not ask the model to give you a starting differential anyway. A starting differential with no source is a hallucination with a rank number.
Sparse charts are common at the door: a one-line chief complaint, one set of vitals, no HPI yet. In that state, the honest output is a short list or a blank. A long, textbook-complete list is a warning that the model left the record.
When the chart later fills (repeat vitals, ECG filed, a sentence of HPI), regenerate from the new facts. Do not patch the old list by adding diseases you thought of in the hallway unless those diseases now have cites. Your thinking belongs in your assessment. The generator's job is to restate chart-grounded candidates.
A blank list does not mean nothing is wrong. It means the model had nothing to cite. You still take the history, examine, and decide whether to wait for data or to act on clinical concern that is not yet in discrete fields. The empty output is a constraint on the tool, not a disposition.
You narrow; coding waits until you have an assessment
Narrowing is your work. Strike lines that do not fit the exam you just did. Promote a line when a new vital or a new symptom appears in the chart with a cite. Add a line only when you can point at a field. Never promote a line because it was ranked first.
Do not send the working differential to coding until you have an assessment you will sign. Diagnosis code suggestion maps a diagnosis you have already made. Using the generator's top line as a billing diagnosis copies a draft into the legal record.
Watch three failure modes on every use:
- A diagnosis with no symptom cite: drop it, even if it is the obvious one in the room.
- Treating the list as the diagnosis: the list is ordered candidates. Your signed assessment is the diagnosis.
- Inventing a finding: if the cite quotes a symptom that is not in the chief complaint, HPI, ROS, or vitals, the cite is false. Throw the line out. Do not re-prompt the model to make the list more complete.
Vendors in this class (Epic, Microsoft, Oracle Health, Abridge) differ in where the list appears: sidebar, note, inbox. The clinical rule does not change with the chrome. Chart facts in, cited ranked items out, blanks when the record is silent, you diagnose.
When you are done narrowing, the record should show the facts you used, the candidates you considered with their cites, and the diagnosis you chose. That diagnosis may be none of the generated lines, or a line you kept because the chart and the exam agreed.
Is this worth automating for you?
Whether this pays back depends on how much time it takes your team today. Most teams estimate that from memory, and the estimate is usually wrong in one direction or the other. This one is rated high effort to implement, so the baseline matters more than usual.
DoneThat reconstructs where the time actually went, with no timers to forget, so you can measure the baseline before committing to a project and check the gain afterward.
Measure the baseline first