The Inbound Message Processor (IMP) lets HDR receive inbound HL7 version 3.0 messages, compliant with HDR messaging schema, from sending systems and persist information to the HDR repository.
IMP provides a processMessage API to persist a HL7 V3 message, which returns a Result object containing the acknowledgement. IMP provides an invalidateCache API that will invalidate the configuration cache.
To persist a message, user must configure sender, sender interaction, and side effect for the message and create the receiver of the message as an organization in HDR. You can use Messaging Configuration Service or IMP Configuration Administration Service to do IMP configuration.
IMP extracts Sender, Receiver, and Interaction Id available in the message, and picks up the associated side effect configuration. Based on the side effect configuration, IMP sets the Reference Modifier on RIM Objects of the message. Based on which, RIM objects available in the message is created, updated, overlaid or ignored. There are certain rules that influence the value of Reference Modifier to be set on RIM Objects, which is described in the section Side Effect Configuration Rules.
After persisting the message, IMP returns a successful acknowledgment (AA), if the message is persisted successfully. IMP rejects a message with an Application Error (AE) typecode, if the content or format of the message is incorrect (such as identified object validation failed, mandatory code attribute missing). IMP rejects a message with an Application Reject (AR) typecode, if message processing fails for any reason unrelated to the content or format of the message (such as system down, internal error, and so on).
HDR includes messaging schemas for all supported message types. Messaging schema includes the following for each message type:
Schema (XSD Files) for the Payload of the Message Type
Composite Message Schema (XSD File) for each Interaction ID of the Message Type
Model Interchange Files (MIF files) for the Payload of the Message Type
In addition, messaging schema contains a common Vocabulary schema and data type schema for all message types.
The Composite Message Schema (CMS) has three parts: Message Wrapper, Control Act Wrapper, and Payload Reference. If there are three Interaction IDs seeded for the same Payload, there will be three composite message schemas; one for each Interaction ID and all of them will refer to the same Payload.
For samples, refer to the schemas for Lab Result available at the following locations:
Payload Schema for a Message Type (Lab Result)
<hdr_domain_home>/config/hdr/message/defs/rim214101/schemas/POLB_MT004000HT01.xsd
Composite Message Schema for Interaction Ids POLB_IN004003, POLB_IN004004 (Lab Result)
<hdr_domain_home>/config/hdr/message/defs/rim214101/schemas/POLB_IN004003.xsd
<hdr_domain_home>/config/hdr/message/defs/rim214101/schemas/POLB_IN004004.xsd
Common Data Type Schemas
<hdr_domain_home>/config/hdr/message/defs/rim214101/coreschemas/datatypes.xsd
<hdr_domain_home>/config/hdr/message/defs/rim214101/coreschemas/datatypes-base.xsd
Common Vocabulary Schemas
<hdr_domain_home>/config/hdr/message/defs/rim214101/coreschemas/datatypes.xsd
<hdr_domain_home>/config/hdr/message/defs/rim214101/coreschemas/datatypes-base.xsd
For more information on message types supported, refer to the Oracle Healthcare Data Repository HL7 Version 3 Conformance Specification.
Acknowledgement Processing
Upon receipt of a message from the sending application (the source of the message), IMP synchronously processes the message into HDR, and returns an Application Acknowledgment (AA), an Application Error (AE), or an Application Reject (AR).
Application Acknowledgement (AA): An AA response indicates that the message was successfully processed and persisted in HDR.
Application Error (AE): An AE response indicates an error reported by HDR, including error information in message content or format (error type code, error detail code, free text). It is the responsibility of the interface engine to determine if the acknowledgement message is returned to the sending system or if the message should be resent to HDR or skipped (abandoning the message). IMP does not support sequence number protocol--the interface engine is responsible for assuring that messages are delivered in order.
Application Reject (AR): An AR response indicates that the message is rejected, for reasons unrelated to its content or format (system or network down, network transmission errors). For most such problems, the receiving system may be able to accept the message at a later time. The sending system or interface engine must decide on an application-specific basis whether the message should be sent again. Ultimately, the AR is resolved to either an AA (upon successful retransmission) or an AE--which thence generates a call to error processing.
The acknowledgement message contains the following XML segments:
Table 10-1 XML Segments in an Acknowledgement Message
Components |
XPATH |
Sample values |
Acknowledgement Type |
MCCI_MT002300HT01.Message/ acknowledgement/typeCode/@code |
<typeCode code="AA"/> , <typeCode code="AE"/>, <typeCode code="AR"/> |
Acknowledgement Detail Code |
MCCI_MT002300HT01.Message/acknowledgement/ acknowledgementDetail/ code/@code |
<code code="NS250" codeSystemName="AcknowledgementDetailCode"/> |
Acknowledgement Error Text |
MCCI_MT002300HT01.Message/acknowledgement/ acknowledgementDetail/ text |
<text mediaType="text/plain" encoding="TXT"> Application: CTB, Message Name: CTB_MS_INVALID_PROCESS_MD_CD. Tokens: PROCESSING_MODE_CODE = T1; </text> |
Acknowledgement Error Location |
MCCI_MT002300HT01.Message/acknowledgement/ acknowledgementDetail/location |
<location> CTB_MS_IMP_EXCEPTION_LOCATION2 :Error occurred while processing XML data located at line 6, column 30. XPATH: /PRPA_IN400000[1] COMPLEX_TYPE: MCCI_MT000100HT04.Message</location> |
HDR Error Code |
MCCI_MT002300HT01.Message/acknowledgement/ acknowledgementDetail/text |
CTB_MS_INVALID_PROCESS_MD_CD |
Responder Information |
MCCI_MT002300HT01.Message/sender/device/id |
<sender type="CommunicationFunction"> <typeCode code="SND"/> <device type="Device" classCode="DEV" determinerCode="INSTANCE"> <id root="9.989898.5.100" extension="ORG1000"/> <asAgent type="RoleHeir" classCode="AGNT"> <representedOrganization type="Organization" classCode="ORG" determinerCode="INSTANCE"> <id root="9.989898.5.100" extension="ORG1000"/> </representedOrganization> </asAgent> </device> </sender> |
Before processing a message, the message type must be configured for the sender. IMP extracts Sender, Receiver, and Interaction Id available in the message, and picks up the associated side-effect configuration. If Interaction ID is not configured for the Sender and Receiver, IMP rejects the message.
Based on the side-effect configuration, IMP sets the reference modifier on RIM objects available in the message. If a particular RIM object is not configured for side-effect, IMP defaults the value of reference modifier for the RIM object to MUST_EXIST. There are certain side-effect rules in IMP that influences the value of reference modifier of a RIM Object.
In addition to being compliant with messaging schema, IMP imposes certain validations on messages before processing the message. Major validations that affect messages are described in this section.
Identified Object Processing
All RIM objects containing ids are identified objects. If a message instance contains repeating objects with same ids, IMP merges the information of repeating objects and persists union of data from different instances into HDR Repository. This is called Identified Object Processing. If the repeating objects in the message contain inconsistent information, IMP rejects the message. For example, if the age of a particular person (having same II) has different values at different segments of the message, IMP rejects the message. For information on complete set of rules to merge information of repeating objects, refer to the Oracle Healthcare Data Repository Programmer's Guide and Oracle Healthcare Data Repository Conformance Specification Guide.
Media Type and MIME Type Validation for CDA Messages
For CDA Message Types, IMP supports only certain Media Type and MIME Type. Refer to the CDA Message Type section of the Oracle Healthcare Data Repository Message Conformance Specification V6.1.
Master Catalog Validation
Master Catalog entries must exist in HDR Repository for all Acts, Entities, and Roles submitted to HDR for persistence.
Vocabulary Validation
Code System Names used in the message must be loaded into ETS and the Codes used should be part of Coding Scheme.
State Transition Validation
All Acts, Entities, and Roles submitted to HDR for persistence is subjected to Generic State Transition validation. The Focal object in the message is subjected to focal class state transition.
Immutable Attributes Validation
An update message cannot modify values of structural attributes and code (example, act.ClassCode) of an already persisted object.
RIM Service Validation
Every message is persisted as a control act graph in HDR Repository and subjected to the validations done by RIM Persistence Service.
To process a message, IMP needs the following RMIM schematic information about the message elements:
Name of RIM Foundation Class of the RIM Object available in the message element.
Type of RIM Association.
Constrained RIM Data Type of the attribute.
If the association is a choice.
The RMIM schematic information is not available in the schemas for message types, but present in the MIF files for the same message type. The information is extracted from the MIF file and loaded into the database after installing HDR. This information is known as Messaging Metadata.
To load Messaging Metadata, use ConcurrentProgService.loadMessagingMetadata() API.
Profile Options and System Properties
Use the CTB: Store Incoming Message profile option to indicate whether the incoming message has to be stored or not. The valid values are Y and N. If the value is Y, the incoming message is stored in the submission unit table. If the value is N, the incoming message is not stored.
The following system properties impacts behavior of the IMP engine:
Table 10-2 IMP System Properties
Property Name |
Valid Values |
Description |
IgnoreUnrecognizedElements |
Y or N |
With value 'N' throws an exception when an unrecognized RIM attribute is encountered. With 'Y', just skips it. If N, IMP throws an exception when an unrecognized RIM attribute is encounters. If Y, IMP skips the validation. The default value is N. |
IMP_NONDESTRUCTIVE_MODE |
Y or N |
If Y, IMP rollbacks all transactions and does not update the audit log. The default value is N. |
IMP_BUNDLED_MODE |
Y or N |
If Y, IMP collects all non-runtime exceptions, and continues processing. If N, each exception aborts processing immediately. The default value is N. |
See Also
Oracle Healthcare Data Repository Javadoc
Oracle Healthcare Data Repository Conformance Specification
Procedures:
The following chart provides an overview of the implementation process for Inbound Messaging Services:
To implement Inbound Messaging Services, refer to the following procedure table:
Table 10-3 HDR Implementation Procedures: Inbound Messaging Services
Task-Step |
Description |
Optional? |
Interface |
9-1 |
Yes |
API |
|
9-2 |
No |
API |
|
9-3 |
Yes |
API |
IMP extracts Interaction Id and Trigger Event Code from the incoming message and checks whether it is configured or not. The following table lists the location of the parameters in the message
Table 10-4 Location of the Parameters in the Message
Parameter |
XPath |
Interaction Id |
Top Level Element in the message. Example, PRPA_IN400000 |
Trigger Event Code |
PRPA_IN400000/controlActProcess/code/@code |
Interaction Ids for all supported message types are seeded. Refer to the Oracle Healthcare Data Repository HL7 Version 3 Conformance Specification for the list of seeded interaction ids. You can also configure new Interactions Id for supported messages. Use the Interactions window to configure new Interaction Id. For more information on the Interactions window, refer to Oracle Healthcare Data Repository User Interface Guide.
When you configure a new Interaction Id, an Interaction schema is generated by the Healthcare Data Repository User Interface and stored at the following location with the name of {InteractionId}.xsd::
<hdr_domain_home>/config/hdr/message/defs/customSchema/newMessageType/interaction.
IMP extracts the following information (in the table) from the message and validates them for the configuration:
Table 10-5 Information Extracted and Validated by IMP
Parameter |
XPath |
Interaction Id |
Top Level Element in the message. Example, PRPA_IN400000 |
Sender Root |
PRPA_IN400000/sender/device/ id/@root |
Sender Extension |
PRPA_IN400000/sender/device/id/@extension |
Receiver Root |
PRPA_IN400000/receiver/device/asAgent/representedOrganization /id/@root |
Receiver Extension |
PRPA_IN400000/receiver/device/as Agent/representedOrganization/id/@extension |
Trigger Event Code |
PRPA_IN400000/controlActProcess/code/@code |
If the Sender Root and Extension and Receiver Root and Extension is not configured, IMP rejects the message. This configuration thus controls a valid sender and HDR enterprises authorized to send messages. This is called the Sender Configuration.
Important: You must only use Organization's external II while creating sender configuration. You must not use any of the Internal IIs that are automatically generated in HDR.
Upon validation of the Sender Configuration, IMP uses its configuration to determine if the Interaction Id is valid for the Sender Configuration. If it is not configured for that Sender Configuration, IMP rejects the message. This configuration thus controls which types of Interaction Id a sender is permitted to send to a receiver. This is called the Sender Interaction Configuration.
Upon validation of the Sender Configuration and Sender Interaction Configuration combination, IMP processes the message payload. The focal object is created or updated in the HDR Repository. However, for non-focal objects, IMP inspects its side effect configuration to determine its behavior. You can configure IMP to let each non-focal object type create or not create the object if it is not present in the repository, and to update or overlay or not update or overlay the object if it is present in the repository. This configuration of side effects is called the Side Effect Configuration.
Use the IMPConfigAdminIntrService to configure sender and side effects.
See Also
Oracle Healthcare Data Repository HL7 Version 3 Conformance Specification for a list of side effect configuration records required for each message type.
Reference
Oracle Healthcare Data Repository Javadoc
Oracle Healthcare Data Repository HL7 Version 3 Conformance Specification
The following table lists the principal IMP service and methods:
Table 10-6 Service and Methods: IMP
Level |
Detail |
Package |
oracle.hsgbu.hdr.message.improcessor |
Class |
IMPService |
Methods |
|
Class |
RawIMPService |
Methods |
|
Class |
Result |
Methods |
|
Login
This is an API-based implementation procedure.
Navigation
This is an API-based implementation procedure.
Steps
Use the Service Locator to access the IMP Service.
Note:
RawIMPService
is implemented as a container-managed transactions (CMT) bean, and does not create SubmissionUnit
. Use RawIMPService
if you want to use the Java Transaction API (JTA) support of IMP.
Use the processMessage method with an HDR-compliant message (see following Note) as a parameter to invoke message processing services; a Result object is returned.
Use the following methods to inspect the result of processing the message:
getResponseXML
getStatus
Note:
IMP supports XML formatted inbound messages that conform to the HL7 version 3 messaging standard. The messages must conform to the messaging schema for the message types supported in HDR. The schemas for all supported message type is available at the following location:
<hdr_domain_home>/config/hdr/messge/defs/rim214101/schemas
The list of supported message types is provided in Oracle Healthcare Data Repository HL7 Version 3 Conformance Specification. Using Messaging Tool Kit, additional message types can be supported. For more information, refer to Oracle Healthcare Data Repository Messaging Tool Kit User Guide.
See Also
Oracle Healthcare Data Repository HL7 Version 3 Conformance Specification, for information about message types supported by IMP.
See Also:
Oracle Healthcare Data Repository HL7 Version 3 Messaging Conformance Specification describes the HL7 message types supported by the current HDR release
Note:
IMP provides Java Transaction API (JTA) support through RawIMPService. RawIMPService provides the same functionality as IMPService except that RawIMPService is implemented as a container-managed transactions (CMT) bean, and does not create SubmissionUnit. Use RawIMPService if you want to use the Java Transaction API (JTA) support of IMP.The Interaction ID based IMP Configuration Administration Service provides functions to create, remove, and find Sender Configurations. HDR Configuration Service also provides same functionality. To update a Sender Configuration, the client application removes it and creates the new Sender Configuration, including all of its child objects (sender interaction configuration and sender side effect configuration). HDR APIs support the following:
Moving configuration data from one environment to another
Writing loader applications
This section contains the following topics:
Note:
You can use Messaging Configuration Service for updates.
Attribute Name | Field Type | Length | Mandatory | Description |
Sender Id Root | String |
240 | Yes | Root part of the OID of the sending device |
Sender Id Extension | String |
240 | Yes | Extension part of the OID of the sending device |
Receiver Id Root | String |
240 | Yes | Root part of the OID of a valid organization registered in the system |
Receiver Id Extension | String |
240 | No | Extension part of the OID of a valid organization registered in the system |
Sender Interaction Configuration | SenderInteractionConfiguration[] |
- | No | An array of Sender Interaction Configurations for this Sender Configuration |
Attribute Name | Field Type | Length | Mandatory | Description |
Interaction Id | String |
80 | Yes | Valid Interaction Id for this Sender Interaction Configuration |
Sender Side Effect Configuration | SenderSideEffectConfiguration[] |
- | No | An array, of Sender Side Effect Configurations, that defines permissions (create if/create or overlay/update/must exist/create or update) on referenced objects |
Attribute Name | Field Type | Length | Mandatory | Description |
Master Catalog Id | String |
- | Yes | The Master Catalog ID of the RIM object for which the side effect is configured. You can retrieve the Master Catalog details from the MasterCatalogService |
Object Reference Modifier Code | String |
- | No | Object reference modifier code value: CREATE_IF, OVERLAY, CREATE_OR_OVERLAY, MUST_EXIST, UPDATE, CREATE_OR_UPDATE |
Player Reference Modifier Code | String |
- | No | Player reference modifier code value: CREATE_IF, OVERLAY, CREATE_OR_OVERLAY, MUST_EXIST, UPDATE, CREATE_OR_UPDATE |
Scoper Reference Modifier Code | String |
- | No | Scoper reference modifier code value: CREATE_IF, OVERLAY, CREATE_OR_OVERLAY, MUST_EXIST, UPDATE, CREATE_OR_UPDATE |
Sender Configuration is the top-level object, with Sender Interaction Configuration object as its direct child. Sender Interaction Configuration object in turn has Sender Side Effect Configuration object as its child. The client application must create the complete hierarchy before invoking the create functionality. Before removing a Sender Configuration, the client application must invoke the finder API to get the handle associated with the target configuration item to delete.
SenderConfigSearchConfig
is a criteria object passed to the finder API as a parameter. It provides methods to set search attributes used for retrieving the Sender Configuration and associated Sender Interaction Configurations and Sender Side Effect Configurations, based on the following parameters:
Sender Id Root
Sender Id Extension
Receiver Id Root
Receiver Id Extension
Because Receiver Id
Extension can have a null value, in order to support a query where in the client application searches specifically for items with Receiver Id Extension as null value, a boolean flag ReceiverIdExtensionIsNull
can be set to True. If ReceiverIdExtensionIsNull
is not set or set to False, the criteria matches the given root and any extension.
The IMP Sender Interaction Configuration Administration Service lets the client application create, remove, and find Sender Configurations. The code samples that follow illustrate each of these use cases:
Note:
SenderConfigFactory class is not available from 8.0.This code sample creates a new sender:
Example 10-1 Sample Code to Create Sender Configuration Using the newXXX Functions Returning Empty Objects
public SenderConfiguration createSenderConfiguration() { SenderConfiguration senderConfig = new SenderConfigurationImpl(); senderConfig.setSenderIdRoot(SND_ROOT); senderConfig.setSenderIdExtension(SND_EXTN); senderConfig.setReceiverIdRoot(RCV_ROOT); senderConfig.setReceiverIdExtension(RCV_EXTN); SenderInteractionConfiguration senderIntrConfig = new SenderInteractionConfigurationImpl(); senderIntrConfig.setInteractionId(INTERACTION_ID[0]); SenderSideEffectConfiguration sseConfig = new SenderSideEffectConfigurationImpl(); sseConfig.setObjectRefModifierCode(SenderSideEffectConfiguration.CREATE_OR_OVERLAY); sseConfig.setPlayerRefModifierCode(SenderSideEffectConfiguration.CREATE_OR_OVERLAY); sseConfig.setMasterCatalogId(MC_IDS[0]); SenderSideEffectConfiguration[] sseConfigs = { sseConfig }; senderIntrConfig.setSenderSideEffectConfiguration(sseConfigs); SenderInteractionConfiguration[] senderIntrConfigs = { senderIntrConfig }; senderConfig.setSenderInteractionConfigurations(senderIntrConfigs); SenderConfiguration createReturn = configService.createSenderConfiguration(senderConfig); return createReturn;
It is not mandatory to set the Receiver Extension on the Sender Configuration because this attribute is nullable. If a reference modifier code is not set, the value, the values defaults to null.
This code sample lets the client application retrieve a Sender Configuration using the Sender Configuration Search Criteria:
Example 10-2 Sample Code to Find Sender Configuration Using the newXXX Functions Returning Empty Search Criteria
public SenderConfiguration[] findSenderConfiguration() { SenderConfigSearchCriteria criteria = new SenderConfigSearchCriteriaImpl(); criteria.setReceiverIdRoot(RCV_ROOT); criteria.setReceiverIdExtension(RCV_EXTN); criteria.setSenderIdRoot(SND_ROOT); criteria.setSenderIdExtension(SND_EXTN); SenderConfiguration[] queriedSenderConfigs = configService.findSenderConfiguration(criteria); return queriedSenderConfigs;
Because all Search Criteria setters are optional, all of the records are returned if you do not set any criteria. The Receiver Extension is the only attribute that is nullable, and is thus treated differentially here. You must either set the Receiver Id
Extension to a particular non-null value or set the flag using the function setReceiverIdExtensionIsNull(boolean)
. Setting both results in a query that ignores the value set by setReceiverIdExtension(String).
The boolean flag thus takes precedence over setting of the ReceiverId
Extension to a particular value. Failing to set of them either lets the user search for all records-records with both null value and non-null value Receiver Id
Extension attributes.
This code sample permits the deletion of a particular Sender Configuration and all its child elements. The client application is expected to invoke the find function to get a handle on the Sender Configuration it wants to delete.
Example 10-3 Sample Code to delete Sender Configuration
public void removeSenderConfiguration() { SenderConfigSearchCriteria criteria = new SenderConfigSearchCriteriaImpl(); criteria.setReceiverIdExtension(RCV_EXTN); criteria.setSenderIdRoot(SND_ROOT); criteria.setSenderIdExtension(SND_EXTN); criteria.setReceiverIdExtensionIsNull(false); (RCV_ROOT, RCV_EXTN, SND_ROOT,SND_EXTN, false); criteria.setReceiverIdRoot(RCV_ROOT); SenderConfiguration[] senderConfigs = configService.findSenderConfiguration(criteria); if (senderConfigs != null && senderConfigs.length > 0) { for (int i = 0; i < senderConfigs.length; i++) { configService.removeSenderConfiguration(senderConfigs[i]); } } }
Examples: This section contains the following examples:
Example 10-4 Persist a Sample Message
Perform the following steps to persist a sample encounter message:
Create the Receiver Organization (root="9.989898.5.100" extension = "ORG1000"), using RIM Service.
Load sender and side effect configuration for the message using Bulk Load Service.
Execute the program to persist the message. On successful persistence, IMP returns an acknowledgment.
Following are the side effect processing rules enforced by IMP:Also, there are additional rules applied by RIM Services.
RIM objects without IDs are always created.
If side effect is not configured for a RIM Object, IMP defaults the reference modifier to MUST_EXIST
.
For Focal Objects, IMP overrides any side effect configuration with reference modifier to CREATE_OR_OVERLAY
.
If Focal Object is a role, player and scoper of the role are processed as per the side effect configuration for these entities, except Person and Unmerge messages. IMP overrides the configuration for player and scoper attached to the Focal Role of Person and Unmerge messages, with CREATE_OR_UPDATE
.
All side effect processing follows the traversal path through the message model. This means that side effect processing is disabled for objects downstream from an object that has been configured as MUST EXIST
.
If a backward/inbound participation to a role is referenced, the act that directly participates with that participation is processed as if CREATE_OR_UPDATE
modifier is set on the act.
Owned roles are processed following the side effect processing of the Owning Entity. If the Owning Entity is configured for the side effect reference modifier as:
CREATE_IF
, and if it exists, the Owned Role and the associated entity are ignored.
MUST_EXIST
, the Owned Role and the associated entity are ignored.
For other configurations, the Owned Role is always created or overlaid.
While processing Identified Objects, the merged object is assigned with the side effect of the object with the most restrictive side effect configuration.
Example 10-5 A Sample Acknowledgement Message
Acknowledgement message returned by IMP is compliant with HL7 V3 standard. The message contains the following elements:
Receiver (same as respond to in the processed message).
Sender (same as receiver in the processed message).
Acknowledgement typecode.
AA - Message processed successfully.
AE - Message processing failed.
AR - Failed to process (reject) the message for reasons unrelated to its content or format (system down, internal error, and so on).
Error message, if message processing fails.
acknowledgementDetail. The element may be repeated couple of times, if there are multiple errors in the message. This element contains the following attributes:
Code: corresponding HL acknowledgement detail code.
Location: contains XPATH, XSD Complex Type Name, and line number of the message element responsible for the error.
Text: contains error message. The error text message is represented in the following format: {ERROR CODE NAME}: {ERROR MESSAGE TEXT}.
The following is a complete xml message, as it appears in an acknowledgment message:
<MCCI_MT002300HT01.Message xmlns="urn:hl7-org:v3" type="Message" xmlns:htb="http://xmlns.oracle.com/apps/ctb/messaging"> <id root="Messsage Id root value" extension="Message Id extension value"/> <creationTime value="Acknowledgement creation time"/> <responseModeCode code="D"/> <interactionId root="Interaction Id root value" extension="Interaction Id extension value"/> <processingMode code="P"/> <processingModeCode code="T"/> <acceptAckCode code="NE"/> <acknowledgement type="Acknowledgement"> <typeCode code="Type Code (AA or AE)"/> <!--Use <acknowledgementDetail> only for typecode = AE, skipped for typecode = AA --> <acknowledgementDetail type="AcknowledgementDetail"> <typeCode code="E"/> <code code="Error Code" codeSystemName="AcknowledgementDetailCode"/> <text mediaType="text/plain" encoding="TXT">Error Text</text> <location>Error location</location> </acknowledgementDetail> <targetMessage type="Message"> <id root="Inbound Wrapper Message Id root value" extension="Inbound Wrapper Message Id extension value"/> </targetMessage> </acknowledgement> <receiver type="CommunicationFunction"> <typeCode code="RCV"/> <device type="Device" classCode="DEV" determinerCode="INSTANCE"> <id root="Inbound Wrapper Respond To Application Id root value" extension="Inbound Wrapper Respond To Application Id extension value"/> <asAgent type="RoleHeir" classCode="AGNT"> <representedOrganization type="Organization" classCode="ORG" determinerCode="INSTANCE"> <id root="Inbound Wrapper Respond To Enterprise Id root value" extension="Inbound Wrapper Respond To Enterprise Id extension value"/> </representedOrganization> </asAgent> </device> </receiver> <sender type="CommunicationFunction"> <typeCode code="SND"/> <device type="Device" classCode="DEV" determinerCode="INSTANCE"> <id root="Inbound Wrapper Target Enterprise Id root value" extension="Inbound Wrapper Target Enterprise Id extension value"/> <asAgent type="RoleHeir" classCode="AGNT"> <representedOrganization type="Organization" classCode="ORG" determinerCode="INSTANCE"> <id root="Inbound Wrapper Receiver Organization Id root value" extension="Inbound Wrapper Receiver Organazation Id extension value"/> </representedOrganization> </asAgent> </device> </sender> </MCCI_MT002300HT01.Message>
The HDR Message Submission Unit defines a structure that contains messages processed by OMP or messages received and processed by IMP. The Submission Unit is used to audit information that is related to the processing of an xml message by IMP or OMP. Every SubmissionUnit is uniquely identified by the Instance Identifier message attribute.
This package consists of two interfaces: SubmissionUnit and SubmissionUnitService. The SubmissionUnitService interface defines the mechanism for finding and updating a persisted submission unit. The SubmissionUnit interface provides methods for accessing and updating the attributes of the SubmissionUnit.
See the following section for more information about Message Submission Unit interfaces:
This package includes two interfaces [SubmissionUnit, SubmissionUnitService] that can be used to audit the information related to the processing of an XML message by IMP or OMP. These interfaces are described in the following sections:
Task:
The SubmissionUnit interface defines a structure t'hat contains the messages processed by IMP or OMP. It contains get methods that can be used to track both inbound and outbound message processing.
The IMPService.processMessage method creates and updates the SubmissionUnit with the message id, acknowledgement typecode, acknowledgement message text, acknowledgement date, send date, sender id, receiver id, responder id, control act id, control act author id, original message, trigger event code, name of the application that submitted the SubmissionUnit and other related attributes. The processMessage method updates SubmittedByAppName to HTBIMP.
You can use SubmissionUnitService find methods to find a SubmissionUnit for a particular submission unit identifier or control act identifier.
The SubmissionUnitService interface defines the methods for finding and updating a persisted submission unit. It contains the following finder methods to find persisted SubmissionUnits:
Submission Unit Service Interface Method
Method | Description |
findSubmissionUnitByControlAct(II controlActId) |
Returns a SubmissionUnit object with the specified control act identifier; throws ETSException |
findSubmissionUnitById(java.lang.String submissionUnitId) |
returns a SubmissionUnit object with the specified submission unit id; throws ETSException |
findSubmissionUnitByMessage(II messageId) |
Returns a SubmissionUnit object with the specified submission unit id; throws ETSException |
updateSubmissionUnit(SubmissionUnit submissionUnit) |
Updates SubmissionUnit; throws ETSException |
createSubmissionUnit(SubmissionUnit submissionUnit) |
Persists SubmissionUnit; throws ETSException |
Example 10-6 Find Submission Unit: Check and Resend
Find the submission unit and check if the message generated successfully; if failed, resend the modified payload back to the receiver:
public void resendMessage(String submissionUnitId, II receiverId, II messageId) throws CustomerApplicationException { try { // Find SubmissionUnit for particular submission unit id SubmissionUnit subUnit = mSubmissionUnitService.findSubmissionUnitById(submissionUnitId); String ackTypeCode = subUnit.getAckTypeCode(); // If submission unit acknowledgement type code is AE, modify original message payload and send it back. if ("AE".equals(ackTypeCode)) { // Get original message String originalMessageText = subUnit.getOriginalMessageText(); // Modify original message String payload = modifyPayload(originalMessageText); // Resend the message String subId = mOMPService.resendMessage(payload, receiverId, messageId); } } catch (ETSException ETSException) { throw new CustomerApplicationException(ETSException.getMessage()); } } public String modifyPayload(String originalMessageText) { ... ... return payload; }
RIM Services raise workflow business events to which applications can subscribe. You can write subscription classes to listen to such events. This provides a loose coupling with the RIM Service that lets you integrate or disintegrate unique functionality by subscribing or unsubscribing to business events.
With this hook, you can code a Subscription Class subscribed to a business event; you are expected to include custom functionality in this class. The following sequence figure 10.4.1 illustrates the interaction between an application persisting data and a custom Subscription class:
Figure 10-2
Figure 10-3 Interaction between App Persisting Data and Custom Subscription Class
The following sections describe the RIM Service Event and Subscription, and include a Subscription Code Example:
The RIM Service raises event oracle.hsgbu.hdr.hl7.persist.event.ControlActSubmissionPost on submit. It passes trigger event and control act identifiers of the persisted data to the event in key-value pairs:
Keys
Key | Description |
TRG_EVNT | Trigger event of persisted message |
CONTROL_ACT_ID | Control act identifier root of persisted message |
CONTROL_ACT_EXT | Control act identifier extension of persisted message. |
Example 10-7 Event and Subscription
When RIM Service raises the event oracle.hsgbu.hdr.hl7.persist.event.ControlActSubmissionPost, workflow calls the onBusinessEvent method of the customer subscription class. All of the forgoing parameters are bundled in the BusinessEvent object and passed to the subscription class. The Subscription class can read those parameters in its onBusinessEvent method as illustrated in the following example:
public void onBusinessEvent(Subscription eo, BusinessEvent event, WorkflowContext wfCxt) throws BusinessEventException { try { String TriggerEvent = event.getStringProperty("TRG_EVNT"); String ControlActId_Root = event.getStringProperty("CONTROL_ACT_ID"); String ControlActId_Extension = event.getStringProperty("CONTROL_ACT_EXT"); ... } catch (Exception e) { e.printStackTrace(); } }
The RIM Service receives an HL7 message, persists and resends the message to all organizations registered for that trigger event.
The functionality to resend the message to all organizations registered for the trigger event can be implemented in a subscription class to be executed when the RIM Service persists that message.
Example 10-8 Subscription Code Example
package oracle.hsgbu.hdr.sample.scenario; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.io.StringWriter; import java.util.Properties; import oracle.hsgbu.hdr.fwk.base.common.ETSException; import oracle.hsgbu.hdr.fwk.serviceLocator.common.ServiceLocator; import oracle.hsgbu.hdr.hl7.domain.NullFlavor; import oracle.hsgbu.hdr.hl7.factories.DataTypeFactory; import oracle.hsgbu.hdr.hl7.types.II; import oracle.hsgbu.hdr.hl7.types.ST; import oracle.hsgbu.hdr.hl7.types.UID; import oracle.hsgbu.hdr.message.omprocessor.ControlActRequest; import oracle.hsgbu.hdr.message.omprocessor.OMPHelper; import oracle.hsgbu.hdr.message.omprocessor.OMPService; import oracle.hsgbu.hdr.security.Responsibility; import oracle.hsgbu.hdr.security.SessionContext; import oracle.hsgbu.hdr.security.SessionService; import oracle.apps.fnd.wf.bes.BusinessEvent; import oracle.apps.fnd.wf.bes.BusinessEventException; import oracle.apps.fnd.wf.bes.SubscriptionInterface; import oracle.apps.fnd.wf.bes.server.Subscription; import oracle.apps.fnd.wf.common.WorkflowContext; public class WorkflowListenerSubscription implements SubscriptionInterface { protected ServiceLocator mServiceLocator = null; public void onBusinessEvent(Subscription eo, BusinessEvent event, WorkflowContext wfCxt) throws BusinessEventException { try { // Get OMPService OMPService mOMPService = getServiceLocator().getOMPService(); // Read parameres passed by RIM Service persistence. String triggerEvent = event.getStringProperty("TRG_EVNT"); String controlActId_Root = event.getStringProperty("CONTROL_ACT_ID"); String controlActId_Ext = event.getStringProperty("CONTROL_ACT_EXT"); DataTypeFactory mDataTypeFactory = DataTypeFactory.getInstance(getServiceLocator()); UID uidVal = mDataTypeFactory.newUID(controlActId_Root); ST extVal = mDataTypeFactory.newST(controlActId_Ext); II controlActId = mDataTypeFactory.newII(uidVal, extVal, mDataTypeFactory.nullBL(NullFlavor.NI)); // Create ControlActRequest OMPHelper ompHelper = new OMPHelper(); ControlActRequest ompCACTRequest = ompHelper.newControlActRequest(); ompCACTRequest.setControlActId(controlActId); ompCACTRequest.setTriggerEvent(triggerEvent); // Generate message mOMPService.generateMessage(ompCACTRequest);r } catch (Exception e) { throw new BusinessEventException(e.getMessage()); } } protected ServiceLocator getServiceLocator() throws ETSException,IOException { if (mServiceLocator != null) { return mServiceLocator; } ClassLoader loader = Thread.currentThread().getContextClassLoader(); Properties props = new Properties(); props.load(loader.getResourceAsStream("jndi.properties")); //Specify Client mode: Local or Remote props.setProperty(ServiceLocator.CLIENT_MODE, ServiceLocator.REMOTE); ServiceLocator mServiceLocator = ServiceLocator.getInstance(props); mServiceLocator.login("sysadmin","sysadmin"); return mServiceLocator; } }
See Also:
Oracle Workflow Administrator's Guide
Oracle Workflow API Reference
Oracle Workflow Developer's Guide
Oracle Workflow User's Guide
Oracle Healthcare Data Repository (HDR) is a healthcare application development platform that exchanges healthcare information with external applications using the HL7 Version 3 Messaging Standard.
HDR ships with predefined message specifications for a comprehensive set of domains (subject areas), such as Encounter Management, Patient Care, Lab, and Public Health. Each such specification is called a Message Type. For each predefined Message Type, the inbound and outbound message processors have access to Message Type related files and data (XSD, MIF, Composite Message Schema, cmetinfo.coremif, and seeded metadata) that help them use and generate conformant XML instances.
The HDR Messaging Toolkit (MTK) provides you with a mechanism to specify custom message types, to facilitate HDR interoperation with other healthcare applications, and to suit your specific business requirements. MTK lets you perform validation and setups necessary to support custom messages types.
The following figure displays the process for creating and persisting custom message types using MTK:
Figure 10-4 Workflow for Creating and Persisting Custom Message Types Using MTK
To create and persist a new custom Message Type using MTK:
Create an RMIM for a custom message type in any one of the following ways:
Designing the RMIM from scratch.
Modifying an Oracle-published artifact to suit your business requirements. For more information on Oracle-published artifacts, refer to the Oracle Healthcare Data Repository Conformance Specification.
Using an HL7 normative artifact. For more information, refer to the HL7 website (www.hl7.org).
Generate the associated schema and MIF files. If the Message Type has any Common Message Element Type (CMET) references (either Oracle-published or custom) you must create a cmetinfo.coremif file.
Load the XSD and MIF files into MTK. MTK performs some tasks as described in the following sections and generates reports.
Use these reports to configure HDR to support these custom Message Types.
For more information on how to implement a new Message Type, refer to the Implement a New Message Type section.
Note:
The process of testing a custom message using MTK does not affect the data in HDR or existing configurations of HDR.MTK accepts the XSD, MIF, and cmetinfo.coremif files of a custom message type as the input and performs the following:
Validates inputs.
Generates the configuration reports.
Generates instances with minimal manual intervention.
Tests the instances for compatibility with HDR.
Sets up Message Type.
MTK validates the inputs for the following:
The Message Type must have both the XSD and MIF files.
The custom CMETS referenced by Message Types must be present.
The cmetinfo.coremif file must be provided if the Message Type has any reference to the CMETs.
The contents of the corresponding XSD and MIF files must match.
After successful input validation, MTK loads the submitted artifacts into a test folder and generates related metadata.
MTK generates configuration reports to help you port (or create) configurations related to the custom message into the production environment. These reports are generated in plain text or CSV format. The downloaded configuration can be loaded into a different HDR instance by using the respective messaging configuration service or by converting the data into SQL loader format.
Note:
Use these reports as an aid for creating the configuration reports to set up the message type in the production environment. These reports are not to be considered as the actual report.Configuration Reports
Report Name | Report Format | Description |
Master Catalog | CSV | Lists the Acts, Roles, and Entities missing from Master Catalog for a given Message Type. You can use this report to create the appropriate Act Concept configurations in the production environment. |
Side Effect Configuration | CSV | Lists all objects that require side effect configurations for a given Message Type. This report lists the side effect configurations for a given Message Type with the master catalog entries relating to the code type ANY. The reference modifier used in the report for the objects will be Create or Overlay. You can use this report to create the appropriate Act Concept configurations in the production environment. |
Act Concept Configuration | Plain Text | Lists the ambiguous complexes found in the Custom Message Type Schema. You can use this report to create appropriate Act Concept configurations in the production environment. |
Based on the constructs available, MTK generates one or more message instances. MTK uses dummy data to generate message instance. The data for the message instance will be drawn from the data seeded in HDR. MTK follows certain rules and logic while generating the instance.
MTK tests the instance for the following:
Generation of configuration data: Inbound Message Processor (IMP) and Outbound Message Processor (OMP) configurations required by HDR to process a Message Type are created by MTK. These configurations will be rolled back after completing the test. For information on Sender, Receiver, Interaction, and Trigger event ID, refer to the Oracle Healthcare Data Repository HL7 Version 3 Conformance Specification.
Persistence of the generated MTK message instance into HDR using IMP: Once the instance(s) are generated, MTK invokes the IMP services to persist the message.
Generation of OMP instance: After persisting the message instance(s) successfully using IMP, MTK invokes OMP services to generate outbound instances.
Logging of output status along with Test ID: A unique Test Id will be generated for each test requested. The format of the Test Id is {ArtifactID}_{User ID}_{Test Date}.
Use the oracle.apps.ctb.message.mtk
package for this purpose.
Following are the MTK services:
oracle.apps.ctb.message.mtk.MtkTestService
oracle.apps.ctb.message.mtk.MtkProductionLoadService
For detailed description of the APIs provided by these MTK services, refer to the HDR Javadoc.
To utilize MTK to set up custom message types, you must understand the HL7 V3 process by which message types are specified.
The following steps summarize the MTK process for specifying message types:
Develop storyboards and use cases that provide requirements for the content and transactions of messages.
Use the HL7 RMIM Designer to produce an RMIM for a message type based on the content requirements from the previous step. Refer to the HL7 website (www.hl7.org ) for more information on RMIM Designer.
Use the HL7 Schema Generator to convert RMIM Designer output into XML schema definition files (XSDs) and Message Interchange Format files (MIF). Refer to the HL7 website (www.hl7.org ) for more information on Schema Generator.
Note:
For each type of message specified, one pair of XSD and MIF files are produced that define the structure and constraints of the message. In addition, if CMETs were used in defining the message a cmetinfo.coremif file is generated.A new Message Type can be implemented in HDR using the MTK Services.
The following are the prerequisites for using MTK:
Tools
Either download the tools provided by HL7 or use your own tools to generate the Schema and MIF files of a new Message Type. The tools used to generate a schema must also generate the required MIF files.
Note:
MTK is tested with artifacts created on:HL7 RIM repository v2.14.1
RMIM Designer - 4.3.2
RoseTree - 4.0.12
Schema Generator - 3.0.4
Concept Lists
Identify from the Javadoc the Concept List used by the attributes of the new Message Type's objects. Ensure those Concept List have concepts in them.
Note:
If any of the Concept List used by a new Message Types Object attribute is empty, an error is thrown by MTK and the Message Type is not processed.Datatypes and VOC files
datatypes.xsd, datatypes-base.xsd, and voc.xsd files are available for download from the Test Message Types window of the MTK Service. You can use these files in the schema generation tool to create a Schema and MIF files for the new Message Type.
The following figure illustrates the process of implementing a new message type.
Figure 10-5 Implement New Message Type Using MTK
Use the MTK Service Functions or MTK Services to test a new Message Type. Ensure that you have the following inputs for the testing process:
Message Type's Schema and MIF files.
Schema and MIF files of the custom CMETs referenced by the Message Type.
cmetinfo.coremif file listing all the CMETS (Oracle published and custom) referenced by the Message Type. Note that the entries of the non-referenced CMET in the cmetinfo.coremif file are ignored.
Comments relating to the test.
MTK uses the following process to test a new Message Type:
Initial Validation:
Once the input files are submitted, MTK validates if:
Message Type is present.
Message Type has the XSD and MIF files.
Custom CMETs referenced by Message Type are present.
cmetinfo.coremif file with proper entries is provided.
Loading onto Server:
MTK loads the test files provided on the server in a test folder. This folder will be named in the format {Artifact ID}_{User ID}_{Test Date}.
Generating Metadata:
Metadata of those files is generated and persisted in the server.
Interaction:
A test interaction ID based on the artifact ID is created and inserted in the interaction table.
Composite Message Schema
Using the test interaction created Composite Message Schema is generated.
Metadata for Composite Message Schema:
From the Composite Message Schema, metadata for the Composite Message Schema is generated and stored in the server.
Reports:
Reports for ambiguous complex types, missing Master Catalog entries, sender side effect configurations is generated.
Generating Test Instance:
Data for instance will be fetched from:
Schema for the structural attribute;
Database for non-structural, non-identity, and non-coded attributes (Use the data snippets seeded in HDR);
Concept list for coded attributes tied to a concept list;
Coding scheme based on their type for coded attributes not tied to a concept list.
Generating and Loading Configurations:
Missing Master Catalog Data: Based on the schema file the Master catalog entries are scanned to check if any of the entries are missing. The master catalog entries scanned is of the ID type ANY. If they are found missing, those entries are created.
Act Concept: If the Message Type has any ambiguous complex types, Act Concept configurations for those complexes will be created in the server.
Sender and Receiver Configurations: Using the test Sender and Receiver IDs, records relating to sender and receiver configurations will be created.
Persisting and Generating Instance Into and From HDR:
Invoke the HDR IMP Service to persist the MTK generated instance. HDR supports object attributes, datatype and its attributes, and vocabulary content.
Invoke the HDR OMP service to generate the persisted MTK instance.
Display the Status:
If the test is successful, a message indicating that the message type has been tested successfully is displayed. If some error occurs during the processes described above, error message is displayed.
Hyperlinks to download the files generated by the process (including test status file, IMP, and OMP instances of the test message type) are displayed.
This step is the final step in testing the Message Type and is required to verify if the instance generated from MTK and the one generated from HDR using OMP are the same with the exception of known differences. Once the test process is successful, download the MTK and OMP generated instance using the hyperlinks displayed in the MTK Service. Use a file compare utility, to verify the instances.
Note:
MTK does not provide an option or tools to compare MTK and OMP generated instances.Setting up Message Types is required if messages based on the Message Type have to be processed by HDR. To set up successfully tested Message Types in HDR:
Loading Message Types
Configuring IMP and OMP
For messages to be processed, the files relating to the Message Type must be loaded onto the server. To load Message Type provide the following inputs:
XSD and MIF files of the Message Types.
XSD and MIF files of the CMETS referenced by the Message Types. Note that only custom CMETS must be provided. Do not provide any Oracle published CMETS if the Message Type references these.
cmetinfo.coremif file must have a list of all the CMETS (Oracle published and custom) referenced by the Message Type.
MTK Services: Refer to the Setting Up a New Message Type section for details on loading successfully tested custom Message Types onto a production server using Java API.
In IMP, configure the following:
Trigger Event
Interactions
Sender
Sender Interaction
Sender Side Effect
In OMP, configure the following:
Receiver
Receiver vocabulary
Act Concept
Note:
Oracle Healthcare Data Repository Implementation and System Administrator Guide for more information on configuring IMP and OMP.This section lists details of services that help to test custom Message Types and setup custom Message Types, along with code samples. For more information on MTK Services, refer to Oracle Healthcare Data Repository Javadoc.
To test a custom Message Type, perform the following steps:
Initialize the ServiceLocator
.
Create MtkTestService
.
Invoke the testCustomMessageType()
method of MtkTestService
.
If the Message Type testing is successful, the method returns an unique Test Id. If the testing is not successful, the method throws CTBException
and the Test Id can be obtained from TEST_ID parameter of the CTBException
instance. The files submitted for testing as well the ones generated by MTK will be loaded in a folder with the test ID name.
The following table summarizes the service and methods referenced by this section:
Service and Methods: Testing Message Type
Level | Detail |
Package | oracle.apps.ctb.message.mtk |
Class | MtkTestService |
Methods |
|
Note:
Oracle Healthcare Data Repository Javadoc(oracle.apps.ctb.message.mtk.MtkTestService)
Example 10-9 Use the MTKTestService API
//Initializing Service Locator: ServiceLocator serviceLocator = ServiceLocator.getInstance(); serviceLocator.login("username", "password"); //Payload Xsd and Mif String payloadXsdName = {”prpa_mt203000ht04.xsd”}; String payloadMifName = {”prpa_mt203000ht04.mif”}; //Cmet Xsds and Mifs, referred by the Payload. String [] cmetXsdNames = { ”coct_mt030202ht04.xsd”, ”coct_mt030200ht04.xsd”, ”coct_mt150002ht02.xsd”, ”coct_mt150000ht04.xsd”, ”coct_mt030202ht04.xsd”}; String [] cmetMifNames = { ”coct_mt030202ht04.mif”, ”coct_mt030200ht04.mif”, ”coct_mt150002ht02.mif”, ”coct_mt150000ht04.mif”, ”coct_mt030202ht04.mif”}; //CoreMif name. String coreMifName =”cmetinfo.coremif”; //Initializing SchemaInformation SchemaInformation [] schemaInfo = new SchemaInformation [7]; //Populating SchemaInformation List with values. for(int i=0; i< cmetXsdNames.length; i++) { String xsdContent = readFileContent(cmetXsdNames[i]); String mifContent = readFileContent(cmetMifNames[i]); String artifactID = cmetXsdNames[i].replaceAll(”.xsd”, ””); schemaInfo[i] = new SchemaInformation(); schemaInfo[i].setXsd(xsdContent); schemaInfo[i].setMif(mifContent); schemaInfo[i].setSchemaType(SchemaInformation.CMET); schemaInfo.setArtifactID(artifactID); } //Populating payload. String xsdContent = readFileContent(payloadXsdName); String mifContent = readFileContent(payloadMifName); String artifactID = payloadXsdName.replaceAll(”.xsd”,””); schemaInfo[i] = new SchemaInformation(); schemaInfo[i].setXsd(xsdContent); schemaInfo[i].setMif(mifContent); schemaInfo[i].setSchemaType(SchemaInformation.PAYLOAD); schemaInfo.setArtifactID(artifactID); //Populating CoreMif. i++; String coreMifContent = readFileContent(coreMifName); schemaInfo[i] = new SchemaInformation(); schemaInfo[i].setMif(coreMifContent); schemaInfo[i].setSchemaType(SchemaInformation.CORE_MIF); schemaInfo[i]. setArtifactID(coreMifName); String testDesc = ”PRPA_MT203000HT04 - Message Type testing on 16-Jan-2008.”; boolean generateReport = true; String testID = null; MtkTestService mtkTestService = null; //calling MtkTestService#testCustomMessageType() try { mtkTestService = serviceLocator.getMtkTestService(); testID = mtkTestService.testCustomMessageType(schemaInfo,testDesc, generateReport); } catch(CTBException ctbException) { //Incase of CTBException, the TEST_ID can be retrieved from // CTBException instance. testID = (String)ctbException.getParameter(”TEST_ID”); }
Example 10-10 Searching for Test ID
//Initializing Service Locator: ServiceLocator serviceLocator = ServiceLocator.getInstance(); serviceLocator.login("username", "password"); //search key String searchKey = ”%PRTS%MT%”; String [] matchingTestIDs = null; MtkTestService mtkTestService = null; //invoke getMatchingTestIDs() API. try { mtkTestService = serviceLocator.getMtkTestService(); matchingTestIDs = mtkTestService.getMatchingTestIDs(searchKey); } catch(CTBException ctbException) { //handle or re-throw the exception }
Example 10-11 Downloading Test ID Files
//Initializing Service Locator: ServiceLocator serviceLocator = ServiceLocator.getInstance(); serviceLocator.login("username", "password"); // Input Test ID String testID = ”PRTS_MT000008TK01_611521202”; TestIDData testIDData = null; MtkTestService mtkTestService = null; //Invoke downloadTestFilesForATest() API try { mtkTestService = serviceLocator.getMtkTestService(); testIDData = mtkTestService.downloadTestFilesForATest(testID); } catch(CTBException ctbException) { //handle or re-throw the exception } //retrieving data from TestID object String messageTypeID = testIDData.getPayloadID(); String masterCatalogReportContent = testIDData.getMasterCatalogReport(); String sIDeEffectReportContent = testIDData. getSIDeEffectReport(); String actConceptReportContent = testIDData.getAmbiguousComplexTypeReport(); String userComments = testtIDData.getUserComment(); TestMessage[] testMessage = testIDData.getTestMessage(); for (int i = 0; i < testMessage.length; i++) { String testMessage = testMessage[i].getTestMessage(); String generatedMessage = testMessage[i].getGeneratedMessage(); } SchemaInformation[] schemaInfo = testIDData.getSchemaInformation();
Example 10-12 Deleting Test ID Files
//Initializing Service Locator: ServiceLocator serviceLocator = ServiceLocator.getInstance(); serviceLocator.login("username", "password"); //Input Test ID String testID = ”PRTS_MT000008TK01_611521202”; MtkTestService mtkTestService = null; //Invoke removeTestFilesForATest() API try { mtkTestService = serviceLocator.getMtkTestService(); mtkTestService. removeTestFilesForATest(testID); } catch(CTBException ctbException) { //handle or re-throw the exception }
To load and manage the successfully tested new Message Types onto a new environment,
Initialize ServiceLocator.
Create MtkProductionLoadService
.
The following table summarizes the service and methods referenced by this section:
Service and Methods: Setting Up a New Message Type
Level | Detail |
Package | oracle.apps.ctb.message.mtk |
Class | MtkProductionLoadService |
Methods |
|
Note:
Oracle Healthcare Data Repository Javadoc(oracle.apps.ctb.message.mtk.MtkProductionLoadService)
Example 10-13 Search for Message Types
//Initializing Service Locator: ServiceLocator serviceLocator = ServiceLocator.getInstance(); serviceLocator.login("username", "password"); //Message Type ID String [] messageTypeID= { ”PRPA_MT203000HT04”}; SchemaInformation [] schemaInfo = null; try { //Getting MtkProductionLoadService mtkProductionLoadService = serviceLocator.getMtkProductionLoadService(); //Calling fetch API schemaInfo = mtkProductionLoadService.fetchSchemas (messageTypeID) ; } catch(CTBException ctbException) { //…handle or re-throw the exception } if (schemaInfo.length == 0 ) // If Message Type not already uploaded. { //…Invoke loadCustomMessageTypeToProductionServer() API }
Example 10-14 Loading Custom Message Types
//Initializing Service Locator: ServiceLocator serviceLocator = ServiceLocator.getInstance(); serviceLocator.login("username", "password"); //Payload Xsd and Mif String payloadXsdName = {”prpa_mt203000ht04.xsd”}; String payloadMifName = {”prpa_mt203000ht04.mif”}; //Cmet Xsd and Mif, referred by the Payload. String [] cmetXsdNames = { ”coct_mt030202ht04.xsd”, ”coct_mt030200ht04.xsd”, ”coct_mt150002ht02.xsd”, ”coct_mt150000ht04.xsd”, ”coct_mt030202ht04.xsd”}; String [] cmetMifNames = { ”coct_mt030202ht04.mif”, ”coct_mt030200ht04.mif”, ”coct_mt150002ht02.mif”, ”coct_mt150000ht04.mif”, ”coct_mt030202ht04.mif”}; //CoreMif name. String coreMifName =”cmetinfo.coremif”; //Initializing SchemaInformation SchemaInformation [] schemaInfo = new SchemaInformation [7]; //Populating SchemaInformation List with values. for(int i=0; i< cmetXsdNames.length; i++) { String xsdContent = readFileContent(cmetXsdNames[i]); String mifContent = readFileContent(cmetMifNames[i]); String artifactID = cmetXsdNames[i].replaceAll(”.xsd”, ””); schemaInfo[i] = new SchemaInformation(); schemaInfo[i].setXsd(xsdContent); schemaInfo[i].setMif(mifContent); schemaInfo[i].setSchemaType(SchemaInformation.CMET); schemaInfo.setArtifactID(artifactID); } //Populating payload. String xsdContent = readFileContent(payloadXsdName); String mifContent = readFileContent(payloadMifName); String artifactID = payloadXsdName.replaceAll(”.xsd”,””); schemaInfo[i] = new SchemaInformation(); schemaInfo[i].setXsd(xsdContent); schemaInfo[i].setMif(mifContent); schemaInfo[i].setSchemaType(SchemaInformation.PAYLOAD); schemaInfo.setArtifactID(artifactID); // Populating CoreMif. i++; String coreMifContent = readFileContent(coreMifName); schemaInfo[i] = new SchemaInformation(); schemaInfo[i].setMif(coreMifContent); schemaInfo[i].setSchemaType(SchemaInformation.CORE_MIF); schemaInfo[i]. setArtifactID(coreMifName); MtkProductionLoadService mtkProductionLoadService = null; try { //Getting MtkProductionLoadService mtkProductionLoadService = serviceLocator. getMtkProductionLoadService(); //Calling upload API mtkProductionLoadService.loadCustomMessageTypeToProductionServer(schemaInfo); } catch(CTBException ctbException) { //handle or re-throw the exception }
Example 10-15 Fetch Custom CMETs
String messageTypeID= "POXX_MT111000HT02”; SchemaInformation [] schemaInfo = null; MtkProductionLoadService mtkProductionLoadService = null; try { //Getting MtkProductionLoadService mtkProductionLoadService = serviceLocator.getMtkProductionLoadService(); //Calling fetch API schemaInfo = mtkProductionLoadService. FetchCustomCMETsForPayload (messageTypeID) ; } catch(CTBException ctbException) { //…handle and re-throw the exception }
Example 10-16 Fetch Composite Message Schema
String messageTypeID= "POXX_MT111000HT02”; SchemaInformation [] schemaInfo = null; try { //Getting MtkProductionLoadService mtkProductionLoadService = serviceLocator.getMtkProductionLoadService(); //Calling fetch API schemaInfo = mtkProductionLoadService. FetchCompositeMessageShemasByPayload (messageTypeID) ; } catch(CTBException ctbException) { //…handle and re-throw the exception }
Note:
SchemaInformation object will not contain MIF content for an Interaction Schema.Example 10-17 Deleting a Schema
String [] schemas = { "coct_mt930002ht03.xsd", "poxx_mt111000ht02.xsd"}; MtkProductionLoadService mtkProductionLoadService = null; try { //Getting MtkProductionLoadService mtkProductionLoadService = serviceLocator.getMtkProductionLoadService(); //Calling delete API mtkProductionLoadService. deleteSchemas (schemas) ; } catch(CTBException ctbException) { //…handle or re-throw exception }
Prerequisites and Tools
Creating a New Message Type or Modifying an Existing Message Type
Generating Schema (XSD) and MIF Files for the Modified Messages
The following tools are used in the process of testing a custom message and generating message instances for the custom messages.
Microsoft® Visio 2002 SP - 2 version 10.0.6871
HL7 RIM repository version 2.14.1
HL7 RMIM Designer version 4.3.2
HL7 Schema Generator version 3.0.4
Note:
The steps described in the following sections were performed using the tools listed above, and may not produce expected results if executed using versions other than those specified above.For the purpose of this sample exercise, a modified version of the HDR-published domain Message Type Person Registry (PRPA_RM201000HT03) and a modified version of the HDR-published CMET E_Person (COCT_RM030202HT04) are used.
Use the RMIM Designer to modify the CMET E_Person (COCT_RM030202HT04) as follows:
In the focal class Person, add an attribute educationLevelCode: CE CWE [0..1] < EducationLevel
Change the name of the CMET to E_Person_Custom and the CMET code ID to COCT_RM030202TK01
Validate and save the Visio file as COCT_RM030202TK01.vsd. When you save the Visio file, the RMIM designer will automatically create the COCT_RM030202TK01.xml file.
In the CMETInfo.txt file that is referred by RMIM designer, include an entry for the custom CMET as follows:
E_Person_Custom,COCT_MT030202TK01,PSN,Entity,Custom Person CMET for testing MTK,identified/confirmable
.
Modify the message domain Person Registry (PRPA_RM201000HT03) as follows:
In the class Employment (Person => Employment), add the following attributes:
salaryTypeCode: CE CWE [0..1] < EmployeeSalaryType
salaryQuantity: MO [0..1]
Replace all references to the CMET E_Person (PSN) [identified/confirmable] (COCT_MT030202HT04)
with E_Person_Custom (PSN) [identified/confirmable] (COCT_MT030202TK01).
Change the name of the RMIM to Person Registry Custom and the RMIM IDcode to PRPA_RM201000TK01.
Validate and save the Visio file as ’PRPA_RM201000TK01.vsd'.
Verify that Visio automatically generates a file ’PRPA_RM201000TK01.xml'.
Use the Schema Generator generate schema and MIF files for the modified messages as follows:
Copy the files PRPA_RM201000TK01.xml and COCT_RM030202TK01.xml in the following folder:
<Schema Generator Root Folder>\InputFiles\VisioModelXmlFiles\
Note that this folder must contain the xml files corresponding to all the CMETs that are used directly or indirectly by the message PRPA_RM201000TK01.
Modify the file <Schema Generator Root Folder>\InputFiles\CommonSourceFiles\cmetInfoExport.txt to include following entry:
E_Person_Custom,COCT_MT030202TK01,PSN,Entity,Custom Person CMET for testing MTK,identified/confirmable
Ensure that the file <Schema Generator Root Folder>\InputFiles\configuration.txt
includes the following setting:
generateSchemas = true
Execute the file <Schema Generator Root Folder>\runlogged.bat
Upon completion of execution, view the file <Schema Generator Root Folder>\OutputFiles\generator.log
for any errors and rectify them.
After successful execution:
Schema Generator should generate the schema and MIF files for custom messages in following folders:
<Schema Generator Root Folder>\OutputFiles\Schemas\
<Schema Generator Root Folder>\OutputFiles\MIF\
Verify that Schema Generator has generated following files:
PRPA_MT201000TK01.xsd, PRPA_MT201000TK01.mif
COCT_MT030202TK01.xsd, COCT_MT030202TK01.mif
Schema Generator should automatically update the following file:
<Schema Generator Root Folder>\OutputFiles\MIF\cmetinfo.coremif
and include a new entry for the custom CMET ’COCT_RM030202TK01'
Verify that appropriate details of the custom CMET are included in the file cmetinfo.coremif
Refer to the Use the MTK Services section to test the newly created message type artifacts and retrieve the test messages generated by MTK test API.
You can create custom artifacts either by using RMIM or by using the artifacts published by HL7. Ensure that you give valid names for the custom messages. You must ensure that:
Realm code in the artifact ID must be other than HT.
CMET names must be different from the Oracle-published CMET names.
Note:
Oracle will not provide tools to design artifacts and its associated files. You have to use the tools provided by HL7 or create your own tools.
The tools used to generate schema must also generate MIF files.
MTK is tested with artifacts created on:
HL7 RIM repository v2.14.1
HL7 RMIM Designer v4.3.2
RoseTree v4.0.12
HL7 Schema Generator v3.0.4
RMIMs can be created in one of the following ways:
Modifying the RMIM of the Oracle-published Message Types.
Downloading and modifying the RMIM of the HL7-published normative Message Types.
Creating a new RMIM for a Message Type RMIM.
Once the RMIMs are created, save the RMIM in a repository. Provide the XML of the RMIM as input to the tools generating the Schema.
MTK uses the following logic to generate a test instance:
Custom Message Types and CMETs are filled with default data even if they are optional items.
CMETs that are mandatory are filled with data irrespective of whether they are Oracle published or custom CMETs.
Items (Classes, CMETs, and Attributes) in custom artifacts (Message Type, CMETs) are handled using the following logic:
Mandatory Items
Classes and CMETs with {1..1, 1..N, and 1..*} cardinality are filled only once.
Recursions with {1..1, 1..N, and 1..*} cardinality are filled once and only one level is filled.
Coded Attributes with {1..1, 1..N, and 1..*} cardinality are filled only once.
Non-coded attributes with {1..1} cardinality are filled only once.
Non-coded attributes with {1..N and 1..*} cardinality are filled twice.
Choices with 0..* or 1..* are repeated as many number of times as the number of objects in the choice to fill all the objects within the choice.
Optional Items
Classes and CMETs with {0..1, 0..N, and 0..*}, cardinality are filled once.
Recursions with {0..1, 0..N, and 0..*} cardinality are filled once and only one level is filled.
Attributes (Coded and Non-Coded) with {0..1, 0..N, and 0..*} cardinality are not filled.
Choices with {0..1, 0..N, and 0..*}cardinality are filled only once.
Items (Classes, CMETs, and Attributes) relating to Oracle-published CMETs are handled using the following logic:
Mandatory Items
Classes and CMETs with {1..1, 1..N, and 1..*}, cardinality are filled only once.
Within the mandatory CMETs, only mandatory classes with {1..1, 1..N, and 1..*} cardinality are filled with data, and only the attributes with {1..1, 1..N, and 1..*}cardinality are populated with data.
Recursions with {1..1, 1..N, and 1..*} cardinality are filled once and only one level is filled.
Coded Attributes with {1..1, 1..N, and 1..*} cardinality are filled only once.
Non-coded attributes with {1..1} cardinality are filled only once.
Non-coded attributes with {1..N and 1..*} cardinality are filled twice.
Choices with {1..1, 1..N, and 1..*}cardinality are filled only once.
Optional items
Classes and CMETs with {0..1, 0..N, and 0..*} cardinality are not filled.
Recursions with {0..1, 0..N, and 0..*} cardinality are not filled.
Attributes (Coded and Non-Coded) with {0..1, 0..N, and 0..*} cardinality are not filled.
Choices with {0..1, 0..N, and 0..*} cardinality are not filled.
Data for Clone class attributes are populated using the following logic:
Data for the structural attributes is populated from the respective schema.
A unique test ID is assigned for each clone class object.
For coded attributes bound to concept lists, data is taken from the respective concept list within ETS and populated. Note that if the concept list is empty, an error is thrown
For coded attributes not bound to concept lists, a value from the appropriate HL7 coding scheme is populated based on their types (For example, code attribute of Act class has code from ActCode
Code System)
Non-Coded attributes like address, name, and others are populated with data from the sample snippets seeded in HDR.
Attributes with Any datatype are defaulted to ST and a default value is populated.
Message Wrapper and Control Act wrapper:
Data for the Message wrapper, Act Payload Control wrapper, and Role Payload Control wrapper is seeded in HDR.
The Interaction ID, Trigger event code, and Sender and Receiver II attribute values are generated during each instance generation.
Note:
The objective of instance generation is to cover all the objects of custom artifacts (Message Type and CMETs) irrespective of whether they are optional or not.
Within an instance, if the object of external artifact is covered once, the same object is not repeated unless it is mandatory.
External artifacts with Roles having entity choices either as Player or Scoper will always result in more than one instance. Each of the Player/Scoper choice is included in one of the instances.
The order of the objects in the instance generated depend on their order in the schema file.
This section details the validation logic followed by MTK for Master Catalog validations, and also the logic used to generate the Master Catalog report.
Master Catalog Validation Rules
MTK follows the rules listed below to validate the schema against the Master Catalog entries to verify if the entries exist:
General Rules
If the object in the schema has a code attribute,
If the code attribute is mandatory in the schema, MTK checks if an entry for that object exists in the Master Catalog (MC) configuration with Code Type as ANY. If it is not present, MTK includes that object in the MC Report.
If the code attribute is optional in the schema, MTK checks if an entry for that object exists in the MC Configuration with Code Type as ANY. If it does not exist, MTK includes that object in the MC Report. In addition, MTK also checks if an entry exists for that object in the MC Configuration with Code Type as NULL. It it does not exist, MTK includes that object in the MC Report.
If the object in the schema does not have a code attribute, MTK checks if an entry for that object exists in the MC Configuration with Code Type as NULL. If it is not present, MTK includes that object in the MC Report.
The general rules apply to all objects in the schema that are Non-owned Roles without Entities.
In addition to the general rules, MTK also checks if the corresponding Entity entry exists for the Non-owned Role in the MC configuration. The general rules apply for checking an individual Entity entry in the MC Configuration. If the entry does not exist, MTK includes that object in the MC Report.
For Owned Role, in addition to the general rules, MTK also checks if the corresponding Owning Entity entry exists for the Owned Role in the MC Configuration. The general rules apply for checking an individual Entity entry in the MC configuration. If the entry does not exist, MTK includes all the corresponding objects (both missing role and the missing entities) in the MC Report.
For Owned Role, in addition to the general rules, MTK also checks if the corresponding Owning and Non-Owning Entity for the Owned Role has appropriate entries in the MC Configuration. The general rules apply for checking an individual Entity entry in the MC Configuration. If the entry does not exist, MTK includes all corresponding objects (both missing role and the missing entities) in the MC Report.
Note:
In case of Owned Roles, MTK also checks if the entry in the ROLE_OWNER_CODE (in the MC Configuration) has P or S, depending on whether the Owning Entity is a Player or a Scoper. If the entry does not exist, MTK includes that object in the MC Report.MTK populates a report based on the rules described in the Master Catalog Validation Rules section, and then based on the value in the Report column (Yes or No). If the Report column contains the value Yes, the following logic is applied while creating an entry in the Master Catalog report:
Act
With mandatory code attribute: Create an entry with code type ANY.
With optional code attribute: Create entries with code type ANY and Null.
Without code attribute: Create an entry with code type Null.
Non-Owned Role with Entities
With mandatory code attribute: Create an entry with code type ANY, and with appropriate Entity entries.
With optional code attribute: Create entries with code type ANY and Null, and with appropriate Entity entries.
Without code attribute: Create an entry with code type Null, and with appropriate Entity entries.
Non-Owned Role without Entities
With mandatory code attribute: Create an entry with code type ANY, and without any entities.
With optional code attribute: Create entries with code type ANY and Null, and without any entities.
Without code attribute: Create an entry with code type Null, and without any entities.
Owned Role with non-owning Entity
With mandatory code attribute: Create an entry with code type ANY, and with appropriate non-owning Entity entry.
With optional code attribute: Create entries with code type ANY and Null, and with appropriate non-owning Entity entry.
Without code attribute: Create an entry with code type Null, and with appropriate non-owning Entity entry.
Entity
With mandatory code attribute: Create an entry with code type ANY.
With optional code attribute: Create entries with code type ANY and Null.
Without code attribute: Create an entry with code type Null.
MTK applies the following rules while creating the Side Effect Configuration report:
Act: Create or Overlay
Non-Owned Role without Entities: Create or Overlay.
Non-Owned Role with Entities: Create or Overlay for both Role and its entities.
Owned Role without non-owning Entity: No entry.
Owned (Type II) Role with non-owning Entity: Null for Role and owning Entity. Create or Overlay for non-owning Entity.
Constructs in External Artifacts (Message Type and CMETS)
Constructs Within Oracle Published CMETS
Note:
The order of the objects in the instance generated depend on their order in the schema file. The objects listed in the examples might change when compared to actual instances.Act> ActChoice with {0..1 or 1..1 or 0..n or 1..n}
MTK generates n instances where n is the number of objects in the choice (and is not same as *). MTK generates two instances if a message type that has the construct described in Figure E.1. For each object within the choice, a message instance is generated.
First message instance has ClinicalTrialEvent > inFulfillmentOf > ObservationEvent
Second message instance has ClinicalTrialEvent > inFulfillmentOf > ProcedureEvent
Act> ActChoice with {0..* or 1..*}
MTK generates one instance with two inFulfillmentOf ActRelationship, if a message type has the construct shown in Figure E.2. For each object within the choice, an inFulfillmentOf ActRelationship is generated.
First instance of inFulfillmentOf ActRelationship would have ClinicalTrialEvent > inFulfillmentOf > ObservationEvent
Second instance of inFulfillmentOf ActRelationship would have ClinicalTrialEvent > inFulfillmentOf > ProcedureEvent
Act> ActChoice with {0..1 or 1..1 or 0..n or 1..n}> Act with {0..1 or 1..1 or 0..n or 1..n or 0..* or 1..*}
MTK generate n instances where n is the number of objects in the first choice. MTK generate two instances if a message type has the construct described in Figure E.3. For each object within the choice, a message instance is generated along with the target pertinentInformation ActRelationship.
First message instance has ClinicalTrialEvent > inFulfillmentOf > ObservationEvent > pertinentInformation > ObservationInfo
Second message instance has ClinicalTrialEvent > inFulfillmentOf > ProcedureEvent > pertinentInformation > ObservationInfo
Act > ActChoice with {0..* or 1..*} > Act with {0..1 or 0..* or 0..n or 1..n or 1..1 or 1..*}
MTK generates one instance with two inFulfillmentOf ActRelationship, if a message type has the construct described in Figure E.4. For each object within the choice, an inFulfillmentOf ActRelationship is generated along with one target pertinentInformation ActRelationtionship.
First instance of inFulfillmentOf ActRelationship has ClinicalTrialEvent > inFulfillmentOf > ObservationEvent > pertinentInformation > ObservationInfo
Second instance of inFulfillmentOf ActRelationship has ClinicalTrialEvent > inFulfillmentOf > ProcedureEvent > pertinentInformation > ObservationInfo
Act > ActChoice with {0..1 or 1..1 or 0..n or 1..n} > ActChoice with {0..1 or 1..1 or 0..n or 1..n}
MTK generates n instances where n is the number of objects in the first choice. MTK generates two instance if a message type has the construct described in Figure E.5. For each object within the fulfillmentActChoice, a message instance is generated along with an object from target pertinentActChoice.
First message instance has ClinicalTrialEvent > inFulfillmentOf > ObservationEvent > pertinentInformation > ObservationInfo
Second message instance has ClinicalTrialEvent > inFulfillmentOf > ProcedureEvent > pertinentInformation > ProcedureInfo
Act > ActChoice with {0..* or 1..*} > ActChoice with {0..1 or 1..1 or 0..n or 1..n}
MTK generate one instance with two inFulfillmentOf ActRelationship, if a message type has the construct described in Figure E.6. For each object within the choice, an inFulfillmentOf ActRelationship is generated along with an object from the target choice.
First instance of inFulfillmentOf ActRelationship has ClinicalTrialEvent > inFulfillmentOf > ObservationEvent > pertinentInformation > ObservationInfo
Second instance of inFulfillmentOf ActRelationship has ClinicalTrialEvent > inFulfillmentOf > ProcedureEvent > pertinentInformation > ProcedureInfo
Act > ActChoice with {0..1 or 1..1 or 0..n or 1..n} > ActChoice with {0..* or 1..*}:
MTK generates n instances where n= number of objects is in the first choice. MTK generates two instance if a message type has the construct described in Figure E.7. For each object within the inFulfillmentOf, a message instance is generated along with two pertinentInformation ActRelationships.
First message instance has ClinicalTrialEvent > inFulfillmentOf > ObservationEvent:
pertinentInformation > ObservationInfo
pertinentInformation > ProcedureInfo
Second message instance has ClinicalTrialEvent > inFulfillmentOf > ProcedureEvent:
pertinentInformation > ObservationInfo
pertinentInformation > ProcedureInfo
Act > ActChoice with {0..* or 1..*} > ActChoice with {0..*}
MTK generates one instance with two inFulfillmentOf ActRelationship, if a message type has the construct described in Figure E.8. The first inFulfillmentOf ActRelationship instance has the objects from the target pertinentActChoice. The other inFulfillmentOf ActRelationship instance does not have it.
First instance of inFulfillmentOf ActRelationship has ClinicalTrialEvent > inFulfillmentOf > ObservationEvent:
pertinentInformation > ObservationInfo
pertinentInformation > ProcedureInfo
Second instance of fulfillmentActChoice ActRelationship has ClinicalTrialEvent > inFulfillmentOf > ProcedureEvent
Act > ActChoice with {0..* or 1..*} > ActChoice with {1..n or 1..*}
MTK generates one instance with two inFulfillmentOf ActRelationship, if a message type has the construct described in Figure E.9. For each object within FullfillmentActChoice, a inFulfillmentOf ActRelationship is generated along with the object from the target pertinentActChoice.
First instance of inFulfillmentOf ActRelationship has ClinicalTrialEvent > inFulfillmentOf > ObservationEvent:
pertinentInformation > ObservationInfo
pertinentInformation > ProcedureInfo
Second instance of inFulfillmentOf ActRelationship has ClinicalTrialEvent > inFulfillmentOf > ProcedureEvent (one of the below):
pertinentInformation > ObservationInfo
pertinentInformation > ProcedureInfo
Act > Role with {0..1 or 0..n or 0..* or 1..1 or 1..n or 1..*} > Player with {0..1 or 1..1} and Scoper with {0..1 or 1..1}
MTK generates only one instance if a message type has the construct described in Figure E.10. The message instance has:
Message Instance: ObservationGeneral > subject > IdentifiedEntity > ScopingEntity and PlayingEntity
Act > Role with {0..1 or 0..n or 0..* or 1..1 or 1..n or 1..*} > Player with {0..1 or 1..1} and Scoper with {0..1 or 1..1} > Playedrole with {0..1 or 0..n or 0..* or 1..1 or 1..n or 1..*} > Scoper with {0..1 or 1..1}
MTK generates only one instance if a message type has the construct described in Figure E.11. The instance generated has the following:
Message instance: ObservationGeneral > subject > IdentifiedEntity > ScopingEntity and Playingentity<
PlayingEntity > HealthChart > ScopingEntity2
Figure 10-18 Act > Role with {0..*} > Player with {0..1} and Scoper with {1..1} > Playedrole with {0..*} > Scoper with {0..1}
Act > Role with {0..1 or 0..n or 0..* or 1..1 or 1..n or 1..*} > PlayerChoice with {0..1 or 1..1} and ScoperChoice with {0..1 or 1..1} > PlayedRole with {0..1 or 0..n or 0..* or 1..1 or 1..n or 1..*} > Scoper with {0..1 or 1..1}
MTK generates n instances where n is the maximum number of entities present in a single choice. In the construct described in Figure E.12, MTK generates two instances. The instances generated might be:
First Instance: ObservationGeneral > subject > IdentifiedEntity > ScopingEntity and PlayingEntity
Playingentity > HealthChart > ScopingEntity2
Second Instance: ObservationGeneral > subject > IdentifiedEntity > Organization and Person
Person > HealthChart > ScopingEntity2
Figure 10-19 Act > Role with {0..*} > PlayerChoice with {0..1} and ScoperChoice with {1..1} > Playedrole with {0..*} > Scoper with {0..1}
Note:
Even if the cardinality of participation is 0..*, MTK generates multiple instances of the above structure to incorporate all the entities. This behavior is different from ActRelationships.Act> Role with {0..1 or 0..n or 0..* or 1..1 or 1..n or 1..*}> PlayerChoice with {0..1} and ScoperChoice with {0..1 or 1..1}> PlayedRole with {0..1 or 0..n or 0..* or 1..1 or 1..n or 1..*}> Scoper with {0..1 or 1..1}
MTK generates n instances where n is the number of entities in the choice with Max entities. In the construct described in Figure E.13, MTK generates three instances:
Instances with player entities has the Owned role
One of the instances has only the scoper for IdentifiedEntity role. This instance does not have any Player as (i) the cardinality is 0..1 (ii) both the player entities would have been covered in the previous two messages.
The instance generated might be:
First Instance: ObservationGeneral > subject > IdentifiedEntity > Entity and Person
Person > HealthChart > ScopingEntity2
Second Instance : ObservationGeneral > subject > IdentifiedEntity > Organization and Entity
Entity > HealthChart > ScopingEntity2
Third Instance : ObservationGeneral > subject > IdentifiedEntity > Place
Figure 10-20 Act > Role with {0..*} > PlayerChoice with {0..1} and ScoperChoice with {1..1} > Playedrole with {0..*} > Scoper with {0..1}
Act> Role with {0..1 or 0..n or 0..* or 1..1 or 1..n or 1..*}> PlayerChoice with {1..1} and ScoperChoice with {0..1 or 1..1}> PlayedRole with {0..1 or 0..n or 0..* or 1..1 or 1..n or 1..*}> Scoper with {0..1 or 1..1}
MTK generates n instances where n is the number of entities in the choice with Max entities. In the construct described in Figure E.14, MTK generates three instances. All the three instances have the Owned role due to the cardinality on the PlayerChoice.
The instance generated might be:
First Instance: ObservationGeneral > subject > IdentifiedEntity > Entity and Person
Person > HealthChart > ScopingEntity2
Second Instance: ObservationGeneral > subject > IdentifiedEntity > Organization and Entity
Entity > HealthChart > ScopingEntity2
Third Instance: ObservationGeneral > Subject > IdentifiedEntity > Place and Person
Person > HealthChart > ScopingEntity2
Act> ActChoice with {1..1 or 1..n or 1..*}
MTK will generate one instance. The generated instance will be one of the following:
ClinicalTrialEvent > inFulfillmentOf > ObservationEvent
ClinicalTrialEvent > inFulfillmentOf > ProcedureEvent
Note:
If the choice is {0..1 or 0..*}, the generated instance will not have the fulfillmentActChoice ActRelationship.Act> ActChoice with {1..1 or 1..n or 1..*}> Act with { 1..1 or 1..n or 1..*}
MTK generates one instance. The instance will have one of the following:
ClinicalTrialEvent > inFulfillmentOf > ObservationEvent > pertinentInformation > ObservationInfo
ClinicalTrialEvent > inFulfillmentOf > ProcedureEvent > pertinentInformation > ObservationInfo
Note:
If the inFulfillmentOf has {0..1 or 0..*}, then the generated instance will not have the inFulfillmentOf ActRelationship and the other associated relationships
If the inFulfillmentOf has {1..1 or 1..*} and observationInfo has {0..1 or 0..*} then the generated instance will have inFulfillmentOf ActRelationship but not the pertinentInformation relationships
Act> ActChoice with {1..1 or 1..n or 1..*}> ActChoice with {1..1 or 1..n or 1..*}
MTK generates one instance, if a message type has the construct described in Figure E.17. The generated message instance has one of the following:
ClinicalTrialEvent > inFulfillmentOf > ObservationEvent > pertinentInformation > ObservationInfo
ClinicalTrialEvent > inFulfillmentOf > ProcedureEvent > pertinentInformation > ProcedureInfo
Note:
If the inFulfillmentOf has {0..1 or 0..*}, then the generated instance will not have the inFulfillmentOf ActRelationship and the other associated relationships.
If the inFulfillmentOf has {1..1 or 1..*} and if pertinentInformation has {0..1 or 0..*} then the generated instance will have inFulfillmentOf ActRelationship but not the pertinentInformation relationships.
Act > Role with {1..1 or 1..n or 1..*} > PlayerChoice with {1..1} and ScoperChoice with {1..1} > PlayedRole with {1..1 or 1..n or 1..* } > Scoper with {1..1}
In the construct described in Figure E.19, MTK generates one instance. The instance generated might be:
ObservationGeneral > subject > IdentifiedEntity > ScopingEntity and PlayingEntity
Playingentity > HealthChart > ScopingEntity2
ObservationGeneral > subject > IdentifiedEntity > Organization and Person
Person > HealthChart > ScopingEntity2
Note:
If the subject has {0..1 or 0..*} then the generated instance will not have the subject and its associated associations.
If the subject has {1..1 or 1..*} and Scoper and Player choice with {0..1} then the generated instance will have: ObservationGeneral > subject > IdentifiedEntity
If the subject has {1..1 or 1..*}, Player choice with {1..1} along with HealthChart with {1..1}, and ScoperChoice with {0..1} then the generated instance will have one of the below:
ObservationGeneral > subject > IdentifiedEntity > PlayinngEntity > HealthChart > ScopingEntity2
ObservationGeneral > subject > IdentifiedEntity > Person > HealthChart > ScopingEntity2
Data seeded in HDR for MTK to generate instance for the provided Message Type schema file:
Datatypes | Value 1 | Value 2 |
AD | <[attribute] use="H" > <delimiter partType="DEL">;</delimiter> <country partType="CNT">US</country> <state partType="STA">CA</state> <city partType="CTY">Fountain Hills</city> <postalCode partType="ZIP">85268</postalCode> <streetAddressLine partType="SAL">15542 OliveWest</streetAddressLine> <houseNumberNumeric partType="BNN" >999777</houseNumberNumeric> <houseNumber partType="BNR">999777</houseNumber> <direction partType="DIR">N</direction> <streetName partType="STR">Church Street</streetName> <streetNameBase partType="STB">Church Street</streetNameBase> <streetNameType partType="STTYP">Avenue</streetNameType> <unitID partType="UNID">222222</unitID> <censusTract partType="CEN">testCensusValue</censusTract> <unitType partType="UNIT">Apartment</unitType> <useablePeriod xsi:type="IVL_TS" > <low value="20070127" inclusive="true"/> <high value="20070526" inclusive="false"/> </useablePeriod> </[attribute]> | <[attribute] use="H"> <delimiter partType="DEL">;</delimiter> <country partType="CNT">US</country> <state partType="STA">CA</state> <city partType="CTY">Fountain Hills</city> <postalCode partType="ZIP">852</postalCode> <streetAddressLine partType="SAL">142 OliveWest</streetAddressLine> <houseNumberNumeric partType="BNN" >9977</houseNumberNumeric> <houseNumber partType="BNR">9997</houseNumber> <direction partType="DIR">N</direction> <streetName partType="STR">Church Street</streetName> <streetNameBase partType="STB">Church Street</streetNameBase> <streetNameType partType="STTYP">Avenue</streetNameType> <unitID partType="UNID">222234</unitID> <censusTract partType="CEN">testCensusValue</censusTract> <unitType partType="UNIT">Apartment</unitType> <useablePeriod xsi:type="IVL_TS" > <low value="20070128" inclusive="true"/> <high value="20070527" inclusive="false"/> </useablePeriod> </[attribute]> |
ANY | <[attribute] xsi:type="ST">MTK Test1</[attribute]> | <[attribute] xsi:type="ST">MTK Test2</[attribute]> |
BL | <[attribute] value="true"/> | <[attribute] value="false"/> |
BN | <[attribute] value="true"/> | <[attribute] value="true"/> |
ControlActWrapper | <controlActProcess classCode="CACT" moodCode="EVN"> <subject typeCode="SUBJ"></subject></controlActProcess> | <controlActProcess classCode="CACT" moodCode="EVN"> <subject typeCode="SUBJ"> <registrationEvent classCode="REG" moodCode="EVN"> <code code="T" codeSystemName="ActCode"/> <subject typeCode="SBJ"> </subject> </registrationEvent> </subject> </controlActProcess> |
ED | <[attribute] mediaType="text/plain" language="en-US"> <reference value="http://example.org/xrays/128s8d9ej229se32s.png"> <useablePeriod xsi:type="IVL_TS"> <low value="200007200845"/> <high value="200008200845"/> </useablePeriod> </reference>ED.Text1 </[attribute]> | <[attribute] mediaType="text/plain" language="en-US">ED.Text2 <reference value="http://example.org/xrays/128s8d9ej229se32s.png"> <useablePeriod xsi:type="IVL_TS"> <low value="200007200846"/> <high value="200008200846"/> </useablePeriod> </reference>ED.Text2 </[attribute]> |
EIVL | <[attribute] xsi:type="EIVL_TS"> <event code="AC" codeSystem="2.16.840.1.113883.5.139" codeSystemName="TimingEvent"/> <offset> <low value="10" unit="h"/> <high value="20" unit="h"/> </offset> </[attribute]> | <[attribute] xsi:type="EIVL_TS"> <event code="ACD" codeSystem="2.16.840.1.113883.5.139" codeSystemName="TimingEvent"/> <offset> <low value="11" unit="h"/> <high value="21" unit="h"/> </offset> </[attribute]> |
EN | <[attribute] use="L"> <family partType="FAM">John</family> <given partType="GIV">Doe</given> <validTime xsi:type="IVL_TS"> <low value="20070127" inclusive="true"/> <high value="20070526" inclusive="false"/> </validTime> </[attribute]> | <[attribute] use="L"> <family partType="FAM">John</family> <given partType="GIV">Doe</given> <validTime xsi:type="IVL_TS"> <low value="20070129" inclusive="true"/> <high value="20070529" inclusive="false"/> </validTime> </[attribute]> |
II | <[attribute] root="9.989898.5.100.10" extension="MTK1" assigningAuthorityName="ORACLE"/> | <[attribute] root="9.989898.5.100.10" extension="MTK1" assigningAuthorityName="ORACLE"/> |
INT | <[attribute] xsi:type="INT" value="204" /> | <[attribute] xsi:type="INT" value="205" /> |
IVL_INT | <[attribute] xsi:type="IVL_INT"> <low value="10"/> <high value="20"/> </[attribute]> | <[attribute] xsi:type="IVL_INT"> <low value="10"/> <high value="20"/> </[attribute]> |
IVL_MO | <[attribute] xsi:type="IVL_MO"> <low value="200" currency="USD"/> <width value="205" currency="USD"/> </[attribute]> | <[attribute] xsi:type="IVL_MO"> <low value="1000" currency="USD"/> <width value="2000" currency="USD" /> </[attribute]> |
IVL_PQ | <[attribute] xsi:type="IVL_PQ"> <low value="10" unit="g"/> <high value="20" unit="g"/> </[attribute]> | <[attribute] xsi:type="IVL_PQ"> <low value="1100" unit="g"/> <high value="2200" unit="g"/> </[attribute]> |
IVL_REAL | <[attribute] xsi:type="IVL_REAL"> <low value="10.05"/> <high value="20.05"/> </[attribute]> | <[attribute] xsi:type="IVL_REAL" value="10.05"> |
IVL_TS | <[attribute] xsi:type="IVL_TS"> <low value="20070127" inclusive="true"/> <high value="20070526" inclusive="false"/> </[attribute]> | <[attribute] xsi:type="IVL_TS"> <low value="20070127" inclusive="true"/> <width value="2" unit="h"/> </[attribute]> |
MO | <[attribute] value="204" currency="USD"/> | <[attribute] value="204" currency="INR"/> |
ON | <[attribute] use="L"> <prefix partType="PFX">Prime Health</prefix> <suffix partType="SFX">Clinic</suffix> </[attribute]> | <[attribute] use="L"> <prefix partType="PFX">Prime Health</prefix> <suffix partType="SFX">Speciality Center</suffix> </[attribute]> |
PIVL | <[attribute] xsi:type="PIVL_TS" alignment="DW" institutionSpecified="false"> <phase> <low value="20070319" inclusive="true"/> <high value="20070324" inclusive="false"/> </phase> <period value="1" unit="wk"/> </[attribute]> | <[attribute] xsi:type="PIVL_TS" alignment="HD" operator="A"> <phase> <low value="200703190900" inclusive="true"/> <high value="200703191700" inclusive="false"/> </phase> <period value="1" unit="d"/> </[attribute]> |
PN | <[attribute] use="L"> <family partType="FAM">Levin</family> <given partType="GIV">Henry Jr</given> </[attribute]> | <[attribute] use="L"> <family partType="FAM" qualifier="VV">Levin</family> <given partType="GIV">Henry Sr</given> </[attribute]> |
PQ | <[attribute] xsi:type="PQ" value="204" unit="g"/> | <[attribute] xsi:type="PQ" value="205" unit="g"/> |
REAL | <[attribute] xsi:type="REAL" value="204" /> | <[attribute] xsi:type="REAL" value="205" /> |
RTO_INT | <[attribute] xsi:type="RTO_INT"> <numerator value="204"/> <denominator value="204"/> </[attribute]> | <[attribute] xsi:type="RTO_INT"> <numerator value="205"/> <denominator value="205"/> </[attribute]> |
RTO_MO_PQ | <[attribute] xsi:type="RTO_MO_PQ"> <numerator value="204" currency="USD"/> <denominator value="204" unit="g"/> </[attribute]> | <[attribute] xsi:type="RTO_MO_PQ"> <numerator value="205" currency="USD"/> <denominator value="205" unit="g"/> </[attribute]> |
RTO_PQ | <[attribute] xsi:type="RTO_PQ_PQ"> <numerator xsi:type="PQ" value="2" unit="g"/> <denominator xsi:type="PQ" value="1" unit="1"/> </[attribute]> | <[attribute] xsi:type="RTO_PQ_PQ"> <numerator xsi:type="PQ" value="4" unit="g"/> <denominator xsi:type="PQ" value="2" unit="1"/> </[attribute]> |
RTO_PQ_PQ | <[attribute] xsi:type="RTO_PQ_PQ"> <numerator xsi:type="PQ" value="2" unit="g"/> <denominator xsi:type="PQ" value="1" unit="1"/> </[attribute]> | <[attribute] xsi:type="RTO_PQ_PQ"> <numerator xsi:type="PQ" value="4" unit="g"/> <denominator xsi:type="PQ" value="2" unit="1"/> </[attribute]> |
RTO_QTY_QTY | <[attribute] xsi:type="RTO_QTY_QTY"> <numerator xsi:type="PQ" value="2" unit="g"/> <denominator xsi:type="PQ" value="1" unit="1"/> </[attribute]> | <[attribute] xsi:type="RTO_QTY_QTY"> <numerator xsi:type="PQ" value="4" unit="g"/> <denominator xsi:type="PQ" value="2" unit="1"/> </[attribute]> |
ST | <[attribute]>MTK Test1</[attribute]> | <[attribute]>MTK Test2</[attribute]> |
SXCM_TS | <[attribute] xsi:type="SXPR_TS"> <comp xsi:type="IVL_TS"> <low value="20050603" /> <high value="20050603" /> </comp> <comp xsi:type="PIVL_TS" operator="A" institutionSpecified="true"> <period value="6" unit="h" /> </comp> </[attribute]> | <[attribute] xsi:type="SXPR_TS"> <comp xsi:type="IVL_TS"> <low value="20050604" /> <high value="20050604" /> </comp> <comp xsi:type="PIVL_TS" operator="A" institutionSpecified="true"> <period value="7" unit="h" /> </comp> </[attribute] |
TEL | <[attribute] value="tel:1-690-555-1111" use="H" /> | <[attribute] value="tel:1-690-555-2222" use="WP" /> |
TN | <[attribute]>Babel Fish</[attribute]> | <[attribute]>Red Herring</[attribute]> |
TransmissionWrapper | <MCCI_MT000100HT04.Message xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:hl7-org:v3" xmlns:xsip="urn:hl7-org:v3" xmlns:htb="http://xmlns.oracle.com/apps/ctb/messaging" ITSVersion= "XML_1.0"> <creationTime value="20040719080000-0800"/> <responseModeCode code="C"/> <versionCode code="V3PR1"/> <interactionId root="9.989898.5.100" extension="PRPA_HN400000"/> <profileId root="9.989898.5.1" extension="v2.14.1.01"/> <processingCode code="P"/> <processingModeCode code="T"/> <acceptAckCode code="AL"/> <receiver typeCode= "RCV"> <device classCode="DEV" determinerCode="INSTANCE" > <id root="9.989898.5.100" extension="DEV1000"/> <asAgent classCode="AGNT" > <representedOrganization classCode="ORG" determinerCode="INSTANCE" > <id root="9.989898.5.100" extension="ORG1000"/> </representedOrganization> </asAgent> </device> </receiver> <respondTo typeCode ="RSP"> <device classCode="DEV" determinerCode="INSTANCE" > <id root="9.481456.5.1" extension="DEV1001"/> <asAgent classCode="AGNT" > <representedOrganization classCode="ORG" determinerCode="INSTANCE"> <id root="9.481456.5.1" extension="ORG1001"/> </representedOrganization> </asAgent> </device> </respondTo> <sender typeCode ="SND"> <device classCode="DEV" determinerCode="INSTANCE" > <id root="9.481456.5.6" extension="MTKTest"/> <asAgent classCode="AGNT" > <representedOrganization classCode="ORG" determinerCode="INSTANCE"> <id root="9.481456.5.1" extension="ORG1001"/> </representedOrganization> </asAgent> </device> </sender></MCCI_MT000100HT04.Message> | |
TS | <[attribute] value="20070719080000-0800" /> | <[attribute] value="20070719080000-0801" /> |
URL | <[attribute] value="www.Oracle.com"/> | <[attribute] value="http://www.hl7.org/"/> |
The objects in the generated message can contain one extra ID attribute when compared to the corresponding object in the input message. This is not an issue, provided this extra id attribute represents the internal id of the object.
For person and organization entity objects, three IDs are generated and for other elements two IDs are generated.
Tasks:
Example 10-18 Input XML Element
<Person type="Person" classCode="PSN" determinerCode="INSTANCE" htb:association="player"> <id root="9.989898.5.1" extension="PSN9002"/> <name use="L"> <family partType="FAM" encoding="TXT">Mart</family> <given partType="GIV" encoding="TXT">Bob</given> </name> </Person>
Example 10-19 Corresponding Output
<Person type="Person" classCode="PSN" determinerCode="INSTANCE" htb:association="player"> <id root="9.101010.5" extension="23617" displayable="false"/> <id root="9.989898.5.1" extension="PSN9002"/>displayable="false"/> <id root="9.989898.5" extension="5321906" displayable="false"/> <name use="L"><family partType="FAM" encoding="TXT">Mart</family> <given partType="GIV" encoding="TXT">Bob</given> </name> </Person>
The XML representations of coded values will contain their full complement of attributes in the generated message, even though some of these attributes were absent in the persisted message. This is not an issue.
Tasks:
The order of the constituent elements in collection attributes (those of type SET or BAG) may not be preserved in the generated message.
Tasks:
When a ActRelationship has cardinality greater than one, and the target's type is a choice, then the order of the output elements may not match the order of the input elements.
Tasks:
Example 10-24 Input XML Element
<PORR_MT100001HT01.InvestigationEvent …> … <component typeCode="COMP" > <SubstanceAdministrationEvent classCode="SBADM" moodCode="EVN" negationInd="false""> … </SubstanceAdministrationEvent> </component> <component typeCode="COMP" > <SpecimenObservationEvent classCode="SPCOBS" moodCode="EVN" negationInd="false" > … </SpecimenObservationEvent> </component> <component typeCode="COMP" > <ObservationEventGeneral classCode="OBS" moodCode="EVN" negationInd="false" > … </ObservationEventGeneral> </component> <component typeCode="COMP" > <EncounterEvent classCode="ENC" moodCode="EVN" > … </EncounterEvent> </component> … </PORR_MT100001HT01.InvestigationEvent >
Example 10-25 Corresponding Output
<PORR_MT100001HT01.InvestigationEvent …> … <component typeCode="COMP" > <SpecimenObservationEvent type="Observation" classCode="SPCOBS" moodCode="EVN" negationInd="false" > … </SpecimenObservationEvent> </component> <component typeCode="COMP" > <SubstanceAdministrationEvent classCode="SBADM" moodCode="EVN" negationInd="false" > … </SubstanceAdministrationEvent> </component> <component typeCode="COMP" > <EncounterEvent classCode="ENC" moodCode="EVN" > … </EncounterEvent> </component> <component typeCode="COMP" > <ObservationEventGeneral type="Observation" classCode="OBS" moodCode="EVN" negationInd="false" > … </ObservationEventGeneral> </component> … </PORR_MT100001HT01.InvestigationEvent >
The order of XML attributes of an element may be different in the input and output messages. The order of the attributes of an XML element is not significant.
Tasks:
A generated message may contain different literal values for time values than is present in the input message, as the generated time values are represented in the time zone of the database.
OMP can be configured to translate coded attributes before sending them out. In such cases, the input and output values for the coded attribute will be different.
Tasks:
Message wrapper of the input message is not persisted by inbound message processor. So, Outbound Message Processor will not generate the same message wrapper again.
MTK generates the test instance by using a seeded message wrapper. This message wrapper is the same for all the test messages. The only difference is the message ids. As outbound message generator does not know what is the content of the inbound message, there will be difference between the following attribute values in both the messages:
Message id
creationTime
responseModeCode
interactionId
acceptAckCode
receiver.device.id
respondTo.device.id
sender.deviceid
receiver. representedOrganization .Id
profileId
Tasks:
Example 10-32 Input XML Element
<MFFI_IN000101 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:hl7-org:v3" xmlns:xsip="urn:hl7-org:v3" xmlns:htb="http://xmlns.oracle.com/apps/ctb/messaging" ITSVersion= "XML_1.0"> <id root = "1.2.3" extension = "158933102"/> <creationTime value="20040719080000-0800"/> <responseModeCode code="C"/> <versionCode code="V3PR1"/> <interactionId root="9.989898.5.100" extension="PRPA_HN400000"/> <processingCode code="P"/> <processingModeCode code="T"/> <acceptAckCode code="AL"/> <receiver typeCode= "RCV"> <device classCode="DEV" determinerCode="INSTANCE" > <id root="9.989898.5.100" extension="DEV1000"/> <asAgent classCode="AGNT" > <representedOrganization classCode="ORG" determinerCode="INSTANCE" > <id root="9.989898.5.100" extension="ORG1000"/> </representedOrganization> </asAgent> </device> </receiver> <respondTo typeCode ="RSP"> <device classCode="DEV" determinerCode="INSTANCE" > <id root="9.481456.5.1" extension="DEV1001"/> <asAgent classCode="AGNT" > <representedOrganization classCode="ORG" determinerCode="INSTANCE"> <id root="9.481456.5.1" extension="ORG1001"/> </representedOrganization> </asAgent> </device> </respondTo> <sender typeCode ="SND"> <device classCode="DEV" determinerCode="INSTANCE" > <id root="9.481456.5.6" extension="MTKTest"/> <asAgent classCode="AGNT" > <representedOrganization classCode="ORG" determinerCode="INSTANCE"> <id root="9.481456.5.1" extension="ORG1001"/> </representedOrganization> </asAgent> </device> </sender> ---------------
Example 10-33 Output XML Element
< MFFI_IN000101 xmlns="urn:hl7-org:v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsip="urn:hl7-org:v3" xmlns:htb="http://xmlns.oracle.com/apps/ctb/messaging" ITSVersion="XML_1.0"> <id root="9.989898.5" extension="MTKTest"/> <creationTime value="20071129155115-0800"/> <responseModeCode code="D"/> <versionCode code="V3PR1"/> <interactionId root="9.989898.5" extension="MFPM_IN010000"/> <profileId root="9.989898.5" extension="2.14.1.01"/> <processingCode code="P"/> <processingModeCode code="T"/> <acceptAckCode code="NE"/> <receiver typeCode="RCV"> <device classCode="DEV" determinerCode="INSTANCE"> <id root="9.989898.5.100" extension="ORG1000" displayable="false"/> <asAgent classCode="AGNT"> <representedOrganization classCode="ORG" determinerCode="INSTANCE"> <id root="9.989898.5.100" extension="ORG1000" displayable="false"/> </representedOrganization> </asAgent> </device> </receiver> <respondTo typeCode="RSP"> <device classCode="DEV" determinerCode="INSTANCE"> <id root="9.989898.5" extension="1"/> <asAgent classCode="AGNT"> <representedOrganization classCode="ORG" determinerCode="INSTANCE"> <id root="9.989898.5" extension="1"/> </representedOrganization> </asAgent> </device> </respondTo> <sender typeCode="SND"> <device classCode="DEV" determinerCode="INSTANCE"> <id root="9.989898.5" extension="1"/> <asAgent classCode="AGNT"> <representedOrganization classCode="ORG" determinerCode="INSTANCE"> <id root="9.989898.5" extension="1"/> </representedOrganization> </asAgent> </device> </sender> --------------
Task Examples:
Example 10-34 Input XML Element
<MFFI_IN000101 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:hl7-org:v3" xmlns:xsip="urn:hl7-org:v3" xmlns:htb="http://xmlns.oracle.com/apps/ctb/messaging" ITSVersion= "XML_1.0"> <id root = "1.2.3" extension = "158933102"/> <creationTime value="20040719080000-0800"/> <responseModeCode code="C"/> <versionCode code="V3PR1"/> <interactionId root="9.989898.5.100" extension="PRPA_HN400000"/> <profileId root="9.989898.5.1" extension="v2.14.1.01"/> <processingCode code="P"/> <processingModeCode code="T"/> <acceptAckCode code="AL"/> <receiver typeCode= "RCV"> <device classCode="DEV" determinerCode="INSTANCE" > <id root="9.989898.5.100" extension="DEV1000"/> <asAgent classCode="AGNT" > <representedOrganization classCode="ORG" determinerCode="INSTANCE" > <id root="9.989898.5.100" extension="ORG1000"/> </representedOrganization> </asAgent> </device> </receiver> <respondTo typeCode ="RSP"> <device classCode="DEV" determinerCode="INSTANCE" > <id root="9.481456.5.1" extension="DEV1001"/> <asAgent classCode="AGNT" > <representedOrganization classCode="ORG" determinerCode="INSTANCE"> <id root="9.481456.5.1" extension="ORG1001"/> </representedOrganization> </asAgent> </device> </respondTo> <sender typeCode ="SND"> <device classCode="DEV" determinerCode="INSTANCE" > <id root="9.481456.5.6" extension="MTKTest"/> <asAgent classCode="AGNT" > <representedOrganization classCode="ORG" determinerCode="INSTANCE"> <id root="9.481456.5.1" extension="ORG1001"/> </representedOrganization> </asAgent> </device> </sender> <controlActProcess classCode="CACT" moodCode="EVN"> <code code = "MFFI_TE000101" codeSystemName = "HDR Supplemental"/> <subject typeCode="SUBJ"> <registrationEvent classCode="REG" moodCode="EVN"> <code code="T" codeSystemName="ActCode"/> <subject typeCode="SBJ"> <employmentStaff classCode="EMP"> <id root = "1.2.3" extension = "158931102"/> <code code = "DEPEN" codeSystemName = "RoleCode"/> <addr use="H" ><delimiter partType="DEL">;</delimiter> <country partType="CNT">US</country> <state partType="STA">CA</state> <city partType="CTY">Fountain Hills</city> <postalCode partType="ZIP">85268</postalCode> <streetAddressLine partType="SAL">15542 OliveWest</streetAddressLine> <houseNumberNumeric partType="BNN" >999777</houseNumberNumeric> <houseNumber partType="BNR">999777</houseNumber> <direction partType="DIR">N</direction> <streetName partType="STR">Church Street</streetName> <streetNameBase partType="STB">Church Street</streetNameBase> <streetNameType partType="STTYP">Avenue</streetNameType> <unitID partType="UNID">222222</unitID> <censusTract partType="CEN">testCensusValue</censusTract> <unitType partType="UNIT">Apartment</unitType> <useablePeriod xsi:type="IVL_TS" > <low value="20070127" inclusive="true"/> <high value="20070526" inclusive="false"/> </useablePeriod> </addr> <addr use="H"> <delimiter partType="DEL">;</delimiter> <country partType="CNT">US</country> <state partType="STA">CA</state> <city partType="CTY">Fountain Hills</city> <postalCode partType="ZIP">852</postalCode> <streetAddressLine partType="SAL">142 OliveWest</streetAddressLine> <houseNumberNumeric partType="BNN" >9977</houseNumberNumeric> <houseNumber partType="BNR">9997</houseNumber> <direction partType="DIR">N</direction> <streetName partType="STR">Church Street</streetName> <streetNameBase partType="STB">Church Street</streetNameBase> <streetNameType partType="STTYP">Avenue</streetNameType> <unitID partType="UNID">222234</unitID> <censusTract partType="CEN">testCensusValue</censusTract> <unitType partType="UNIT">Apartment</unitType> <useablePeriod xsi:type="IVL_TS" > <low value="20070127" inclusive="true"/> <high value="20070526" inclusive="false"/> </useablePeriod> </addr> <telecom value="tel:1-690-555-1111" use="H" /> <telecom value="tel:1-690-555-1111" use="WP"/> <statusCode code = "active"/> <effectiveTime xsi:type="IVL_TS"> <low value="20070127"/> <high value="20070526"/> </effectiveTime> <employeePerson determinerCode="INSTANCE" classCode="PSN"> <id root = "1.2.3" extension = "158931402"/> <id root = "1.2.3" extension = "158931502"/> <name use="L"> <family partType="FAM" >Levin</family> <given partType="GIV" >Henry Jr</given> </name> <name use="L"> <family partType="FAM" qualifier="VV">Levin</family> <given partType="GIV">Henry Sr</given> </name> <desc mediaType="image/png" language="en-US" compression="GZ" integrityCheck="3454bfb019d0e7d47a253b59cf234bc49a0e0cf8"> <reference value="http://example.org/xrays/128s8d9ej229se32s.png"> <useablePeriod xsi:type="IVL_TS"> <low value="200007200845"/> <high value="200008200845"/> </useablePeriod> </reference> <thumbnail mediaType="image/jpeg" language="en-US" representation="B64"/> MNYD83jmMdomSJUEdmde9j44zmMir6edjzMMIjdMDSsWdIJdksIJR3373jeu83 6edjzMMIjdMDSsWdIJdksIJR3373jeu83MNYD83jmMdomSJUEdmde9j44zmMir omSJUEdmde9j44zmMiromSJUEdmde9j44zmMirdMDSsWdIJdksIJR3373jeu83 4zmMir6edjzMMIjdMDSsWdIJdksIJR3373jeu83==</desc> <statusCode code = "active"/> <telecom value="tel:1-690-555-1111" use="H" /> <telecom value="tel:1-690-555-1111" use="WP"/> <administrativeGenderCode code = "F" codeSystemName = "AdministrativeGender"/> <birthTime value="20060719080000-0800" /> <deceasedInd value="true"/> <deceasedTime value="20060719080000-0800" /> <multipleBirthInd value="true"/> <multipleBirthOrderNumber xsi:type="INT" value="204"/> <organDonorInd value="true"/> <addr use="H" ><delimiter partType="DEL">;</delimiter> <country partType="CNT">US</country> <state partType="STA">CA</state> <city partType="CTY">Fountain Hills</city> <postalCode partType="ZIP">85268</postalCode> <streetAddressLine partType="SAL">15542 OliveWest</streetAddressLine> <houseNumberNumeric partType="BNN" >999777</houseNumberNumeric> <houseNumber partType="BNR">999777</houseNumber> <direction partType="DIR">N</direction> <streetName partType="STR">Church Street</streetName> <streetNameBase partType="STB">Church Street</streetNameBase> <streetNameType partType="STTYP">Avenue</streetNameType> <unitID partType="UNID">222222</unitID> <censusTract partType="CEN">testCensusValue</censusTract> <unitType partType="UNIT">Apartment</unitType> <useablePeriod xsi:type="IVL_TS" > <low value="20070127" inclusive="true"/> <high value="20070526" inclusive="false"/> </useablePeriod> </addr> <addr use="H"> <delimiter partType="DEL">;</delimiter> <country partType="CNT">US</country> <state partType="STA">CA</state> <city partType="CTY">Fountain Hills</city> <postalCode partType="ZIP">852</postalCode> <streetAddressLine partType="SAL">142 OliveWest</streetAddressLine> <houseNumberNumeric partType="BNN" >9977</houseNumberNumeric> <houseNumber partType="BNR">9997</houseNumber> <direction partType="DIR">N</direction> <streetName partType="STR">Church Street</streetName> <streetNameBase partType="STB">Church Street</streetNameBase> <streetNameType partType="STTYP">Avenue</streetNameType> <unitID partType="UNID">222234</unitID> <censusTract partType="CEN">testCensusValue</censusTract> <unitType partType="UNIT">Apartment</unitType> <useablePeriod xsi:type="IVL_TS" > <low value="20070127" inclusive="true"/> <high value="20070526" inclusive="false"/> </useablePeriod> </addr> <maritalStatusCode code = "A" codeSystemName = "MaritalStatus"/> <disabilityCode code = "1" codeSystemName = "PersonDisabilityType"/> <livingArrangementCode code = "G" codeSystemName = "LivingArrangement"/> <religiousAffiliationCode code = "1001" codeSystemName = "ReligiousAffiliation"/> <raceCode code = "1008-2" codeSystemName = "Race"/> <ethnicGroupCode code = "2135-2" codeSystemName = "Ethnicity"/> <languageCommunication> <languageCode code = "EncounterStatus" codeSystemName = "HDR Supplemental"/> <modeCode code = "ESGN" codeSystemName = "LanguageAbilityMode"/> <proficiencyLevelCode code = "E" codeSystemName = "LanguageAbilityProficiency"/> <preferenceInd value="true"/> </languageCommunication> </employeePerson> <employerOrganization determinerCode="INSTANCE" classCode="ORG"> <id root = "1.2.3" extension = "158931702"/> <id root = "1.2.3" extension = "158931802"/> <code code = "NDA17" codeSystemName = "EntityCode"/> <name use="L"> <prefix partType="PFX" >Prime Health</prefix> <suffix partType="SFX" >Clinic</suffix> </name> <name use="L"> <prefix partType="PFX" >Prime Health</prefix> <suffix partType="SFX" >Speciality Center</suffix> </name> <desc mediaType="image/png" language="en-US" compression="GZ" integrityCheck="3454bfb019d0e7d47a253b59cf234bc49a0e0cf8"> <reference value="http://example.org/xrays/128s8d9ej229se32s.png"> <useablePeriod xsi:type="IVL_TS"> <low value="200007200845"/> <high value="200008200845"/> </useablePeriod> </reference> <thumbnail mediaType="image/jpeg" language="en-US" representation="B64"/> MNYD83jmMdomSJUEdmde9j44zmMir6edjzMMIjdMDSsWdIJdksIJR3373jeu83 6edjzMMIjdMDSsWdIJdksIJR3373jeu83MNYD83jmMdomSJUEdmde9j44zmMir omSJUEdmde9j44zmMiromSJUEdmde9j44zmMirdMDSsWdIJdksIJR3373jeu83 4zmMir6edjzMMIjdMDSsWdIJdksIJR3373jeu83==</desc> <statusCode code = "active"/> <telecom value="tel:1-690-555-1111" use="H" /> <telecom value="tel:1-690-555-1111" use="WP"/> <addr use="H" ><delimiter partType="DEL">;</delimiter> <country partType="CNT">US</country> <state partType="STA">CA</state> <city partType="CTY">Fountain Hills</city> <postalCode partType="ZIP">85268</postalCode> <streetAddressLine partType="SAL">15542 OliveWest</streetAddressLine> <houseNumberNumeric partType="BNN" >999777</houseNumberNumeric> <houseNumber partType="BNR">999777</houseNumber> <direction partType="DIR">N</direction> <streetName partType="STR">Church Street</streetName> <streetNameBase partType="STB">Church Street</streetNameBase> <streetNameType partType="STTYP">Avenue</streetNameType> <unitID partType="UNID">222222</unitID> <censusTract partType="CEN">testCensusValue</censusTract> <unitType partType="UNIT">Apartment</unitType> <useablePeriod xsi:type="IVL_TS" > <low value="20070127" inclusive="true"/> <high value="20070526" inclusive="false"/> </useablePeriod> </addr> <addr use="H"> <delimiter partType="DEL">;</delimiter> <country partType="CNT">US</country> <state partType="STA">CA</state> <city partType="CTY">Fountain Hills</city> <postalCode partType="ZIP">852</postalCode> <streetAddressLine partType="SAL">142 OliveWest</streetAddressLine> <houseNumberNumeric partType="BNN" >9977</houseNumberNumeric> <houseNumber partType="BNR">9997</houseNumber> <direction partType="DIR">N</direction> <streetName partType="STR">Church Street</streetName> <streetNameBase partType="STB">Church Street</streetNameBase> <streetNameType partType="STTYP">Avenue</streetNameType> <unitID partType="UNID">222234</unitID> <censusTract partType="CEN">testCensusValue</censusTract> <unitType partType="UNIT">Apartment</unitType> <useablePeriod xsi:type="IVL_TS" > <low value="20070127" inclusive="true"/> <high value="20070526" inclusive="false"/> </useablePeriod></addr> <standardIndustryClassCode code = "001662" codeSystemName = "HDR Supplemental"/> <asPartOfWhole classCode="PART"> <id root = "1.2.3" extension = "158932002"/> <id root = "1.2.3" extension = "158932102"/> <code code = "DEPEN" codeSystemName = "RoleCode"/> <statusCode code = "active"/> <effectiveTime xsi:type="IVL_TS"> <low value="20070127"/> <high value="20070526"/> </effectiveTime> </asPartOfWhole> <contactParty classCode="CON"> <id root = "1.2.3" extension = "158932302"/> <id root = "1.2.3" extension = "158932402"/> <code code = "DEPEN" codeSystemName = "RoleCode"/> <telecom value="tel:1-690-555-1111" use="H" /> <telecom value="tel:1-690-555-1111" use="WP"/> <contactPerson determinerCode="INSTANCE" classCode="PSN"> <name use="L"> <family partType="FAM" >Levin</family> <given partType="GIV" >Henry Jr</given> </name> <name use="L"> <family partType="FAM" qualifier="VV">Levin</family> <given partType="GIV">Henry Sr</given> </name> <telecom value="tel:1-690-555-1111" use="H" /> <telecom value="tel:1-690-555-1111" use="WP"/> <asPersonDomain classCode="IDENT"> <id root = "1.2.3" extension = "158932602"/> <code code = "DEPEN" codeSystemName = "RoleCode"/> </asPersonDomain> </contactPerson> </contactParty> </employerOrganization> </employmentStaff> </subject> </registrationEvent> </subject> </controlActProcess> </MFFI_IN000101>
Example 10-35 Output XML Element
<MFPM_IN000101 xmlns="urn:hl7-org:v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsip="urn:hl7-org:v3" xmlns:htb="http://xmlns.oracle.com/apps/ctb/messaging" ITSVersion="XML_1.0"> <id root="9.989898.5" extension="MTKTest"/> <creationTime value="20071129155115-0800"/> <responseModeCode code="D"/> <versionCode code="V3PR1"/> <interactionId root="9.989898.5" extension="MFPM_IN010000"/> <profileId root="9.989898.5" extension="2.14.1.01"/> <processingCode code="P"/> <processingModeCode code="T"/> <acceptAckCode code="NE"/> <receiver typeCode="RCV"> <device classCode="DEV" determinerCode="INSTANCE"> <id root="9.989898.5.100" extension="ORG1000" displayable="false"/> <asAgent classCode="AGNT"> <representedOrganization classCode="ORG" determinerCode="INSTANCE"> <id root="9.989898.5.100" extension="ORG1000" displayable="false"/> </representedOrganization> </asAgent> </device> </receiver> <respondTo typeCode="RSP"> <device classCode="DEV" determinerCode="INSTANCE"> <id root="9.989898.5" extension="1"/> <asAgent classCode="AGNT"> <representedOrganization classCode="ORG" determinerCode="INSTANCE"> <id root="9.989898.5" extension="1"/> </representedOrganization> </asAgent> </device> </respondTo> <sender typeCode="SND"> <device classCode="DEV" determinerCode="INSTANCE"> <id root="9.989898.5" extension="1"/> <asAgent classCode="AGNT"> <representedOrganization classCode="ORG" determinerCode="INSTANCE"> <id root="9.989898.5" extension="1"/> </representedOrganization> </asAgent> </device> </sender> <controlActProcess classCode="CACT" moodCode="EVN"> <id root="9.989898.5" extension="158933802" displayable="false"/> <code code="EncounterStatus" codeSystemName="HDR Supplemental" codeSystem="2.16.840.1.113894.1004.100.100.2.5" codeSystemVersion="HDR Supplemental (2005-07-28)" displayName="EncounterStatus"/> <subject typeCode="SUBJ"> <registrationEvent classCode="REG" moodCode="EVN"> <id root="9.989898.5" extension="158933702" displayable="false"/> <code code="T" codeSystemName="ActCode" codeSystem="2.16.840.1.113883.5.4" codeSystemVersion="2.01.4" displayName="tea only"/> <subject typeCode="SBJ"> <employmentStaff classCode="EMP"> <id root="1.2.3" extension="158931102" displayable="false"/> <code code="DEPEN" codeSystemName="RoleCode" codeSystem="2.16.840.1.113883.5.111" codeSystemVersion="2.01.4" displayName="DEPEN"/> <addr use="H"> <delimiter partType="DEL" representation="TXT">;</delimiter> <country partType="CNT" representation="TXT">US</country> <state partType="STA" representation="TXT">CA</state> <city partType="CTY" representation="TXT">Fountain Hills</city> <postalCode partType="ZIP" representation="TXT">85268</postalCode> <streetAddressLine partType="SAL" representation="TXT">15542 OliveWest</streetAddressLine> <houseNumberNumeric partType="BNN" representation="TXT">999777</houseNumberNumeric> <houseNumber partType="BNR" representation="TXT">999777</houseNumber> <direction partType="DIR" representation="TXT">N</direction> <streetName partType="STR" representation="TXT">Church Street</streetName> <streetNameBase partType="STB" representation="TXT">Church Street</streetNameBase> <streetNameType partType="STTYP" representation="TXT">Avenue</streetNameType> <unitID partType="UNID" representation="TXT">222222</unitID> <censusTract partType="CEN" representation="TXT">testCensusValue</censusTract> <unitType partType="UNIT" representation="TXT">Apartment</unitType> <useablePeriod xsi:type="IVL_TS"> <low value="20070127" inclusive="true"/> <high value="20070526" inclusive="false"/> </useablePeriod> </addr> <addr use="H"> <delimiter partType="DEL" representation="TXT">;</delimiter> <country partType="CNT" representation="TXT">US</country> <state partType="STA" representation="TXT">CA</state> <city partType="CTY" representation="TXT">Fountain Hills</city> <postalCode partType="ZIP" representation="TXT">852</postalCode> <streetAddressLine partType="SAL" representation="TXT">142 OliveWest</streetAddressLine> <houseNumberNumeric partType="BNN" representation="TXT">9977</houseNumberNumeric> <houseNumber partType="BNR" representation="TXT">9997</houseNumber> <direction partType="DIR" representation="TXT">N</direction> <streetName partType="STR" representation="TXT">Church Street</streetName> <streetNameBase partType="STB" representation="TXT">Church Street</streetNameBase> <streetNameType partType="STTYP" representation="TXT">Avenue</streetNameType> <unitID partType="UNID" representation="TXT">222234</unitID> <censusTract partType="CEN" representation="TXT">testCensusValue</censusTract> <unitType partType="UNIT" representation="TXT">Apartment</unitType> <useablePeriod xsi:type="IVL_TS"> <low value="20070127" inclusive="true"/> <high value="20070526" inclusive="false"/> </useablePeriod> </addr> <telecom use="H" value="tel:1-690-555-1111"/> <telecom use="WP" value="tel:1-690-555-1111"/> <statusCode code="active"/> <effectiveTime xsi:type="IVL_TS"> <low value="20070127" inclusive="true"/> <high value="20070526" inclusive="true"/> </effectiveTime> <employeePerson classCode="PSN" determinerCode="INSTANCE"> <id root="9.101010.5" extension="1086238" displayable="false"/> <id root="1.2.3" extension="158931502" displayable="false"/> <id root="1.2.3" extension="158931402" displayable="false"/> <id root="9.989898.5" extension="158933405" displayable="false"/> <name use="L"> <family partType="FAM" representation="TXT" qualifier="VV">Levin</family> <given partType="GIV" representation="TXT">Henry Sr</given> </name> <name use="L"> <family partType="FAM" representation="TXT">Levin</family> <given partType="GIV" representation="TXT">Henry Jr</given> </name> <desc mediaType="image/png" compression="GZ" integrityCheck="3454bfb019d0e7d47a253b59cf234bc49a0e0cf8" representation="TXT">MNYD83jmMdomSJUEdmde9j44zmMir6edjzMMIjdMDSsWdIJdksIJR3373jeu83 6edjzMMIjdMDSsWdIJdksIJR3373jeu83MNYD83jmMdomSJUEdmde9j44zmMir omSJUEdmde9j44zmMiromSJUEdmde9j44zmMirdMDSsWdIJdksIJR3373jeu83 4zmMir6edjzMMIjdMDSsWdIJdksIJR3373jeu83==<reference value="http://example.org/xrays/128s8d9ej229se32s.png"><useablePeriod xsi:type="IVL_TS"><low value="200007200845" inclusive="true"/><high value="200008200845" inclusive="true"/></useablePeriod></reference><thumbnail mediaType="image/jpeg" representation="B64"></thumbnail></desc> <statusCode code="active"/> <telecom use="H" value="tel:1-690-555-1111"/> <telecom use="WP" value="tel:1-690-555-1111"/> <administrativeGenderCode code="F" codeSystemName="AdministrativeGender" codeSystem="2.16.840.1.113883.5.1" codeSystemVersion="2.01.4" displayName="Female"/> <birthTime value="20060719080000-0800"/> <deceasedInd value="true"/> <deceasedTime value="20060719080000-0800"/> <multipleBirthInd value="true"/> <multipleBirthOrderNumber value="204"/> <organDonorInd value="true"/> <addr use="H"> <delimiter partType="DEL" representation="TXT">;</delimiter> <country partType="CNT" representation="TXT">US</country> <state partType="STA" representation="TXT">CA</state> <city partType="CTY" representation="TXT">Fountain Hills</city> <postalCode partType="ZIP" representation="TXT">85268</postalCode> <streetAddressLine partType="SAL" representation="TXT">15542 OliveWest</streetAddressLine> <houseNumberNumeric partType="BNN" representation="TXT">999777</houseNumberNumeric> <houseNumber partType="BNR" representation="TXT">999777</houseNumber> <direction partType="DIR" representation="TXT">N</direction> <streetName partType="STR" representation="TXT">Church Street</streetName> <streetNameBase partType="STB" representation="TXT">Church Street</streetNameBase> <streetNameType partType="STTYP" representation="TXT">Avenue</streetNameType> <unitID partType="UNID" representation="TXT">222222</unitID> <censusTract partType="CEN" representation="TXT">testCensusValue</censusTract> <unitType partType="UNIT" representation="TXT">Apartment</unitType> <useablePeriod xsi:type="IVL_TS"> <low value="20070127" inclusive="true"/> <high value="20070526" inclusive="false"/> </useablePeriod> </addr> <addr use="H"> <delimiter partType="DEL" representation="TXT">;</delimiter> <country partType="CNT" representation="TXT">US</country> <state partType="STA" representation="TXT">CA</state> <city partType="CTY" representation="TXT">Fountain Hills</city> <postalCode partType="ZIP" representation="TXT">852</postalCode> <streetAddressLine partType="SAL" representation="TXT">142 OliveWest</streetAddressLine> <houseNumberNumeric partType="BNN" representation="TXT">9977</houseNumberNumeric> <houseNumber partType="BNR" representation="TXT">9997</houseNumber> <direction partType="DIR" representation="TXT">N</direction> <streetName partType="STR" representation="TXT">Church Street</streetName> <streetNameBase partType="STB" representation="TXT">Church Street</streetNameBase> <streetNameType partType="STTYP" representation="TXT">Avenue</streetNameType> <unitID partType="UNID" representation="TXT">222234</unitID> <censusTract partType="CEN" representation="TXT">testCensusValue</censusTract> <unitType partType="UNIT" representation="TXT">Apartment</unitType> <useablePeriod xsi:type="IVL_TS"> <low value="20070127" inclusive="true"/> <high value="20070526" inclusive="false"/> </useablePeriod> </addr> <maritalStatusCode code="A" codeSystemName="MaritalStatus" codeSystem="2.16.840.1.113883.5.2" codeSystemVersion="2.01.4" displayName="Annulled"/> <disabilityCode code="1" codeSystemName="PersonDisabilityType" codeSystem="2.16.840.1.113883.5.93" codeSystemVersion="2.01.4" displayName="Vision impaired"/> <livingArrangementCode code="G" codeSystemName="LivingArrangement" codeSystem="2.16.840.1.113883.5.63" codeSystemVersion="2.01.4" displayName="Group Home"/> <religiousAffiliationCode code="1001" codeSystemName="ReligiousAffiliation" codeSystem="2.16.840.1.113883.5.1076" codeSystemVersion="2.01.4" displayName="Adventist"/> <raceCode code="1008-2" codeSystemName="Race" codeSystem="2.16.840.1.113883.5.104" codeSystemVersion="2.01.4" displayName="Algonquian"/> <ethnicGroupCode code="2135-2" codeSystemName="Ethnicity" codeSystem="2.16.840.1.113883.5.50" codeSystemVersion="2.01.4" displayName="Hispanic or Latino"/> <languageCommunication> <languageCode code="EncounterStatus" codeSystemName="HDR Supplemental" codeSystem="2.16.840.1.113894.1004.100.100.2.5" codeSystemVersion="HDR Supplemental (2005-07-28)" displayName="EncounterStatus"/> <modeCode code="ESGN" codeSystemName="LanguageAbilityMode" codeSystem="2.16.840.1.113883.5.60" codeSystemVersion="2.01.4" displayName="Expressed signed"/> <proficiencyLevelCode code="E" codeSystemName="LanguageAbilityProficiency" codeSystem="2.16.840.1.113883.5.61" codeSystemVersion="2.01.4" displayName="Excellent"/> <preferenceInd value="true"/> </languageCommunication> </employeePerson> <employerOrganization classCode="ORG" determinerCode="INSTANCE"> <id root="1.2.3" extension="158931702" displayable="false"/> <id root="9.989898.5" extension="158933406" displayable="false"/> <id root="1.2.3" extension="158931802" displayable="false"/> <id root="9.101010.5" extension="1086239" displayable="false"/> <code code="NDA17" codeSystemName="EntityCode" codeSystem="2.16.840.1.113883.5.1060" codeSystemVersion="2.01.4" displayName="NDA17"/> <name use="L"> <prefix partType="PFX" representation="TXT">Prime Health</prefix> <suffix partType="SFX" representation="TXT">Clinic</suffix> </name> <name use="L"> <prefix partType="PFX" representation="TXT">Prime Health</prefix> <suffix partType="SFX" representation="TXT">Speciality Center</suffix> </name> <desc mediaType="image/png" compression="GZ" integrityCheck="3454bfb019d0e7d47a253b59cf234bc49a0e0cf8" representation="TXT">MNYD83jmMdomSJUEdmde9j44zmMir6edjzMMIjdMDSsWdIJdksIJR3373jeu83 6edjzMMIjdMDSsWdIJdksIJR3373jeu83MNYD83jmMdomSJUEdmde9j44zmMir omSJUEdmde9j44zmMiromSJUEdmde9j44zmMirdMDSsWdIJdksIJR3373jeu83 4zmMir6edjzMMIjdMDSsWdIJdksIJR3373jeu83==<reference value="http://example.org/xrays/128s8d9ej229se32s.png"><useablePeriod xsi:type="IVL_TS"><low value="200007200845" inclusive="true"/><high value="200008200845" inclusive="true"/></useablePeriod></reference><thumbnail mediaType="image/jpeg" representation="B64"></thumbnail></desc> <statusCode code="active"/> <telecom use="H" value="tel:1-690-555-1111"/> <addr use="H"> <delimiter partType="DEL" representation="TXT">;</delimiter> <country partType="CNT" representation="TXT">US</country> <state partType="STA" representation="TXT">CA</state> <city partType="CTY" representation="TXT">Fountain Hills</city> <postalCode partType="ZIP" representation="TXT">852</postalCode> <streetAddressLine partType="SAL" representation="TXT">142 OliveWest</streetAddressLine> <houseNumberNumeric partType="BNN" representation="TXT">9977</houseNumberNumeric> <houseNumber partType="BNR" representation="TXT">9997</houseNumber> <direction partType="DIR" representation="TXT">N</direction> <streetName partType="STR" representation="TXT">Church Street</streetName> <streetNameBase partType="STB" representation="TXT">Church Street</streetNameBase> <streetNameType partType="STTYP" representation="TXT">Avenue</streetNameType> <unitID partType="UNID" representation="TXT">222234</unitID> <censusTract partType="CEN" representation="TXT">testCensusValue</censusTract> <unitType partType="UNIT" representation="TXT">Apartment</unitType> <useablePeriod xsi:type="IVL_TS"> <low value="20070127" inclusive="true"/> <high value="20070526" inclusive="false"/> </useablePeriod> </addr> <addr use="H"> <delimiter partType="DEL" representation="TXT">;</delimiter> <country partType="CNT" representation="TXT">US</country> <state partType="STA" representation="TXT">CA</state> <city partType="CTY" representation="TXT">Fountain Hills</city> <postalCode partType="ZIP" representation="TXT">85268</postalCode> <streetAddressLine partType="SAL" representation="TXT">15542 OliveWest</streetAddressLine> <houseNumberNumeric partType="BNN" representation="TXT">999777</houseNumberNumeric> <houseNumber partType="BNR" representation="TXT">999777</houseNumber> <direction partType="DIR" representation="TXT">N</direction> <streetName partType="STR" representation="TXT">Church Street</streetName> <streetNameBase partType="STB" representation="TXT">Church Street</streetNameBase> <streetNameType partType="STTYP" representation="TXT">Avenue</streetNameType> <unitID partType="UNID" representation="TXT">222222</unitID> <censusTract partType="CEN" representation="TXT">testCensusValue</censusTract> <unitType partType="UNIT" representation="TXT">Apartment</unitType> <useablePeriod xsi:type="IVL_TS"> <low value="20070127" inclusive="true"/> <high value="20070526" inclusive="false"/> </useablePeriod> </addr> <standardIndustryClassCode code="001662" codeSystemName="HDR Supplemental" codeSystem="2.16.840.1.113894.1004.100.100.2.5" codeSystemVersion="HDR Supplemental (2005-07-28)" displayName="Snack"/> <asPartOfWhole classCode="PART"> <id root="1.2.3" extension="158932002" displayable="false"/> <id root="1.2.3" extension="158932102" displayable="false"/> <code code="DEPEN" codeSystemName="RoleCode" codeSystem="2.16.840.1.113883.5.111" codeSystemVersion="2.01.4" displayName="DEPEN"/> <statusCode code="active"/> <effectiveTime xsi:type="IVL_TS"> <low value="20070127" inclusive="true"/> <high value="20070526" inclusive="true"/> </effectiveTime> </asPartOfWhole> <contactParty classCode="CON"> <id root="1.2.3" extension="158932302" displayable="false"/> <id root="1.2.3" extension="158932402" displayable="false"/> <code code="DEPEN" codeSystemName="RoleCode" codeSystem="2.16.840.1.113883.5.111" codeSystemVersion="2.01.4" displayName="DEPEN"/> <telecom use="H" value="tel:1-690-555-1111"/> <telecom use="WP" value="tel:1-690-555-1111"/> <contactPerson classCode="PSN" determinerCode="INSTANCE"> <name use="L"> <family partType="FAM" representation="TXT">Levin</family> <given partType="GIV" representation="TXT">Henry Jr</given> </name> <name use="L"> <family partType="FAM" representation="TXT" qualifier="VV">Levin</family> <given partType="GIV" representation="TXT">Henry Sr</given> </name> <telecom use="H" value="tel:1-690-555-1111"/> <telecom use="WP" value="tel:1-690-555-1111"/> <asPersonDomain classCode="IDENT"> <id root="1.2.3" extension="158932602" displayable="false"/> <code code="DEPEN" codeSystemName="RoleCode" codeSystem="2.16.840.1.113883.5.111" codeSystemVersion="2.01.4" displayName="DEPEN"/> </asPersonDomain> </contactPerson> </contactParty> </employerOrganization> </employmentStaff> </subject> </registrationEvent> </subject> </controlActProcess> </ MFPM_IN000101 >
Note:
The & sign in the Error Message column of the above table indicates variable name. MTK displays the value of these variable at runtime.Error Code | Exception Type | Error Message | Error Description |
CTB_MTK_NO_SCHEMA_INFO | CTBValidationRuntimeException | There is no SCHEMA in the list provided to test. Client application has passed a null SCHEMAINFORMATION object. | This error shows that schemainformation object is not passed to the API .Please create schemainformation object array of xsds and mifs which are to be tested and pass it to the API. |
CTB_MTK_NO_MIF_CONTENT | CTBValidationRuntimeException | The content of the MIF file &MIF_FILE_NAME is empty. |
In schemainformation object only MIF file name is set but the content of the file is not set . Please set the MIF file content as well on the schemainformation object. |
CTB_MTK_NO_XSD_CONTENT | CTBValidationRuntimeException | The content of the XSD file &XSD_FILE_NAME is empty. |
In schemainformation object only XSD file name is set but the content of the file is not set . Please set the XSD file content as well on the schemainformation object. |
CTB_MTK_NO_MIF_AND_XSD_CONTENT | CTBValidationRuntimeException | Both XSD &XSD_FILE_NAME and MIF &MIF_FILE_NAME are not present. |
In schemainformation object both XSD and MIF file name is set but the content of the files are not set . Please set the XSD and MIF file content as well on the schemainformation object. |
CTB_MTK_INVALID_SCHEMA_TYPE | CTBValidationRuntimeException | Validation of input parameters failed. SCHEMA INFORMATION TYPE &SCHEMA_INFO_TYPE is not supported. |
SchemaInformation object requires a SCHEMA INFORMATION TYPE parameter to be set which can have following values 1.PAYLOAD 2.CMET 3. COREMIF. If another value other than these 3 values set for SCHEMA INFORMATION TYPE is encountered, this error is thrown . Please use the correct SCHEMA INFORMATION TYPE values in uploaded schemainformation object. |
CTB_MTK_DUPLICATE_XSD | CTBValidationRuntimeException | XSD &XSD_FILE_NAME already exists as oracle ARTIFACTs. Please rename the ARTIFACT. |
This error shows that the xsd which user is trying to upload is already present as an Oracle supplied artifact . Please change the name of xsd (other than oracle supported ones) and set it on the schemainformation object. |
CTB_MTK_NO_CORE_MIF | CTBValidationRuntimeException | The content of file CMETINFO.COREMIF file is empty. | MTK throws this error when in the schemainformation object schema_type is set as coremif but the content of the files on the object are null. Please pass the coremif content as well in the schemainformation object. |
CTB_MTK_PAYLOAD_NT_FOUND | CTBValidationRuntimeException | PAYLOAD XSD is not present in the SCHEMA information passed to MESSAGING TOOL KIT. | MTK throws this error when in the schemainformation object does not contain payload xsd . Please pass the payload xsd information in schemainformation object. |
CTB_MTK_DUPLICATE_PAYLOAD | CTBValidationRuntimeException | More than one PAYLOAD present in the SCHEMA information passed to MESSAGING TOOL KIT. | MTK throws this error when in the schemainformation object array have more than one payload schemainformation objects . Please upload only one payload in schemainformation object array. |
CTB_MTK_UNSUPPORTED_RIM_CLASS | CTBRuntimeException | PAYLOAD CLASS type '&PAYLOAD_TYPE ' is unknown. |
If the payload entry point class is not of type ROLE or ACT, this error is thrown. Please use only ROLE or ACT payload types i.e the payload must have ROLE or ACT as entry point class. |
CTB_MTK_INTR_XSD_BUILD_FAILED | CTBRuntimeException | INTERACTION SCHEMA validation failed. INTERACTION SCHEMA path: &INTR_SCHEMA . CAUSE: &CAUSE |
This error occurs when the uploaded xsds are incorrect or which have the datatypes or vocabulary values which are not supported in HDR. Please check that xsds generated by schema generator tool are correct and recheck the datatypes and vocabulary values used in RMIM (those have to be supported in HDR).
Schema validation failure for interaction schema. |
CTB_MTK_MSG_PARSING_FAILED | CTBRuntimeException | XML message parsing failed. CAUSE: &CAUSE |
This is a program error where MTK is not able to parse the test message to persist it. |
CTB_MTK_TRG_NOT_FOUND | CTBRuntimeException | TRIGGER CODE &TRIGGER_EVENT_CODE is not available in CODE SYSTEM &CODE_SYSTEM_NAME . CAUSE: &CAUSE |
This is a program error where the triggerCode generated in test message is an invalid concept. |
CTB_MTK_RIM_ASSOCIATION_NT_FND | CTBRuntimeException | RIM ASSOCIATION not found in METADATA for ELEMENT name: &ELEMENT_NAME and parent COMPLEX TYPE &PARENT_COMPLEX_TYPE . MIF or XSD for this complex type may be invalid. |
MTK throws this error when it is unable to find the RIM association metadata for a RIM class from the database. As the metadata is generated from MIF file. Please check the MIF file is correct. The MIF file name can be found out from the complex type name given in the error message. |
CTB_MTK_PARNT_CMPLX_TYP_NT_FND | CTBRuntimeException | The parent COMPLEX TYPE for the ELEMENT '&ELEMENT_NAME ' is not found in METADATA. MIF or XSD for the complex type may be invalid |
MTK throws this error when it is not able to find parent complex type for an element from MIF metadata. Please check the MIF file is correct. The MIF file name can be found out from the complex type name given in the error message. |
CTB_MTK_CODING_SCHEME_NT_FOUND | CTBRuntimeException | Unable to get coding scheme, for CODE: &CODE , and CODE System Name: &CODE_SYSTEM_NAME . CAUSE: &CAUSE |
This is a Program error where MTK is not able to find the code and code system name present in the test message from ETS. |
CTB_MTK_PAYLOAD_INFO_NT_FOUND | CTBRuntimeException | Unable to parse PAYLOAD MIF file. PAYLOAD MIF file does not contain PAYLOAD ELEMENT, COMPLEX TYPE information. | This is a program error which occurs due to failure in parsing of payload mif file. |
CTB_MTK_CMPLX_TYPE_NT_FOUND | CTBRuntimeException | XSD COMPEX TYPE object for the COMPLEX TYPE name &COMPLEX_TYPE_NAME is not found in the xsd. |
This is a program error. This error occurs when MTK does not find a complex type in the xsd. |
CTB_MTK_INCORRECT_FOCAL_CLASS | CTBValidationRuntimeException | The PAYLOAD XSD has unsupported focal CLASS. It should be either role or act. | If the payload entry point class is not of type ROLE or ACT, this error is thrown. Please use only ROLE or ACT payload types i.e the payload must have ROLE or ACT as entry point class. |
CTB_MTK_FILE_READ_FAILED | CTBRuntimeException | Unable to read file &FILE_NAME |
This is a program error when MTK is unable to read a file from disk. |
CTB_MTK_FILE_WRITE_FAILED | CTBRuntimeException | Unable to write into the FILE: &FILE_NAME . CAUSE: &CAUSE |
This is a program error when MTK is unable to write a file to disk. |
CTB_MTK_METDATA_NOT_FOUND | CTBRuntimeException | Unable to find METADATA for COMPLEX TYPE &COMPLEX_TYPE_NAME |
MTK throws this error when its not able to find metadata for a complex type. Please check the MIF file is correct. The MIF file name can be found out from the complex type name given in the error message. |
CTB_MTK_CLASS_CODE_NT_FOUND | CTBRuntimeException | Unable to find CLASS CODE value for COMPLEX TYPE &COMPLEX_TYPE_NAME |
This is program error where MTK is not able to find a value for class Code attribute for particular xsd complex type. The error occurs when MTK is trying to generate the test message. |
CTB_MTK_PAYLOAD_NOT_FOUND | CTBValidationRuntimeException | Unable to find PAYLOAD in INTERACTION SCHEMA. | This is a program error, When MTK tries to find the payload complex type from interaction schema to generate the test instance, it does not find that and throws this error. |
CTB_MTK_INCORRECT_INSTANCE | CTBValidationRuntimeException | Test message generation failed for INTERACTION SCHEMA &INTERACTIONS_SCHEMA . CAUSE: &CAUSE |
This is a program error, This error occurs when MTK generates and incorrect test message and the schema validation for the message fails. |
CTB_MTK_CODED_ATTR_NOT_CREATED | CTBRuntimeException | Unable to create XML fragment for CODED attribute for ELEMENT &ELEMENT_NAME . CAUSE: &CAUSE |
This is a program error. This error occurs when MTK is unable to fetch ETS data for coded attributes to generate the test instance. |
CTB_MTK_NOT_ENOUGH_VAL | CTBValidationRuntimeException | Concept list for CODEd attribute has less than two values for CONCEPT LIST &COCEPTLIST_NAME and XML ELEMENT name &ELEMENT_NAME |
If a concept list for a coded attribute has less than 2 concepts then this error is thrown . Please insert minimum of 2 concepts in all the extensible concept list. |
CTB_MTK_II_FRAGMNT_NT_CREATED | CTBRuntimeException | Unable to create XML fragment for CODED attribute for ELEMENT &ELEMENT_NAME . CAUSE: &CAUSE |
This is a program error. This error occurs when MTK is not able to create id attribute data to generate a test instance. |
CTB_MTK_XML_FRAGMENT_NT_FOUND | CTBRuntimeException | XML fragment is not seeded for data type &DATA_TYPE |
When MTK does not find a xml fragment for a datatype to generate a test message, this error is thrown. Please verify the only HDR supported datatypes are used in the RMIM. |
CTB_MTK_ELMT_METADATA_NOTFOUND | CTBRuntimeException | Metadata not found for an element name &ELEMENT_NAME and parent complex type name &COMPLEX_TYPE_NAME |
MTK throws this error when its not able to find metadata for a complex type. Please check the MIF file is correct or not. The MIF file name can be found out from the complex type name given in the error message. |
CTB_MTK_MSG_NT_PERSISTED | CTBValidationRuntimeException | IMP persistence failed. Acknowledgement message is &ACKNOWLEDGEMENT |
When MTK tries to persist the message through IMP and it fails in persistence, this error is thrown. Please fix the error shown in acknowledgement message and rerun the test case. |
CTB_MTK_ATTR_VAL_NT_FOUND | CTBRuntimeException | Unable to generate test INSTANCE . No default value found in XSD for ATTRIBUTE &ATTR_NAME present in COMPLEX TYPE &COMPLEX_TYPE_NAME |
This is a program error. When MTK is not able to find a value for a structural attribute value from xsd or mif this error is thrown . |
CTB_MTK_INVALID_ACTRELATION | CTBValidationRuntimeException | Validation of input SCHEMA failed. ACTRELATIONSHIP COMPLEX TYPE &COMPLEX_TYPE do not have TARGET ACT. |
This error occurs when MTK finds the an act relationship in xsd does not have a target act . Please fix the RMIM and XSD to have a target act for the corresponding act relationship. |
CTB_MTK_XSD_LOAD_FAILED | CTBRuntimeException | Loading of Schema &XSD_PATH has failed. CAUSE: &CAUSE |
This error is thrown by MTK when the validation of uploaded xsd is failed . Please check the input xsds are correct. |
CTB_MTK_INVALID_OB_PRTCPN | CTBValidationRuntimeException | Validation of input SCHEMA failed. OUTBOUND PARTICIPATION COMPLEX TYPE &COMPLEX_TYPE do not have target ROLE. |
This error occurs when MTK finds the a participation in xsd does not have a participant role . Please fix the RMIM and XSD to have a participant role for the corresponding participation. |
CTB_MTK_INVALID_IB_PRTCPN | CTBValidationRuntimeException | Validation of input SCHEMA failed. INBOUND PARTICIPATION COMPLEX TYPE &COMPLEX_TYPE do not have TARGET ACT. |
This error occurs when MTK finds the an inbound participation in xsd does not have target act . Please fix the RMIM and XSD to have a target act for the corresponding participation. |
CTB_MTK_XSD_MIF_ELMT_MISMATCH | CTBValidationRuntimeException | Input SCHEMA and MIF files does not match. Element &ELEMENT_NAME found in SCHEMA COMPLEX TYPE &COMPLEX_TYPE is missing in corresponding MIF file. |
This error occurs when there is a mismatch between MIF and XSD file of the same artifact i.e an element found XSD file is missing from the MIF file. |
CTB_MTK_XSDMIF_CMPXTY_MISMATCH | CTBValidationRuntimeException | Input SCHEMA and MIF files does not match. SCHEMA COMPLEX TYPE &COMPLEX_TYPE is missing in corresponding MIF file. |
This error occurs when there is a mismatch between MIF and XSD file of the same artifact, that is, a complex type found XSD file is missing from the MIF file. |
CTB_MTK_MS_SCM_VALIDATN_FAIL | CTBValidationRuntimeException | Message generated by OMP failed to validate against the schema. CAUSE: &CAUSE |
This is a program error. When MTK generates the persisted test message using OMP, the generated message fails schema validation and this error is thrown . Please contact your system administrator. |
CTB_MTK_COREMIF_PARSE_FAILED | CTBValidationRuntimeException | Unable to merge the existing CMETINFO.COREMIF with the one provided as input, because parsing of &CORE_MIF failed. CAUSE: &CAUSE . |
For merging the CMETINFO.COREMIF file new uploaded CMETINFO.COREMIF has to be parsed, if the CMETINFO.COREMIF is not a valid xml file then MTK throws this error. Please fix CMETINFO.COREMIF and upload again. |
CTB_MTK_NO_DEFAULT_CONCEPT | CTBValidationRuntimeException | CONCEPT LIST &CONCEPT_LIST should contain at least one CONCEPT from default CODING SCHEME VERSION. |
MTK throws this error when the default coding scheme has no valid concepts . Please ensure that all coding schemes have default version and should have at least one valid concept and concept list. These should have concepts from default coding schemes. |
CTB_MTK_ACTIVE_STATUSCD_NTFND | CTBValidationRuntimeException | Test message generation failed. STATUS CODE CONCEPT LIST &CONCEPT_LIST do not have CONCEPT with CONCEPT CODE ACTIVE |
MTK throws an error while generating a test instance,when it does not find an "ACTIVE" statusCode in the system conceptlist . Please ensure that ACTIVE concept is available in the concept list. |
CTB_MTK_MANDT_INPUT_MISSING | CTBValidationRuntimeException | The input parameter &TOKEN_NAME is passed as null. The request cannot be processed,because mandatory parameter &TOKEN_NAME has null value. |
MTK throws this error when any mandatory input parameter is not passed by the user. |
CTB_MS_CMET_INFO_NOT_FOUND | CTBValidationRuntimeException | Unable to extract METADATA. CMET info file &CMETINFO_FILENAME not found. |
MTK throws this error from metadataservice when metadataservice is not able to find the CMETINFO.COREMIF file. Please check the CMETINFO.CORE MIF file is available on the server. |
CTB_MS_CMET_TYPE_NOT_FOUND | CTBValidationRuntimeException | Unable to extract METADATA. CMET reference &REFERENCE in MIF file &MIFFILE is missing in CMETINFO.COREMIF file. |
MTK throws this error from metadataservice when metadataservice is not able to find the an entry of cmet in CMETINFO.COREMIF file. Please check the corresponding CMET entry is present in CMETINFO.COREMIF file. |
CTB_MS_MIFFILE_NOT_FOUND | CTBValidationRuntimeException | Unable to extract METADATA. MIF file &MIFFILE not found . |
MTK throws this error from metadataservice when metadataservice is not able to find the MIF file to load the metadata. Please check the corresponding MIF file is available on the server. |
CTB_MS_MIF_PARSING_FAILED | CTBValidationRuntimeException | Unable to extract METADATA. Unable to parse MIF file &MIFFILE . |
MTK throws this error from metadataservice when metadataservice is not able to parse a MIF file. Please check all MIF files are valid xmls. |
CTB_MS_CMETINFO_PARSING_FAILED | CTBValidationRuntimeException | Unable to extract METADATA. Unable to parse CMET info file &CMETINFO_FILENAME . |
MTK throws this error from metadataservice when metadataservice is not able to parse CMETINFO.COREMIF. Please check CMETINFO.COREMIF file is valid xmls. |
CTB_MS_INTR_SCHEMA_NOT_FOUND | CTBValidationRuntimeException | Unable to extract METADATA. INTERACTION SCHEMA file [&INTERACTION_SCHEMA ] not found. |
MTK throws this error from metadataservice when metadataservice is not able to find interaction schema on the server. |
CTB_MS_SCHEMA_PARSING_FAILED | CTBValidationRuntimeException | Unable to extract METADATA. Unable to parse INTERACTION SCHEMA &SCHEMA_FILE . |
MTK throws this error from metadataservice when metadataservice is not able to parse interaction schema on the server. Please contact your system administrator. |
CTB_MS_MIF_DIR_NOT_FOUND | CTBValidationRuntimeException | Unable to extract METADATA. MIF directory &DIR_PATH not found. |
MTK throws this error from metadataservice when metadataservice is not able to find the directory for MIF files on the server. |
CTB_MS_WRAPPER_METADT_NOTFOUND | CTBValidationRuntimeException | Unable to load metadata for an INTERACTION SCHEMA &SCHEMAFILE . Unable to find metadata for parent COMPLEX TYPE &COMPLEXTYPE of PAYLOAD &PAYLOAD_ELEMENT . |
MTK throws this error from metadataservice when metadataservice is not able to find metadata for the parent complex type element of the payload element in the database. |
CTB_MTK_STATUS_FILE_NT_FOUND | CTBValidationRuntimeException | The STATUS file '&STATUS_FILE ' is not available on the server |
MTK throws this error when it tries to download the status file from TEST_ID folder but does not find the folder with that TEST_ID name on the server . Please pass the correct TEST_ID name. |
CTB_MTK_TEST_ID_DIR_NOT_FND | CTBValidationRuntimeException | The TEST ID directory &TEST_ID is not present on the server |
MTK throws this error when the Test ID folder is not found in the server. |
CTB_MTK_CMET_ID_CONFLICT | CTBValidationRuntimeException | Unable to merge existing CMETINFO.COREMIF with user provided CMETINFO.COREMIF. CMET name &CMET_NAME already exists with different CMET ID. Existing CMET id &EXISTING_CMET_ID and new CMET ID &NEW_CMET_ID . |
This error occurs when user try to upload a CMETINFO.COREMIF file which has an entry with same cmet name as that of the one which is already uploaded but the corresponding CMET IDs for the new one and existing one are different .So if the new file is merged with the existing file , then there will be 2 entries of the same CMET name with a different CMET ID. This is incorrect. Please upload unique CMET names at all times and not applied to other CMET IDs. |
CTB_MTK_CMET_NAME_CONFLICT | CTBValidationRuntimeException | Unable to merge existing CMETINFO.COREMIF with user provided CMETINFO.COREMIF. CMET id &CMET_ID already exists with different CMET name. Existing CMET name &EXISTING_CMET_NAME and new CMET name &NEW_CMET_NAME . |
This error occurs when user try to upload a CMETINFO.COREMIF file which has an entry with same CMET ID as that of the one which is already uploaded. These have different CMET names .Therefore if the new file is merged with the existing file, then there will be two entries of the same CMET ID with different CMET names. To avoid this error please upload unique CMET IDs which are not already used with other CMET names. |
CTB_MTK_DUPLICATE_INTR_ID | CTBRuntimeException | The INTERACTION detail for the INTERACTION ID &INTERACTION_ID already exists. Unable to create INTERACTION detail |
When MTK tries to create a record for interaction ID in the database but the same interaction ID is already present then this error is thrown . Please use a different interaction ID which is not already seeded. |
CTB_MTK_UNSUPPORTED_IP_PARAMS | CTBRuntimeException | Unable to create Composite Message Schema. The input parameter &TOKEN_VALUE for &TOKEN_NAME is not supported |
MTK throws this error when any input parameter is passed incorrectly; for example if a transmission wrapper ID passed by the user does not match with the transmission wrapper ID which HDR supports MTK throws this error. Please pass the correct input values. |
CTB_MTK_PAYLOAD_ID_NOT_EXISTS | CTBValidationRuntimeException | Unable to create INTERACTION SCHEMA PAYLOAD ID does not exist for the given INTERACTION ID: &INTERACTION_ID |
MTK throws this error when it does not find payload xsd on the server to create an interaction schema for it. Please upload the payload xsd first and then create the interaction schemas for it. |
CTB_MTK_PAYLOAD_XSD_NT_FOUND | CTBValidationRuntimeException | Unable to generate INTERACTION SCHEMA because Message Type XSD &XSD_PATH is not available. |
This error occurs when MTK does not find payload xsd on server with name given by the user . Please pass the correct payload ID as input. |
CTB_MTK_SCHEMA_IN_USE | CTBValidationRuntimeException | Unable to delete the SCHEMA &SCHEMA from server.The SCHEMA is referred by the PAYLOAD &PAYLOAD . |
The error occurs when a schema is tried to be deleted, is referred by a payload present on the server. To delete the schema please delete the referring payload first. |
CTB_MTK_HTB_ARTIFACT_FOUND | CTBValidationRuntimeException | Unable to delete ARTIFACTS. Customer cannot delete HDR specific ARTIFACT &ARTIFACT . |
MTK throws this error when user tries to delete Oracle artifacts . You are not supposed to delete Oracle artifacts. |
CTB_MTK_INTR_SCHEMA_REF | CTBValidationRuntimeException | Can not delete PAYLOAD SCHEMA &PAYLOAD_SCHEMA as INTERACTION IDS &INTERACTION_IDS are configured for this PAYLOAD. |
MTK throws this error when you tries to delete a payload and that payload has a interaction ID configured in the table. Please delete the interaction IDs for the payload and then delete the payload. |
CTB_MTK_XSD_NOT_EXISTS | CTBValidationRuntimeException | Unable to remove XSD &XSD_FILE , as it does not exist. |
This error occurs when an xsd is tried to be deleted which is not present on the server. In this case the xsd file name might be incorrectly passed. Please pass the correct xsd file name. |
CTB_MTK_PAYLOAD_FOUND | CTBValidationRuntimeException | Invalid input data because input contains a SCHEMA of a PAYLOAD. LOADSCHEMA API accepts SCHEMAS of CMETS only. Instead use API LOADCUSTOMMESSAGETYPETOPRODUCTIONSERVER. | MTK throws this error when the uploaded schema is of type PAYLOAD . Only CMETS are allowed to upload using this API. Please upload only CMETS. |
CTB_MTK_INTR_DETAIL_NT_FND | CTBValidationRuntimeException | INTERACTION detail for INTERACTION ID &INTERACTION_ID is not available. Can not delete the INTERACTION detail entry. |
When MTK tries to delete an interaction schema on the server ,and if it does not find a record for the corresponding interaction ID in the interactions table, it throws this error . Please ensure that interaction ID record is available in the interactions table before deleting it. |
CTB_MTK_INTR_RECV_CONFIG_EXIST | CTBValidationRuntimeException | Can not delete INTERACTION SCHEMA for INTERACTION ID &INTERACTION_ID as RECEIVERS are configured for this INTERACTION ID. |
When MTK tries to delete the interaction schema and for that interaction ID receivers are already configured then MTK cannot delete the interaction schema and throws this error. Please ensure that no receivers are configured for the interaction schema which is to be deleted. |
CTB_MTK_INTR_SENDER_CONF_EXIST | CTBValidationRuntimeException | Can not delete INTERACTION SCHEMA for INTERACTION ID &INTERACTION_ID as SENDERS are configured for this INTERACTION ID. |
When MTK tries to delete the interaction schema and for that interaction ID senders are already configured then MTK cannot delete the interaction schema and throws this error. Please ensure that no senders are configured for the interaction schema which is to be deleted. |