# Reconciling Problem Lists

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

- Repository: https://github.com/maziyarpanahi/openmed (5755 stars)
- Category: Engineering
- License: Apache-2.0
- Last updated: 2026-10-31
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add maziyarpanahi/openmed --skill reconciling-problem-lists -g -a claude-code -y`
Codex: `npx skills add maziyarpanahi/openmed --skill reconciling-problem-lists -g -a codex -y`
Cursor: `npx skills add maziyarpanahi/openmed --skill reconciling-problem-lists -g -a cursor -y`
Gemini CLI: `npx skills add maziyarpanahi/openmed --skill reconciling-problem-lists -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add maziyarpanahi/openmed`

## Description

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.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# 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

```python
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)

The rest: https://github.com/maziyarpanahi/openmed/blob/HEAD/skills/reconciling-problem-lists/SKILL.md
