Skip to content

Mapping resolution API

cms_icd.resolution.resolve_icd9_to_icd10_cm_mappings

resolve_icd9_to_icd10_cm_mappings(fiscal_years: Iterable[int] | None = None, *, corrections_through_fiscal_year: int = 2018, cache_dir: str | Path | None = None, offline: bool = False) -> Mapping[int, Mapping[str, ICDCMMappingResolution]]

Resolve corrected ICD-9-CM diagnosis GEMs for several fiscal years.

The result is a best-effort interpretation of every official source mapping, not a one-to-one clinical conversion table. None selects every compatible advertised GEM year through the correction horizon (currently FY2014--FY2018).

Source code in src/cms_icd/resolution.py
def resolve_icd9_to_icd10_cm_mappings(
    fiscal_years: Iterable[int] | None = None,
    *,
    corrections_through_fiscal_year: int = 2018,
    cache_dir: str | Path | None = None,
    offline: bool = False,
) -> Mapping[int, Mapping[str, ICDCMMappingResolution]]:
    """Resolve corrected ICD-9-CM diagnosis GEMs for several fiscal years.

    The result is a best-effort interpretation of every official source mapping, not a
    one-to-one clinical conversion table. ``None`` selects every compatible advertised
    GEM year through the correction horizon (currently FY2014--FY2018).
    """
    years = _normalize_years(
        fiscal_years,
        kind="cm",
        corrections_through_fiscal_year=corrections_through_fiscal_year,
        cache_dir=cache_dir,
        offline=offline,
    )
    result: dict[int, Mapping[str, ICDCMMappingResolution]] = {}
    for year in years:
        store = GEMKnowledgeBase.corrected_from_cms(
            fiscal_year=year,
            corrections_through_fiscal_year=corrections_through_fiscal_year,
            cache_dir=cache_dir,
            offline=offline,
        ).cm.icd9_to_icd10
        tabular = ICD10KnowledgeBase.from_cms(
            fiscal_year=year,
            release_date=date(year - 1, 10, 1),
            cache_dir=cache_dir,
            offline=offline,
        ).cm.tabular
        result[year] = _resolved_year("cm", store, tabular)  # type: ignore[assignment]
    return MappingProxyType(result)

cms_icd.resolution.resolve_icd9_to_icd10_cm_mapping

resolve_icd9_to_icd10_cm_mapping(*, fiscal_year: int, corrections_through_fiscal_year: int = 2018, cache_dir: str | Path | None = None, offline: bool = False) -> Mapping[str, ICDCMMappingResolution]

Resolve corrected diagnosis mappings for one historical fiscal year.

Source code in src/cms_icd/resolution.py
def resolve_icd9_to_icd10_cm_mapping(
    *,
    fiscal_year: int,
    corrections_through_fiscal_year: int = 2018,
    cache_dir: str | Path | None = None,
    offline: bool = False,
) -> Mapping[str, ICDCMMappingResolution]:
    """Resolve corrected diagnosis mappings for one historical fiscal year."""
    return resolve_icd9_to_icd10_cm_mappings(
        (fiscal_year,),
        corrections_through_fiscal_year=corrections_through_fiscal_year,
        cache_dir=cache_dir,
        offline=offline,
    )[fiscal_year]

cms_icd.resolution.resolve_icd9_to_icd10_pcs_mappings

resolve_icd9_to_icd10_pcs_mappings(fiscal_years: Iterable[int] | None = None, *, corrections_through_fiscal_year: int = 2018, cache_dir: str | Path | None = None, offline: bool = False) -> Mapping[int, Mapping[str, ICDPCSMappingResolution]]

Resolve corrected ICD-9-CM procedure GEMs for several fiscal years.

The result is a best-effort interpretation. A ? in a target pattern marks an ICD-10-PCS axis on which official alternatives disagree.

Source code in src/cms_icd/resolution.py
def resolve_icd9_to_icd10_pcs_mappings(
    fiscal_years: Iterable[int] | None = None,
    *,
    corrections_through_fiscal_year: int = 2018,
    cache_dir: str | Path | None = None,
    offline: bool = False,
) -> Mapping[int, Mapping[str, ICDPCSMappingResolution]]:
    """Resolve corrected ICD-9-CM procedure GEMs for several fiscal years.

    The result is a best-effort interpretation. A ``?`` in a target pattern marks an
    ICD-10-PCS axis on which official alternatives disagree.
    """
    years = _normalize_years(
        fiscal_years,
        kind="pcs",
        corrections_through_fiscal_year=corrections_through_fiscal_year,
        cache_dir=cache_dir,
        offline=offline,
    )
    result: dict[int, Mapping[str, ICDPCSMappingResolution]] = {}
    for year in years:
        store = GEMKnowledgeBase.corrected_from_cms(
            fiscal_year=year,
            corrections_through_fiscal_year=corrections_through_fiscal_year,
            cache_dir=cache_dir,
            offline=offline,
        ).pcs.icd9_to_icd10
        result[year] = _resolved_year("pcs", store, None)  # type: ignore[assignment]
    return MappingProxyType(result)

cms_icd.resolution.resolve_icd9_to_icd10_pcs_mapping

resolve_icd9_to_icd10_pcs_mapping(*, fiscal_year: int, corrections_through_fiscal_year: int = 2018, cache_dir: str | Path | None = None, offline: bool = False) -> Mapping[str, ICDPCSMappingResolution]

Resolve corrected procedure mappings for one historical fiscal year.

Source code in src/cms_icd/resolution.py
def resolve_icd9_to_icd10_pcs_mapping(
    *,
    fiscal_year: int,
    corrections_through_fiscal_year: int = 2018,
    cache_dir: str | Path | None = None,
    offline: bool = False,
) -> Mapping[str, ICDPCSMappingResolution]:
    """Resolve corrected procedure mappings for one historical fiscal year."""
    return resolve_icd9_to_icd10_pcs_mappings(
        (fiscal_year,),
        corrections_through_fiscal_year=corrections_through_fiscal_year,
        cache_dir=cache_dir,
        offline=offline,
    )[fiscal_year]