Agent skill

Summarizing Clinical Notes

by maziyarpanahi in maziyarpanahi/openmed

Produces structured, citation-anchored summaries of clinical notes — one-liner, hospital course, and problem-oriented views — where every claim cites a source span so nothing is hallucinated.

Apache-2.0Auto-check passedResearch & Science

Install Summarizing Clinical Notes

skills CLI
$ npx skills add maziyarpanahi/openmed --skill summarizing-clinical-notes -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install maziyarpanahi/openmed summarizing-clinical-notes --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/maziyarpanahi/openmed.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/summarizing-clinical-notes .claude/skills/summarizing-clinical-notes && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
summarizing-clinical-notes
GitHub stars
5.5k
Token cost
~1.7k tokens
SKILL.md length
639 words
Files
1
Skills in repo
74
Repo updated
First seen
Licence
Apache-2.0

At a glance

Produces structured, citation-anchored summaries of clinical notes — one-liner, hospital course, and problem-oriented views — where every claim cites a source span so nothing is hallucinated.

  • Works in 6 steps: De-identify with openmed.deidentify.… → Extract grounding spans with… → Resolve context with openmed.clinical… → …
  • Wants a discharge summary draft
  • SKILL.md covers When to use, Quick start, Workflow and Hand-off to / from OpenMed, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Summarizing Clinical Notes is an agent skill from maziyarpanahi/openmed. Produces structured, citation-anchored summaries of clinical notes — one-liner, hospital course, and problem-oriented views — where every claim cites a source span so nothing is hallucinated. Use after de-identifying notes when the user wants a discharge summary draft, handoff/SBAR, problem list, or chart-abstraction summary. De-identify FIRST with openmed.deidentify, then anchor summary claims to entity spans from openmed.analyzetext. Trigger keywords: summarize note, discharge summary, hospital course…

Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Research & Science, covering Citation management. The repository describes itself as: Local-first healthcare AI: clinical NER and HIPAA PII de-identification on hardware you control. 2,200+ medical models, 35 model-backed PII languages, and Python, MLX, Android… The licence is Apache-2.0.

When your agent uses it

  • Wants a discharge summary draft
  • Chart-abstraction summary
  • Keywords: summarize note
  • Discharge summary

Example prompts

  • “Use the summarizing-clinical-notes skill to produce structured, citation-anchored summaries of clinical notes — one-liner, hospital course, and…”
  • “/summarizing-clinical-notes”

Requirements

  • Python 3

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. De-identify with openmed.deidentify. Summaries are often shared or
  2. Extract grounding spans with openmed.analyze_text (problems, meds,
  3. Resolve context with openmed.clinical (negation, temporality, subject)
  4. Compose by view
  5. Enforce citation coverage. Reject or flag any output sentence with zero
  6. Mark it a draft. Render the medical-device disclaimer and require human

What it can do on your machine

Read from SKILL.md and the folder at commit 9dca507. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are python).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • hl7.org
    • jointcommission.org
    • ihi.org
    • fda.gov

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Summarizing Clinical Notes loads about 1.7k tokens when it runs. Until then it costs about 152 tokens; SKILL.md has 639 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~152
When it runs · the whole SKILL.md, loaded when a task matches
~1.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from maziyarpanahi/openmed at commit 9dca507, republished under its Apache-2.0 licence (© maziyarpanahi). 639 words, ~1,738 tokens.

Download SKILL.mdSave it as .claude/skills/summarizing-clinical-notes/SKILL.md (or your agent's skills folder).
name
summarizing-clinical-notes
description
Produces structured, citation-anchored summaries of clinical notes — one-liner, hospital course, and problem-oriented views — where every claim cites a source span so nothing is hallucinated. Use after de-identifying notes when the user wants a discharge summary draft, handoff/SBAR, problem list, or chart-abstraction summary. De-identify FIRST with openmed.deidentify, then anchor summary claims to entity spans from openmed.analyze_text. Trigger keywords: summarize note, discharge summary, hospital course, problem-oriented, one-liner, SOAP, SBAR, handoff, chart abstraction.
license
Apache-2.0
metadata.project
OpenMed
metadata.category
clinical-nlp
metadata.pairs
after
metadata.version
1.0

Summarizing Clinical Notes with Span Citations

A clinical summary is only useful if it is faithful: every statement must trace back to something the chart actually says. The failure mode for note summarization is the confident hallucination — an invented dose, a fabricated allergy, a discharge diagnosis that was never made. This skill produces summaries where each line cites the source span that supports it, so a clinician can verify in one glance and catch any fabrication.

Not a medical device. OpenMed and this skill assist documentation; they do not diagnose, triage, or make autonomous clinical decisions. Every summary is a draft for clinician review and editing. Surface that disclaimer in any UI that renders these summaries.

When to use

  • Drafting a discharge summary, transfer note, or SBAR/handoff from a long encounter.
  • Building a problem-oriented view (problem list with supporting evidence).
  • Generating a "one-liner" (the single-sentence patient summary) for rounds.
  • Chart abstraction where reviewers need quick, verifiable evidence pointers.

Quick start

De-identify before anything else, extract entities to anchor against, then compose the summary with citations:

python
import openmed

note = """\
HPI: 68M with HTN, T2DM presents with 3 days of productive cough and fever to
38.9C. CXR shows RLL infiltrate. Started on ceftriaxone and azithromycin.
Hospital course: improved on IV antibiotics, transitioned to PO. Discharged on
amoxicillin-clavulanate. Follow up with PCP in 1 week.
"""

# 1) ALWAYS de-identify before summarizing or sending text anywhere.
deid = openmed.deidentify(note, method="replace", policy="hipaa_safe_harbor")

# 2) Extract entities; their offsets become your citation anchors.
ner = openmed.analyze_text(deid.text, output_format="dict")
spans = {
    (e["start"], e["end"]): e["text"]
    for e in ner["entities"]
}

# 3) Compose the summary. Every bullet references a (start, end) span so a
#    reviewer can click back to the exact evidence.
def cite(start, end):
    return f"[{start}:{end}] {deid.text[start:end]!r}"

# Example problem-oriented line, grounded in detected spans:
# "Community-acquired pneumonia (RLL infiltrate) — treated with ceftriaxone +
#  azithromycin." with cite(...) anchors for each entity.

analyze_text returns entities as {"text", "label", "confidence", "start", "end", "metadata"}; the start/end offsets index the de-identified text, giving you exact, verifiable citation anchors.

Workflow

  1. De-identify with openmed.deidentify. Summaries are often shared or logged; PHI must be gone before this stage. Keep the mapping (keep_mapping=True) only if a downstream clinician must re-identify in a controlled context — never persist the mapping with the summary.
  2. Extract grounding spans with openmed.analyze_text (problems, meds, labs, procedures). These define the allowed evidence set: a summary claim that cannot point at a span is unsupported.
  3. Resolve context with openmed.clinical (negation, temporality, subject) so "no chest pain" and "father had MI" are not summarized as active patient problems. See resolving-clinical-context.
  4. Compose by view:
    • One-liner: age/sex + key chronic problems + reason for encounter.
    • Hospital course: ordered problems → intervention → response, each line citing the spans it summarizes.
    • Problem-oriented: group entities into problems; attach supporting med/lab/procedure spans under each.
  5. Enforce citation coverage. Reject or flag any output sentence with zero span citations. This is the anti-hallucination gate — keep it strict.
  6. Mark it a draft. Render the medical-device disclaimer and require human sign-off before the summary enters the record.
Show full SKILL.md (272 more words)Show less

Hand-off to / from OpenMed

  • From OpenMed: consumes openmed.deidentify(...) output (de-identified text + entity spans) and openmed.analyze_text(...) (PredictionResult dict). Entity start/end offsets are the citation anchors.
  • To OpenMed: the summary text itself can be re-run through openmed.analyze_text for a coded problem list, or through openmed.eval leakage gates to confirm no PHI leaked into the generated summary.
  • Citation rendering: analyze_text(..., output_format="html") produces a span-highlighted view of the source — handy for a click-to-evidence UI.

Edge cases & gotchas

  • Hallucination is the failure mode. If your summary backbone is an LLM, constrain it to the entity/span set and require a citation per sentence; do not let it introduce facts (doses, diagnoses, dates) absent from the spans.
  • Negation & family history. Always run context resolution first; "denies", "ruled out", "FH of" must not become patient problems.
  • Copy-forward / note bloat. EHR notes carry stale copy-pasted blocks. Cite the most recent supporting span and prefer the current encounter's text.
  • Conflicting statements. When the chart contradicts itself (two different discharge diagnoses), surface both with citations rather than silently picking one.
  • No autonomous action. Never auto-finalize, auto-sign, or auto-route a summary; it is decision support, not a clinical decision.
  • PHI in the summary. A summary can re-introduce identifiers the model missed in the source. Run the output through openmed.extract_pii or an openmed.eval leakage gate before display or storage.

Standards & references

© maziyarpanahi, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/summarizing-clinical-notes of maziyarpanahi/openmed.

Open the folder on GitHubat commit 9dca507

Compare with similar skills

Summarizing Clinical Notes next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Summarizing Clinical Notes compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Summarizing Clinical Notes this skillmaziyarpanahi/openmed5.5k—~1.7kAutomated safety check: PassApache-2.0
Content Research Writerweapp-tailwindcss/weapp-tailwindcss1.9k25 repos~3.5kAutomated safety check: PassMIT
Systematic Review ScreenerImbad0202/academic-research-skills51k—~8.4kAutomated safety check: PassCustom licence
NetworkxzLanqing/codex-claude-academic-skills4.7k15 repos~3.2kAutomated safety check: PassBSD-3-Clause
Literature Reviewneflibata-feng/MyArxiv-Agent12620 repos~5.9kAutomated safety check: NotesMIT
Openalex Databaseneflibata-feng/MyArxiv-Agent12612 repos~3kAutomated safety check: PassCustom licence

Similar skills

  • Content Research Writer

    weapp-tailwindcss/weapp-tailwindcss

    Assists in writing high-quality content by conducting research, adding citations, improving hooks, iterating on outlines, and providing real-time feedback on each section.

    1.9k GitHub starsUsed in 25 repos~3.5k tokens
    Research & ScienceAuto-check passed
  • Systematic Review Screener

    Imbad0202/academic-research-skills

    Screens records for systematic, scoping and rapid reviews against fixed eligibility rules, using two blinded AI reviewers and a third adjudicator, with traceable PRISMA counts.

    51k GitHub stars~8.4k tokensUpdated yesterday
    Research & ScienceAuto-check passed
  • Networkx

    zLanqing/codex-claude-academic-skills

    Comprehensive toolkit for creating, analyzing, and visualizing complex networks and graphs in Python.

    4.7k GitHub starsUsed in 15 repos~3.2k tokens
    Research & ScienceAuto-check passed
  • Literature Review

    neflibata-feng/MyArxiv-Agent

    Conduct comprehensive, systematic literature reviews using multiple academic databases (PubMed, arXiv, bioRxiv, Semantic Scholar, etc.).

    126 GitHub starsUsed in 20 repos~5.9k tokens
    Research & ScienceAuto-check: notes
  • Openalex Database

    neflibata-feng/MyArxiv-Agent

    Query and analyze scholarly literature using the OpenAlex database.

    126 GitHub starsUsed in 12 repos~3k tokens
    Research & ScienceAuto-check passed
  • Citation Verification Guide

    Galaxy-Dawn/claude-scholar

    Reference guidance for checking every citation in academic writing against canonical sources such as DOI, arXiv, CrossRef and Semantic Scholar, to catch fake or wrong references.

    5.7k GitHub starsUsed in 2 repos~1.9k tokens
    Research & ScienceAuto-check passed

More from maziyarpanahi/openmed

All 74 skills in this repo
  • Checks OpenMed de-identified clinical text against the 18 HIPAA Safe Harbor identifier categories and reports gaps and residual re-identification risk.

    5.5k GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • OpenMed Model Card Writer

    maziyarpanahi/openmed

    Fills in a model card for an OpenMed clinical NER or de-identification model from its evaluation reports: intended use, metrics, subgroups and limitations.

    5.5k GitHub stars~1.8k tokensUpdated today
    Auto-check passed
  • Walks a data pipeline against the HIPAA Privacy and Security Rule checklist and produces a gap report before it processes patient data.

    5.5k GitHub stars~2k tokensUpdated today
    Auto-check passed
  • ICD-10 Coding Assistant

    maziyarpanahi/openmed

    Suggests candidate ICD-10-CM diagnosis and ICD-10-PCS procedure codes for clinical text extracted by OpenMed, with rationale for a certified coder to review.

    5.5k GitHub stars~2k tokensUpdated today
    Auto-check passed
  • OpenMed ETL to OMOP CDM

    maziyarpanahi/openmed

    Maps OpenMed-extracted, terminology-coded conditions, drugs and measurements into OMOP CDM v5.4 tables for OHDSI and ATLAS analytics.

    5.5k GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Extracting SDOH and Z-Codes

    maziyarpanahi/openmed

    Finds social risks such as housing instability or food insecurity in clinical notes and proposes matching ICD-10-CM Z-codes for a coder to confirm.

    5.5k GitHub stars~1.9k tokensUpdated today
    Auto-check passed

Questions about Summarizing Clinical Notes

What does Summarizing Clinical Notes do?

Produces structured, citation-anchored summaries of clinical notes — one-liner, hospital course, and problem-oriented views — where every claim cites a source span so nothing is hallucinated. Summarizing Clinical Notes is an agent skill from maziyarpanahi/openmed. Produces structured, citation-anchored summaries of clinical notes — one-liner, hospital course, and problem-oriented views — where every claim cites a source span so nothing is hallucinated.

When should I use Summarizing Clinical Notes?

Summarizing Clinical Notes fits situations like: wants a discharge summary draft; chart-abstraction summary; keywords: summarize note; discharge summary.

How do I install Summarizing Clinical Notes in Claude Code?

Run `npx skills add maziyarpanahi/openmed --skill summarizing-clinical-notes -a claude-code`. Or copy the skill folder (skills/summarizing-clinical-notes in maziyarpanahi/openmed) into .claude/skills/summarizing-clinical-notes in your project. Claude Code loads it when a task matches its description.

How do I install Summarizing Clinical Notes in Codex?

Run `npx skills add maziyarpanahi/openmed --skill summarizing-clinical-notes -a codex`. Or copy the skill folder (skills/summarizing-clinical-notes in maziyarpanahi/openmed) into .agents/skills/summarizing-clinical-notes in your project. Codex loads it when a task matches its description.

Can I use Summarizing Clinical Notes in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add maziyarpanahi/openmed --skill summarizing-clinical-notes -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/summarizing-clinical-notes, .gemini/skills/summarizing-clinical-notes, .github/skills/summarizing-clinical-notes and .opencode/skills/summarizing-clinical-notes in your project.

What does Summarizing Clinical Notes need to run?

SKILL.md names no scripts, command-line tools or credentials: Summarizing Clinical Notes is instructions for the agent only. Our summary lists: Python 3.

Does Summarizing Clinical Notes access the network?

SKILL.md names 4 domains. As links in the text: hl7.org, jointcommission.org, ihi.org and fda.gov. This is read from the text; nothing was executed.

Is Summarizing Clinical Notes safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Summarizing Clinical Notes use?

Summarizing Clinical Notes is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Summarizing Clinical Notes use?

About 1.7k tokens (SKILL.md is roughly 7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Summarizing Clinical Notes?

Skills that share tags, products or a category with Summarizing Clinical Notes: Content Research Writer (weapp-tailwindcss/weapp-tailwindcss, 1.9k stars), Systematic Review Screener (Imbad0202/academic-research-skills, 51k stars), Networkx (zLanqing/codex-claude-academic-skills, 4.7k stars) and Literature Review (neflibata-feng/MyArxiv-Agent, 126 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Summarizing Clinical Notes?

maziyarpanahi (a GitHub user) maintains it in maziyarpanahi/openmed, which has 5,500 GitHub stars. The repository holds 74 skills in this directory. The repository was last updated on October 9, 2026.

Source: maziyarpanahi/openmed on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.