This wiki has undergone a migration to Confluence found Here
<meta name="googlebot" content="noindex">

Difference between revisions of "SOA: Minimal Functional Requirements"

From HL7Wiki
Jump to navigation Jump to search
 
(48 intermediate revisions by the same user not shown)
Line 1: Line 1:
Attempting to enumerate minimal set of template functional items to be addressed for use as "Semantic Signifiers" withing the SOA (Services Oriented Architecture) SIG "Resource Locator and Update Service" specficiation.
+
Authorship and custodianship metadata that is not directly supporting structural and semantic definition has been removed.  Would like to bring in more requirements only as deemed necessary.  This does not attempt to meet template repository requirements which would include more details with respect to participants in the management and production of the template.
  
Removed a lot of the authorship and custodianship metadata that is not directly supporting structural and semantic definitionWould like to bring in more requirements only as deemed necessary.
+
Metadata supporting publishing status and participants is also not included, it is assumed the availability of templates for use is controlled by a publishing process which may include validation, drafts, deprecation etcThis is not examined here.  
  
 +
=SOA: Semantic Signifiers - HL7 Profile Functional Specification=
  
==SOA: Semantic Signifiers - HL7 Profile Functional Specification==
+
==Introduction==
 +
HL7 V3 can represent a template in the form of a [[LIM]] - Localized Information Model or a [[CIM]] - Constrained Information Model.  A [[LIM]] is a serializable model that is a valid constraint on a [[CIM]].  CIMs currently define message structure and semantics that may be sent over the wire using the XML implementation technology specification, this includes the naming of the XML tags.  LIMs are implented as constraints on this wire protocol and can define further restrictions on content allowed.
  
===Introduction===
+
MIF is the "Model Interchange Format" it is a HL7 artifact formalism for describing all modelling performed in HL7 v3.  It is implemented as a set of XML schemas.  "mifStaticModelSerialized.xsd" - specfically supports serializable LIM definition.  The support for the stated general templating requirements by the MIF is examined here.  This is based on the MIF 2.0 specification.
This document describes the functional requirements of HL7 templates to support service oriented architecture specification usage.  This enables definitions of constraints to content within a HL7 operating profile for a service.
 
  
===Identification/Discovery===
+
The default namespace for this mif schema is "urn:hl7-org:v3/mif" this is assumed in the XPath expressions shown.
 +
 
 +
==Identification==
 
This section describes functional requirement items that support identification of the template instance explicitly or by discovery of for desired semantics
 
This section describes functional requirement items that support identification of the template instance explicitly or by discovery of for desired semantics
====Identifier====
 
''Requirement'' An identifier must be bound to constraint statements.  This allows reference to the template from other templates.
 
  
''MIF Reference''
+
===Identifier===
/serializedStaticModels/serializedStaticModel/@name
+
An identifier must be bound to templates.  This allows reference to a given template from other templates.
 +
 
 +
''MIF Implementation''
 +
 
 +
'''/serializedStaticModels/serializedStaticModel/@name'''
 +
 
 +
The model name is unique within the HL7 organization, this would need to be HL7 namespaced for use as a globally unique identifier.
 +
 
 +
===Name===
 +
This may be defined to provide an indication of semantics.
 +
 
 +
''MIF Implementation''
 +
 
 +
'''/serializedStaticModels/serializedStaticModel/@title'''
 +
 
 +
===Semantics Description===
 +
This is a description of the semantics that may be inferred when this template is invoked.  It will aid in determining whether the semantics are suitable for use in a desired context.
 +
 
 +
''MIF Implementation''
 +
 
 +
'''/serializedStaticModels/serializedStaticModel/annotations/description'''
 +
 
 +
===Version===
 +
This is an indication of the current revision of the template.  Versions of a template require that there are no semantic differences to be considered the same template.
 +
 
 +
''MIF Implementation''
 +
 
 +
'''/serializedStaticModels/serializedStaticModel/history/@id'''
 +
 
 +
 
 +
===Classification===
 +
Terminology concept terms or free text terms may be bound to the template.  This may provide an indication of the content of the constraint statement.
 +
 
 +
''MIF Implementation''
 +
 
 +
'''/serializedStaticModels/serializedStaticModel/header/@subject'''
 +
 
 +
 
 +
 
 +
==Constraint==
 +
This section describes functional requirement items that support constraining a reference model definition.  This allows the statement of instatiation constraints that are to be applied when conforming to a template defintion.
 +
 
 +
===Identifier===
 +
An identifier may be bound to constraint statements within the template.  This allows reference to any part of the constraint hierarchy that can be identified.
 +
 
 +
''MIF Implementation''
 +
 
 +
'''//class/@name'''
 +
 
 +
Within the scope of a given template each class is uniquely named and can thus be identified.
 +
 
 +
===Reference Model Derivation===
 +
The reference model class that is being constrained must be identified.
 +
 
 +
''MIF Implementation''
 +
 
 +
It is assumed the base reference model is the RIM.  By definition a LIM is a constraint of a CIM, and a CIM a constraint of a DIM, and a DIM a constraint on the RIM.  The entire constraint hierarchy can be found.  With each class in the CIM/DIM/RIM hierarchy named the:
 +
 
 +
'''//class/derivationSupplier/@name'''
 +
 
 +
Dependencies are ordered by:
 +
 
 +
'''//class/derivationSupplier/@staticModelDerivationId'''
 +
 
 +
This defines which base class in the reference model is being constrained by the class defintion in the template.
 +
 
 +
===Explicit Attribute Constraints===
 +
Constraint statements can be made on attributes of a reference model.  This allows the definition of which attributes are allowed to exist in instantiations based on the template.
 +
 
 +
''MIF Implementation''
 +
 
 +
Defintions of attributes that are allowed to exist in instantiations of the parent class based on the template:
 +
 
 +
'''//class/attribute'''
 +
 
 +
 
 +
Name of the attribute:
 +
 
 +
'''//class/attribute/@name'''
 +
 
 +
 
 +
Source of attribute in the reference model, complete derivation hierarchy:
 +
 
 +
'''//class/attribute/derivationSupplier'''
 +
 
 +
 
 +
Each class that is allowed to be instantiated defines which attributes it contains.  Since the HL7 methodology requires derived models to be restrictions of the RIM any attributes that do not appear in the defintions (as defiend in the RIM base class) are thus constrained to be not allowed to be instantiated.
 +
 
 +
===Attribute Multiplicity===
 +
HL7 v3 attributes are explicitly constraints on the available RIM attributes.
 +
The allowed multipliciy range of instances allowed of a specified attribute, this may be:
 +
 
 +
* 0..1 - optional
 +
* 1..1 - required exactly one instance
 +
* 0..* - unbound collection
 +
* 1..* - unbound collection, required instance
 +
* 0..N - fixed maximum size collection
 +
* 1..N - fixed maximum size collection, required instance
 +
 
 +
This must be equal to or within the multiplicity of the reference model being constrained.
 +
 
 +
''MIF Implementation''
 +
 
 +
The minimum number of allowed instatiations of the attribute:
 +
 
 +
'''//class/attribute/@minimumMultiplicity'''
 +
 
 +
 
 +
The maximum number of allowed instatiations of the attribute:
 +
 
 +
'''//class/attribute/@maximumMultiplicity'''
 +
 
 +
===Collection Type===
 +
Defines the type of collection that may be instansiated sorted list, unsorted list, set.  This applies to attributes that have a multiplicity that is greater than one.
 +
 
 +
''MIF Implementation''
 +
 
 +
Definition of a collection type:
 +
 
 +
'''//class/attribute/type/@name''' = SET | BAG | LIST
 +
 
 +
 
 +
Definition of collection contents type:
 +
 
 +
'''//class/attribute/type/supplierBindingArgumentDatatype/@name''' e.g. CD, ST
 +
 
 +
===Explicit Association Constraints===
 +
Constraint statements can be made on associations between classes in the reference model.  This allows the definition of which associations are allowed to exist in instantiations based on the template.
 +
 
 +
''MIF Implementation''
 +
 
 +
Defintion of an association between classes, the RIM defines the RIM classes that may be connected with an association, template association definitions determine which associations are allowed to be instantiated when conforming to the template.
 +
 
 +
'''//class/association'''
 +
 
 +
 
 +
===Association Multiplicity===
 +
The HL7 v3 associations are explicitly constraints on the available HL7 RIM associations.
 +
 
 +
he allowed multipliciy range of instances allowed of a specified association, this may be:
 +
 
 +
* 0..1 - optional
 +
* 1..1 - required exactly one instance
 +
* 0..* - optional, unbound number of instances
 +
* 1..* - require at least one instance
 +
* 0..N - fixed maximum size
 +
* 1..N - fixed maximum size collection, required instance
 +
 
 +
This must be equal to or within the multiplicity of the reference model being constrained.
 +
 
 +
''MIF Implementation''
 +
 
 +
The minimum number of allowed instatiations of an association:
 +
 
 +
'''//class/association/targetConnection/@minimumMultiplicity'''
 +
 
 +
 
 +
The maximum number of allowed instatiations of an association:
 +
 
 +
'''//class/association/targetConnection/@maximumMultiplicity'''
  
====Name====
 
'''Requirement''' This may be defined to provide an indication of semantics.
 
  
====Semantics Description====
 
'''Requirement''' This is a description of the semantics that may be inferred when this template is invoked.  It will aid in determining whether the semantics are suitable for use in a desired context.
 
  
====Version====
+
===Instantiation Conditions===
'''Requirement''' This is an indication of the current revision of the templateVersions of a template require that there are no semantic differences??
+
Conditional statement defining the inclusion conditions of explicitly defined constraints or referenced templatesThis may include reference to environmental variables and to instance values that are within the context of a given template.
====Classification====
 
''Requirement:'' Terminology concept terms may be bound to constraint statements.  This may provide semantic information throughout the constraint statement.
 
  
===Constraint===
+
===Referenced===
'''Requirement''' This section describes functional requirement items that support constraining a reference model structure, binding to concepts, specialization of templates.
+
Reference to identified template to include specified constraints defined in another template.
====Identifier====
 
'''Requirement''' An identifier must be bound to constraint statements.  This allows reference to any identified part of the constraint hierarchy.
 
  
====Reference Model Identifier====
+
''MIF Implementation''
'''Requirement''' Defines the reference model that is being constrained for this template.
 
  
====Terminology Binding====
+
This is implemented in the MIF by CMET references.
'''Requirement''' Terminology concept terms may be bound to constraint statements.  This may provide semantic information throughout the constraint statement.
 
  
====Explicit Constraints====
+
===Choice===
'''Requirement''' Constraint statements can be made on attributes and associations of a reference model.
+
Statement of choice of a number of possible distinct explicitly defined constraints or referenced templates.
  
=====Multiplicity=====
+
''MIF Implementation''
'''Requirement''' The allowed range of instances allowed of specified attribute/association, this may be 0-not allowed, 1-allowed, greater than 1-a collection.
 
  
=====Collection Type=====
+
To implement a choice between classes an abstract base class (or interface) is defined, this defines the allowed (child) specializations.  The specialization classes may be explicitly defined in the template or externally reference (CMET).
'''Requirement''' Defines the type of collection that may be instansiated sorted list, unsorted list, set.
 
  
=====Instantiation Conditions=====
+
===Instantiation Criteria===
'''Requirement''' Conditional statement defining the inclusion conditions of explicitly defined constraints or referenced templates.  This may include reference to environmental variables and to instance values that are within the context of a given template.
+
Statement of criteria of allowed or exclusion properties of referenced templates not identified directly.
  
=====Referenced=====
+
''MIF Implementation''
'''Requirement''' Reference to identified template to include specified constraints defined in another template.
+
Not supported?  Does ADL do this?
  
=====Choice=====
+
===Data Value Constraints===
'''Requirement''' Statement of choice of a number of possible distinct explicitly defined constraints or referenced templates.
+
Data value constraints are specific constraints that support common ways of constraining specific data value types.  In the HL7 profile this includes all HL7 datatypes.  Constraints within a datatype in the HL7 profile are implemented as 'Datatype Flavours'.  It is also possible to constrain allowed data values directly 'in place' within the explicit template specification.
  
=====Instantiation Criteria=====
+
''MIF Implementation''
'''Requirement''' Statement of criteria of allowed or exclusion properties of referenced templates not identified directly.
 
  
=====Data Value Constraints=====
+
Use of a defined datatype library.  This library specifies named datatypes that can be used within the model definition and specific constraints that are defined on the datatypeAll constraints are defined within this package for datatype flavours.
'''Requirement''' Data value constraints are specific constraints that support common ways of constraining specific data value typesIn the HL7 profile this includes all HL7 datatypes.
 
  
=====Range=====
+
Referenced library package
'''Requirement''' Numeric range specification, supporting inclusive and exclusive ranges also single and double sided ranges.  This includes numeric types and physical quantities.
 
  
=====Measurement Units=====
+
'''/serializedStaticModels/serializedStaticModel/importedDatatypeModelPackage'''
'''Requirement''' This constrains measurement units to a value set that is allowed.  This applies to physical quantities.
 
  
=====Code System=====
+
Explicit definition of datatype
'''Requirement''' This constrains the code system to an allowed set of code system identifiers.  This applies to the coded value types.
 
  
=====Value Set=====
+
'''/serializedStaticModels/serializedStaticModel/additionalDatatypeModel'''
'''Requirement''' Includes assumed (default) values, fixed values and enumerations for string and coded value types.
 
  
=====Regular Expression=====
 
'''Requirement''' Defines allowed string patterns and applied to string types.
 
  
=====Identifier Root=====
+
====Type====
'''Requirement''' This constrains the root of an identifier to an allowed set of identifier root values. This applies to identifier types.
+
Specify the allowed data type that can be instantiated. In the HL7 profile this is defined by the HL7 v3 Datatypes.
  
=====Assertions=====
+
====Range====  
'''Requirement''' Stated assertions defining allowed instantiation constraints of values.  This may depend on environment variables or other instantiated values within the context of the given template.
+
Numeric range specification, supporting inclusive and exclusive ranges also single and double sided ranges.  This may be a range of numeric types or physical quantitiy types.
  
==Analysis of MIF Support==
+
====Measurement Units====
MIF is the "Model Interchange Format" it is a HL7 artifact formalism for describing all modelling performed in HL7 v3.
+
This constrains measurement units to a value set that is allowed.  This applies to physical quantities.
  
It is implemented as a set of XML schemas.   
+
====Code System====
 +
This constrains the code system to an allowed set of code system identifiersThis applies to the coded value types.
  
mifStaticModelSerialized.xsd - specfically supports serializable models.
+
====Value Set====
 +
Includes assumed (default) values, fixed values and enumerations for string and coded value types.
  
 +
====Regular Expression====
 +
Defines allowed string patterns and applied to string types.
  
===Identification/Discovery===
+
====Identifier Root====
====Identifier====
+
This constrains the root of an identifier to an allowed set of identifier root values. This applies to identifier types.
/serializedStaticModels/serializedStaticModel/@name
 
====Name====
 
/serializedStaticModels/serializedStaticModel/@name
 
====Semantics Description====
 
====Version====
 
====Classification====
 
  
===Constraint===
+
====Assertions====
#Identifier
+
Stated assertions defining allowed instantiation constraints of values. This may depend on environment variables or other instantiated values within the context of the given template.
#Reference Model Identifier - Fixed to 'RIM' (?)
 
#Terminology Binding - This applies only to clinical CMET or Template definitions. The entry point will be an act class within the clinical statement.  The terminology binding is done via the Act.code value set. This can be expressed as a value set constraint on this attrbute. (?)
 
#Explicit Constraints
 
##Multiplicity
 
##Collection Type
 
##Instantiation Conditions
 
##Referenced
 
##Choice
 
##Instantiation Criteria
 
#Data Value Constraints
 
##Range
 
##Measurement Units
 
##Code System
 
##Value Set
 
##Regular Expression
 
##Identifier Root
 
##Assertions
 

Latest revision as of 18:00, 13 September 2006

Authorship and custodianship metadata that is not directly supporting structural and semantic definition has been removed. Would like to bring in more requirements only as deemed necessary. This does not attempt to meet template repository requirements which would include more details with respect to participants in the management and production of the template.

Metadata supporting publishing status and participants is also not included, it is assumed the availability of templates for use is controlled by a publishing process which may include validation, drafts, deprecation etc. This is not examined here.

SOA: Semantic Signifiers - HL7 Profile Functional Specification

Introduction

HL7 V3 can represent a template in the form of a LIM - Localized Information Model or a CIM - Constrained Information Model. A LIM is a serializable model that is a valid constraint on a CIM. CIMs currently define message structure and semantics that may be sent over the wire using the XML implementation technology specification, this includes the naming of the XML tags. LIMs are implented as constraints on this wire protocol and can define further restrictions on content allowed.

MIF is the "Model Interchange Format" it is a HL7 artifact formalism for describing all modelling performed in HL7 v3. It is implemented as a set of XML schemas. "mifStaticModelSerialized.xsd" - specfically supports serializable LIM definition. The support for the stated general templating requirements by the MIF is examined here. This is based on the MIF 2.0 specification.

The default namespace for this mif schema is "urn:hl7-org:v3/mif" this is assumed in the XPath expressions shown.

Identification

This section describes functional requirement items that support identification of the template instance explicitly or by discovery of for desired semantics

Identifier

An identifier must be bound to templates. This allows reference to a given template from other templates.

MIF Implementation

/serializedStaticModels/serializedStaticModel/@name

The model name is unique within the HL7 organization, this would need to be HL7 namespaced for use as a globally unique identifier.

Name

This may be defined to provide an indication of semantics.

MIF Implementation

/serializedStaticModels/serializedStaticModel/@title

Semantics Description

This is a description of the semantics that may be inferred when this template is invoked. It will aid in determining whether the semantics are suitable for use in a desired context.

MIF Implementation

/serializedStaticModels/serializedStaticModel/annotations/description

Version

This is an indication of the current revision of the template. Versions of a template require that there are no semantic differences to be considered the same template.

MIF Implementation

/serializedStaticModels/serializedStaticModel/history/@id


Classification

Terminology concept terms or free text terms may be bound to the template. This may provide an indication of the content of the constraint statement.

MIF Implementation

/serializedStaticModels/serializedStaticModel/header/@subject


Constraint

This section describes functional requirement items that support constraining a reference model definition. This allows the statement of instatiation constraints that are to be applied when conforming to a template defintion.

Identifier

An identifier may be bound to constraint statements within the template. This allows reference to any part of the constraint hierarchy that can be identified.

MIF Implementation

//class/@name

Within the scope of a given template each class is uniquely named and can thus be identified.

Reference Model Derivation

The reference model class that is being constrained must be identified.

MIF Implementation

It is assumed the base reference model is the RIM. By definition a LIM is a constraint of a CIM, and a CIM a constraint of a DIM, and a DIM a constraint on the RIM. The entire constraint hierarchy can be found. With each class in the CIM/DIM/RIM hierarchy named the:

//class/derivationSupplier/@name

Dependencies are ordered by:

//class/derivationSupplier/@staticModelDerivationId

This defines which base class in the reference model is being constrained by the class defintion in the template.

Explicit Attribute Constraints

Constraint statements can be made on attributes of a reference model. This allows the definition of which attributes are allowed to exist in instantiations based on the template.

MIF Implementation

Defintions of attributes that are allowed to exist in instantiations of the parent class based on the template:

//class/attribute


Name of the attribute:

//class/attribute/@name


Source of attribute in the reference model, complete derivation hierarchy:

//class/attribute/derivationSupplier


Each class that is allowed to be instantiated defines which attributes it contains. Since the HL7 methodology requires derived models to be restrictions of the RIM any attributes that do not appear in the defintions (as defiend in the RIM base class) are thus constrained to be not allowed to be instantiated.

Attribute Multiplicity

HL7 v3 attributes are explicitly constraints on the available RIM attributes. The allowed multipliciy range of instances allowed of a specified attribute, this may be:

  • 0..1 - optional
  • 1..1 - required exactly one instance
  • 0..* - unbound collection
  • 1..* - unbound collection, required instance
  • 0..N - fixed maximum size collection
  • 1..N - fixed maximum size collection, required instance

This must be equal to or within the multiplicity of the reference model being constrained.

MIF Implementation

The minimum number of allowed instatiations of the attribute:

//class/attribute/@minimumMultiplicity


The maximum number of allowed instatiations of the attribute:

//class/attribute/@maximumMultiplicity

Collection Type

Defines the type of collection that may be instansiated sorted list, unsorted list, set. This applies to attributes that have a multiplicity that is greater than one.

MIF Implementation

Definition of a collection type:

//class/attribute/type/@name = SET | BAG | LIST


Definition of collection contents type:

//class/attribute/type/supplierBindingArgumentDatatype/@name e.g. CD, ST

Explicit Association Constraints

Constraint statements can be made on associations between classes in the reference model. This allows the definition of which associations are allowed to exist in instantiations based on the template.

MIF Implementation

Defintion of an association between classes, the RIM defines the RIM classes that may be connected with an association, template association definitions determine which associations are allowed to be instantiated when conforming to the template.

//class/association


Association Multiplicity

The HL7 v3 associations are explicitly constraints on the available HL7 RIM associations.

he allowed multipliciy range of instances allowed of a specified association, this may be:

  • 0..1 - optional
  • 1..1 - required exactly one instance
  • 0..* - optional, unbound number of instances
  • 1..* - require at least one instance
  • 0..N - fixed maximum size
  • 1..N - fixed maximum size collection, required instance

This must be equal to or within the multiplicity of the reference model being constrained.

MIF Implementation

The minimum number of allowed instatiations of an association:

//class/association/targetConnection/@minimumMultiplicity


The maximum number of allowed instatiations of an association:

//class/association/targetConnection/@maximumMultiplicity


Instantiation Conditions

Conditional statement defining the inclusion conditions of explicitly defined constraints or referenced templates. This may include reference to environmental variables and to instance values that are within the context of a given template.

Referenced

Reference to identified template to include specified constraints defined in another template.

MIF Implementation

This is implemented in the MIF by CMET references.

Choice

Statement of choice of a number of possible distinct explicitly defined constraints or referenced templates.

MIF Implementation

To implement a choice between classes an abstract base class (or interface) is defined, this defines the allowed (child) specializations. The specialization classes may be explicitly defined in the template or externally reference (CMET).

Instantiation Criteria

Statement of criteria of allowed or exclusion properties of referenced templates not identified directly.

MIF Implementation Not supported? Does ADL do this?

Data Value Constraints

Data value constraints are specific constraints that support common ways of constraining specific data value types. In the HL7 profile this includes all HL7 datatypes. Constraints within a datatype in the HL7 profile are implemented as 'Datatype Flavours'. It is also possible to constrain allowed data values directly 'in place' within the explicit template specification.

MIF Implementation

Use of a defined datatype library. This library specifies named datatypes that can be used within the model definition and specific constraints that are defined on the datatype. All constraints are defined within this package for datatype flavours.

Referenced library package

/serializedStaticModels/serializedStaticModel/importedDatatypeModelPackage

Explicit definition of datatype

/serializedStaticModels/serializedStaticModel/additionalDatatypeModel


Type

Specify the allowed data type that can be instantiated. In the HL7 profile this is defined by the HL7 v3 Datatypes.

Range

Numeric range specification, supporting inclusive and exclusive ranges also single and double sided ranges. This may be a range of numeric types or physical quantitiy types.

Measurement Units

This constrains measurement units to a value set that is allowed. This applies to physical quantities.

Code System

This constrains the code system to an allowed set of code system identifiers. This applies to the coded value types.

Value Set

Includes assumed (default) values, fixed values and enumerations for string and coded value types.

Regular Expression

Defines allowed string patterns and applied to string types.

Identifier Root

This constrains the root of an identifier to an allowed set of identifier root values. This applies to identifier types.

Assertions

Stated assertions defining allowed instantiation constraints of values. This may depend on environment variables or other instantiated values within the context of the given template.