numbered
Health system or practice
← Back to Agent Library

Lab & Diagnostic Report Summarizer Agent

Reads every incoming result against reference ranges and the patient's own history, and writes the plain-language summary.

Who it's for
Providers and care teams reviewing lab and diagnostic results across a full patient panel.
What it replaces
Manual line-by-line review of lab result panels as they land.
<div class="hx-demo-box" style="margin-top:40px;border:1px solid #D2D2CA;border-radius:12px;overflow:hidden;background:#fff;box-shadow:0 12px 32px -12px rgba(23,25,21,.18)"><div style="background:#F7F7F3;border-bottom:1px solid #D2D2CA;padding:10px 20px;display:flex;align-items:center;gap:10px"><span style="width:11px;height:11px;border-radius:50%;background:#E4E4DE"></span><span style="width:11px;height:11px;border-radius:50%;background:#E4E4DE"></span><span style="width:11px;height:11px;border-radius:50%;background:#E4E4DE"></span><span style="font-size:12px;color:#8B9086;margin-left:6px">labfeed.local/results/patient-6610</span></div><table style="width:100%;border-collapse:collapse;font-size:13px"><thead><tr style="background:#FAFAF7"><th style="text-align:left;padding:10px 20px;font-size:11px;letter-spacing:0.06em;text-transform:uppercase;color:#8B9086;font-weight:600">Test</th><th style="text-align:left;padding:10px;font-size:11px;letter-spacing:0.06em;text-transform:uppercase;color:#8B9086;font-weight:600">Result</th><th style="text-align:left;padding:10px;font-size:11px;letter-spacing:0.06em;text-transform:uppercase;color:#8B9086;font-weight:600">Range</th><th style="text-align:left;padding:10px 20px;font-size:11px;letter-spacing:0.06em;text-transform:uppercase;color:#8B9086;font-weight:600">Flag</th></tr></thead><tbody><tr style="animation:fadeUp .3s ease both"><td style="padding:9px 20px;border-top:1px solid #E4E4DE">WBC</td><td style="padding:9px 10px;border-top:1px solid #E4E4DE">7.2</td><td style="padding:9px 10px;border-top:1px solid #E4E4DE;color:#8B9086">4.5&ndash;11.0</td><td style="padding:9px 20px;border-top:1px solid #E4E4DE;color:#3E4A1B">Normal</td></tr><sc-if value="{{ r2 }}"><tr style="animation:fadeUp .3s ease both"><td style="padding:9px 20px;border-top:1px solid #E4E4DE">Hemoglobin</td><td style="padding:9px 10px;border-top:1px solid #E4E4DE">13.8</td><td style="padding:9px 10px;border-top:1px solid #E4E4DE;color:#8B9086">13.5&ndash;17.5</td><td style="padding:9px 20px;border-top:1px solid #E4E4DE;color:#3E4A1B">Normal</td></tr></sc-if><sc-if value="{{ r3 }}"><tr style="animation:fadeUp .3s ease both;background:#FCEFED"><td style="padding:9px 20px;border-top:1px solid #E4E4DE;font-weight:700">TSH</td><td style="padding:9px 10px;border-top:1px solid #E4E4DE;font-weight:700">8.9</td><td style="padding:9px 10px;border-top:1px solid #E4E4DE;color:#8B9086">0.4&ndash;4.0</td><td style="padding:9px 20px;border-top:1px solid #E4E4DE;color:#8A2E29;font-weight:700">&#9888; High, rising</td></tr></sc-if></tbody></table><sc-if value="{{ isDone }}"><div style="padding:16px 20px;border-top:1px solid #E4E4DE;background:#FAFAF7;font-size:14px;line-height:1.6;animation:pop .4s ease both"><span style="font-weight:700">Summary:</span> TSH has risen from 3.1 to 8.9 over the past two panels, consistent with subclinical hypothyroidism trending upward. Free T4 remains within range. Consider repeat panel and endocrinology referral if the trend continues. </div></sc-if></div>
window.HX_DEMOS=window.HX_DEMOS||{}; window.HX_DEMOS["lab"]=function(Base){ const CYCLE_SEC=8; class Comp_lab extends Base { state={t:0,name:'',email:'',org:'',formSubmitted:false}; componentDidMount(){ this._start=Date.now(); this._iv=setInterval(()=>{ if((Date.now()-this._start)/1000>=CYCLE_SEC){clearInterval(this._iv);return;} const t=((Date.now()-this._start)/1000)%CYCLE_SEC; this.setState({t}); },150); } componentWillUnmount(){clearInterval(this._iv);} onName=(e)=>this.setState({name:e.currentTarget.value}); onEmail=(e)=>this.setState({email:e.currentTarget.value}); onOrg=(e)=>this.setState({org:e.currentTarget.value}); submit=()=>this.setState({formSubmitted:true}); renderVals(){ const t=this.state.t; return {r2:t>=0.8,r3:t>=1.8,isDone:t>=3.2, name:this.state.name,onName:this.onName,email:this.state.email,onEmail:this.onEmail,org:this.state.org,onOrg:this.onOrg,submit:this.submit, formOpen:!this.state.formSubmitted,formSubmitted:this.state.formSubmitted,nameSuffix:this.state.name?', '+this.state.name.split(' ')[0]:''}; } } return Comp_lab; };
Try it on your own results →
Free to start. No credit card.

How the Lab & Diagnostic Report Summarizer Agent works

1
Pulls the result
Pulls the result
Ingests lab and diagnostic report data as it lands from the lab interface.
2
Flags abnormal values
Flags abnormal values
Cross-references each value against reference ranges and the patient's own history to flag anything out of range or trending.
3
Summarizes the panel
Summarizes the panel
Writes a short plain-language summary of what changed and what needs attention, instead of a wall of numbers.
4
Step label
Routes for sign-off
Delivers the summary to the ordering clinician's inbox for review and sign-off.
5
Step label
6 min
average review time per full result panel
100%
of abnormal and trending values flagged
Same day
summary delivered to the ordering clinician

Stop reading every value by hand.

Start free on a batch of your real results and see the summary quality.

Trends values against the patient's own history, not just a static range
Lives inside the results inbox your clinicians already check
Free for your first 100 results, no credit card
Starts free
Takes about 30 seconds. No sales deck required.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.