cts
DESCRIPTION
CTS. Common Terminology Services. Overview Technology Status. CTS Overview. Goal Create interface specification which allows software based on the HL7 version 3 RIM to access terminology content in an consistent and implementation independent fashion. CTS Overview. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/1.jpg)
CTS
![Page 2: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/2.jpg)
Common Terminology Services
• Overview
• Technology
• Status
![Page 3: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/3.jpg)
CTSOverview
Goal
Create interface specification which allows software based on the HL7 version 3 RIM to access terminology content in an consistent and implementation independent fashion.
![Page 4: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/4.jpg)
CTSOverview
• Benefits for HL7 designers and implementation developers
– Software can be written once and won’t need to understand each terminology vendor’s database and/or API
– Hides much of the complexity inherent in modern terminology systems.
![Page 5: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/5.jpg)
CTSOverview
• Benefits for terminology and terminology software developers– Basic functional requirements clearly
specified– Implementation can be based on existing
databases and software– A common entry point – you don’t have to sell
the idea – you sell your enhancements, performance, etc.
![Page 6: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/6.jpg)
CTSPartitions
• Message API vs. Terminology API vs. Mapping API
HL7 Software Implementation
Message Layer
Terminology APITerminology APITerminology Layer
![Page 7: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/7.jpg)
CTSOverview
• Message API vs. Terminology API
HL7 Software Implementation
Message API
Terminology APITerminology API
Terminology API
Is this code valid for this
attribute?
Is this code an example of an
orderable drug?
What are the valid codes for this attribute?
What is the preferred English designation for
this code?
What is the closest equivalent for code x in terminology y?
![Page 8: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/8.jpg)
CTSPartitions
• Message API vs. Terminology API vs. Mapping API
HL7 Software Implementation
Message Layer
Terminology APITerminology APITerminology Layer
API published primarilyfor client implementations
API published primarilyfor server implementations
![Page 9: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/9.jpg)
CTSPartitions
• Runtime vs. Browsing (vs. Authoring)– Runtime Profile
• High availability, high throughput• “Production line” use
– Browsing Profile• High functionality – search, filter, organize• Use case is modeling and concept discovery• Availability and throughput requirements (potentially) less
stringent
– Authoring Profile• Needed to enter and modify HL7 vocabulary content• May not need to be ‘official’ standard
![Page 10: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/10.jpg)
CTS Partitions
Message API
Vocabulary
API
Mapping API
Runtime x x x
Browsing x x
Authoring x (limited/
HL7 Specific)
![Page 11: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/11.jpg)
CTS API Subparts
• CTS Message API– Browser– Runtime
• CTS Vocabulary API– Browser– Runtime– Mapper (not really vocab, but it fits well
here…)– Maintenance (lightweight authoring)
![Page 12: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/12.jpg)
CTSMessage Runtime API
1. Is this code* valid for this vocabulary domain and context(s)?
2. Is this a valid translation for this code for this vocabulary domain and context(s)?
3. Translate this code from this vocabulary domain into a code that is meaningful in this context.
4. Fill out the missing details (display name, code system name, version) for this code (for the supplied language and context(s))
* Instance of a CD data type
![Page 13: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/13.jpg)
ValidateCode
1. Should this validation process include modifier validation, or should there be a separate function for modifiers?
2. Translations - if the code has translations, it is possible that the base code cannot be validated and that valid code(s), if any are in tre translation section only. What should the approach be under these circumstances?
3. Should there be a batch equivalent of this function, taking in multiple codes, outputing multiple details?
![Page 14: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/14.jpg)
Validate Translation
1. How does this function relate to ValidateCode?
2. Should a complete translation list be checked?
3. What should the behavior be regarding recursive translations?
4. Batching?
![Page 15: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/15.jpg)
TranslateCode
1. What unqiuely determines the target of a translation? If Value Sets can correspond to multiple code systems, then what should the target identifier be? The value set id?
2. What to do when a translation doesn't exist. Options include raise an exception (the current approach), emit an exception type if the data type is CWE, take the boolean/warning model of validate.
![Page 16: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/16.jpg)
CTSMessage Runtime API
5. Does code A imply code B?
6. Give me a list of the valid codes and display names for this vocabulary domain and context(s) in this language (which match this filter).
• (Identity functions: name, version, HL7 Release Version, description)
![Page 17: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/17.jpg)
implies
1. There is currently no mechanism to ask the question WRT to the child code system. Will this nuance be needed?
![Page 18: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/18.jpg)
CTSVocabulary Runtime API
1. Is this code valid in this code system?2. What is the preferred designation for this code
in this language and context(s)?3. Does a specific (directed) relationship exist
between these two codes?4. Return a hierarchically organized list of codes
and designations (in the specified language) that have a given relationship with the supplied code.
• (identity + list of supported code systems)
![Page 19: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/19.jpg)
Are codes related
A false return does not necessarily imply that the code system was able to determine that a relationship was not *possible*, simply that such a relationship was not asserted.
1. Will we need a stronger function at some point to be able to ask whether the code system definitely says that the two codes are *not* related?
![Page 20: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/20.jpg)
CTSCode Translation API
1. What is the translation (mapping) of the supplied code from code system x in code system y?
• (Identifying information – from and to code systems and versions, name, description, source or authority, contexts in which the service is applicable)
![Page 21: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/21.jpg)
CTSMessage Browser API
1. List all of the active attributes 2. List all of the active vocabulary domains3. List all of the value sets4. List all of the code systems (known to the
browser)5. Return the description, superclass,
subclass(es), associated attributes and associated value sets of a named vocabulary domain.
![Page 22: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/22.jpg)
CTSMessage Browser API
6. Return the description, list of value sets used by, list of value sets using and code references for a supplied value set id.
7. Return the code system name and version of a supplied code system identifier
8. Return the value set (inc description, lists) that would be used for a given vocabulary domain and context(s) in a runtime situation.
9. Return a ‘hierarchical’ list of codes associated with a given code set (pretty much what RoseTree or the listing in the Ballot returns)
10. Determine whether the supplied code is in the code set11. (identification)
![Page 23: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/23.jpg)
CTSVocabulary Browser API
1. Get coded terms (and a whole bunch more information) whose designations, descriptions, match a supplied regular expression, language, context(s) and/or mime code(s).
2. Get coded terms (and a whole bunch ‘o info) having property(s) that match a supplied regular expression, language, context(s) and/or mime code(s).
![Page 24: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/24.jpg)
CTSMessage Browser API
3. Get the designation(s) for a specific coded term that match the supplied regular expression, language, context(s) and/or mime code(s).
4. Get the descriptions “ “ “5. Get the properties (potentially selected
from a list) that match the supplied regular expression, language, context(s) and/or mime code(s).
![Page 25: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/25.jpg)
CTSMessage Browser API
6. Return a nested list of concepts and the associated designations, relationship codes and relationship qualifiers that:a) Have the supplied concept code at the rootb) are related via the supplied relationship code (opt)
c) are either directly descendants or the transitive closure of the relationship (choice)
d) have the named list of properties that optionally match the supplied regular expression in the supplied language, have the supplied qualifiers and/or have the supplied mime types.
• (Identifying information)
![Page 26: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/26.jpg)
CTSVocab Maintenance API
1. Create a new code system2. Remove an existing code system3. Add coded terms (inc properties, designations,
etc) to a code system4. Inactivate coded terms5. Remove coded terms6. Add properties to a coded term7. Remove properties from a coded term8. Add a coded term to a list of relationships9. Remove coded term from a list of relationships
![Page 27: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/27.jpg)
Technology Details
![Page 28: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/28.jpg)
CTS API
• Currently– Specification language is IDL– Target languages are WSDL & Java– Process involves IDL->Java->WSDL->Java
![Page 29: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/29.jpg)
CTS APIIDL
/* Determine whether the given code is valid in the code system * code - code to validate * activeOnly - true means code must be currently active, false * means both active and inactive pass * * Returns - true if the code exists in the current code system * false otherwise. */ V3DT::BL isCodeValid( in CTSCommon::ConceptId code, in V3DT::BL activeOnly ) raises (CTSCommon::UnknownCodeSystem);
![Page 30: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/30.jpg)
CTS APIJava (Part 1)
/** * <PRE> * Determine whether the given code is valid in the code system * code - code to validate * activeOnly - true means code must be currently active, false * means both active and inactive pass * * Returns - true if the code exists in the current code system * false otherwise. </PRE>*/ boolean isCodeValid (org.hl7.CTSCommon.ConceptId code, boolean activeOnly) throws org.hl7.CTSCommon.UnknownCodeSystem;
![Page 31: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/31.jpg)
WSDL
![Page 32: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/32.jpg)
WSDL
![Page 33: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/33.jpg)
Java (Part 2)
• (Almost) no difference on InterFace specs
• Structs, however are now beans.
• Comments stripped earlier in the process (will fix…)
![Page 34: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/34.jpg)
CTS API
• Specification language– Spec in WSDL?
• Cumbersome, but a semantic superset of IDL• Tends to imply SOAP ITS
– Spec in Java?• Difficult to keep synched w/ WSDL• Tends to imply Java ITS
– OMG MDA?• Possibility, but may yet be too immature
![Page 35: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/35.jpg)
Status
![Page 36: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/36.jpg)
Message Browser API
• Complete prototype implementation
• Based on postgres image of Access DB
Vocab Browser API
• Partial prototype implementation
• Based on ldap server image of Access DB
![Page 37: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/37.jpg)
Vocab Runtime API
• Partial prototype implementation
• Based on ldap server image of Access DB
![Page 38: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/38.jpg)
SamplesSOAP Test
![Page 39: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/39.jpg)
SamplesValue Set Browser
![Page 40: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/40.jpg)
SamplesUseful JSP’s
![Page 41: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/41.jpg)
SamplesSample JSP’s
![Page 42: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/42.jpg)
Status
• Officially assuming the role of vocabulary maintenance.– Will maintain dual images for (at least) one
cycle– Submission process will still be Excel
spreadsheets for November RIM Harmonization
– Intend to have new mechanism in place for following meeting.
![Page 43: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/43.jpg)
Next StepsPart 1
• Incorporate model changes and comments from session
• Incorporate “Realm” implementation• Incorporate Ordinal interface• Complete Message Maintenance Spec• Publish revised, smaller and more readable
specification for review and evaluation• Integrate w/ RoseTree & RoseTree XML output
![Page 44: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/44.jpg)
Next StepsPart 2
• Finish implementation w/ more demos
• Revise vocab submission process
• Put together demo and proposal for distributed vocabulary maintenance using LDAP (which is, in part, why we’re here in the first place )
![Page 45: CTS](https://reader035.vdocuments.site/reader035/viewer/2022062422/56813b7d550346895da4988a/html5/thumbnails/45.jpg)
Question
• Would it be possible to move to the HL7 web site at some point?– Current implementation is
• Tomcat4• Axis• Postgresql• Openldap