CTS

Document Sample
CTS Powered By Docstoc
					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
• 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.
                   CTS
                 Overview
• 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.
                 CTS
               Partitions
• Message API vs. Terminology API vs.
  Mapping API
              HL7 Software Implementation




                    Message Layer




                  Terminology API
                   Terminology API
                    Terminology Layer
                               CTS
                             Overview
• Message API vs. Terminology API
                                                            What are the
                    HL7 Software Implementation            valid codes for
                                                           this attribute?


Is this code an                                              Is this code
example of an              Message API                       valid for this
   orderable                                                  attribute?
     drug?

   What is the                                    What is the closest
                        Terminology API
preferred English        Terminology API          equivalent for code
 designation for           Terminology API        x in terminology y?
   this code?
                                 CTS
                               Partitions
 • Message API vs. Terminology API vs.
   Mapping API
                              HL7 Software Implementation
 API published primarily
 for client implementations

                                    Message Layer

API published primarily
for server implementations

                                  Terminology API
                                   Terminology API
                                    Terminology Layer
                         CTS
                       Partitions
• 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
              CTS Partitions
            Message Vocabulary   Mapping API
            API     API
Runtime          x   x                x


Browsing         x   x


Authoring        x   (limited/
                     HL7
                     Specific)
          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)
                 CTS
          Message 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
               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?
        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?
             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.
               CTS
        Message 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)
                implies
1. There is currently no mechanism to ask
   the question WRT to the child code
   system. Will this nuance be needed?
                 CTS
        Vocabulary 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)
          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?
                CTS
         Code 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)
               CTS
        Message Browser API
1. List all of the active attributes
2. List all of the active vocabulary domains
3. List all of the value sets
4. 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.
                  CTS
           Message 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 set
11. (identification)
               CTS
      Vocabulary 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).
               CTS
        Message 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).
                  CTS
           Message 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 root
    b) 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)
               CTS
       Vocab Maintenance API
1. Create a new code system
2. Remove an existing code system
3. Add coded terms (inc properties, designations,
   etc) to a code system
4. Inactivate coded terms
5. Remove coded terms
6. Add properties to a coded term
7. Remove properties from a coded term
8. Add a coded term to a list of relationships
9. Remove coded term from a list of relationships
Technology Details
               CTS API
• Currently
  – Specification language is IDL
  – Target languages are WSDL & Java
  – Process involves IDL->Java->WSDL->Java
                           CTS API
                             IDL
/* 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);
                        CTS API
                      Java (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;
WSDL
WSDL
             Java (Part 2)
• (Almost) no difference on InterFace specs
• Structs, however are now beans.
• Comments stripped earlier in the process
  (will fix…)
                   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
Status
      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
       Vocab Runtime API
• Partial prototype implementation
• Based on ldap server image of Access DB
 Samples
SOAP Test
    Samples
Value Set Browser
 Samples
Useful JSP‟s
  Samples
Sample JSP‟s
                    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.
               Next Steps
                 Part 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
               Next Steps
                 Part 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 )
                     Question
• Would it be possible to move to the HL7
  web site at some point?
  – Current implementation is
    •   Tomcat4
    •   Axis
    •   Postgresql
    •   Openldap

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:38
posted:6/23/2011
language:English
pages:45