我正在构建一个BizTalk 2010解决方案,我们通过MLLP请求/响应接收端口接收HL7v2 QRY消息。业务流程直接绑定到接收端口,使用自定义ACK进行Web服务调用和响应。
业务流程正在执行并进行Web服务调用并正确构建ACK。当发送形状将自定义ACK返回到接收端口响应时,我看到一条带有错误的暂停(不可恢复)消息:
执行响应(发送)管道时出现故障: “BTAHL72XPipelines.BTAHL72XSendPipeline,BTAHL72XPipelines, Version = 1.3.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35“ 来源:“BTAHL7 2.X汇编程序”接收端口:“RP.MyPort”URI: “0.0.0.0:1235”原因:消息不包含名称的部分 MSHSegment
如果我查看服务详细信息对话框中的消息选项卡,我会看到两条消息,类型为ACK_24_GLO_DEF。
第一条消息包含1个名为“part”的部分:
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP:Body><SOAP:Fault><faultcode>Microsoft BizTalk Server Negative Acknowledgment </faultcode><faultstring>An error occurred while processing the message, refer to the details section for more information </faultstring><faultactor>0.0.0.0:1235</faultactor><detail><ns0:NACK Type="NACK" xmlns:ns0="http://schema.microsoft.com/BizTalk/2003/NACKMessage.xsd"><NAckID>{4C09DEDB-4317-4BD7-AB98-399D5C612626}</NAckID><ErrorCode>0xc0c016aa</ErrorCode><ErrorCategory>0</ErrorCategory><ErrorDescription>There was a failure executing the response(send) pipeline: "BTAHL72XPipelines.BTAHL72XSendPipeline, BTAHL72XPipelines, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Source: "BTAHL7 2.X Assembler" Receive Port: "RP.Meditech.EMPI.GetDemo" URI: "0.0.0.0:1235" Reason: Serialization errors:
Error # 1
Segment Id: QRD_QueryDefinition
Sequence Number: 1
Field Number: 10
Error Number: 207
Error Description: Application internal error
Encoding System: HL7nnnn
Alternate Error Number: Z100
Alternate Error Description: Trailing delimiter found
Alternate Encoding System: HL7-BTA
Error # 2
Segment Id: QRF_QueryFilter
Sequence Number: 1
Field Number: 6
Error Number: 207
Error Description: Application internal error
Encoding System: HL7nnnn
Alternate Error Number: Z100
Alternate Error Description: Trailing delimiter found
Alternate Encoding System: HL7-BTA
</ErrorDescription></ns0:NACK></detail></SOAP:Fault></SOAP:Body></SOAP:Envelope>
第二条消息有3个部分(MSHSegment,BodySegments和ZSegments):
<ns0:MSH_25_GLO_DEF xmlns:ns0="http://microsoft.com/HealthCare/HL7/2X"><MSH><MSH.2_EncodingCharacters>^~\&</MSH.2_EncodingCharacters><MSH.3_SendingApplication><HD.0_NamespaceId>ADM</HD.0_NamespaceId></MSH.3_SendingApplication><MSH.4_SendingFacility><HD.0_NamespaceId>IHSLH</HD.0_NamespaceId></MSH.4_SendingFacility><MSH.5_ReceivingApplication><HD.0_NamespaceId></HD.0_NamespaceId></MSH.5_ReceivingApplication><MSH.6_ReceivingFacility><HD.0_NamespaceId></HD.0_NamespaceId></MSH.6_ReceivingFacility><MSH.7_DateTimeOfMessage><TS.1>20130521000513</TS.1></MSH.7_DateTimeOfMessage><MSH.8_Security></MSH.8_Security><MSH.9_MessageType><CM_MSG.0_MessageType>QRY</CM_MSG.0_MessageType></MSH.9_MessageType><MSH.10_MessageControlId>VJHREGC7.20135210513272</MSH.10_MessageControlId><MSH.11_ProcessingId><PT.0_ProcessingId>P</PT.0_ProcessingId></MSH.11_ProcessingId><MSH.12_VersionId><VID_0_VersionId>2.1</VID_0_VersionId></MSH.12_VersionId><MSH.13_SequenceNumber></MSH.13_SequenceNumber></MSH></ns0:MSH_25_GLO_DEF>
<ns0:ACK_24_GLO_DEF xmlns:ns1="http://mycompay.com/myapp/HL7/2X/2.1/interface/v1/Segments" xmlns:ns2="http://mycompay.com/myapp/HL7/2X/2.1/interface/v1/Tables" xmlns:ns3="http://mycompay.com/myapp/HL7/2X/2.1/interface/v1/DataTypes" xmlns:ns0="http://mycompay.com/myapp/HL7/2X/2.1/interface/v1"><MSA_MessageAcknowledgment><MSA.1_AcknowledgmentCode>AE</MSA.1_AcknowledgmentCode><MSA.2_MessageControlId>VJHREGC7.20135210513272</MSA.2_MessageControlId><MSA.3_TextMessage>Error calling EMPI web service</MSA.3_TextMessage></MSA_MessageAcknowledgment><QRD_QueryDefinition><QRD_1_QueryDateTime><TS_0_TimeOfAnEvent>20130521000513</TS_0_TimeOfAnEvent></QRD_1_QueryDateTime><QRD_2_QueryFormatCode>R</QRD_2_QueryFormatCode><QRD_3_QueryPriority>I</QRD_3_QueryPriority><QRD_4_QueryId>KORL3</QRD_4_QueryId><QRD_5_DeferredResponseType></QRD_5_DeferredResponseType><QRD_6_DeferredResponseDateTime><TS_0_TimeOfAnEvent></TS_0_TimeOfAnEvent></QRD_6_DeferredResponseDateTime><QRD_7_QuantityLimitedRequest><Quantity>99</Quantity><Code>RD</Code></QRD_7_QuantityLimitedRequest><QRD_8_WhoSubjectFilter><HCISInternalID>A1-.VJ10341</HCISInternalID><PHN>9089478173</PHN></QRD_8_WhoSubjectFilter><QRD_9_WhatSubjectFilter>MPI</QRD_9_WhatSubjectFilter><QRD_10_WhatDepartmentDataCode></QRD_10_WhatDepartmentDataCode></QRD_QueryDefinition><QRF_QueryFilter><QRF_1_WhereSubjectFilter>UPI</QRF_1_WhereSubjectFilter><QRF_2_WhenDataStartDateTime><TS_0_TimeOfAnEvent></TS_0_TimeOfAnEvent></QRF_2_WhenDataStartDateTime><QRF_3_WhenDataEndDateTime><TS_0_TimeOfAnEvent></TS_0_TimeOfAnEvent></QRF_3_WhenDataEndDateTime><QRF_4_WhatUserQualifier></QRF_4_WhatUserQualifier><QRF_5_OtherQrySubjectFilter><PHN>9089478173</PHN><LastName>Herd</LastName><FirstName>David</FirstName><MiddleName></MiddleName><Gender>M</Gender><DateOfBirth>19400419</DateOfBirth><AddressLine1>6A 1059 Shuswap Ave</AddressLine1><AddressLine2></AddressLine2><City>Sicamous</City><Province>BC</Province><Postal>V0E 2V1</Postal><HomePhone>250-804-8287</HomePhone><EMPI_OtherQrySubjectFilter_13></EMPI_OtherQrySubjectFilter_13><EMPI_OtherQrySubjectFilter_14></EMPI_OtherQrySubjectFilter_14><EMPI_OtherQrySubjectFilter_15>S</EMPI_OtherQrySubjectFilter_15></QRF_5_OtherQrySubjectFilter><QRF_6></QRF_6></QRF_QueryFilter></ns0:ACK_24_GLO_DEF>
<string />
因为我可以看到ACK中的3个部分,我怀疑该错误实际上是第二个错误,它在第一个消息中找到了“Trailing delimiter found”。我在想MLLP管道正在尝试使用第一条消息......如果是这种情况,我该如何允许尾随分隔符?通常我会在派对中设置它并将其与发送端口相关联,但我不是在这里处理发送端口。我的接收端口的一方确实允许尾随分隔符。
答案 0 :(得分:0)
好的,所以我终于弄清楚我的请求/响应接收端口的发送管道有一个属性,我需要将TrailingDelimiterAllowed属性设置为true!