HL7 メッセージからの C-CDA ドキュメントの生成
インターシステムズ製品には、HL7 メッセージを受け付けて SDA (内部表現) に変換してから、C-CDA ドキュメントに変換できる変換が含まれます。その後、C-CDA を XDS ドキュメント・リポジトリに対して提供および登録できます。
HL7 から C-CDA への Provide and Register のメッセージ・トレース
以下の図に、C-CDA に変換されてから XDS Provide and Register が実行される HL7 メッセージの、アノテーション付きのメッセージ・トレースを示します。Provide and Register には、C-CDA から抽出された MRN から MPI ID を取得するための PIX 検索が含まれます。
図に示されているテスト・サービスは、単純なメッセージ・ルータです。トレース操作は、トレース内の中間処理の各段階を可視化するユーティリティです。図中の番号は、以下の手順の各段階に一致します。
HL7 から C-CDA への Provide and Register の手順
HL7 を C-CDA に変換するようインターシステムズ製品を設定するには、以下の手順に従います。
-
HL7 入力サービス (例えば、HL7 ファイル・サービス) を作成します。HL7 メッセージを TargetConfigNames 設定で指定された何らかの操作に転送するよう HL7 入力サービスを設定します。
-
前の手順で指定した操作を作成し、以下を実行するよう設定します。
-
HL7 メッセージを SDA3 に変換する
-
SDA を C-CDA 1.1 または 2.1 のドキュメントに変換する
-
C-CDA を Provide and Register 要求にパッケージ化する
-
Provide and Register 要求を InterSystems Document Source に送信する
-
-
Document Source は、“CDA ドキュメントの提供および登録” のセクションで説明されているパスに従います。
HL7 から C-CDA への Provide and Register のコンポーネントと設定
コンポーネント | 設定 |
---|---|
ビジネス・ホスト | HL7 サービス : EnsLib.HL7.Service.FileServiceOpens in a new tab (または類似) |
ビジネス・ホスト | HL7 から C-CDA へのトランスフォーマ : カスタム・ビジネス・オペレーション |
ビジネス・ホスト | Document Source : HS.IHE.XDSb.DocumentSource.OperationsOpens in a new tab |
ビジネス・ホスト | PIX Consumer : HS.IHE.PIXv3.Consumer.OperationsOpens in a new tab |
プロダクション設定 | HL7 サービス内の TargetConfigNames |
プロダクション・メッセージ | HS.Message.IHE.XDSb.ProvideAndRegisterRequestOpens in a new tab |
プロダクション・メッセージ | HS.Message.XMLMessageOpens in a new tab :
|
プロダクション・メッセージ | HS.Message.PatientSearchRequestOpens in a new tab |
プロダクション・メッセージ | HS.Message.PatientSearchResponseOpens in a new tab |
XSL 変換 | SDA-to-CCDAv21-CCD.xsl または他の SDA から C-CDA への変換 |
サービス・レジストリ・エントリ | XDSb.Repository |
サービス・レジストリ・エントリ | PIXv3.Manager |
外部 IHE アクター・エンドポイント | XDS ドキュメント・リポジトリ |
外部 IHE アクター・エンドポイント | PIX Manager |
HL7 メッセージから C-CDA ドキュメントを生成するためのトランスフォーマ・ビジネス・オペレーションの例
以下に、HL7 メッセージを受け付けて C-CDA ドキュメントに変換するサンプル・ビジネス・オペレーションを示します。
Class Test.HL7Transformer Extends (Ens.BusinessOperation)
[ Inheritance = right, ProcedureBlock ]
{
Parameter INVOCATION = "Queue";
/// XDSb source operations component
Property XDSbSourceOperations As Ens.DataType.ConfigName
[ InitialExpression = "HS.IHE.XDSb.DocumentSource.Operations"];
Parameter SETTINGS As %String = "XDSbSourceOperations";
XData MessageMap
{
<MapItems>
<MapItem MessageType="EnsLib.HL7.Message">
<Method>ProcessHL7Message</Method>
</MapItem>
</MapItems>
}
/// Process an inbound HL7 v2.5.1 message
Method ProcessHL7Message(pRequest As EnsLib.HL7.Message,
Output pResponse As EnsLib.HL7.Message) As %Status
{
Try {
// Convert the HL7 message to SDA3
Set tSC = ##class(HS.Gateway.HL7.HL7ToSDA3).GetSDA(pRequest,.tSDA3Stream)
Quit:$$$ISERR(tSC)
// Transform the SDA3 to a C-CDA
Set tTransformer = ##class(HS.Util.XSLTTransformer).%New()
Set tSC= tTransformer.Transform(tSDA3Stream,"SDA3/SDA-to-CCDA-CCD.xsl",.tCDAStream)
Quit:$$$ISERR(tSC)
// Create a Provide and Register
Set tRequest = ##class(HS.Message.IHE.XDSb.ProvideAndRegisterRequest).%New()
Set tDocument = ##class(HS.Message.IHE.XDSb.Document).%New()
Set tDocument.FormatCode=##class(HS.IHE.XDSb.Types.CodedValue).Create(
"urn:hl7-org:sdwg:ccda-structuredBody:1.1","1.3.6.1.4.1.19376.1.2.3",
"Consolidated CDA R1.1 Structured Body Document")
Set tDocument.MimeType="text/xml"
// Copy the C-CDA into the message
Do tDocument.BodyCharacter.CopyFrom(tCDAStream)
Do tRequest.Documents.Insert(tDocument)
// Call the document source operation
Set tSC = ..SendRequestSync(..XDSbSourceOperations,tRequest,.tResponse)
Quit:$$$ISERR(tSC)
} Catch ex {
Set tSC= ex.AsStatus()
}
Quit tSC
}
}