1 Reply Latest reply: Sep 27, 2009 10:36 AM by 843830 RSS

    Problem while sending HL7 ACK to HL7 external system

    843830
      Hello,

      I am facing a problem with GlassFish ESB.

      The product version indicated in the IDE is: NetBeans IDE 6.1 (Build 200810140114). I have not yet tested the current version.

      My problem is as follow:
      - I have 2 service assemblies, one is File BC > HL7 BC and the other HL7 BC > BPEL with Database WSDL as partners.
      - It seems everything is doing OK. The HL7 file is read by File BC, then sent to HL7 BC, retrieved by the second HL7 BC, fed to the BPEL, and finally queries are executed. Then an ACK message is generated and an error occurs. Here is the stacktrace:
      HL7BC-I0155: Sent HL7 request to HL7 External System :MSH
      EVN|A01|2008090801529|||JavaCAPS6^^^^^^^USERS
      PID|1||A000010^^^HosA^MR^HosA||Noseda^Arthur^^^^^||19460101123045|M|||7 South 3rd Circle^^Downham Market^England - Norfolk^30828^UK^||||||||A2008090801529
      PV1|1|I|^^^|I|||FUL^Fulde^Gordian^^^^^^^^^^MAIN|||EMR|||||||||V2008090801529^^^^VISIT|||||||||||||||||||||||||2008090801529
      [...]
      HL7BC-I0117: Received a message in HL7 binding 68899546013632-10229-134707429449130110
      HL7BC-I0137: Pattern for message exchange ID 68899546013632-10229-134707429449130110 is http://www.w3.org/2004/08/wsdl/in-only
      HL7BC-I0135: Constructing the ACK message with version ID HL7v231
      HL7BC-I0162: Creating ACK Builder object of class com.sun.jbi.hl7bc.extservice.ack.HL7v231ACKBuilder
      HL7BC-I0136: Constructed ACK message to be send to the sender MSH
      MSA|AA|CTLID_2008090801529
      HL7BC-I0129: Sending ACK back to the sender
      HL7BC-I0141: MLLPEncoder.setStartBlockChar():Value is set as :  (in decimal ascii).
      HL7BC-I0143: MLLPEncoder.setEndDataChar():Value is set as :  (in decimal ascii).
      HL7BC-I0142: MLLPEncoder.setEndBlockChar():Value is set as : 
       (in decimal ascii).
      HL7BC-I0144: MLLPDecoder.setStartBlockChar(): Value is set as :  (in decimal ascii).
      HL7BC-I0146: MLLPDecoder.setEndDataChar(): Value is set as :  (in decimal ascii).
      HL7BC-I0145: MLLPDecoder.setEndBlockChar(): Value is set as : 
       (in decimal ascii).
      HL7BC-I0160: Sending HL7 message acknowledgement to HL7 External System :MSH
      MSA|AA|CTLID_2008090801529
      ERREUR :  'HL7ENC-E0027: Element: MSH.11 must occur at least 1 time(s)'
      HL7BC-W0126: Unable to decode the message due to error=[javax.xml.transform.TransformerException: org.xml.sax.SAXParseException: HL7ENC-E0027: Element: MSH.11 must occur at least 1 time(s)]
      ERREUR :  'HL7ENC-E0027: Element: MSH.11 must occur at least 1 time(s)'
      HL7BC-E0209: Failed to process the message exchange with ID 68899546013632-10229-134707429439760109 and exchange pattern http://www.w3.org/2004/08/wsdl/in-only due to error: HL7BC-W0121: Unable to process message exchange 68899546013632-10229-134707429439760109, end point com.sun.jbi.hl7bc.EndpointImpl@8cce44 and operation {http://j2ee.netbeans.org/wsdl/HL7v22_Feeder_CA/HL7v22_Feeder_CA_HL7_ANY_HL7Out}hl7wsdlOperation.
      java.lang.Exception: HL7BC-W0121: Unable to process message exchange 68899546013632-10229-134707429439760109, end point com.sun.jbi.hl7bc.EndpointImpl@8cce44 and operation {http://j2ee.netbeans.org/wsdl/HL7v22_Feeder_CA/HL7v22_Feeder_CA_HL7_ANY_HL7Out}hl7wsdlOperation.
              at com.sun.jbi.hl7bc.OutboundMessageProcessor.processOneWayOutbound(OutboundMessageProcessor.java:851)
              at com.sun.jbi.hl7bc.OutboundMessageProcessor.processMessage(OutboundMessageProcessor.java:301)
              at com.sun.jbi.hl7bc.OutboundAction.run(OutboundAction.java:66)
              at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
              at java.lang.Thread.run(Thread.java:619)
      Caused by: javax.xml.transform.TransformerException: org.xml.sax.SAXParseException: HL7ENC-E0027: Element: MSH.11 must occur at least 1 time(s)
              at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:720)
              at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:313)
              at com.sun.jbi.hl7bc.util.XmlUtil.transformToDOMResult(XmlUtil.java:268)
              at com.sun.jbi.hl7bc.OutboundMessageProcessor.getDOMResult(OutboundMessageProcessor.java:2187)
              at com.sun.jbi.hl7bc.OutboundMessageProcessor.start2WayChannelWithExtSystem(OutboundMessageProcessor.java:1723)
              at com.sun.jbi.hl7bc.OutboundMessageProcessor.processOneWayOutbound(OutboundMessageProcessor.java:825)
              ... 5 more
      Caused by: org.xml.sax.SAXParseException: HL7ENC-E0027: Element: MSH.11 must occur at least 1 time(s)
              at com.sun.encoder.hl7.runtime.provider.UnmarshalAdaptor.throwException(UnmarshalAdaptor.java:1181)
              at com.sun.encoder.hl7.runtime.provider.UnmarshalAdaptor.parsePseudoGroup(UnmarshalAdaptor.java:771)
              at com.sun.encoder.hl7.runtime.provider.UnmarshalAdaptor.parseFieldCompSubcomp(UnmarshalAdaptor.java:490)
              at com.sun.encoder.hl7.runtime.provider.UnmarshalAdaptor.parseParticle(UnmarshalAdaptor.java:340)
              at com.sun.encoder.hl7.runtime.provider.UnmarshalAdaptor.parseSequence(UnmarshalAdaptor.java:571)
              at com.sun.encoder.hl7.runtime.provider.UnmarshalAdaptor.parseParticle(UnmarshalAdaptor.java:351)
              at com.sun.encoder.hl7.runtime.provider.UnmarshalAdaptor.parseSegmentOrPseudo(UnmarshalAdaptor.java:532)
              at com.sun.encoder.hl7.runtime.provider.UnmarshalAdaptor.parseParticle(UnmarshalAdaptor.java:342)
              at com.sun.encoder.hl7.runtime.provider.UnmarshalAdaptor.parseSequence(UnmarshalAdaptor.java:571)
              at com.sun.encoder.hl7.runtime.provider.UnmarshalAdaptor.parseParticle(UnmarshalAdaptor.java:351)
              at com.sun.encoder.hl7.runtime.provider.UnmarshalAdaptor.parse(UnmarshalAdaptor.java:306)
              at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:637)
              at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:708)
              ... 10 more
      Accepted the message in DBBC Binding. 
      HL7BC-I0139: Set message exchange status to ERROR for message exchange ID 68899546013632-10229-134707429439760109 and exchange pattern http://www.w3.org/2004/08/wsdl/in-only
      FILEBC-W00708: One-Way Inbound MessageExchange for service: {HL7v22_Feeder_CA}casaService1, endpoint: casaPort1, operation: {http://j2ee.netbeans.org/wsdl/HL7v22_Feeder_CA/HL7v22_Feeder_CA_HL7_ANY_HL7Out}hl7wsdlOperation, was returned with status=ERROR. If Re-delivery is configured, message will be re-sent.
      FILEBC-E00767: Provider for service [{HL7v22_Feeder_CA}casaService1] endpoint [casaPort1] responded with an error status. Error detail is: HL7BC-W0121: Unable to process message exchange 68899546013632-10229-134707429439760109, end point com.sun.jbi.hl7bc.EndpointImpl@8cce44 and operation {http://j2ee.netbeans.org/wsdl/HL7v22_Feeder_CA/HL7v22_Feeder_CA_HL7_ANY_HL7Out}hl7wsdlOperation.
      I wonder if the MEP could be the reason. I think I chose in-only, and for the ACK to be sent, it could be necessary to go for in-out. Yet, what's puzzling me is the error message: MSH.11 must occur at least 1 time(s). Could it be that the ACK is badly generated? In the input (ADT) HL7 this field is populated with a P.