This section provides a summary of how inbound and outbound messages can be processed in a master index application. A master index application cross-references records stored in various computer systems of an organization and identifies records that might represent or do represent the same object. The master index application uses Java CAPS components to connect to and share data with these external systems. The following topics provide information about inbound and outbound message processing.
Figure 1 illustrates the flow of information through a master index application that includes a JMS Topic to which updates to the index are published.
An inbound message refers to the transmission of data from external systems to the master index database. These messages can be sent into the database through a number of Services. Inbound messages can be stored in journal files and tracked in the log files. The steps below describe how inbound messages are processed.
Messages are created in an external system, and the enveloped message is transmitted to the Enterprise Service Bus through that system’s eWay.
The Enterprise Service Bus identifies the message and the appropriate Service to which the message should be sent. The message is then routed to the appropriate Service for processing.
The message is modified into the appropriate format for the master index database, and validations are performed against the data elements of the message to ensure accurate delivery. The message is validated using the Java code in the Service’s Collaboration and other information stored in the master index configuration files.
If the message was successfully transmitted to the database, the appropriate changes to the database are processed.
After the master index application processes the message, an enterprise-wide universal identifier (EUID) is returned (for either a new or updated record). That EUID can be sent back out through a different Service to the external system. Alternatively, the entire updated message can be published using the outbound OTD (see Master Index Outbound Message Processing (Repository)).
Figure 2 below illustrates the flow of a message inbound to an Sun Master Index application.
The format of inbound messages is defined by the inbound OTD, located in the client project for each external system. The inbound messages can either conform to the required format for the master index application or they can be mapped to the correct format in the Collaboration. The required format depends on how the object structure of the master index application is defined (in the Object Definition file in the master index project).
In addition to the objects and fields defined in the Object Definition file, you can include standard master index application fields. For example, you must include the system and local ID fields and you can also include transaction information, such as the date and time of the transaction, the transaction type, user ID, and so on. If you want to use transaction information from the source systems, be sure to include the fields in the OTD.
Transaction fields include the following:
MessageId
EventTypeCode
UserId
AssigningSystem
Source
Department
TerminalId
DateOfEvent
TimeOfEvent
If you do not send these fields into the master index application, default values are used (for example, the date and time fields default to the date and time the transaction is processed by the master index application). The inbound OTD also includes the standard Java methods marshal, unmarshal, marshalToString, unmarshalFromString, marshalToBytes, unmarshalFromBytes, and reset. For information about the default OTD for Sun Master Patient Index, see Understanding Sun Master Patient Index Configuration.
An outbound message refers to the transmission of data from the master index database to any external system. Messages can be transmitted from the master index application in two ways. The first way is by transmitting the output of executeMatch (an EUID). This is described inMaster Index Inbound Message Processing (Repository) and is only used for messages received from external systems.
The second way is by publishing updates from the master index application to a JMS Topic, which allows you to publish complete, updated single best records (SBRs) to any system subscribing to that topic. When updates are made to the database from either external systems or the Enterprise Data Manager, the master index application generates outbound messages in the format of the outbound OTD.
A Sun master index application only publishes the outbound message to JMS Topics and not to JMS Queues.
This section describes how the second type of outbound message is processed. A JMS Topic must be defined in the Connectivity Maps for the master index server project and the appropriate client projects for this type of processing to occur.
When a message is received from an external system or data is entered through the Enterprise Data Manager (EDM), the master index application processes the information and generates an XML message, which is then sent to the JMS Topic that is configured to publish messages from the master index application.
Messages published by the JMS Topic are processed through a Service whose Collaboration uses the master index outbound OTD. This Service modifies the message into the appropriate format.
The Enterprise Service Bus identifies the message and the external systems to which it should be sent and then routes the message for processing by an external system eWay.
Outbound messages are stored and tracked in the Enterprise Service Bus journal and log files.
Figure 3 below illustrates the flow of data for a message outbound from a master index application.
When you generate the master index application, an outbound OTD is created, the structure of which is based on the object definition. This OTD is used to publish changes in the master index database to external systems using a JMS Topic. The output of the executeMatch process is an EUID of the new or updated record. You can use this EUID to obtain additional information and configure a Collaboration and Service to output the data, or you can process all updates in the master index application through a JMS Topic using the outbound OTD.
The outbound OTD is named after the master index application (for example, OUTCompany or OUTPerson). This OTD contains eight primary nodes: Event, ID, SBR, and the standard Java methods marshal, unmarshal, marshalToString, unmarshalFromString, marshalToBytes, unmarshalFromBytes, and reset. The Event field is populated with the type of transaction that created the outbound message, and the ID field is populated with the unique identification code of that transaction. The SBR node is the portion of the OTD created from the Object Definition file. In the sample, the outbound OTD publishes messages in XML format. Table 1 describes the components of the SBR portion of the outbound OTD.
Table 1 Outbound OTD SBR Nodes
Node |
Description |
---|---|
EUID |
The EUID of the record that was inserted or modified. |
Status |
The status of the record. |
CreateFunction |
The date the record was first created. |
CreateUser |
The logon ID of the user who created the record. |
UpdateSystem |
The processing code of the external system from which the updates to an existing record originated. |
ChildType |
The name of the parent object. |
CreateSystem |
The processing code of the external system from which the record originated. |
UpdateDateTime |
The date and time the record was last updated. |
CreateDateTime |
The date and time the record was created. |
UpdateFunction |
The type of function that caused the record to be modified. |
RevisionNumber |
The revision number of the record. |
UpdateUser |
The logon ID of the user who last updated the record. |
SystemObject |
The object’s local identifier in a specified system. This field has three sub-fields: LID: The local ID assigned to the person in the system of origin. System: The processing code of the system of origin. Status: The status of the local ID in the enterprise record. |
Object_Name |
The fields in this node are defined by the object structure (as defined in the Object Definition file). It is named by the parent object and contains all fields and child objects defined in the structure. This section varies depending on the customizations made to the object structure. |
When outbound messaging is enabled, the following transactions automatically generate an outbound message that is sent to the JMS Topic (if a JMS Topic has been incorporated into the master index project).
Activating a system record
Activating an enterprise record
Adding a system record
Creating an enterprise record
Deactivating a system record
Deactivating an enterprise record
Merging an enterprise record
Merging a system record
Transferring a system record
Unmerging an enterprise record
Unmerging a system record
Updating an enterprise record
Updating a system record
The following text is a sample outbound message for a master index application based on a master person index. Your outbound messages might appear differently depending on how you configure the client project connectivity components.
<?xml version="1.0" encoding="UTF-8"?> <OutMsg Event="UPD" ID="00000000000000044005"> <SBR EUID="1000008001" Status="active" CreateFunction="Add" ChildType="Person" CreateSystem="System" UpdateFunction="Update" RevisionNumber="5" CreateUser="eview" UpdateSystem="System" UpdateDateTime="12/16/2003 17:40:44" CreateDateTime="12/16/2003 17:36:58" UpdateUser="eview"> <SystemObject SystemCode="CBMC" LID="434900094" Status="active"> </SystemObject> <Person PersonId="00000000000000017000" PersonCatCode="PT" LastName="WRAND" FirstName="ELIZABETH" MiddleName="SU" Suffix="" Title="PHD" DOB="12/12/1972 00:00:00" Death="" Gender="F" MStatus="M" SSN="555665555" Race="B" Ethnic="23" Religion="AG" Language="ENGL" SpouseName="MARCUS" MotherName="TONIA" MotherMN="FLEMING" FatherName="JOSHUA" Maiden="TERI" PobCity="KINGSTON" PobState="" PobCountry="JAMAICA" VIPFlag="N" VetStatus="N" FnamePhoneticCode="E421" LnamePhoneticCode="RAN" MnamePhoneticCode="S250" MotherMNPhoneticCode="FLANANG" MaidenPhoneticCode="TAR" SpousePhoneticCode="M622" MotherPhoneticCode="T500" FatherPhoneticCode="J200" DriversLicense="CT111333111" DriversLicenseSt="CT" Dod="" DeathCertificate="" Nationality="USA" Citizenship="USA" PensionNo="" PensionExpDate="" RepatriationNo="" DistrictOfResidence="" LgaCode="" MilitaryBranch="NONE" MilitaryRank="NONE" MilitaryStatus="NONE" StdLastName="WRAND" StdMiddleName="SUSAN"> <Phone PhoneId="00000000000000011001" PhoneType="CC" Phone="9895558768" PhoneExt=""> </Phone> <Phone PhoneId="00000000000000011000" PhoneType="CH" Phone="9895554687" PhoneExt=""> </Phone> <Address AddressId="00000000000000011001" AddressType="H" AddressLine1="1220 BLOSSOM STREET" AddressLine2="UNIT 12" AddressLine3="" AddressLine4="" City="SHEFFIELD" StateCode="CT" PostalCode="09877" PostalCodeExt="" County="CAPEBURR" CountryCode="UNST" HouseNumber="1220" StreetDir="" StreetName="BLOSSOM" StreetNamePhoneticCode="BLASAN" StreetType="St"> </Address> </Person> </SBR> </OutMsg> |