Snapshot of the OMG LQS Specification

54
Snapshot of the OMG LQS Specification Presentation to the HL7 Vocabulary Working Group 1/99

description

Snapshot of the OMG LQS Specification. Presentation to the HL7 Vocabulary Working Group 1/99. Presentation Outline. Motivation for the specification Requirements and constraints Approach and process Specification overview Sections which may be directly useful to HL7 - PowerPoint PPT Presentation

Transcript of Snapshot of the OMG LQS Specification

Page 1: Snapshot of the OMG LQS Specification

Snapshot of the OMG LQS Specification

Presentation to the HL7 Vocabulary Working Group 1/99

Page 2: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 2

Presentation Outline

• Motivation for the specification• Requirements and constraints• Approach and process• Specification overview• Sections which may be directly useful to HL7• Current state of the specification and next steps• Q&A

Page 3: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 3

First things first - just what are we talking about?

“Lexicon Query Services” (LQS) Specification• Interface specification for read only access to

medical coding schemes• Formally adopted by the Object Management

Group (OMG) 7/98• Describes an object-based API to accomplish

common tasks involving medical coding schemes Definitions, representations(terms), associations, etc.

Page 4: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 4

First things first - what are we talking about?

“Lexicon Query Services” (LQS) Specification• Specification is publicly available at:

ftp://ftp.omg.org/pub/docs/corbamed/98-03-22.pdf

Page 5: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 5

Motivation - why did we do it?

A group of companies and organizations had been investigating the possibility of specifying medical component behavior, with the purpose of arriving at a set of API’s which would enable component level interoperability within the medical domain.

Page 6: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 6

Motivation

As always, one of the cornerstones of interoperability was the ability to agree on a common conceptual base and corresponding representational structure.

Page 7: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 7

Motivation

Conceptual Base RepresentationalStructure

Letters, numerals andpunctuation characters

ASCII

Floating point numbers IEEE FP specification

Behavioral characteristics ofan 80x86 microprocessor

80x86 opcodes

Reportable diseases of thehuman body

ICD

Page 8: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 8

Motivation

We determined that we wanted to arrive at a common means of representing and manipulating coded information before we got heavily involved in the specification task.Previous OMG specifications were inconsistent,

imprecise and incomplete when it came to the notion of coding.

Page 9: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 9

Motivation

Possible approaches• Select one coding scheme to represent all codes

(UMLS, SNOMED-RT, GALEN, READ, ???)• Select a single structure into which any coding

scheme may be placed (KIF, KRSS, UMLS DB, ???)

• Specify a set of behavioral characteristics common to anything called a “coding scheme” - What can I ask of it and how should it respond?

Page 10: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 10

Motivation

Stimulus Response

The notion of a black box

Page 11: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 11

Requirements and Constraints

• Specification had to cover enough territory to be useful.

• Specification had to address a wide spectrum of coding schemes– From a simple table of code + term…– …to a terminology on the level of GALEN or

SNOMED-RT

Page 12: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 12

Requirements and Constraints

• Specification had to cover a wide variety of uses:– From real-time vital signs interfaces on a

minimal platform…– … to a mainframe type of service doing

translation, lookup, normalization, inference, etc.

Page 13: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 13

Requirements and Constraints

• Specification could not presume:– A specific database (e.g. Oracle) or even

storage type (e.g. relational, OODB)– A specific platform (e.g. Intel)– A specific programming language– A specific operating system

Page 14: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 14

Requirements and Constraints

• Specification had to have buy-in (or at least input from):– Terminology specialists– Medical system vendors– Health Care Community

Page 15: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 15

Approach and Process

• OMG RFP issued January 1997

• Formed “CORBAlex” working group April 1997

• Attempted to use the classic CEN approach - Scope/Use Cases/Model/Specification -

• But...

Page 16: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 16

• … quickly discovered that Use Cases required precise definitions of terms (objects) and precise definition of objects required a model and a model required a notion of purpose and application.

• Resulting process was iterative:

Approach and Process

Use Cases Model Definitions

Page 17: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 17

• One of the final step was a rendering of the model in IDL.– Non-trivial process. The IDL specification was

an “Engineering” specification. Mapping had to be done manually by skilled CORBA people.

Approach and Process

Page 18: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 18

• Model transformation to IDL– Steps included:

• Transformation of lightweight classes into structs

• Elimination of classes representing collections

• Addition of “shortcuts” for anticipated frequent usages

• Partitioning of model into compliance groups:

LexExplorer, CodingSchemeLocator, etc.

Approach and Process

Page 19: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 19

Specification Overview

• Specification is at:

http://www.omg.org/docs/corbamed/98-03-22.pdf• IDL can be found at:

http://www.omg.org/docs/corbamed/98-03-18.idl

Page 20: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 20

Specification Overview

• Chapters 1&2 - Overview and OMG conformance statements

• Chapter 3 - DEFINITIONS

• Chapter 4 - Use Scenarios

• Chapter 5 - Reference Model

• Chapter 6 - Engineering model

• Chapter 7 - Meta-Terminology

Page 21: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 21

Portions with potential applicability to HL7

• NamingAuthority - Unique “global” identifiers for things (including concept codes)

• ValueDomain - Provides access sets of codes associated with data elements

• Code to Presentation translation• Code to Code translation• (parts of) Meta-Terminology - ‘bootstrap’ coding

scheme

Page 22: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 22

NamingAuthority

RegistrationAuthorityvalue : enum {Other, DCE, IR, DNS, ISO}

NamingEntityvalue : string

AuthorityId

1

+authority

1 1

+naming_entity

1

QualifiedName

1

+authority_id

1 LocalNamevalue : string

1+local_name

1

Page 23: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 23

NamingAuthority

• DCE– RegistrationAuthority: DCE

– NamingEntity: 6132A880-9A34-1182-A20A-AF30CF7A0000

– LocalName: /HL7/I9C

– Example:

DCE: 6132A880-9A34-1182-A20A-AF30CF7A0000/HL7/I9C

Page 24: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 24

NamingAuthority

• ISO– RegistrationAuthority: ISO

– NamingEntity: iso member-body hl7

-or-

iso(1) member-body(2) hl7(26519)

-or-

1 2 26519

– LocalName: /I9C

– Example:

ISO: iso member-body hl7/I9C

Page 25: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 25

NamingAuthority

• DNS– RegistrationAuthority: DNS

– NamingEntity: codingSchemes.hl7.org

– LocalName: /I9C

– Example:

DNS:codingschemes.hl7.org/I9C

Page 26: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 26

NamingAuthority

• IDL– RegistrationAuthority: IDL

– NamingEntity: org.hl7

– LocalName: /codingScheme/I9C

– Example:

IDL:org.hl7/codingScheme/I9C

Page 27: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 27

NamingAuthority

• Local– RegistrationAuthority:

– NamingEntity:

– LocalName: I9C

– Example:

I9C

Page 28: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 28

NamingAuthority.idl

module NamingAuthority

{

enum RegistrationAuthority {

OTHER,

ISO,

DNS,

IDL,

DCE };

typedef string NamingEntity;

struct AuthorityId {

RegistrationAuthority authority;

NamingEntity naming_entity;

};

Page 29: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 29

NamingAuthority.idl

typedef string AuthorityIdStr;

typedef string LocalName;

struct QualifiedName {

AuthorityId authority_id;

LocalName local_name;

};

typedef string QualifiedNameStr;

exception InvalidInput {};

Page 30: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 30

NamingAuthority.idl

interface translation_library

{

AuthorityIdStr authority_to_str(in AuthorityId authority )

raises(InvalidInput );

AuthorityId str_to_authority(in AuthorityIdStr authority_str )

raises(InvalidInput );

QualifiedNameStr qualified_name_to_str(in QualifiedName qualified_name )

raises(InvalidInput );

QualifiedName str_to_qualified_name(in QualifiedNameStr qualified_name_str )

raises(InvalidInput );

};

};

Page 31: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 31

ConceptCodes

typedef NamingAuthority::LocalName ConceptCode;

typedef sequence<ConceptCode> ConceptCodeSeq;

typedef NamingAuthority::AuthorityId CodingSchemeId;

typedef sequence<CodingSchemeId> CodingSchemeIdSeq;

struct QualifiedCode {

CodingSchemeId coding_scheme_id;

ConceptCode a_code;

};

Page 32: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 32

Value Domains

• Term borrowed from ISO 11179 and X3.285

• Represents the connection between concept codes and data

• An HL7 field is a classic value domain

• Identified by a qualified code: typedef QualifiedCode ValueDomainId;

typedef sequence<ValueDomainId> ValueDomainIdSeq;

Page 33: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 33

Value Domain Interface

• Identificationinterface ValueDomainVersion {

readonly attribute ValueDomainId value_domain_id;

readonly attribute VersionId value_domain_version_id;

readonly attribute boolean is_default_version;

.

.

.

Page 34: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 34

Value Domain Interface

• IdentificationExample:

ValueDomainId - ISO:iso member hl7/Patient/Gender

VersionId - 3.0

is_default_version - TRUE

.

.

.

Page 35: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 35

Value Domain Interface

• List all coding schemes which have one or more valid codes in this domain:

CodingSchemeIdSeq get_schemes_with_extensions();

• For HL7, might return:ISO:iso hl7 member/HL7/HL70001

ISO:iso hl7 member/UMLS/

Page 36: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 36

Value Domain Interface

• List all concept codes from the given coding scheme which are valid in this domain:ConceptInfoSeq get_extension_for_scheme(

in CodingSchemeId coding_scheme_id)

raises ( UnknownCodingScheme );

• Exampleget_extension_for_scheme(ISO:iso hl7 member/HL7/HL70001)

{M, “Male”}, {F, “Female”}, {O, “Other”}, {U, “Unknown”}

get_extension_for_scheme(ISO:iso hl7 member/UMLS/)

{C0024554, “male”}, { C0015780, “female}

Page 37: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 37

Value Domain Interface

• List all concept codes which are valid in this domain

QualifiedCodeInfoSeq get_all_extensions();

example:get_all_extensions()(ISO:iso hl7 member/HL7/HL70001)

{ISO:iso hl7 member/HL7/HL70001/M, “Male”},

{ISO:iso hl7 member/HL7/HL70001/F, “Female”},

{ISO:iso hl7 member/HL7/HL70001/O, “Other”},

{ISO:iso hl7 member/HL7/HL70001/U, “Unknown”}

{ISO:iso hl7 member/UMLS/C0024554, “male”},

{ISO:iso hl7 member/UMLS/C0015780, “female}

Page 38: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 38

Value Domain Interface

• Determine whether the given code is valid within the value domain:

boolean is_code_in_domain(in QualifiedCode qualified_code);

Example:

is_code_in_domain(ISO:iso hl7 member/HL7/HL70001/M)

returns TRUE

Page 39: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 39

Translation

• Translate a code into text for a given context

IntlString get_preferred_text(in QualifiedCode a_qualified_code,

in UsageContextIdSeq context_ids

) raises ( UnknownCodingScheme, UnknownCode );

• Example:

get_preferred_text(“ISO:iso hl7 member/HL7/HL70001/M”, NULL)

would yield:

“Male”

Page 40: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 40

Translation

• Find matching concept(s) for text

ConceptCodeSeq get_concepts_by_text( in string text);

Example:

get_concepts_by_text(“Male”)

would yield:

“M” (in the HL7 table 1 coding scheme)

Page 41: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 41

Translation

• Quick aside - weighted resulttypedef float Weight;

struct WeightedResult {

ConceptInfo the_concept;

IntlString matching_text;

Weight the_weight;

};

Page 42: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 42

Translation

• Match concepts by a regular expression stringvoid match_concepts_by_string(in IntlString match_string,

in unsigned long how_many,

out WeightedResultSeq weighted_results,

out WeightedResultsIter weighted_result_iter

) raises ( NotImplemented);

Page 43: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 43

Translation

• Match concepts by ordered list of keywordsvoid match_concepts_by_keywords(

in OrderedIntlStringSeq keywords,

in unsigned long how_many,

out WeightedResultSeq weighted_results,

out WeightedResultsIter weighted_results_iter

) raises( NotImplemented);

Page 44: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 44

Translation

• Translate concept codes between coding schemes

ConceptInfoSeq translate_code(in QualifiedCode from_qualified_code,

in CodingSchemeId to_coding_schemeId

) raises (UnknownCode,

UnknownCodingScheme,

TranslationNotAvailable);

Page 45: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 45

“Meta”Terminology

• Value domains within LQSconst ValueDomainIdStr ASSOCIATION_VALUE_DOMAIN =

"IDL:omg.org/TerminologyService/AssociationId";

const ValueDomainIdStr ASSOCIATION_QUALIFIER_VALUE_DOMAIN =

"IDL:omg.org/TerminologyService/AssociationQualifierId";

const ValueDomainIdStr ASSOCIATION_BASE_TYPE_DOMAIN =

"IDL:omg.org/TerminologyService/AssociationBaseTypeId";

const ValueDomainIdStr LANGUAGE_VALUE_DOMAIN =

"IDL:omg.org/TerminologyService/LanguageId";

const ValueDomainIdStr LEXICAL_TYPE_VALUE_DOMAIN =

"IDL:omg.org/TerminologyService/LexicalTypeId";

const ValueDomainIdStr PRESENTATION_FORMAT_VALUE_DOMAIN =

"IDL:omg.org/TerminologyService/PresentationFormatId";

Page 46: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 46

“Meta”Terminology

• Value domains within LQSconst ValueDomainIdStr SOURCE_VALUE_DOMAIN =

"IDL:omg.org/TerminologyService/SourceId";

const ValueDomainIdStr SOURCE_USAGE_DOMAIN =

"IDL:omg.org/TerminologyService/SourceUsageId";

const ValueDomainIdStr SYNTACTIC_TYPE_VALUE_DOMAIN =

"IDL:omg.org/TerminologyService/SyntacticTypeId";

const ValueDomainIdStr USAGE_CONTEXT_VALUE_DOMAIN =

"IDL:omg.org/TerminologyService/UsageContextId";

Page 47: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 47

MetaTerminologyBootstrap problem

Interoperability entails using the same or at least compatible names for things

The first thing we nave to do is arrive at common names for coding schemes:

ICD-9? I9? IC9? UMLS SNOMED SMD

HL7 2.3 Table 1? USMarc Country Codes

Page 48: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 48

MetaTerminologyBootstrap problem

• Looked at CEN ENV 1068 (Registration of Coding Schemes) - replaced by ISO 7826-1 & 7826-2

• Looked at ISO 7826 (Identification and Registration of Coding Schemes) - nice spec, but not funded

Page 49: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 49

MetaTerminologyBootstrap problem

• Looked at ISO X3/L8 - Metadata registry

- Specification on the how and what of registration, but not actual registrar is (currently) outside of the scope

• ISO/TC154 - basic semantics registrar

• HL7? HISB? - Scope issues.

Page 50: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 50

MetaTerminologyBootstrap Problem

Interim Solution: As there IS no formal registry, we will:

• Defer to HL7 codes when possible (IC9, UMLS)

• Use the OMG Interface Repository (IR) as the root: DNS:omg.org

Page 51: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 51

MetaTerminologyBootstrap Problem

• The HL7 Coding scheme is represented as:

DNS:hl7.omg.org

• We defer to HL7 when the coding scheme code is defined

DNS:ic9.hl7.omg.org

DNS:umls.hl7.omg.org

Page 52: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 52

MetaTerminologyBootstrap Problem

• And use OMG when it isn’t

DNS:usmarc.omg.org

Page 53: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 53

Current State of Specification

• Published

• RTF is in place (but not active at the moment)

• Implementations occurring

Page 54: Snapshot of the OMG LQS Specification

1/25/99 HL7 LQS Presentation 54

Questions?