Developers coming into healthcare are often confused as to why it's so difficult to get data in and out of backend "systems of record" like EMRs.
Editorial note as of March 28, 2017: This article was originally published in 2013 and focused on describing the set of APIs available in Datica's (formerly Catalyze) original Backend as a Service offering. BaaS has since evolved into a Platform as a Service, and the company has since renamed itself to Datica, so much of the article content about our product APIs are now defunct. However, we kept the article around because of the value found in breaking down the main codesets and standards. If you are looking for a public API, contact us at firstname.lastname@example.org and we might be able ot help.
What are they, why they're important and how they're used
I initially wanted to write about data, security and access as related to healthcare and HIPAA, but I realized that developers coming into healthcare are often confused as to why it's so difficult to get data in and out of backend "systems of record" like EMRs (Electronic Medical Records), PMS (Practice Management Systems) etc. Database types and structures, data dictionaries, policies and so on do play an important role in accessing data of course but equally important factors are codes and value sets used by the various systems.
A listing of terms and vocabularies
Firstly, here's a list of the most common and increasingly mandated and generally accepted codesets. They are all linked to the appropriate browsers where possible so that you can get a better idea as to what they look like.
- SNOMED-CT or Systematized Nomenclature of Medicine - Clinical Terms: SNOMED-CT is a comprehensive vocabulary that covers almost every aspect of clinical care - ranging from anatomy to diagnoses to observations and procedures. SNOMED-CT requires a licenses but since the US is a participating country in IHTSDO, it can be used freely after accepting a simple license agreement. There are no fees to use this in any commercial application.(see the download link for more info). Website, Browser, APIs - APIs are available for query. Download.
- LOINC or Logical Observation Identifiers Names and Codes. This is meant primarily for laboratory and clinical observations. It was developed by the Regenstrief Institute. Note that LOINC doesn't have codes for anatomy for one. But, as you can imagine, there is some overlap with SNOMED-CT. There was a recent agreement announced for the two creating bodies to work together to map and link SNOMED-CT and LOINC. The use of LOINC is also possible with the acceptance of a simple license agreement. There are no fees to use this in any commercial application. Website, Browser, APIs - APIs are available for query. Download
- ICD 9 and 10 - The International Classification of Diseases. It was developed and is managed by the World Health Organization. It was initially developed for epidemiology but has since evolved significantly. The US was / is one of the last to switch over to the latest version, ICD-10. ICD-10 was complicated as it introduced a lot more detail (for example, it's codes allow one to distinguish between the right and left lobes of a lung and even more granularly) and an almost 10x increase in codes which is why its rollout in the US was delayed and is still problematic. The use of ICD 9 and 10 is also possible with the acceptance of a simple license agreement (see the download link for more info). No fees are needed to use this in any commercial application Website, Browser, APIs - APIs are available for query. Download.
- CPT - Common Procedure Terminology. It was developed and is maintained by the American Medical Association AMA. CPT coding is similar to ICD-9 and ICD-10 coding, except that it identifies the services rendered rather than the diagnosis on the claim. ICD code sets also contain procedure codes but these are only used in the inpatient setting. There is a necessary license agreement for any use and a fee for usage as well (see the download link for more info).
- RxNORM - RxNorm provides normalized names for clinical drugs and links its names to many of the drug vocabularies commonly used in pharmacy management and drug interaction software, including those of First Databank, Micromedex, MediSpan, Gold Standard, and Multum. By providing links between these vocabularies, RxNorm can mediate messages between systems not using the same software and vocabulary.
- HL7 - Health Language 7. This is more of a messaging and interoperability oriented standard and organization. It is the most common standard set for exchanging data between clinical systems. There are multiple HL7 message standards. However, HL7 has had to evolve to include codesets to enable this exchange.
- Other codesets - There are others of course. Often there are specific codesets which are mandated for use in a particular context. For example, for immunizations, interoperability and Meaningful Use required the use of the CVX codeset which is put out by the CDC.
The need for codes and coding vocabularies
Codes came about first to ensure that claims could be paid. Insurance organizations, whether they be Medicare or a private payer, had to have a way to understand what the specific procedure performed on the patient was (there is a difference between an MRI - Full body scan vs. just a Head and Neck and so on). To ensure that physicians were being paid the correct amount, the specific procedure had to be "coded" so that everyone knew exactly what had happened.
Now that there are several standards (as listed above), there is ongoing work to map these various vocabularies / codesets so that one can move easily from one to the other as long as one of the key ones listed earlier are used. There is work that has been done and is ongoing such as
- CMS - mapping between ICD-9 and ICD-10
- National Library of Medicine - LOINC and CPT
- Regenstrief and IHTDSO - LOINC and SNOMED
What's the value of these APIs?
Well, firstly, these are painful to download and use. As a developer, you would have to identify which specific ones you need for which specific fields in your data model. There are codesets specified for even seemingly trivial things like gender.
Secondly, these codesets change. For example, gender mentioned above used to offer male, female, ambiguous, transexual etc. as valid values with associated codes. Now, the standard expected only offers three choices - male, female and undifferentiated. SNOMED-CT, LOINC, RxNORM all continue to evolve as well. Especially RxNORM as more drugs are introduced into the market with associated codes, active ingredients etc.
Thirdly, if the data is coded uniformly within your app or apps, then analytics and any other backend process that you wish to perform becomes a lot easier.
Fourthly, if your app data is coded properly, then an enterprise conversation becomes a lot easier because there is no need to map to those standards later.
Fifthly, lookups and look-ahead functionality in any form in your app or website. Want to or add collect a medication list, just do a lookahead using our API routes for RxNorm.
Building compliant apps is hard. Adding interoperability and meaning to data collected, imported, or exchanged is also a huge challenge when building health apps. We might be able to help in both those areas if you are experiencing challenges as a digital health application.