Structured SOAP notes from messy clinical text — with the model’s reasoning visible.
A reviewer-first interface for turning transcripts and dictations into SOAP notes and ICD-10 suggestions. Source attribution, confidence indicators, inline edits, PHI redaction, and a streaming pipeline. The same logic runs as a standalone MCP server.
HPI: 32yo F w/ hx asthma, ran out of albuterol 3d ago. Acute SOB after running for bus.
Vitals: BP 128/82, HR 102, RR 24, SpO2 92% RA
A: Acute asthma exacerbation, moderate.
32-year-old female with history of asthma, ran out of albuterol 3 days ago…
J45.901Asthma with acute exacerbationR06.02Shortness of breathStripped-down preview of the reviewer surface. The live playground streams as it extracts.
How it works
Three pieces, one pipeline, shared schemas.
Stream extraction
Tool-use mode forces structured JSON output. Sections fade in as Claude generates them. The model marks confidence per section and cites source spans.
Reviewer-first UI
Hover any field to see the supporting text on the left. Edit inline with cmd-enter. Confidence dots, reasoning popovers, and uncertainty flags surface what the model isn't sure about.
ICD + PHI in one pass
ICD-10 suggestions are derived from the SOAP and cite their evidence span. PHI redaction is hybrid: regex for structured patterns, LLM for names and addresses.
What it shows
Same logic exposed as stdio MCP for Claude Desktop / Cursor / Code.
Tool-use forced JSON; Zod-validated end-to-end.
Regex for phone/MRN/DOB; LLM for names + addresses.
Every section cites character offsets in the original text.
Confidence dots, uncertainty flags, inline edits, accept/reject codes.
10-note golden set; per-section overlap, ICD precision/recall, calibration.
Use it as an MCP server
Drop into Claude Desktop, Cursor, or Claude Code. Four tools: extract_soap_note, suggest_icd_codes, redact_phi, extract_full.
{
"mcpServers": {
"clinical-notes": {
"command": "node",
"args": ["/absolute/path/to/clinical-note-copilot/mcp-server/dist/index.js"],
"env": {
"ANTHROPIC_API_KEY": "sk-ant-..."
}
}
}
}