
Computing Ecqms
Compute electronic clinical quality measures (eCQMs) over structured data using CQL/QDM...
Install
npx skills add maziyarpanahi/openmed --skill computing-ecqms -g -a claude-code -y- Repository
- maziyarpanahi/openmed5.8k
- Category
- Writing
- Updated
- 4d ago
- License
- Apache-2.0
- Context cost
- Lightabout 1,378 tokens
- Runs scripts
- No, instructions only
What it does
Compute electronic clinical quality measures (eCQMs) over structured data using CQL/QDM logic, lifting note-derived numerator and exclusion facts from OpenMed to improve measure capture. Use when the user wants to compute an eCQM, evaluate a CMS/ECQI quality measure, improve numerator capture from clinical notes, build CQL/QDM measure logic, or close documentation gaps that structured codes miss. Covers eCQM structure (IPP/denominator/numerator/exclusions), CQL v1.5 and QDM v5.6, MADiE authoring, and mapping OpenMed entities to QDM data elements. Consumes OpenMed analyze_text facts (coded via the linking skills) to supplement structured EHR data; does not replace certified measure engines.
Computing eCQMs
Electronic Clinical Quality Measures (eCQMs) are computed over structured data using CQL (Clinical Quality Language) logic against the QDM (Quality Data Model). Much of what a measure needs, a counseling note, a reason a service wasn't done, a symptom, lives only in free text. This skill uses OpenMed to lift those facts out of notes (on-device) and feed them into measure computation so numerators and valid exclusions aren't undercounted.
When to use this skill
When structured codes under-capture a measure population and the evidence is in notes: documented exclusions ("patient declined screening"), numerator-relevant findings, or symptoms gating a measure. Use it alongside a certified measure engine, OpenMed supplements capture; it does not compute or certify the measure.
eCQM anatomy (what you're populating)
| Population | Meaning | Where OpenMed helps |
|---|---|---|
| IPP (Initial Population) | everyone the measure could apply to | usually structured (encounters, age) |
| Denominator | IPP meeting base criteria | mostly structured |
| Denominator Exclusion / Exception | valid reasons to remove from denom | notes: "declined", "medical reason", "not indicated" |
| Numerator | met the quality action | notes: counseling delivered, advice given, status documented |
Quick start
import openmed
note = (
"Tobacco use screened today; patient is a current every-day smoker. "
"Cessation counseling provided and cessation medication offered."
)
result = openmed.analyze_text(note, output_format="dict")
# entities -> {text, label, confidence, start, end}
