14:59:40 RRSAgent has joined #hcls 14:59:40 logging to https://www.w3.org/2021/08/12-hcls-irc 14:59:47 rrsagent, make logs public 15:05:51 Meeting: FHIR RDF 15:06:02 Topic: Brad Simons, SureScripts 15:07:58 Present: David Booth, Emily Pfaff, Darrell Woelk, EricP, Gopi, Harold Solbrig, Guoqian Jiang, Brad Simons 15:08:53 brad: Motivation for the project was to reuse info from C-CDA: strip out wanted data and get at it more effectively. Work is patented. 15:09:23 ... We take a FHIR RDF model and a SureScripts model. 15:10:05 ... We created our own full FHIR model: all resources, all property, all constraints, cardinalities, datatypes. Then added SureScripts model, to: 1. add properties. 15:10:33 ... Grahame's model does not have a system name on coding. We added one to make it more readable. 15:11:00 ... Also the SureScripts model has a whole mapping model -- what a C-CDA would be to FHIR. 15:11:38 ... Take in the FHIR model and SureScripts model and take all the possible xpath permutations, and breadcrumb trail of all resources and properties needed to populate it. 15:12:17 ... So an instance or attribute that contains a problem.code it knows what all the components are, so it can instantiate it. 15:12:47 ... I'm able to execute those to extract the relevant data to build all the RDF objects that you see, to populate them with the appropriate data. 15:13:08 ... Can also generate a list of instances w data values. 15:13:43 ... For coding value I can get the relevant info from the FHIR model and give it to HAPI, and HAPI will generate the proper code using reflection. 15:13:47 Present+ Sajjad 15:14:35 sajjad: FHIR in RDF vs FHIR RDF? You have your own ont of FHIR. 15:14:57 brad: the base FHIR model is our own ont, but if you lay it next to the FHIR ont, it is very similar. 15:15:18 ... My goal is to adopt yours. 15:15:35 eric: The stuff you add is to make it more readable? 15:16:34 brad: I also have my own mappings to get from C-CDA to FHIR, but also rules in that add-on model. 15:17:55 sajjad: scalability and maintenance issue, when FHIR spec changes? Diff between FHIR RDF and FHIR in RDF. 15:19:11 brad: Yes, and I want to get off of using my own model. Want to be able to use your FHIR RDF. 15:19:55 sajjad: you're taking xpaths to populate your schema? Why not JSON into FHIR schema? 15:20:52 brad: If the purpose was to go from XML to FHIR, you probably wouldn't need to go through RDF, but you cannot do rules processing on JSON. 15:22:02 sajjad: There are rules reasoners available on RDF. 15:22:55 brad: Can support augmentation, process breadcrumb trail, capture data from text section and auto-populate the coded section. 15:24:10 brad: Ran into naming convention issues -- not consistent across FHIR RDF models. 15:24:28 ... Also ran into recursion issue. 15:25:15 ... contains can have a "contains" and the names keep being concatenated. 15:26:16 eric: questionnaire response has that recursion problem too. 15:26:47 harold: Yes, there are recursive structures in FHIR, and that's one of the reasons we need JSON-LD 1.1 15:27:17 brad: You don't want to keep concatenating contains.contains.contains .... 15:28:21 brad: Instead, we just had valueset expansion contains component and left it at that. 15:29:57 harold: I think we've addressed this with JSON-D 1.1 15:30:02 eric: Q about xpath annotations. 15:30:32 brad: We have a mapping file, w a multitude of nodes with xpath segments, and those segments have an affiliation w a particular FHIR resource property. 15:30:58 ... When I churn through that stuff, I dynamically build full xpath from breadcrumb trail. 15:31:25 eric: Do those end up on instance data, like Sally's diagnosis, or on metadata. 15:31:50 brad: The xpath that I built is captured in a binary file, and access them at parse time. They're never passed through to anybody. 15:32:23 ... Point is to generate a FHIR rep of the C-CDA data, but there's too much unnecessary stuff in C-CDA. 15:32:48 eric: Could we see one of the instances, populated with your extra stuff? 15:33:45 guoqian: When you convert C-CDA to RDF, how many FHIR resources do you cover? 15:34:41 brad: A lot of the resources are reused: Allergy, Med, Immun, Problems, Condition, OBservations (incl familiy history, vitals, etc.), insurance. 15:35:38 guoqian: Do you have issues with your FHIR RDF to the XML representation? 15:37:36 brad: None. Part of the reason I'm converting to FHIR, is a lot of vendors (Epic, etc.) want to consume FHIR. Meaningful Use caused vendors to use C-CDA, but it didn't tell them how, so the C-CDAs differ. 15:38:03 ... I want to be able to pass on only the info that is needed, to maintain privacy. 15:38:24 guoqian: No issues w HAPI FHIR? brad: None. 15:39:12 brad: I'm using HAPI to take my FHIR RDF and produce JSON, and using reflection it produces everything, with only hundreds of lines of code. 15:40:24 brad: I'm generating metadata that a colleague uses to generate from POJOs in HAPI. 15:41:11 eric: C-CDA diversity was the shortcoming? And will that be any better with FHIR? 15:41:43 brad: Probably more structured, but not better. 15:42:04 ... Consider Allergies. people will codify your Allergies, or your lab results, with ranges, etc. 15:43:17 ... But if you go into the doc's office and say which meds you are taking, they never look up the codes. Allergies are even worse: 9/10 times its coded in the text section -- never codified. 15:43:38 ... But here, I'm able to extract info like that and put it into the codified section. 15:45:05 david: How to improve FHIR RDF model? 15:45:31 brad: We compared w ours, and matched it as much as possible. 15:45:59 ... We saw that if we could fix the recursion and standardize on naming, we could drop our model and go with yours. 15:47:10 david: Got the list of diffs between yours and ours? 15:48:15 brad: I had a few data augmentations that I put into the base FHIR model that are not relevant to you -- branch points. 15:48:47 david: Lists? 15:49:05 brad: We have lists of lists. 15:49:40 ACTION: Brad to find the comparison of their FHIR RDF to ours 15:51:04 sajjad: Suppose you have Organization w a name, assume it is 0 or 1. How would you define the cardinality in RDF? 15:51:40 brad: We use OWL to capture the cardinality. 15:53:33 sajjad: For usability, from C-CDA, vendors are more interested in being in FHIR. When you transform C-CDA to FHIR, how do you deal w templating? E.g. family history? They all go to Observation. Specialized rules/templates? 15:54:12 brad: i have mappings defined for specific sections like Family History. They're driven off of LOINC code in C-CDA for the section.