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
:
POST
to the $classify operation with Parameters
Resource where version=CCSR Category
and system=http://hl7.org/fhir/sid/icd-10-cm
for the ICD10 code for each medication
- 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