Brian Pech, Chit Zin (MyHIN), Claude Nanjo (U of Utah joined after the approval of minutes), David Booth (Yosemite Project), Eric Prud'hommeaux (Janeiro Digital), Jeff Brown, Paul Knapp
Regrets
-
Chair
Paul Knapp
Scribe
dbooth
Meeting minutes
Housekeeping
Paul: A couple of specs are expiring (every 5 years). Need to withdraw them or reaffirm them. … One is is infra spec for serializing info in v2, both messaging and CDA. … One doc is structures, the other is datatypes. … Expire in May.
James: Davera is out until further notice I think.
dbooth: Chris was going to check with her.
Updates on rdf.html
dbooth: Edits are all now merged. All done except ITS vote.
FHIR Build process
jim: Met w Deepak and Daniel. Looked at code and identified files for Daniel to edit.
,.. in kindling.
dbooth: Is it building properly now?
jim: I can build the whole site, and make a change to code in HAPI FHIR core, and see that its running in the build process. … But still struggling in one part. Changing RDF parser file in core, but not seeing it affect the the Turtle examples. … Asked Grahame if there's other code for the examples, and he said it's RDF parser. … Need to better understand the whole build process. … IDK how it actually calls the code in kindling and HAPI FHIR.
eric: Suggest pestering Mark.
dbooth: We're dangerously running out of time.
dbooth: Do you have a regular daily or every other day call with Deepak and Daniel?
jim: No, but we have a shared skype.
HAPI
eric: No updates.
Update the SPARQL scripts to add the OWL ontology declarations
dbooth: Should we move those declarations to the SPARQL scripts?
eric: I think so.
jim: Fine with me.
dbooth: Suggest we make that change but not necessarily before Feb 24
AGREED.
Concept IRIs and IRI stems
dbooth: Gaurav gave me an update in email. Still working on it.
ADJOURNED
Minutes manually created (not a transcript), formatted by scribe.perl version 197 (Tue Nov 8 15:42:48 2022 UTC).
Diagnostics
Succeeded: s/pane/pane with a toggle/
Succeeded: s/notice/notice I think/
Succeeded: s/after changes that are needed/but not necessarily
Chris Roeder, Daniel Stone, David Booth, EricP, Gaurav Vaidya, Joe Flack
Regrets
-
Chair
David Booth
Scribe
dbooth
Meeting minutes
Introductions
joe: Work for Chris Chute, term and infra mgmt sys. Goal is a FHIR server w latest features, including OWL/RDF stuff. Work a lot w med terminologies and HL7 stuff.
daniel: Working at Mayo as part of standards research, FHIR and FHIR RDF.
Concept IRIs
gaurav: We have 6 votes and need 15 votes, plus additional quorum requirements.
https://jira.hl7.org/browse/UP-364 … Our 3 votes have 2 votes each. Not sure of next step. Nobody responded to zulip post. … Already brought this to the vocab mtg, but might be able to bring it back to terminology group to get more votes. … This is not really R5 change, but if it doesn't go through then we'd have to revert to either using extensions or making an R5 change.
dbooth: Sounds like you need to continue to beat the bushes for votes.
gaurav: We have two FHIR proposals for R5, both have been resolved. They're just waiting for the change to be made. I'll do them.
gaurav: For 39604 change I'm running into validation errors when it does its auto checks when I put in the PR. … It's telling me the XML is malformed. … I forgot to change the short desription.
gaurav: Third change: I think I need to open a UTG ticked for the iri-stem type.
eric: seems like a good idea. … I had to throw exceptions for bundles in the Playground, but don't remember why I had to do special code for bundles. … Also happy to dispense w parameters. … I've been telling Deepak to come up w shex for clinically operational resources. … All the meta structures we (Claude and I) think it's not worth worrying about them now. … If we don't do the shex for the meta properties, we can always add them later. But for Jim's work, the examples will be generated anyway.
eric: Two courses of action: 1. Figure it out. Look at structure defs that come out. 2. Not worry about it and update it later. Priority is to get the clinical stuff right.
gaurav: In other words, use short properties, but then make corrections later if that causes problems with bundles and parameters.
eric: Right. … Keep a pointer to the old code with a git permalink.
dbooth: Sounds good, but should first look at it togther to see if we can figure it out.
eric: IDK who wrote that code. git blame might tell us.
dbooth: eric and jim should get together (top priority), but copy Deepak and Daniel and me, in case we can join. But don't wait for us.
gaurav: Jim is also working on RDF lists. Hasn't touched the de-currying, but thinks he's found some of the relevant code.
Ontology generation
daniel: Still trying to figure out what the changes mean. … Trying to find time to connect w Jim. Found that editing the turtle parser in the HAPI code affects the example files. … Already changed fhir:value to fhir:v
FHIR FAQ
chris: Will check w Davera
How to use CURIEs for foreign concepts
joe: How to implemente CURIEs for foreign concepts?
eric: What's your objective? Are you trying to do inference?
joe: No inference, just serving content. Not aware of use case for inference yet.
eric: When you use it for classification, when you have a code system and code, you end up adding a type arc. … But not sure we can give guidance WRT CURIES. You need to tell the world that your codes start with "ro:", and tell your friends that it means a certain thing. … But you probabl ywant to enable the classification use case.
joe: where would a prefix map go?
eric: We didn't arrive at a conclusion for dealing w that. We haven't defined a way to expand CURIEs.
joe: Is the group planning to address that issue?
dbooth: How about using full URIs instead of CURIEs?
ACTION: joe to email problem description to dbooth for inclusion in these minutes
joe: I guess we could.
gaurav: Lean toward using the full URI - -unambiguous, and can be translated to concepts outside of FHIR. … Also we need to come up with a way to standardize this. … FHIR doesn't see CURIEs. Once you've defined the code somewhere, you can reference it from elsewhere. … All uberon codes could start with "uberon:"
joe: We changed periods to underscores in the URIs because they were causing a problem with Lucene indexing.
dbooth: Codes can normally have periods in them though.
dbooth: Also, you mentioned the code system being implicit. Can it be made explicit?
chris: He was looking at the terminology def itself.
HAPI
eric: Still hoping to have time
ADJOURNED
Example of CURIE problem
From Joe Flack:
Attached is the example snippet of the JSON I was showing at the meeting. One of the RO references is a CURIE, and another one is a URI, just as an illustrative difference.
I found which CodeSystem / ontology it was taken from. It is from Mondo, actually. If you have any need, that file is called CodeSystem-mondo.json and can be downloaded here: https://github.com/HOT-Ecosystem/owl-on-fhir-content/releases
Oops, here's the message from Joe Flack again, better formatted:
Attached is the example snippet of the JSON I was showing at the
meeting. One of the RO references is a CURIE, and another one is a URI,
just as an illustrative difference.
I found which CodeSystem / ontology it was taken from. It
is from Mondo, actually. If you have any need, that file is
called CodeSystem-mondo.json�~@~K and can be downloaded here:
https://github.com/HOT-Ecosystem/owl-on-fhir-content/releases
Daniel Stone, David Booth, EricP, Gaurav Vaidya, Ghris Roeder, Jim Balhoff, Rob Hausam
Regrets
-
Chair
David Booth
Scribe
dbooth
Meeting minutes
ITS call scheduled for Feb 22 2023 at 3PM eastern
dbooth: New deadline for us.
Relationship between modified and non-modified classes/properties
Relationship between modified and non-modified classes/properties: fhir:_Patient fhir:??? fhir:Patient .
dbooth: We never discussed what htat relationship should be called.
eric: Is fhir:_Patient subclass of fhir:Patient
dbooth: No, because every property that applies to a fhir:Patient would have to apply to fhir:_Patient, but that's not true if it is modified.
jim: Eric asked it the other way around: Is fhir:Patient a subclass of fhir:_Patient?
dbooth: Does everything that applies to an _Patient also apply to a Patient? I don't think so.
jim: underbar-Patient has essentially no semantics.
eric: if there's a super-patient class, and a patient class and an underbar-patient class ....
jim: Do you want a reasoner to infer that an instance of Patient is an instance of underbar-Patient?
eric: Suppose patient1 is alive, patient2 is dead, patient3 is an underbar-Patient w status undead. … Or patient3 can have number-of-wheels=3. … What's true of patient3 is not true of any fhir:Patient, but the things that could have a modifer ext includes everything that could be a fhir:Patient. … I don't see how the set of fhir:Patients could not fall inside the set of underbar-patients.
dbooth; i could define an underbar-patient class that is ONLY for robots, and excludes all humans.
dbooth: sorry, I was thinking of underbar-patient as being a specific modifier ext, rather than ALL modifier extensions. … If underbar-patient class refers to all possible modifer extension classes, then fhir:Patient would be a subclass of that.
eric: The value of using underbar-patient is that it is NOT a fhir:Patient .
jim: a specific property might be easier and more useful.
dbooth: Something like "fhir:Patient fhir:hasModier fhir:_Patient"
dbooth: Almost anything can have one, but there are a couple of exceptions.
gaurav: Here’s an example of a modified fhir:\Patient that passes validation if that’s helpful — w3c/hcls-fhir-rdf#93 (comment)
Change meet twice a week
dbooth: Propose 11am Mondays Boston time.
AGREED
Punning: property fhir:Medication.code shortened to fhir:code
Punning: property fhir:Medication.code shortened to fhir:code, but fhir:code is already a class
jim: Technically ok in OWL
dbooth: But I don't like it -- rubs me the wrong way.
eric: Confusing for readers. But need to balance changing the name vs the confusion of having the same name meaning two different things.
jim: Value in aligning w the FHIR word.
eric: But there would be no conflict in upper-casing that word.
eric: Suppose there's a new datatype capital-C fhir:Code in addition to fhir:code . Then fhir:value[x] properties would not be able to distinguish them. Therefore their cannot be both.
eric: All types would start w upper case. The problem would be going from RDF back to JSON or XML. Our special rule would apply only to FHIR types, though. It would not apply to other types defined by others.
eric: Suppose I do my own logical model, and I define a type "snapshot" ...
dbooth: But it would not be in the fhir: namespace.
jim: Have not addressed the reading of Turtle. … Also some changes are going into the profile.html page. … Bu t none of my changes are showing up in the template code. Anyone have ideas on those?
dbooth: Reading turtle and the profiles I think are lower priority.
eric: Suggest throwing an exception to see if that code is actually used.
eric: The "profiles" are structure defs.
eric: The profiles can be lower priority, since nobody will use them for a while.
dbooth: Agreed.
ACTION: Jim to ask Grahame how the resource templates are generated
Daniel Stone, David Booth, Deepak Sharma, Emily Pfaff (briefly), EricP, Philippe Rocca-Serra
Regrets
-
Chair
David Booth
Scribe
dbooth
Meeting minutes
Playground
emily: James is creating and adding versions of R5 examples.
FHIR Build
emily: Jim thinks he's now on track to finish by Feb 22.
ShEx validation
deepak: Some of the tests only work for primitive types -- not object comparison. … Doesn't work for things like fhir:start should be less than fhir:end . … Jose Labra said that's not implemented. Eric: Right.
deepak: Add test cases are passing except percentage value things. Wondering if we need to set context for each shape.
eric: Those are supplied at validation time.
deepak: To resolve those constraints, they're specified in the constraints -- nothing wrong with the shape. But it needs to know the values. IDK how to supply that.
eric: Where are they used? deepak: In the structure defs.
deepak: fails for 168 shapes.
eric: Ruled out: meta resources; field comparison (like start before end).
deepak: The ones we cannot map are in a list of unmapped functions.
eric: also ruled out: where validation requires external context. We can go to print with that. That's already 100x more than you get w XML Schema, and 1000x more than you get w JSON schema. … If we're ambitious later, we can encode the ones we need as semantic actions. … We can create a semantic action language for that, but not high priority. Highest priority now is negative tests: look at the code you're using to encode this as shex, and look for neg tests that give complete coverge of that. … Having a small set of resources for those tests would be useful, even if they're not from FHIR. … Putting FHIRPath constraints on those, and then putting neg tests on them, would be a good way to show we have coverage.
eric: Would be nice to say that we have both positive and negative tests.
deepak: I don't want test cases for unimplemented features yet.
eric: Is there a convention for disabled tests? To make it clear what's done and what's not done.
deepak: I learned how to set context vars, but need to know how they should be set.
eric: Who knows what those values should be?
deepak: If we look, maybe we can figure it out.
eric: My first guess is that it's used in the FHIR validator. But don't want to guess. Ask first.
eric: Trying to understand: shape extensions to get from resource to domain resource, etc. When you work down the tree and have a datatype, then a Quantity, then an Age. But Age is not like the others: all the others add elements, but Age only adds constraints. … My guess is that we have some minor permissiveness in our schema: if you have a quentity and you allow any subtype of that quantity to validate as a quantity. But that might not be quite right, for things that are restrictions on quantities. They should be not be considered subtypes, because they're not substitutable. But not a show stopper, becuase w'e're still doing much better than other validation. "This shape uses the elements of another
shape, bu t is not substitutable".
dbooth: Sounds like it's going in the direction of modifier extensions: reusing the structure, but something has changed, so it is no longer substitutable.
eric: When you validate a BP w a quantity, and it conforms to an Age, you get back an Age of 110 instead of a Quanity of 110. Not a big deal, but still curious. Would be nice to reflect the intended semantics.
deepak: I'll do the min to get through the PR process. … And I'll add pos and neg tests.
Ont generation
dbooth: Good progress on gen tportions of the he ont selectively. Needed next?
daniel: Need to know what the Turtle should look like.
dbooth: Propose Option 3: Change the class to start with an upper case: fhir:Code
daniel: Would case sensitivity cause problems?
dbooth: RDF is already case sensitive, so no new problem.
eric: Prefer Option 1: Use OWL punning. Have both a class fhir:code and a property fhir:code
philippe: This convention is followed by schema.org . Anyting starting w an upper case is a class, and anything starting w a lower case is a property.
eric: The primitive types would be an exception to that, becasue they chose lower case a while back. … In logical models we have no control over whether they use upper or lower case. … Want to be sure our code will continue to work on logical models.
dbooth: Wouldn't those be in a different namespace?
eric: Yes, but our code would probably do the wrong thing.
dbooth: Are there other practical issues, such as with SPARQL?
(lost EricP)
dbooth: Let's finish deciding this one on Thursday.
eric: Tried to see if there were commonalities between the various FHIR properties. In principle that would be a nice-ish way to populate the rdfs:labels.
dbooth: How should daniel gen the rdfs:labels ?
eric: 1. Grab the first of each. 2. omit rdfs:label 3. Hand-craft the property names.
dbooth: Option 4. How about concatenate them all?
eric: Option 5: Do option 4 but hand-craft some conspicuous ones.
daniel: Generated a subset for key elements we might care about. … Then ran rdfdiff to compare latest changes.
eric: Maybe we should not invent generic labels, since they are not currently in FHIR.
dbooth: Propose concatenate the labels for each property, separated by vertical bars, into an rdfs:label
eric: Proposed generic labels might motivate the FHIR group to create generic labels. … They already have a need for such a doc.
rob: Partly agree. Slowly trying to converge.
AGREED: Including truncated concatenated labels is better than omitting them.
AGREED: Daniel should use a list of generic labels if he has time, and fall back to trucated concatenated labels for others.
Punning for shortened propoerties?
AGREED: Use punning.
daniel: What other OWL assertions do we need?
dbooth: I think we need these:
1. Add global declarations:
fhir:_Resource rdfs:subClassOf [ owl:onProperty fhir:modifierExtension; owl:minCardinality 1 ].
[] a owl:AllDisjointClasses ;
owl:members ( fhir:Resource fhir:_Resource ) .
2. And for each FHIR resource such as fhir:Obs, add this declaration:
:_Obs rdfs:subClassOf fhir:_Resource.
jim: Seems ok to me.
eric: Not sure it should be fhir:Resource. Maybe fhir:DomainResource.
eric: need to investigate more.
daniel: example:
This is the only way that I could get blank node to appear in code atm:
[ a owl:AllDisjointClasses ;
owl:members ( fhir:Resource fhir:_Resource )
] .
eric: That's fine that way.
ACTION: DBooth to investigate whether it should be fhir:Resoruce or fhir:DomainResource
• There are a few resources (ones that do not specialize DomainResource) where extensions are not allowed on the root element, but extensions can appear elsewhere through the resource
eric: Can look at the content model of them, and also at the datatypes.
dbooth: So that quote Rob found indicates that the declaration should be for fhir:DomainResource and fhir:_DomainResource
eric: And only declare them on individual resources that are under fhir:DomainResource . … directly or indirectly.
Daniel Stone, David Booth, Deepak Sharma, EricP, James Champion, Jim Balhoff
Regrets
-
Chair
David Booth
Scribe
dbooth
Meeting minutes
Playground
eric: There are still context files in there, but they are not being used.
FHIR build -- Templates and Examples
dbooth: done?
jim: One little thing: need to fix the multi-line comment problem. … The PRs are open. The tests pass on some architectures. … They have a CI workflow.
dbooth: Should get them merged ASAP.
ACTION: Jim to get the PRs merged.
daniel: Use examples to check the ont?
dbooth: Yes, excellent idea.
dbooth: Daniel, Jim may be able to help answer your protege or OWL quetsions.
eric: Everything should have a type arc.
jim: Some things don't. The top level objects do, and the value[x] properties do.
eric: Can load FHIR resoruces and see if there's anything without a type arc.
ACTION: Jim to help Daniel to test the ont
Ontology
Daniel: minCardinality is formatted as binary string instead of toString.
AGREED: fix it.
Daniel: Also there is case "if (min > 1) … That I think should be "if (min >= 1)".
jim: For cardinality 1, it's better to use someValuesFrom. But also include the allValuesFrom
jim: Another issue: don't put all those properties on the same blank node.
ACTION: Jim to work w Daniel to gen the right OWL assertions.
daniel: Also an issue of fhir:integer64 where it should be xsd:integer
dbooth: The highlighted fhir:integer64 is supposed to be xsd:integer
daniel: My issue 4, cardinality assertions are being put on the same blank node.
ACTION: Jim to help Daniel straighten that out.
jim: It was generating fewer errors before only because it was barfing on the syntax.
eric: You could comment it out if you cannot meet the deadline.
daniel: My issue 4b, qualified cardinality.
jim: Should separately specify the type and the cardinality.
eric: I don't think the structure defs allow you to say something that would be a qualified cardinality.
daniel: So we don't need to do 4b. … My code figures out what kinds of things can have modifier extensions.
Daniel Stone, David Booth, EricP, Gaurav Vaidya, Houcemeddine Turki, James Champion, Jim Balhoff, Rob Hausam
Regrets
-
Chair
David Booth
Scribe
dbooth
Meeting minutes
FHIR RDF Playground
(James does demo)
james: problem w some structure defs causing pre-processing errors
eric: For any version you should be able to get both the structure def and matching examples -- they're paired. … Look at 4.2 and 5-something.
rob: There's an R5 snapshot release that's more stable.
eric: Diff from snapshot vs CI build probably won't be much difference.
rob: Agreed.
james: I hid the Bundle example, but will add it back in.
eric: In manifest, Suggest making the version be an array
eric: You could group the examples under R4 vs R5.
dbooth: Request moving the R5 and Advanced buttons up, away from the example tabs.
dbooth: Houcemeddine, anything to ask James?
houcemeddine: Talk w James later this week.
eric: Suggest working out some workflow. We have input from FHIR JSON and from FHIR RDF, and the validator should operator on both of them. Somebody will want to figure out which input buttons to use.
dbooth: How about making the Turtle window be editable, and add a button below to validate.
ACTION: James to send invite to houcemeddine to discuss playground
HAPI
eric: Done part of the job of converting HAPI back to use R5 RDF. … Did fhir:v, haven't yet done value[x], lists, or shortening property names.
FHIR build and FHIR RDF validation
dbooth: Turns out the special turtle parser is needed for FHIR validator.
jim: I'll work on that. … When does the validator run? In the build?
rob: Runs standalone. I thought it was run in the build. … On separate issue, someone posted an invalid code sys, but Grahame had disabled the validation so it wasn't caught.
ACTION: DBooth to create a jira ticket for FHIR RDF validator
Ontology generation
daniel: Need to know what we want to do in the code. Lots of edge cases. Some easy, some hard.
daniel: How are properties defined?
jim: whatever's after the last period is the shortened property name.
rob: Just take the tail. Are they the same property?
dbooth: They're the same property by fiat.
eric: Some look wrong, but they reflect things that the pub process plans to address, to make them more consistent. … Any remaining that look wrong will be addressed eventually.
dbooth: They can always be distinguish by context in the resource.
daniel: Second issues is value[x] types, e.g., author[x] … Property becomes fhir:author
dbooth: And add a type arc also.
daniel: What about modified property names?
dbooth: Don't try to make disjointness statements about modified properties.
eric: Don't confuse semantics w datatypes. Looks weird to use the same property w all these different datatypes. But in good reusaalbe properties, they're separated. … Good that we're not giving range constraints. … Might not even want to include range constraints on any properties.
daniel: Intend to not include any range constraints.
AGREED: Not include range constraints.
Concept IRIs and IRI stems
gaurav: Everything remaining is not needed for R5 deadline. … Re LOINC proposal, we're up to 8 positive points and need 15. … Reached out to Reuben. Who is Family requirement?
rob: Somebody doing v2 or v3 group. … Suggest Jean Detau(sp?) … One other thing: adding IRIs to known ID systems. The list was voted and approved, but then moved to IDs in THO. … Now a NamingSystem in terminology.hl7.org … I created an HTA ticket. SHould I create a third UTG ticket, to make the code change?
rob: Yes. Would be pro forma.
ITS meeting
dbooth: ITS Meeting 3pm Eastern US Feb 22 Wednesday … Who else can join?