Перехват и изменение ответного сообщения Ack BizTalk 2013 R2
Я написал собственный ассемблер компонентов конвейера для изменения ответного сообщения ACK HL7.
Я призвал Assemble(pContext)
из Microsoft.Solutions.BTAHL7.Pipelines.HL72fAsm
в реализованном методе Assemble(pContext)
из IAssemblerComponent
интерфейс дает мне результат IBaseMessage
который является HL7, тогда я делаю свои манипуляции на нем, чтобы исправить одно из полей и вернуть измененный IBaseMessage
,
Все это прекрасно работает, я попробовал EvenLogger проверить это.
Но приложение Sender не получает измененное сообщение, оно получает автоматически сгенерированное сообщение.
Есть ли что-то, что я упускаю, почему я не могу получить результат пользовательского ассемблера из SendPipeline двухстороннего порта приема
Примечание. Проводник конфигурации BTAHL7 настроен на исходный режим. Конвейер отправки на порт приема RequestResponse настроен на мой пользовательский конвейер.
1 ответ
Мое предложение после всех более важных моментов.
Первое, что вы должны сказать работодателю или клиенту - НЕТ. Это неверный HL7, и вы не можете это поддержать.
Но, если они не в состоянии не желать выполнять, следующее, что вам нужно сделать, это сообщить своему руководству, что их несоблюдение будет стоить вам много дополнительного времени и денег для размещения. Полностью поддержать это изменение, вероятно, будет стоить дороже, чем реализовать деловые сообщения, я абсолютно серьезно. Это не проблема с BizTalk Server, вашим приложением или вами.
В зависимости от отношений, ваше руководство может законно спросить их, как они собираются платить за эту настройку. Нарушение HL7 будет стоить вашей стороне намного дороже, чем их исправлению.
Следующее, и, возможно, самое важное, из-за характера содержимого сообщений, HL7 предъявляет очень строгие требования к полноте, которые они принципиально нарушают. Торговый партнер должен полностью задокументировать это требование, чтобы стать его владельцем, потому что это имеет огромное значение, так как он нарушает отслеживание / отслеживание с вашей стороны.
Это означает, что вам будет гораздо сложнее исследовать и решать проблемы с сообщениями , а не их. Это может вызвать юридические проблемы или проблемы с соблюдением требований, о которых ваша сторона должна знать.
Итак, при условии, что все технические, медицинские и юридические группы удовлетворены, первое, что я бы попробовал, - это конвейерный компонент, который просто меняет два значения, MSH10 и MSA02. Таким образом, они получат оба значения.
Наконец, вот новое решение. Так как это их проблема, и проблема для каждого из их торговых партнеров, что если вы предложите им помочь исправить ее. Все, что нужно сделать, это то, что я предложил, поменяйте местами MSH10 и MSA02 на полученное сообщение.