Ekagra
caDSR Forms Interchange
Feasibility of using ODM & CDA
Nov 13, 2008Ashwin Mathur
Ekagra
The need
To be able to represent Forms templates in a consistent ‘standards’ based format for sharing with other systems
Ekagra
Requirements
Information to be captured - Form metadata
Questions Question Text CDE IDs
Header info Long Name, Definition, Context, etc.
Form Structure Modules
Name Order
Form Behavior Skip Patterns (if any)
Ekagra
Clinical Document Architecture (CDA)
HL7 standard for exchanging clinical documents
For transmission of actual clinical data Uses HL7 v3.0 complex datatypes Levels of compliance (Level 1, Level2, Level3)
in increasing order of conformity
Ekagra
Requirements
Information to be captured – CDA approach Forms meta-data
◦ Questions Question Text CDE IDs
◦ Header info Long Name, Definition, Context, etc.
Forms structure◦ Modules
Name Order
Forms Behavior Skip Patterns (if any)
Additional CDA requirements◦ Header fields data (recordTarget, author, etc.)◦ Responses to each question◦ Code system mappings to each response
X
X
XXX
Ekagra
CDA Summary
Advantages Strongly typed Different levels of conformity Human-readable & machine
computable (for Level 3 conformant documents)
Disadvantages (Forms Perspective)
Needs actual data for compliance
Header elements like recordTarget, author & custodian are mandatory
Elements cannot be referenced - no re-use
No support for data validation No explicit ordering of sections No support for skip-patterns
Ekagra
Operational Data Model (ODM)
CDISC Standard for ‘interchange and archive of clinical trials data’
Includes clinical data along with its associated metadata, administrative data & reference data
Ekagra
Requirements
Information to be captured – ODM approach
Forms meta-data◦ Questions
Question Text CDE IDs
◦ Header info Long Name, Definition, Context, etc.
Forms structure◦ Modules
Name Order
Forms Behavior Skip Patterns (if any)
Ekagra
ODM Summary
Advantages Elements loosely
coupled – promotes re-use
Supports data validation Supports skip-patterns Supports module &
question ordering Supports data and
metadata in one document
Disadvantages Not strongly typed Not easily human-
readable
Ekagra
ODM for CDA
<ClinicalDocument> <recordTarget/> <author/> <custodian/><component> <structuredBody> <section> <title>Clinical Global Improvement</title> <code code=“2004848v3.0” codeSystem=“caDSR”/> <text/> <entry/> </section> <section> <title>Patient is suicide risk?</title> <code code=“2004849v2.0” codeSystem=“caDSR”/> <text/> <entry/> </section> <section> <title>Patient in remission</title> <code code=“2004847v2.0” codeSystem=“caDSR”/> <text/> <entry/> </section></structuredBody></component></ClinicalDocument>
1) Record Target details1) Patient information
1) Patient Name ______2) Patient Address
1) Home Number ______2) City ______3) State ______4) Country ______5) Zip ______
2) Author details1) Author Name ______2) Author Address
1) Home Number ______2) City ______3) State ______4) Country ______5) Zip ______
3) Custodian details1) Custodian Name ______2) Custodian Address
1) Home Number ______2) City ______3) State ______4) Country ______5) Zip ______
4) Patient Health Info1) Clinical Global Improvement
1 2 3 4 52) Patient is suicide risk?
Yes No3) Patient in remission
Yes No
C D A
Ekagra
The proposed approach
Use ODM to capture form meta-data form data CDA meta-data CDA data
Produce CDA from captured data
ODM Container
CDACDAForm Data
CDA Data
Form Metadata
Form Metadata
CDA Metadata
CDA Metadata
Ekagra
Issues
1. Datatypes - CDA has complex HL7 datatypes while ODM has simple datatypes
Workaround: The CDA complex datatypes can be
broken down into multiple parts with simple datatypes in a ODM <ItemDef> element
Further restrictions on the data can be applied using the ‘RangeCheck’ element in ODM
Ekagra
Example
<ClinicalDocument> <recordTarget/> <author/> <custodian/> <component> <structuredBody> <section> <title>Clinical Global Improvement</title> <code code=“2004848v3.0” codeSystem=“caDSR”/> <text/> <entry/> </section> <section> <title>Patient’s suicide risk</title> <code code=“2004849v2.0” codeSystem=“caDSR”/> <text/> <entry/> </section> <section> <title>Patient in remission</title> <code code=“2004847v2.0” codeSystem=“caDSR”/> <text/> <entry/> </section></structuredBody></component></ClinicalDocument>
<ODM><ItemGroupDef OID="CDA001" Name="recordTarget"> <ItemRef ItemOID="ID004" OrderNumber="1" Mandatory="Yes" /> <ItemRef ItemOID="ID001" OrderNumber="2" Mandatory="Yes" /> <ItemRef ItemOID="ID002" OrderNumber="3" Mandatory="Yes" /> <ItemRef ItemOID="ID003" OrderNumber="4" Mandatory="Yes" /></ItemGroupDef><ItemGroupDef OID="CDA002" Name="author"> <ItemRef ItemOID="ID005" OrderNumber="1" Mandatory="Yes" /> <ItemRef ItemOID="ID001" OrderNumber="2" Mandatory="Yes" /> <ItemRef ItemOID="ID002" OrderNumber="3" Mandatory="Yes" /> <ItemRef ItemOID="ID003" OrderNumber="4" Mandatory="Yes" /></ItemGroupDef><ItemGroupDef OID="MOD001" Name="Obs"> <ItemRef ItemOID="ID006" OrderNumber="1" Mandatory="Yes" /> <ItemRef ItemOID="ID007" OrderNumber="2" Mandatory="Yes" /> <ItemRef ItemOID="ID008" OrderNumber="3" Mandatory="Yes" /></ItemGroupDef>
<ItemDef OID="ID001" DataType=“int" Name="ID001"> <Question><TranslatedText>House Number</TranslatedText></Question></ItemDef><ItemDef OID="ID002" DataType="string" Name="ID002"> <Question><TranslatedText>City</TranslatedText></Question></ItemDef><ItemDef OID="ID003" DataType="string" Name="ID003"> <Question><TranslatedText>State</TranslatedText></Question></ItemDef><ItemDef OID="ID004" DataType="string" Name="ID004"> <Question><TranslatedText>PatientName</TranslatedText></Question></ItemDef><ItemDef OID="ID005" DataType="string" Name="ID005"> <Question><TranslatedText>Author Name</TranslatedText></Question></ItemDef><ItemDef OID="ID006" DataType="string" Name="ID006"> <Question><TranslatedText>What is the Clinical Global Improvement</TranslatedText></Question> <ExternalQuestion Dictionary="caDSR" Version="3.0" Code="2004848v3.0 "/></ItemDef><ItemDef OID="ID007" DataType="string" Name="ID007"> <Question><TranslatedText>Patient’s suicide risk</TranslatedText></Question> <ExternalQuestion Dictionary="caDSR" Version="3.0" Code="2004849v2.0 "/></ItemDef><ItemDef OID="ID008" DataType="string" Name="ID008"> <Question><TranslatedText>Patient in remission</TranslatedText></Question> <ExternalQuestion Dictionary="caDSR" Version="3.0" Code="2004847v2.0 "/></ItemDef></ODM>
C D AO D MForm<ClinicalDocument> <recordTarget><patientRole><realmCode></realmCode> <patient> <name></name> <addr> <streetAddressLine></streetAddressLine> <city></city><state></state> <postalCode></postalCode><country></country> </addr> </recordTarget> <author><assignedAuthor> <code code=‘' codeSystem=‘' /> <addr> <streetAddressLine></streetAddressLine> <city></city><state></state> <postalCode></postalCode><country></country> </addr> <assignedPerson><name></name></assignedPerson> </assignedAuthor></author> <custodian> <assignedCustodian><representedCustodianOrganization> <name></name> <addr> <streetAddressLine></streetAddressLine> <city></city><state></state> <postalCode></postalCode><country></country> </addr> </representedCustodianOrganization></assignedCustodian> </custodian> <component> <structuredBody> <section> <title></title> <code code=“” codeSystem=“”/> <text></text> <entry/> </section> <section> <title></title> <code code=“” codeSystem=“”/> <text></text> <entry/> </section> <section> <title></title> <code code=“” codeSystem=“”/> <text></text> <entry/> </section></structuredBody></component></ClinicalDocument>
<<maps to>>
<<maps to>>
<<maps to>>
C D A<ClinicalDocument> <recordTarget><patientRole><realmCode></realmCode> <patient> <name>John Doe</name> <addr> <streetAddressLine>21 North Ave</streetAddressLine> <city>Burlington</city><state>MA</state> <postalCode>01803</postalCode><country>USA</country> </addr> </recordTarget> <author><assignedAuthor> <code code='SELF' codeSystem='2.16.840.1.113883.5.111' /> <addr> <streetAddressLine>21 North Ave</streetAddressLine> <city>Burlington</city><state>MA</state> <postalCode>01803</postalCode><country>USA</country> </addr> <assignedPerson><name>SELF</name></assignedPerson> </assignedAuthor></author> <custodian> <assignedCustodian><representedCustodianOrganization> <name>Good Health Clinic</name> <addr> <streetAddressLine>21 North Ave</streetAddressLine> <city>Burlington</city><state>MA</state> <postalCode>01803</postalCode><country>USA</country> </addr> </representedCustodianOrganization></assignedCustodian> </custodian> <component> <structuredBody> <section> <title>Clinical Global Improvement</title> <code code=“2004848v3.0” codeSystem=“caDSR”/> <text>2</text> <entry><observation>><code code=“2004848v3.0”></observation></entry> </section> <section> <title>Patient is suicide risk?</title> <code code=“2004849v2.0” codeSystem=“caDSR”/> <text>Yes</text> <entry><observation><code code=“2004848v3.0”></observation></entry> </section> <section> <title>Patient in remission</title> <code code=“2004847v2.0” codeSystem=“caDSR”/> <text>Yes</text> <entry><observation><code code=“2004848v3.0”></observation></entry> </section></structuredBody></component></ClinicalDocument>
Ekagra
ODM-CDA Requirements Forms requirements
Forms meta-data◦ Questions
Question Text CDE IDs
◦ Header info Long Name, Definition, Context, etc.
Forms structure◦ Modules
Name Order
Forms Behavior Skip Patterns (if any)
Additional CDA requirements◦ Header fields data (recordTarget, author, etc.)◦ Answers to each question◦ Code system mappings to each answer (for enumerated
value domains)
Ekagra
Summary
CDA ODM
Forms meta-data
Questions
Question Text
CDE IDs
Header info Long Name, Definition, Context, etc.
Forms structureModules
Name
Order
Forms Behavior
Skip Patterns (if any)
CDA requirements
Header fields data (recordTarget, author, etc.)
Answers to each question
Code system mappings to each answer
X
X
XX
X
Ekagra
Conclusion
CDA is instance-specific and needs actual data to be generated
ODM provides good support for capturing meta-data and data
Data needed to generate CDA can be captured in an ODM
ODM -> xslt -> CDA