Skills

Reconciling Problem Lists

Deduplicate and reconcile OpenMed-extracted conditions into one clean active problem...

Install

npx skills add maziyarpanahi/openmed --skill reconciling-problem-lists -g -a claude-code -y
Repository
maziyarpanahi/openmed5.8k
Category
Engineering
Updated
4d ago
License
Apache-2.0
Context cost
Mediumabout 1,547 tokens
Runs scripts
No, instructions only

What it does

Deduplicate and reconcile OpenMed-extracted conditions into one clean active problem list with clinical status (active / resolved / historical). Use after NER and context resolution when the user wants a problem list, condition reconciliation, dedup of synonymous diagnosis mentions, or active-vs-resolved status from a note. Covers clustering synonymous mentions into one concept, excluding negated mentions, applying clinical context (historical / hypothetical / recent) to set status, and emitting a USCDI-Problem-shaped list. SNOMED CT concept grounding is user-supplied and out-of-process. Hand-off: consume openmed.analyze_text Disease entities plus resolving-clinical-context axes. Pairs after extracting-clinical-entities.

Reconciling problem lists

A single note mentions the same condition many ways, "DM2," "type 2 diabetes," "diabetes mellitus", across PMH, HPI, and A&P, some negated, some historical. A usable problem list collapses those mentions into one concept per problem, drops what the patient does not have, and assigns a clinical status (active / resolved / historical). This skill turns OpenMed's per-mention entity stream plus ConText axes into that reconciled, de-duplicated list, shaped for USCDI "Problem" exchange.

When to use

  • After extracting-clinical-entities and resolving-clinical-context, when the user wants a clean problem list, condition reconciliation, or dedup of repeated diagnosis mentions.
  • You need active-vs-resolved-vs-historical status per problem, not just raw mentions.
  • You are assembling a FHIR Condition list or a USCDI Problem element and need one entry per concept.

Quick start

import openmed
from openmed.clinical import resolve_span_context, NEGATED, HISTORICAL, HYPOTHETICAL

note = ("PMH: type 2 diabetes, prior MI 2019 (resolved). "
        "A&P: poorly controlled DM2; denies chest pain.")

ents = openmed.analyze_text(note, model_name="disease_detection_superclinical",
                            output_format="dict")

def normalize(surface: str) -> str:
    # Cheap synonym folding; replace with SNOMED grounding (out-of-process).
    s = surface.lower().strip()
    return {"dm2": "type 2 diabetes", "diabetes mellitus": "type 2 diabetes"}.get(s, s)
Read the whole SKILL.md on GitHub

More in Engineering