ISO message router mapper

The ISO message router mappers are a pair of wrapper mappers that act as routers to message body mappers for incoming and outgoing messages.

Overview

A message that needs mapping arrives in the wrapper mapper, which initially creates and populates root elements in the mapped document. Then, the message is routed to an appropriate mapper to map the body of the document before it returns to the wrapper mapper.

Several channels can be configured to use the same wrapper mapper because it delegates body mapping to dedicated mappers dynamically, based on the message type and content received.

Note: The ISO message router mappers can be used in the following From or To Channel1 channels.
  • Request from Channel1
  • Status to Channel1

ISOMessageRouterInbound

Incoming messages that use ISOMessageRouterInbound are processed in the following manner. The message type is determined by examining the child element underneath <Document>. The following list shows the names of the child elements and their associated message type.
  • <FIToFICstmrCdtTrf> indicates a pacs.008.* message.
  • <FICdtTrf> indicates a pacs.009.* message.
  • <PmtRtr> indicates a pacs.004.* message.
  • <FIToFIPmtStsRpt> indicates a pacs.002.* message.
  • <FIToFIPmtCxlReq> indicates a camt.056.* message.
  • <RsltnOfInvstgtn> indicates a camt.029.* message.
  • <RctAck> indicates an admi.007.* message.
  • <xsys.011.001.02> indicates an xsys.011.* message.

The CONFIG=entry, which is stored as a channel parameter, and the identified message type are used to retrieve the <msgTypeCfg> entry from the value table. The <msgTypeCfg> entry contains the name of the body mapper to use to map the received message.

For example, the Request from Channel1 channel can be configured to use the ISOMessageRouterInbound mapper by using a CONFIG=HVP_MAP_CFG_REQ_FROM_CHAN parameter. When a pacs.008.001.08 message is received from the channel, the ISOMessageRouterInbound mapper determines that it is a pacs.008.* message based on the FIToFICstmrCdtTrf element. Then, each <msgTypeCfg> entry with category HVP_MAP_CFG_REQ_FROM_CHAN in the value table is examined. When a <msgTypeCfg> entry with a <type> child element that matches pacs.008.* is found, its <mapName> element is used to get the name of the body mapper to use for the received message. For example, Pacs008ToISFMapper.

If a <msgTypeCfg> entry with a matching <type> value is not found, an exception with a mapper not found error occurs.

The following table shows sample configuration entries for the value table.
Table 1. Sample configuration entries in the value table
Category Key Configuration value
HVP_MAP_CFG_REQ_FROM_CHAN msgTypeCfg_pacs.009
<msgTypeCfg>
   <class>PACS009</class>
   <subType>HVP_FROM_DBTR_INSTR_FI</subType>
   <extendedCfg>
      <name>MASTER_FLAG</name>
      <value>Y</value>
   </extendedCfg>
   <extendedCfg>
      <name>MAP_FOR_HVP</name>
      <value>Y</value>
   </extendedCfg>
   <pt>
      <class>PACS009</class>
      <subType>HVP_FROM_DBTR_INSTR_FI</subType>
   </pt>
   <mapName>Pacs009ToISFMapper</mapName>
   <type>pacs.009.*</type>
</msgTypeCfg>
Note: The <type> element matches and the <mapName> element identifies the correct mapper.
HVP_MAP_CFG_REQ_FROM_CHAN msgTypeCfg_pacs.008
<msgTypeCfg>
   <class>PACS008</class>
   <subType>HVP_FROM_DBTR_INSTR</subType>
   <extendedCfg>
      <name>MASTER_FLAG</name>
      <value>Y</value>
   </extendedCfg>
   <extendedCfg>
      <name>MAP_FOR_HVP</name>
      <value>Y</value>
   </extendedCfg>
   <pt>
      <class>PACS008</class>
      <subType>HVP_FROM_DBTR_INSTR</subType>
   </pt>
   <mapName>Pacs008ToISFMapper</mapName>
   <type>pacs.008.*</type>
</msgTypeCfg>

After the mapper to be used for the body of the incoming message is identified, ISOMessageRouterInbound sets environment variables before the message is redirected to the body mapper. These variables are used by the body mapper to determine where in the incoming message to begin mapping from.

The incoming message is then redirected from the Route to Label node in the ISOMessageRouterInbound mapper to the appropriate dedicated body mapper. When the body mapper is finished, the message is redirected back to the ISOMessageRouterInbound mapper.

The following figure shows the inbound wrapper mapper.
ISOMessageRouterInbound.subflow diagram
The following figure is an example of the inbound ISO mapper.
Pacs008ToISFMapper.subflow diagram

ISOMessageRouterOutbound

Outgoing messages that use the ISOMessageRouterOutbound mapper are processed similar to the ISOMessageRouterInbound mapper. For outgoing messages, the channel parameter config value and ISF business concept of the outgoing message are used to retrieve the <msgTypeCfg> entry from the value table. The <msgTypeCfg> entry contains the name of the body mapper to use to map the outgoing message.

For example, HVP_TO_DBTR_PSTAT is identified as the ISF business concept and the HVP_MAP_CFG_STATUS_TO_CHANNEL config value from the Status To Channel1 channel is used as the category. Each <msgTypeCfg> entry with category HVP_MAP_CFG_STATUS_TO_CHANNEL in the value table is examined. When a <msgTypeCfg> entry with a <subType> child element that matches HVP_TO_DBTR_PSTAT is found, its <mapName> element is used to get the name of the body mapper to use for the outgoing message. The outbound mapper differs from the inbound mapper because it uses the <subType> entry instead of the <type> entry from <msgTypeCfg>.

If a <msgTypeCfg> entry with a matching <subType> value is not found, an exception with a mapper not found error occurs.

The following table shows sample configuration entries for the value table.
Table 2. Sample configuration entries in the value table
Category Key Configuration value
HVP_MAP_CFG_STATUS_TO_CHANNEL msgTypeCfg_HVP_TO_DBTR_PSTAT
<msgTypeCfg>
   <class>PACS002</class>
   <subType>HVP_TO_DBTR_PSTAT</subType>	
   <extendedCfg>
      <name>MAP_FOR_HVP</name>
      <value>Y</value>
   </extendedCfg>
   <pt>
      <class>PACS002</class>
      <subType>HVP_TO_DBTR_PSTAT</subType>
   </pt>
   <mapName>ISFToPacs002Mapper</mapName>
   <type>pacs.002.001.10</type>
</msgTypeCfg>
Note: The <subType> element matches and the <mapName> element identifies the correct mapper.
HVP_MAP_CFG_STATUS_TO_CHANNEL msgTypeCfg_HVP_TO_DBTR_PNACK_STAT
<msgTypeCfg>
   <class>PACS002</class>
   <subType>HVP_TO_DBTR_PNACK_STAT</subType>	
   <extendedCfg>
      <name>MAP_FOR_HVP</name>
      <value>Y</value>
   </extendedCfg>
   <pt>
      <class>PACS002</class>
      <subType>HVP_TO_DBTR_RFIR_ACK</subType>
   </pt>
   <mapName>ISFToPacs002Mapper</mapName>
   <type>pacs.002.001.10</type>
</msgTypeCfg>

After the mapper to be used for the body of the outgoing message is identified, ISOMessageRouterOutbound sets environment variables before the message is redirected to the body mapper. These variables are used by the body mapper to determine where in the outgoing message to begin mapping from.

The outgoing message is then redirected from the Route to Label node in the ISOMessageRouterOutbound mapper to the appropriate dedicated body mapper. When the body mapper is finished, the message is redirected back to the ISOMessageRouterOutbound mapper.

The following figure shows the outbound wrapper mapper.
ISOMessageRouterOutbound.subflow diagram
The following figure is an example of the outbound ISO mapper.
ISFToPacs002Mapper.subflow diagram