340 likes | 675 Views
Clinical Observations Interoperability: - Bridging Clinical Practice and Clinical Research. Helen Chen February 13, 2009. Motivation. Pressing need for interoperability between clinical trials and clinical practice Bridge gaps between various standards to connect related fields
E N D
Clinical Observations Interoperability: - Bridging Clinical Practice and Clinical Research Helen Chen February 13, 2009
Motivation • Pressing need for interoperability between clinical trials and clinical practice • Bridge gaps between various standards to connect related fields • Semantic Web technologies are maturing quickly and getting ready for prime time
Clinical Observation Interoperability Group • W3C Semantic Web for Life Sciences and Healthcare Interest Group • Members from CDISC, clinical trial researchers and healthcare IT researchers • http://esw.w3.org/topic/HCLS/ClinicalObservationsInteroperability
Goals • Show that Semantic Web technologies can be used to bridge the gap between the two • Map across formats • Reuse existing data • Develop a proof of concept application that demonstrates the feasibility of that approach
Use Case Step-Through • (Textual) specification of the eligibility criteria for a given clinical trial • Ontology-based translation of the eligibility criteria into SPARQL queries • Translation of the SPARQL queries into database-specific queries • Execution of the queries at the databases) –results contain all eligible patients • Return of a list of eligible patients to clinical trial administrator
Problems • Data is not stored only in form of the CDISC SDTM but also in HL7 DCM form • Concepts in SDTM domain do not always have one-one mapping to HL domain • Drug prescription coded in different drug codes (RxNorm and NDC) • Data is not stored as RDF but in conventional relational databases
Solution • Transform references described in SDTM classes to references described to HL7 classes via N3 rules • Obtain relavant concepts at different granularity via inferencing • Class->subclasses • Derive new classes (weight loss drug) via <may-treat> mechanism • Transform either… • Relational data into RDF • or SPARQL into SQL via N3 rules • Second approach chosen
Ontology Modeling • Develop ontologies for clinical trials and clinical practice based on CDISC SDTM and HL7 DCM • Write mapping rules • Model patient and medication aspects… • Lab results and observations • Patient vital signs • Medications
Inclusion Criteria Type 2 diabetes on diet and exercise therapy or monotherapy with metformin, insulin secretagogue, or alpha-glucosidase inhibitors, or a low-dose combination of these at 50% maximal dose. Dosing is stable for 8 weeks prior to randomization. ?patient :takes :metformin . . .
Exclusion Criteria Use of warfarin (Coumadin), clopidogrel (Plavix) or other anticoagulants. . ?patient doesNotTake anticoagulant . . .
Medication :M0271 a sdtm:Medication; spl:classCode 6809 ; #metformin sdtm:subject :P0006; sdtm:dosePerAdministration [ sdtm:hasValue 500; sdtm:hasUnit "mg„ ]; sdtm:startDateTime "20070101T00:00:00"^^xsd:dateTime ; sdtm:endDateTime "2008-0101T00:00:00"^^xsd:dateTime .
metformin anticoagulant Exclusion Criteria Criteria in SPARQL ?medication1 sdtm:subject ?patient ;spl:activeIngredient ?ingredient1 . ?ingredient1 spl:classCode 6809 . OPTIONAL { ?medication2 sdtm:subject ?patient ; spl:activeIngredient ?ingredient2 .?ingredient2 spl:classCode 11289 . } FILTER (!BOUND(?medication2))
Drug Class Information in CT #8 • monotherapy with metformin, insulin secretagogue, or alpha-glucosidase inhibitors and a low dose combination of all • Long term insulin therapy • Therapy with rosiglitazone (Avandia) or pioglitazone (Actos), or extendin-4 (Byetta), alone or in combination • corticosteroids • weightloss drugs e.g., Xenical (orlistat), Meridia (sibutramine), Acutrim (phenylpropanol-amine), or similar medications • nonsteroidal anti-inflammatory drugs • Use of warfarin (Coumadin), clopidogrel (Plavix) or other anticoagulants • Use of probenecid (Benemid, Probalan), sulfinpyrazone (Anturane) or other uricosuric agents
NDC Code Prescription Information in Patient Database • "132139","131933","98630 ","GlipiZIDE-Metformin HCl 2.5-250 MG Tablet","54868079500 ",98630,"2.5-250 ","TABS","","MG "," ","15","GlipiZIDE-Metformin HCl ","","GlipiZIDE-Metformin HCl 2.5-250 MG Tablet“ • "132152","131946","98629 ","GlipiZIDE-Metformin HCl 2.5-500 MG Tablet","54868518802 ",98629,"2.5-500 ","TABS","","MG "," ","15","GlipiZIDE-Metformin HCl ","","GlipiZIDE-Metformin HCl 2.5-500 MG Tablet“ • "132407","132201","98628 ","GlipiZIDE-Metformin HCl 5-500 MG Tablet","54868546702 ",98628,"5-500 ","TABS","","MG "," ","15","GlipiZIDE-Metformin HCl ","","GlipiZIDE-Metformin HCl 5-500 MG Tablet“ • "132642","132436","C98630 ","GlipiZIDE-Metformin HCl TABS","54868079500 ",98630,"","TABS",""," "," ","15","GlipiZIDE-Metformin HCl ","","GlipiZIDE-Metformin HCl TABS"
Drug Ontology By Stanford from drug ontology documentation
Drug Ontology CT MechanismOfAction metformin, insulin secretagogue GeneralDrugType nonsteroidal anti-inflammatory drugBank: DB00331 RxNORM: 6809 alpha-glucosidase inhibitors anticoagulants uricosuricagents NDC:54868079500:GlipiZIDE-Metformin HCl 2.5-250 MG Tablet NDC: 54868518802: GlipiZIDE-Metformin HCl 5-500 MG Tablet NDC:54868079500:GlipiZIDE-Metformin HCl TABS Mapping Between CT and Patient Record C1299007 C0050393 C0066535 C0025598
SDTM to HL7 Transformation Clinical Trial Ontology sdtm:Medication sdtm:dosePer- Administration { ?x a sdtm:Medication ;sdtm:dosePer- Administration ?y} => { ?x hl7:Substance- Administration ; hl7:doseQuantity ?y} hl7:Substance- Administration hl7:doseQuantity Clinical Practice Ontology
HL7 to EMR Database Transformation SPARQL in Clinical Practice Ontology { hl7:substanceAdministration [ a hl7:SubstanceAdministration ; hl7:consumable [ hl7:displayName ?takes ; spl:activeIngredient [ spl:classCode ?ingred ] ] ;} => {{ ?indicItem Item_Medication:PatientID ?person; Item_Medication:PerformedDTTM ?indicDate ; Item_Medication:EntryName ?takes . .} hl7:Substance- Administration hl7:doseQuantity Item_Medication:EntryName ?takes . Medication:ItemID ?indicItem; SQL to EMR Database
Pushing Query to Database • SPARQL in SDTM ontology to SPARQL in HL7 ontology • SPARQL in HL7 ontology to SQL in EMR database List of eligible patients EMR HL7 DCM/RIM CT Eligibility SPARQL SQL SPARQL
SPARQL in SDTM PREFIX sdtm: <http://www.sdtm.org/vocabulary#> PREFIX spl: <http://www.hl7.org/v3ballot/xml/infrastructure/vocabulary/vocabulary#> SELECT ?patient ?dob ?sex ?takes ?indicDate?contra WHERE { ?patient a sdtm:Patient ; sdtm:middleName ?middleName ; sdtm:dateTimeOfBirth ?dob ; sdtm:sex ?sex . [ sdtm:subject ?patient ; sdtm:standardizedMedicationName ?takes ; spl:activeIngredient [ spl:classCode ?code ] ; sdtm:startDateTimeOfMedication ?indicDate ] . OPTIONAL { [ sdtm:subject ?patient ; sdtm:standardizedMedicationName ?contra ; spl:activeIngredient [ spl:classCode 11289 ] ; sdtm:effectiveTime [ sdtm:startDateTimeOfMedication ?contraDate ] . } FILTER (!BOUND(?contra) && ?code = 6809) }
SDTM-HL7 Mapping Rules CONSTRUCT { ?patient a sdtm:Patient ; sdtm:middleName ?middleName ; sdtm:dateTimeOfBirth ?dob ; sdtm:sex ?sex . [ a sdtm:ConcomitantMedication ; sdtm:subject ?patient ; sdtm:standardizedMedicationName ?takes ; spl:activeIngredient [ spl:classCode ?ingred ] ; sdtm:startDateTimeOfMedication ?start ] .} WHERE { ?patient a hl7:Person ; hl7:entityName ?middleName ; hl7:livingSubjectBirthTime ?dob ; hl7:administrativeGenderCodePrintName ?sex ; hl7:substanceAdministration [ a hl7:SubstanceAdministration ; hl7:consumable [ hl7:displayName ?takes ; spl:activeIngredient [ spl:classCode ?ingred ] ] ; hl7:effectiveTime [ hl7:start ?start ] ] . }
SPARQL in HL7 Via SWtranformer PREFIX hl7: <http://www.hl7.org/v3ballot/xml/infrastructure/vocabulary/vocabulary#> SELECT ?patient ?dob ?sex ?takes ?indicDate WHERE { ?patient hl7:entityName ?middleName . ?patient hl7:livingSubjectBirthTime ?dob . ?patient hl7:administrativeGenderCodePrintName ?sex . ?patient a hl7:Person . ?patient hl7:substanceAdministration ?b0035D918_gen0 . ?b0035D918_gen0 hl7:consumable ?b0035C798_gen1 . ?b0035D918_gen0 a hl7:SubstanceAdministration> . ?b0035D918_gen0 hl7:effectiveTime ?b0035C5E8_gen3 . ?b0035C798_gen1 hl7:displayName ?takes . ?b0035C798_gen1 hl7:activeIngredient ?b0035C848_gen2 . ?b0035C848_gen2 hl7:classCode ?code . ?b0035C5E8_gen3 hl7:start ?indicDate . FILTER ( ?code = 6809 ) }
HL – Database Mapping Rules: Tables PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX Person: <http://hospital.example/DB/Person#> PREFIX Sex_DE: <http://hospital.example/DB/Sex_DE#> PREFIX Item_Medication: <http://hospital.example/DB/Item_Medication#> PREFIX Medication: <http://hospital.example/DB/Medication#> PREFIX Medication_DE: <http://hospital.example/DB/Medication_DE#> PREFIX NDCcodes: <http://hospital.example/DB/NDCcodes#>
HL – Database Mapping Rules: Schema CONSTRUCT { ?person a hl7:Person ; hl7:entityName ?middleName ; hl7:livingSubjectBirthTime ?dob ; hl7:administrativeGenderCodePrintName ?sex ; hl7:substanceAdministration [ a hl7:SubstanceAdministration ; hl7:consumable [ hl7:displayName ?takes ; spl:activeIngredient [ spl:classCode ?ingred] ] ; hl7:effectiveTime [ hl7:start ?indicDate ] ] . } WHERE { ?person Person:MiddleName ?middleName ; Person:DateOfBirth ?dob ; Person:SexDE ?sexEntry . OPTIONAL { ?indicItem Item_Medication:PatientID ?person ; Item_Medication:PerformedDTTM ?indicDate ; Item_Medication:EntryName ?takes . ?indicMed Medication:ItemID ?indicItem ; Medication:DaysToTake ?indicDuration ; Medication:MedDictDE ?indicDE . ?indicDE Medication_DE:NDC ?indicNDC . } }
SQL to Database SELECT patient.id AS patient, patient.DateOfBirth AS dob, sexEntry_gen0.EntryName AS sex, indicItem_gen1.EntryName AS takes, indicItem_gen1.PerformedDTTM AS indicDate FROM Person AS patient INNER JOIN Sex_DE AS sexEntry_gen0 ON sexEntry_gen0.id=patient.SexDE INNER JOIN Item_Medication AS indicItem_gen1 ON indicItem_gen1.PatientID=patient.id INNER JOIN Medication AS indicMed_gen2 ON indicMed_gen2.ItemID=indicItem_gen1.id INNER JOIN Medication_DE AS indicDE_gen5 ON indicDE_gen5.id=indicMed_gen2.MedDictDE INNER JOIN NDCcodes AS indicCode_gen6 ON indicCode_gen4.ingredient=6809 ANDindicCode_gen6.NDC=indicDE_gen5.NDC
COI Demo • coi svn: • http://code.google.com/p/coi/source/checkout • Public access: (working in progress) • http://hcls.deri.org/coi/demo/
COI Demo – Selecting Inclusion Criteria Inclusion in SDTM ontology SDTM clinical trial ontology
COI Demo – Drug Ontology Inference Subclasses of “anticoagulant” Drug ontology Exclusion in Drug ontology
COI Demo – Selecting Mapping Rules #check all drugs that "may_treat obese" {?A rdfs:subClassOf ?B; rdfs:label ?D. ?B a owl:Restriction; owl:onProperty :may_treat; owl:someValuesFrom :C0028754} => {?D a :WeightLoseDrug}.
Benefits of Semantic Web Apporach • Unambiguious conceptual model for seperate doamins without early commitment to a common ontology • Reusable mapping rules from clinical research domain to Healthcare domain • Late bining of coding systems and database schema • Transform SPARQL to SQL in real time, reflecting real time discovery and integration needs
Challenges Ahead • Large Tree Structure Navigation • Reasoning on Large Data • SWTranformer, url processing and “filter” clause implementation • Portability Issues on DERI Server • More patient data to test all proposed scenarios
Questions and Suggestions? Thank You!