Convert your FHIR JSON -> XML and back here. The CDA Book is sometimes listed for Kindle here and it is also SHIPPING from Amazon! See here for Errata.

Tuesday, July 27, 2010

Moving from C32 Version 2.3 to 2.5

Updated 12/15/2010 to provide an example for uncoded, and added examples for value elements. 
Just for fun, I'm going to pretend that you have ignored my recommendation to use HITSP C32 Version 2.5, and are using an older version, like C32 Version 2.3. Maybe you had 2.3 already implemented, and were waiting to see what happened to meaningful use before you piled on more work. So, now you want to know what you need to do to make the switch?

Moving to V2.4

Fortunately, it's not really all that difficult. Between version 2.3 and version 2.4, the big change was the introduction of C83 (CDA Content Modules) and the harmonization of HITSP Section and Entry templates across HITSP Components. Some HITSP specifications (like C28, C38 and C48) used IHE Profiles, others (like C84) used Health Story/HL7 Implementation Guides, and others (like C32), just used straight CCD. Making the shift between Version 2.3 and 2.4 was basically a matter of replacing the ...88.11.32.xx template identifiers with the ...88.11.83.yy template identifiers (where xx == yy in almost all cases), and adding a few IHE template identifiers. Here are the major changes you need to make:

In the CDA Document

Where you had:
‹ClinicalDocument ...›
   ‹templateId root='2.16.840.1.113883.3.88.11.32.1 '/›
   ‹templateId root='2.16.840.1.113883.10.20.1 '/›
You would add the following:
‹templateId root='1.3.6.1.4.1.19376.1.5.3.1.1.6'/›
   ‹templateId root='1.3.6.1.4.1.19376.1.5.3.1.1.2'/›
   ‹templateId root='1.3.6.1.4.1.19376.1.5.3.1.1.1'/›
   ‹templateId root='2.16.840.1.113883.10.20.3'/›

In the CDA Header

Where you had...
‹languageCommunication›
   ‹templateId root='2.16.840.1.113883.3.88.11.32.2'/›
Add...
‹templateId root='2.16.840.1.113883.3.88.11.83.2'/›
   ‹templateId root='1.3.6.1.4.1.19376.1.5.3.1.2.1'/›

Note: You could remove the template 2.16.840.1.113883.3.88.11.32.2, but need not, and this pattern follows throughout for the 88.11.32.xx templates.

Where you had...
‹participant...›
   ‹templateId root='2.16.840.1.113883.3.88.11.32.3'/›
Add...
‹templateId root='2.16.840.1.113883.3.88.11.83.3'/›
   ‹templateId root='1.3.6.1.4.1.19376.1.5.3.1.2.4'/›
Where you had...
‹performer...›
   ‹templateId root='2.16.840.1.113883.3.88.11.32.4'/›
Add...
‹templateId root='2.16.840.1.113883.3.88.11.83.4'/›
   ‹templateId root='1.3.6.1.4.1.19376.1.5.3.1.2.3'/›

In Sections

For each of the sections below, add the specified templates to either the section or the entry
Section NameIn this CCD SectionAdd these Section TemplatesIn this C32/CCD EntryAdd these Entry Templates
Insurance
Providers
2.16.840.1.113883.10.20.1.92.16.840.1.113883.3.88.11.83.101.1
1.3.6.1.4.1.19376.1.5.3.1.1.5.3.7
2.16.840.1.113883.3.88.11.32.5
2.16.840.1.113883.10.20.1.20
2.16.840.1.113883.3.88.11.83.5.1
1.3.6.1.4.1.19376.1.5.3.1.4.17
Allergies2.16.840.1.113883.10.20.1.22.16.840.1.113883.3.88.11.83.102
1.3.6.1.4.1.19376.1.5.3.1.3.13
2.16.840.1.113883.3.88.11.32.6
2.16.840.1.113883.10.20.1.27
2.16.840.1.113883.3.88.11.83.6
1.3.6.1.4.1.19376.1.5.3.1.4.5.3
Problems2.16.840.1.113883.10.20.1.112.16.840.1.113883.3.88.11.83.103
1.3.6.1.4.1.19376.1.5.3.1.3.6
2.16.840.1.113883.3.88.11.32.7
2.16.840.1.113883.10.20.1.27
2.16.840.1.113883.3.88.11.83.7
1.3.6.1.4.1.19376.1.5.3.1.4.5.2
Medications2.16.840.1.113883.10.20.1.82.16.840.1.113883.3.88.11.83.112
1.3.6.1.4.1.19376.1.5.3.1.3.19
2.16.840.1.113883.3.88.11.32.8
2.16.840.1.113883.10.20.1.24
2.16.840.1.113883.3.88.11.83.8
1.3.6.1.4.1.19376.1.5.3.1.4.7
Product2.16.840.1.113883.10.20.1.532.16.840.1.113883.3.88.11.83.8.2
1.3.6.1.4.1.19376.1.5.3.1.4.7.2
Advance
Directives
2.16.840.1.113883.10.20.1.12.16.840.1.113883.3.88.11.83.116
1.3.6.1.4.1.19376.1.5.3.1.3.35
2.16.840.1.113883.3.88.11.32.13
2.16.840.1.113883.10.20.1.17
2.16.840.1.113883.3.88.11.83.12
1.3.6.1.4.1.19376.1.5.3.1.4.13.7
Immunization2.16.840.1.113883.10.20.1.62.16.840.1.113883.3.88.11.83.117
1.3.6.1.4.1.19376.1.5.3.1.3.23
2.16.840.1.113883.3.88.11.32.14
2.16.840.1.113883.10.20.1.24
2.16.840.1.113883.3.88.11.83.13
1.3.6.1.4.1.19376.1.5.3.1.4.12
Vital Signs2.16.840.1.113883.10.20.1.162.16.840.1.113883.3.88.11.83.119
1.3.6.1.4.1.19376.1.5.3.1.1.5.3.2
2.16.840.1.113883.3.88.11.32.15
2.16.840.1.113883.10.20.1.31
2.16.840.1.113883.3.88.11.83.14
1.3.6.1.4.1.19376.1.5.3.1.4.13.1
Result2.16.840.1.113883.10.20.1.142.16.840.1.113883.3.88.11.83.122
1.3.6.1.4.1.19376.1.5.3.1.3.28
2.16.840.1.113883.3.88.11.32.16
2.16.840.1.113883.10.20.1.31
2.16.840.1.113883.3.88.11.83.15.1
1.3.6.1.4.1.19376.1.5.3.1.4.13
Procedures2.16.840.1.113883.10.20.1.122.16.840.1.113883.3.88.11.83.108
1.3.6.1.4.1.19376.1.5.3.1.3.12
2.16.840.1.113883.10.20.1.292.16.840.1.113883.3.88.11.83.17
1.3.6.1.4.1.19376.1.5.3.1.4.19
Encounters2.16.840.1.113883.10.20.1.32.16.840.1.113883.3.88.11.83.127
1.3.6.1.4.1.19376.1.5.3.1.1.5.3.3
2.16.840.1.113883.3.88.11.32.17
2.16.840.1.113883.10.20.1.21
2.16.840.1.113883.3.88.11.83.16
1.3.6.1.4.1.19376.1.5.3.1.4.14
Comment2.16.840.1.113883.3.88.11.32.12
2.16.840.1.113883.10.20.1.40
2.16.840.1.113883.3.88.11.83.11
1.3.6.1.4.1.19376.1.5.3.1.4.2


Moving to V2.5

The major change affecting C32 going from version 2.4 to 2.5 were modifications supporting the meaningful use code sets. If you had already supported the HITSP code sets use in C32 Version 2.3, this didn't really effect you as a producer. As a consumer of C32 Version 2.5, there was a significant change related to coded content. For many of the C32 entries, there was one and only one allowed code system, and if you included the ‹code› element, you used the required code system. In Version 2.5 the requirements were clarified. There are two ways to use ‹code› or the CD data type in ‹value›

  1. Coded data using required vocabularies.
    In this case, the code and codeSystem attributes are required on ‹code› and contain the codes in the required code set. So, for problems, if you used SNOMED-CT, you'd do something like the following:
    ‹code code='57054005' codeSystem='2.16.840.1.113883.6.96'/›
    ‹value xsi:type='CD' code='57054005' codeSystem='2.16.840.1.113883.6.96'/›
  2. Coded using other than required vocabularies
    In this case, the nullFlavor attribute is required. If coded using other than the required vocabulary, the alternate code goes in ‹translation›, and the code and codeSystem attributes of the ‹translation› identify the code using an alternative coding scheme.  And if you used ICD-9-CM for problems, you'd do something like the following:
    ‹code nullFlavor='UNK'›
      ‹translation code='410.9' codeSystem='2.16.840.1.113883.6.103'/›
    ‹/code›
    ‹value xsi:type='CD' nullFlavor='UNK'›
    ‹translation code='410.9' codeSystem='2.16.840.1.113883.6.103'/›
    ‹/value› 
  3. Not coded at all again requires nullFlavor:
    ‹code nullFlavor='UNK'/›
    ‹value xsi:type='CD' nullFlavor='UNK'/›
Which brings us to the final table of this post, which tells you what OIDS to use and where to put the codes you are using:

Coded ItemVocabularyOIDCode/Translation
ProblemsSNOMED CT2.16.840.1.113883.6.96C
ICD-9-CM2.16.840.1.113883.6.103T
MedicationsRxNORM2.16.840.1.113883.6.88C
NDC2.16.840.1.113883.6.69T
MDDB (Medispan)2.16.840.1.113883.6.162T
MMSL (Multum)2.16.840.1.113883.6.175T
NDDF (First DataBank)2.16.840.1.113883.6.208T
MMX (MicroMedex)2.16.840.1.113883.6.176T
MSH (MeSH)2.16.840.1.113883.6.177T
NDFRT (VHA National Drug File)2.16.840.1.113883.6.209T
SNOMED CT2.16.840.1.113883.6.96T
Lab TestsLOINC2.16.840.1.113883.6.1C
ProceduresCPT-4*2.16.840.1.113883.6.12C**
ICD-9-CM2.16.840.1.113883.6.104***C**

Notes:
*HCPCS is made up of CPT-4 and several other vocabularies. This is just the OID for CPT-4, I'm still digging into the remainder.
**C32 Version 2.5 does not have a preferred vocabulary for procedures, so any code system can be used in the code element
***ICD-9-CM Procedures uses a different OID than ICD-9-CM Diagnoses, this is NOT a mistake

Warning: These aren't necessarily all of the changes that you will need to make to your application, but it does cover the largest ones.