Building a Problem List

Problems (called “Conditions” in the Orchestrate APIs) come from several types of data sources including encounters or documents (from EMRs like Epic and Cerner), claims (from payor systems), and patient entry. To build as a problem list from such a diversity of data, you likely want to translate problem terms into a common standard vocabulary and use ValueSets to organize into a single list.

Scenario

An application developer has a set of data for one patient containing problem data from multiple sources:

hypertension              system = North Plains EMR
diabetes                  system = North Plains EMR
skin rash                 system = East Side HIE
DM2 well controlled       system = East Side HIE

Choosing Value Sets for Categorization

Orchestrate offers several reference value sets for categorizing problems. MeSH Diagnostic Group, CCSR Category, and CCI (Chronic Condition Indicator) are three of the most useful value set scopes for diagnosis categorization.

Translating into Standard Code Systems

To make use of problem categories, first retrieve ICD-10-CM and/or SNOMED codes using the /ConceptMap/$translate operation with domain=DiagnosisCode

For example, GET https://api.careevolutionapi.com/terminology/v1/fhir/r4/ConceptMap/$translate?domain=DiagnosisCode&code=hypertension&system=North Plains EMR

Example response:

{"resourceType": "Parameters",
    "parameter": [
        {"name": "match",
            "part": [
                {"name": "equivalence",
                    "valueCode": "equal"},
                {"name": "concept",
                    "valueCoding": {
                        "extension": [
                            {"url": "https://rosetta.careevolution.com/api/translate-dependency/domain",
                                "valueString": "Reference"}
                        ],
                        "system": "http://snomed.info/sct",
                        "code": "38341003",
                        "display": "Hypertensive disorder, systemic arterial (disorder)"
                }
            ]
        },
        {"name": "result",
            "valueBoolean": true
        },
        {"name": "Rosetta.ApiVersion",
            "valueString": "20210603.2-master"
        },
        {"name": "Rosetta.TermsVersion",
            "valueString": "20210608.2-master"
...
}

The other responses are summarized below:

Parameters
code=

system=
Responses/Matches
concept.code

concept.display
hypertension North Plains EMR 38341003 Hypertensive disorder, systemic arterial (disorder)
diabetes North Plains EMR 73211009 Diabetes mellitus (disorder)
skin rash East Side HIE 271807003 Eruption of skin (disorder)
DM2 well controlled East Side HIE 444110003 Type II diabetes mellitus well controlled (finding)

Categorizing Problems

Many clinical use cases require a problem list summarized by higher level categories than individual diagnosis codes. To create a problem list from ICD10 codes, group diagnosis codes by value sets. For example, to use CCSR Category:

  1. POST to the $classify operation with Parameters Resource where version=CCSR Category and system=http://hl7.org/fhir/sid/icd-10-cmfor the ICD10 code for each medication
  2. Problems can then be grouped by category (the resulting ValueSet names)

For example, the following is the body for a POST to the $classify operation: POST https://api.careevolutionapi.com/terminology/v1/fhir/r4/ValueSet/$classify

{"resourceType": "Parameters",
    "parameter": [
        {   "name": "system",
            "valueString": "http://hl7.org/fhir/sid/icd-10-cm"},
        {   "name": "scope",
            "valueString": "CCSR Category"},
        {   "name": "code",
            "valueString": "E11.9"},
        {   "name": "code",
            "valueString": "E11.8"},
        {   "name": "code",
            "valueString": "G43.909"},
        {   "name": "code",
            "valueString": "G43.719"}  ] }

Example response:

{"resourceType": "Parameters",
    "parameter": [
        {   "name": "item",
            "part": [
                {   "name": "code",
                    "valueString": "E11.9"},
                {   "name": "classification",
                    "part": [
                        {   "name": "scope",
                            "valueString": "CCSR Category"
                        },
                        {   "name": "name",
                            "valueString": "Diabetes mellitus without complication"}  ]   }
                {   "name": "classification",
                    "part": [
                        {   "name": "scope",
                            "valueString": "CCSR Category"
                        },
                        {   "name": "name",
                            "valueString": "Diabetes mellitus, Type 2"}  ]   }  ]   }   ]...  etc