| | |
|---|
Welcome and apologies | @Former user (Deleted) | |
Actions from last week | @Former user (Deleted) | |
Template Syntax | @Former user (Deleted) | Use cases: New concept development, querying based on template matching, and template-based modeling transformation New requirements Constrain values across 2 or more replacement slots 2 replacement slots must have the same value, different values, subsumed values, or not subsumed values. Example A - A clinical finding, with 2 role groups with the same morphology, and finding sites that not subsume each other Example B - A clinical finding, with one or more role groups in which the morphology is always the same, and no 2 finding sites subsume each other. Template - 3 role groups with 3 sites: site[1], site[2], site [3] /// site [1,2]
Valid Expression (Definition of 208510002 |Multiple fracture of clavicle, scapula and humerus (disorder)| ) 64572001 |Disease| : { 363698007 |Finding site| = 85050009 |Bone structure of humerus|, 116676008 |Associated morphology| = 5468008 |Fracture of multiple sites of bone| } { 363698007 |Finding site| = 51299004 |Bone structure of clavicle|, 116676008 |Associated morphology| = 5468008 |Fracture of multiple sites of bone| } { 363698007 |Finding site| = 79601000 |Bone structure of scapula|, 116676008 |Associated morphology| = 5468008 |Fracture of multiple sites of bone| } { 363698007 |Finding site| = 773134001 |Bone structure of multiple body regions|, 116676008 |Associated morphology| = 771485007 |Fracture of multiple bones| }
Default value for replacement slot
Definition status of a replacement slot Specifying whether the value used in a replacement slot must be primitive or defined Example A - When proximal primitive modelling, the focus concept must be a primitive concept
Definition status of a templated expression Attributes used in repeating role groups Constraining the set of attributes that appear in a repeating role group Example A - The same set of attributes must appear in each instance of a repeating role group (with optional attributes)
Example B - Some of the optional attributes must either always or never appear in each instance of a repeating role groupTemplate - using "allOrNone" [[+id]]: [[1..* @group1 allOrNone($morph) ]] { [[ 1..1 ]] |Method| = [[+id]], [[ 0..1 ]] |Direct morphology| = [[+id @morph]], [[ 0..1 ]] |Procedure site - Direct| = [[+id]], [[ 0..1]] |Using device| = [[+id]] , [[ 0..1]] |Has intent| = [[+id]] ,
Valid Expression - Closure of skin by suture
|Procedure|: { |Method| = |Closure - action|, |Procedure site - Direct| = |Skin structure| , |Using device| = |Surgical suture, device|}
Valid Expression - Core needle biopsy of skin using ultasonographic guidance
|Procedure|: { |Method| = |Ultrasound imaging - action|, |Procedure site - Direct| = |Skin structure| , |Has intent| = |Guidance intent|} { |Method| = |Biopsy - action|, |Procedure site - Direct| = |Skin structure| , |Using device| = |Core biopsy needle, device|}
Valid Expression - Toilet and suture of wound
|Procedure|: { |Method| = |Surgical toilet - action|, |Direct morphology| = |Wound| } { |Method| = |Closure - action|, |Direct morphology| = |Wound|, |Procedure site - Direct| = |Skin structure|, |Using device| = |Surgical suture, device| }
|
Executing maps | @Former user (Deleted) | Proposed extension to ECL to support the execution of maps |
Returning attributes | @michael lawley | Proposal from Michael: For example, I can write: << 404684003|Clinical finding| : 363698007|Finding site| = <<66019005|Limb structure| << 404684003|Clinical finding| . 363698007|Finding site| But I can't get all the attribute names that are used by << 404684003|Clinical finding| |
URI Standard | @Former user (Deleted) | |
Query Language - Summary from previous meetings | @Former user (Deleted) | Examples: version and language Notes Allow nested where, version, language Scope of variables is inner query
|
| Examples: where Notes Allow nested variable definitions, but recommend that people don't due to readability Scope of variables is the inner query No recursion e.g X WHERE X = 1234 MINUS X ie can't use a variable in its own definition ie X is only known on the left of the corresponding WHERE, and not on the right of the WHERE
|
Keywords for Term-based searching: D.term D.term = "*heart*" D.term = wild:"*heart*" D.term = regex:".*heart.*" D.term = match:"hear att" D.term = (sv) wild: "*heart*"
D.languageCode D.languageCode = "en" D.languageCode = "es"
D.caseSignificanceId D.caseSignificanceId = 900000000000448009 |entire term case insensitive| D.caseSignificanceId = 900000000000017005 |entire term case sensitive| D.caseSignificanceId = 900000000000020002 |only initial character case insensitive|
D.caseSignificance D.caseSignificance = "insensitive" D.caseSignificance = "sensitive" D.caseSignificance = "initialCharInsensitive"
D.typeId D.typeId = 900000000000003001 |fully specified name| D.typeId = 900000000000013009 |synonym| D.typeId = 900000000000550004 |definition|
D.type D.acceptabilityId D.acceptability
Additional Syntactic Sugar FSN synonym synonymOrFSN textDefinition Unacceptable Terms
|
Language preferences using multiple language reference sets LRSs that use the same Language tend to use 'Addition' - i.e. child LRS only includes additional acceptable terms, but can override the preferred term E.g. Regional LRS that adds local dialect to a National LRS E.g. Specialty-specific LRS E.g. Irish LRS that adds local preferences to the en-GB LRS
LRSs that define a translation to a different language tend to use 'Replacement' - i.e. child LRS replaces set of acceptable and preferred terms for any associated concept
|
Other topics | @Former user (Deleted) | |
Confirm next meeting date/time | @Former user (Deleted) | The next SLPG meeting will be held in 2 weeks at 20:00 UTC on Wednesday 27th March. |
Following on from the call discussion regarding the ambitions and use cases of the template language..
I confess that I had missed the refocusing in emphasis of the template syntax. Looking back over the minutes of 2016 calls considerable effort was expended trying to meet the FHIR extraction/population use cases. What happened to this work? Is the 2017 STS material capable of meeting the original FHIR requirements, or (as seemed to be said on the call) was this deemed too hard?
Returning then to the 'authoring of pre-coordinated content' use case, I again want to ask what is the expectation regarding the capabilities of the template syntax? I'm strongly in favour of automating as many rules as possible, but am not convinced that the declarative 'paradigm' of the template syntax is the right place to do anything more than - well - 'template' stuff (useful, but basically rigid guides that say 'put this sort of thing here, and get it from over there'). If the desire is to do more sophisticated things than this (notably condition testing and flow control) then I'd prefer it if there was a really clear debate now as to how this will be achieved before the STS is extended.
Looking within the current 'specific disorder modelling' guidance, and picking out a few clauses that reference 'occurrence' (because that's close to an example already under discussion) we have:
"...Disorders with the word congenital in their FSNs should be classified under 66091009 |Congenital disease (disorder)|.
Do not make a direct stated assertion that the parent is 66091009 |Congenital disease (disorder)|; instead allow the classifier to infer this relationship.
Occurrence should be in the same relationship group as Associated morphology and Finding site because the morphology is located at the site and the occurrence applies to the combined morphology-site pair.
...
Congenital disorders are modeled using Occurrence = 255399007 | Congenital (qualifier value) |. If the FSN does not include congenital, it should not be modeled as congenital. The precise meaning of the FSN should be followed (e.g. many hereditary disorders have congenital appearances).
...
All concepts that explicitly state acquired in their FSNs or in a synonym should be modeled with Occurrence = 767023003 | Period of life beginning after birth and ending before death (qualifier value) |; that is if an Occurrence relationship does not already exist, i.e. there is not already another period of life that is a value for Occurrence, which would infer the parent..."
At the moment the discussion has focused on the third one (plus its unstated allOrNone enhancement), but it seems to me that there are many more aspects of these 'rules' which could be automated. If there is wider appetite to do so, then simply folding more and more if the condition testing into each template slot doesn't feel like the right way to go.
Ed