Difference between revisions of "RIM based ITS"
Rene spronk (talk | contribs) |
|||
Line 28: | Line 28: | ||
==Transformation between the XML ITS R1 and the newly proposed RS XML ITS (MS-RS cell transition)== | ==Transformation between the XML ITS R1 and the newly proposed RS XML ITS (MS-RS cell transition)== | ||
*to match the rim object graph to a specific rim model (i.e. an HMD) (which is required to serialise in that form), you must match the elements to the model by running validation in reverse - it is this kind of association because it meets the constraints that this association has. And you need the MIF for that, of course | *to match the rim object graph to a specific rim model (i.e. an HMD) (which is required to serialise in that form), you must match the elements to the model by running validation in reverse - it is this kind of association because it meets the constraints that this association has. And you need the MIF for that, of course | ||
+ | |||
+ | ==Example== | ||
+ | |||
+ | Below an example of a NE2008 interction serialized according to a (draft version of) a RIM ITS. Note (for example) the use of element names like ''outboundrelationship'', ''participation'' and ''role'' instead of clone class names. | ||
+ | |||
+ | <PRE> | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | |||
+ | <rim-graph xmlns="urn:hl7-org:v3-rim" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" model="QUPC_IN043200NO" version="0226"> | ||
+ | <content xsi:type="Message" xsi:schemaLocation="urn:hl7-org:v3 ../schemas/QUPC_IN043200NO.xsd"> | ||
+ | <!-- Unique identification of this message instance. Root derived from that of the sending application --> | ||
+ | <id root="2.16.578.1.34.1.922.3" extension="93829283673"/> | ||
+ | <creationTime value="20080618105503"/> | ||
+ | <versionCode code="NE2008"/> | ||
+ | <interactionId root="2.16.840.1.113883.1.6" extension="QUPC_IN043200NO"/> | ||
+ | <processingCode code="P"/> | ||
+ | <processingModeCode code="T"/> | ||
+ | <acceptAckCode code="NE"/> | ||
+ | <communicationFunction xsi:type="CommunicationFunction" typeCode="RCV"> | ||
+ | <entity xsi:type="Device" classCode="DEV" determinerCode="INSTANCE"> | ||
+ | <!-- Receiving software application. Helse Vest assigned application identifier --> | ||
+ | <id root="2.16.578.1.34.1" extension="805"/> | ||
+ | </entity> | ||
+ | </communicationFunction> | ||
+ | <communicationFunction xsi:type="CommunicationFunction" typeCode="SND"> | ||
+ | <entity xsi:type="Device" classCode="DEV" determinerCode="INSTANCE"> | ||
+ | <!-- Sending software application. Helse Vest assigned application identifier --> | ||
+ | <id root="2.16.578.1.34.1" extension="922"/> | ||
+ | </entity> | ||
+ | </communicationFunction> | ||
+ | <conveyedAcknowledgement xsi:type="Acknowledgement" typeCode="AA"> | ||
+ | <!-- Affirmative acknowledgement --> | ||
+ | <acknowledges xsi:type="Message"> | ||
+ | <!-- .. related to this original message ID --> | ||
+ | <id root="2.16.578.1.34.1.805.1" extension="080629150002_305"/> | ||
+ | </acknowledges> | ||
+ | </conveyedAcknowledgement> | ||
+ | <controlAct xsi:type="ControlAct" classCode="CACT" moodCode="EVN"> | ||
+ | <participation xsi:type="Participation" typeCode="AUT"> | ||
+ | <!-- Identifies the software application responsible for sending this message --> | ||
+ | <role xsi:type="Role" classCode="ASSIGNED"> | ||
+ | <!-- Sending software application. Helse Vest assigned application identifier --> | ||
+ | <id root="2.16.578.1.34.1" extension="922"/> | ||
+ | </role> | ||
+ | </participation> | ||
+ | <!-- Zero or more encounters are found: this interaction contains zero or more subject/encounterEvents --> | ||
+ | <outboundRelationship xsi:type="ActRelationship" typeCode="SUBJ"> | ||
+ | <target xsi:type="ActHeir" moodCode="EVN" classCode="REG"> | ||
+ | <!-- This registry doesn't support registration IDs --> | ||
+ | <id nullFlavor="UNK"/> | ||
+ | <statusCode code="active"/> | ||
+ | <participation xsi:type="Participation" typeCode="CST"> | ||
+ | <role xsi:type="Role" classCode="ASSIGNED"> | ||
+ | <!-- Organization responsible for the registry, here: Helse Vest --> | ||
+ | <id root="2.16.578.1.34.1000.5" extension="983658725"/> | ||
+ | </role> | ||
+ | </participation> | ||
+ | <outboundRelationship xsi:type="ActRelationship" typeCode="SUBJ"> | ||
+ | <target xsi:type="ActHeir" classCode="ENC" moodCode="EVN"> | ||
+ | <id root="2.16.578.1.34.1.922.1" extension="300807"/> | ||
+ | <code code="IMP" codeSystem="2.16.840.1.113883.5.4"/> | ||
+ | <statusCode code="completed"/> | ||
+ | <effectiveTime> | ||
+ | <low value="20070403"/> | ||
+ | <high value="20070411"/> | ||
+ | </effectiveTime> | ||
+ | <participation xsi:type="Participation" typeCode="SBJ"> | ||
+ | <role xsi:type="Patient" classCode="PAT"> | ||
+ | <id root="2.16.578.1.34.1000.1" extension="24109642356" assigningAuthorityName="F-Number"/> | ||
+ | <statusCode code="active"/> | ||
+ | <player xsi:type="Person" determinerCode="INSTANCE" classCode="PSN"> | ||
+ | <name use="L"> | ||
+ | <given>Jan</given> | ||
+ | <given>Helge</given> | ||
+ | <family>Norekval</family> | ||
+ | </name> | ||
+ | </player> | ||
+ | </role> | ||
+ | </participation> | ||
+ | <participation xsi:type="Participation" typeCode="PRF"> | ||
+ | <role xsi:type="Role" classCode="ASSIGNED"> | ||
+ | <!-- Code to identify the type of unit / specialty --> | ||
+ | <code code="KIR" codeSystem="1.2.999999999999"/> | ||
+ | <!-- Identification (optional) and name (mandatory) of the unit/department --> | ||
+ | <player xsi:type="Organization" classCode="ORG" determinerCode="INSTANCE"> | ||
+ | <!-- RESH identifier of the unit/department. RESH = Register for Enheter i SpesialistHelsetjenesten --> | ||
+ | <id root="2.16.578.1.34.1000.4" extension="5067"/> | ||
+ | <name>Kirurgisk Avdeling </name> | ||
+ | </player> | ||
+ | </role> | ||
+ | </participation> | ||
+ | <outboundRelationship xsi:type="ActRelationship" typeCode="PERT" contextConductionInd="true"> | ||
+ | <target xsi:type="Observation" classCode="OBS" moodCode="EVN"> | ||
+ | <!-- Primary diagnosis --> | ||
+ | <!-- Code to indicate this is an observation of type discharge-diagnosis --> | ||
+ | <code code="DISDX" codeSystem="2.16.840.1.113883.5.4"/> | ||
+ | <!-- Diagnosis code, from the Norwegian version of ICD-10 --> | ||
+ | <!-- Displayname SHOULD be sent by sender of the message. Receiver may use this to display the description to the human reader --> | ||
+ | <value xsi:type="CD" code="I23.9" codeSystem="2.16.578.1.12.4.1.1.7110" displayName="Pulmonary decease"/> | ||
+ | <inboundRelationship xsi:type="ActRelationship" typeCode="PERT"> | ||
+ | <!-- Secondary diagnosis --> | ||
+ | <source xsi:type="Observation" classCode="OBS" moodCode="EVN"> | ||
+ | <!-- Code to indicate this is an observation of type discharge-diagnosis --> | ||
+ | <code code="DISDX" codeSystem="2.16.840.1.113883.5.4"/> | ||
+ | <!-- Diagnosis code, from the Norwegian version of ICD-10 --> | ||
+ | <!-- Displayname SHOULD be sent by sender of the message. Receiver may use this to display the description to the human reader --> | ||
+ | <value xsi:type="CD" code="Q23.7" codeSystem="2.16.578.1.12.4.1.1.7110" displayName="Asthma"/> | ||
+ | </source> | ||
+ | </inboundRelationship> | ||
+ | </target> | ||
+ | </outboundRelationship> | ||
+ | </target> | ||
+ | </outboundRelationship> | ||
+ | </target> | ||
+ | </outboundRelationship> | ||
+ | <queryEvent xsi:type="QueryAck"> | ||
+ | <!-- Unique identification of this query conversation. Copied from the query interaction --> | ||
+ | <queryId root="2.16.578.1.34.1.805.1" extension="080629150002_305"/> | ||
+ | <queryResponseCode code="OK"/> | ||
+ | <resultCurrentQuantity value="1"/> | ||
+ | <resultRemainingQuantity value="0"/> | ||
+ | </queryEvent> | ||
+ | </controlAct> | ||
+ | </content> | ||
+ | </rim-graph> | ||
+ | </PRE> |
Revision as of 14:38, 27 June 2009
The RIM based ITS (or RS XML ITS, a term used by the RIMBAA WG) is an ITS that is based on 'pure RIM semantics', i.e. an ITS that defines an XML syntax which allows for the XML to be processed solely based on its contents (and not on Class Clone names, or knowledge of templates/interactions used).
We currently have the XML ITS R1. It has the following properties:
- element names identify Rim clone classes
- properties that are defaulted in the Rim specific model (CIM) are not represented in the instance
- the order of associations in the instance is fixed for predictability - based on element names
- whether something is play or scoper etc is implicit (in the rim specific model) rather than in the instance
- You need the MIF to convert from the instance to a general RIM graph.
The RIM serialization would have different properties:
- element names identify the RIM back bone associations
- properties that are defaulted in the general rim are not represented in the instance
- Almost all structured attributes (e.g. classCode, moodCode) will be present in all instances
- the order of the associations is irrelevant: only their semantics matter
- player/scoper etc is explicit in the instance
Analysis
Characteristics of instances that conform to this ITS
- The XML element names (related to classNames, not attribute names) only serve to provide a syntax, they carry no semantics, and are not used in determining the semantics of the artefact content.
(Peter Hendler): If it comes true it would make communication between RIM based applications a lot less trouble. As you know, our MIF parsers and our meta classes add a lot of complexity to the reference Java SIG API and if we could just send messages already based on the RIM backbone that would be fantastic. If we wanted we could include the clone class names (optionally) as attributes. We wouldn't need them to process the messages and put them into a database but maybe they'd be nice for readability. Some humans might rather see "PrednisoneAdministration" rather than "ACT", but since they go into the ACT table the processing would be much easier if the message contained the information that a "PrednisoneAdministration" was a kind of ACT and belonged in the ACT table.
The code displayName attribute of an Act could cary the "PrednisonAdministration" string. --Michael 11:13, 17 April 2009 (UTC)
In a pure (backbone) RIM ITS I would like to see elements named Act, ActRelationship, Participation, Role, RoleLink and Entity. We could even make a RIM ITS witch would have the backbone names plus Employee, Observation, etc. --Michael 11:13, 17 April 2009 (UTC)
Transformation between the XML ITS R1 and the newly proposed RS XML ITS (MS-RS cell transition)
- to match the rim object graph to a specific rim model (i.e. an HMD) (which is required to serialise in that form), you must match the elements to the model by running validation in reverse - it is this kind of association because it meets the constraints that this association has. And you need the MIF for that, of course
Example
Below an example of a NE2008 interction serialized according to a (draft version of) a RIM ITS. Note (for example) the use of element names like outboundrelationship, participation and role instead of clone class names.
<?xml version="1.0" encoding="UTF-8"?> <rim-graph xmlns="urn:hl7-org:v3-rim" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" model="QUPC_IN043200NO" version="0226"> <content xsi:type="Message" xsi:schemaLocation="urn:hl7-org:v3 ../schemas/QUPC_IN043200NO.xsd"> <!-- Unique identification of this message instance. Root derived from that of the sending application --> <id root="2.16.578.1.34.1.922.3" extension="93829283673"/> <creationTime value="20080618105503"/> <versionCode code="NE2008"/> <interactionId root="2.16.840.1.113883.1.6" extension="QUPC_IN043200NO"/> <processingCode code="P"/> <processingModeCode code="T"/> <acceptAckCode code="NE"/> <communicationFunction xsi:type="CommunicationFunction" typeCode="RCV"> <entity xsi:type="Device" classCode="DEV" determinerCode="INSTANCE"> <!-- Receiving software application. Helse Vest assigned application identifier --> <id root="2.16.578.1.34.1" extension="805"/> </entity> </communicationFunction> <communicationFunction xsi:type="CommunicationFunction" typeCode="SND"> <entity xsi:type="Device" classCode="DEV" determinerCode="INSTANCE"> <!-- Sending software application. Helse Vest assigned application identifier --> <id root="2.16.578.1.34.1" extension="922"/> </entity> </communicationFunction> <conveyedAcknowledgement xsi:type="Acknowledgement" typeCode="AA"> <!-- Affirmative acknowledgement --> <acknowledges xsi:type="Message"> <!-- .. related to this original message ID --> <id root="2.16.578.1.34.1.805.1" extension="080629150002_305"/> </acknowledges> </conveyedAcknowledgement> <controlAct xsi:type="ControlAct" classCode="CACT" moodCode="EVN"> <participation xsi:type="Participation" typeCode="AUT"> <!-- Identifies the software application responsible for sending this message --> <role xsi:type="Role" classCode="ASSIGNED"> <!-- Sending software application. Helse Vest assigned application identifier --> <id root="2.16.578.1.34.1" extension="922"/> </role> </participation> <!-- Zero or more encounters are found: this interaction contains zero or more subject/encounterEvents --> <outboundRelationship xsi:type="ActRelationship" typeCode="SUBJ"> <target xsi:type="ActHeir" moodCode="EVN" classCode="REG"> <!-- This registry doesn't support registration IDs --> <id nullFlavor="UNK"/> <statusCode code="active"/> <participation xsi:type="Participation" typeCode="CST"> <role xsi:type="Role" classCode="ASSIGNED"> <!-- Organization responsible for the registry, here: Helse Vest --> <id root="2.16.578.1.34.1000.5" extension="983658725"/> </role> </participation> <outboundRelationship xsi:type="ActRelationship" typeCode="SUBJ"> <target xsi:type="ActHeir" classCode="ENC" moodCode="EVN"> <id root="2.16.578.1.34.1.922.1" extension="300807"/> <code code="IMP" codeSystem="2.16.840.1.113883.5.4"/> <statusCode code="completed"/> <effectiveTime> <low value="20070403"/> <high value="20070411"/> </effectiveTime> <participation xsi:type="Participation" typeCode="SBJ"> <role xsi:type="Patient" classCode="PAT"> <id root="2.16.578.1.34.1000.1" extension="24109642356" assigningAuthorityName="F-Number"/> <statusCode code="active"/> <player xsi:type="Person" determinerCode="INSTANCE" classCode="PSN"> <name use="L"> <given>Jan</given> <given>Helge</given> <family>Norekval</family> </name> </player> </role> </participation> <participation xsi:type="Participation" typeCode="PRF"> <role xsi:type="Role" classCode="ASSIGNED"> <!-- Code to identify the type of unit / specialty --> <code code="KIR" codeSystem="1.2.999999999999"/> <!-- Identification (optional) and name (mandatory) of the unit/department --> <player xsi:type="Organization" classCode="ORG" determinerCode="INSTANCE"> <!-- RESH identifier of the unit/department. RESH = Register for Enheter i SpesialistHelsetjenesten --> <id root="2.16.578.1.34.1000.4" extension="5067"/> <name>Kirurgisk Avdeling </name> </player> </role> </participation> <outboundRelationship xsi:type="ActRelationship" typeCode="PERT" contextConductionInd="true"> <target xsi:type="Observation" classCode="OBS" moodCode="EVN"> <!-- Primary diagnosis --> <!-- Code to indicate this is an observation of type discharge-diagnosis --> <code code="DISDX" codeSystem="2.16.840.1.113883.5.4"/> <!-- Diagnosis code, from the Norwegian version of ICD-10 --> <!-- Displayname SHOULD be sent by sender of the message. Receiver may use this to display the description to the human reader --> <value xsi:type="CD" code="I23.9" codeSystem="2.16.578.1.12.4.1.1.7110" displayName="Pulmonary decease"/> <inboundRelationship xsi:type="ActRelationship" typeCode="PERT"> <!-- Secondary diagnosis --> <source xsi:type="Observation" classCode="OBS" moodCode="EVN"> <!-- Code to indicate this is an observation of type discharge-diagnosis --> <code code="DISDX" codeSystem="2.16.840.1.113883.5.4"/> <!-- Diagnosis code, from the Norwegian version of ICD-10 --> <!-- Displayname SHOULD be sent by sender of the message. Receiver may use this to display the description to the human reader --> <value xsi:type="CD" code="Q23.7" codeSystem="2.16.578.1.12.4.1.1.7110" displayName="Asthma"/> </source> </inboundRelationship> </target> </outboundRelationship> </target> </outboundRelationship> </target> </outboundRelationship> <queryEvent xsi:type="QueryAck"> <!-- Unique identification of this query conversation. Copied from the query interaction --> <queryId root="2.16.578.1.34.1.805.1" extension="080629150002_305"/> <queryResponseCode code="OK"/> <resultCurrentQuantity value="1"/> <resultRemainingQuantity value="0"/> </queryEvent> </controlAct> </content> </rim-graph>