Skills

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)

PopulationMeaningWhere OpenMed helps
IPP (Initial Population)everyone the measure could apply tousually structured (encounters, age)
DenominatorIPP meeting base criteriamostly structured
Denominator Exclusion / Exceptionvalid reasons to remove from denomnotes: "declined", "medical reason", "not indicated"
Numeratormet the quality actionnotes: 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}
Read the whole SKILL.md on GitHub

More in Writing