FHIR 要求と FHIR 応答
この章では、FHIR® サーバおよび FHIR 相互運用アダプタで使用される要求と応答について説明します。
インターシステムズの FHIR クライアントで使用される要求と応答の詳細は、"FHIR クライアント" を参照してください。
プロダクション以外の要求/応答
相互運用プロダクションを使用しない FHIR サーバの場合は、以下のようになります。
FHIR ペイロードへのアクセス
既定では、REST ハンドラで FHIR 要求を受信すると、FHIR ペイロードが Request オブジェクト (HS.FHIRServer.API.Data.Request) の Json プロパティに保存されます。これにより、JSON 構造がダイナミック・オブジェクトに自動的に取り込まれます。XML が含まれる FHIR 要求は、JSON に変換された後に、Json プロパティのダイナミック・オブジェクトとして表されます。FHIR サーバからの応答 (HS.FHIRServer.API.Data.Response) にも FHIR データの Json プロパティは含まれます。
FHIR データを操作するには、まず、要求または応答の Json プロパティにアクセスします。FHIR ペイロードを入手したら、それをダイナミック・オブジェクトとして操作できます。例については、"FHIR データ" を参照してください。
相互運用の要求/応答
相互運用プロダクションを活用する FHIR サーバ、FHIR 相互運用アダプタ、または FHIR クライアントの場合は、以下のようになります。
これらのクラスには、FHIR ペイロードを指す QuickStreamId プロパティが含まれます。
FHIR ペイロードへのアクセス
FHIR の実装で相互運用プロダクションが使用されている場合は、プロダクションが使用されていない実装とは異なり、メッセージ・オブジェクトの FHIR ペイロードにアクセスします。プロダクションベースの実装では、要求および応答メッセージ (HS.FHIRServer.Interop.RequestOpens in a new tab および HS.FHIRServer.Interop.ResponseOpens in a new tab) には、FHIR ペイロードを含む QuickStream オブジェクトへのアクセスに使用される QuickStreamId が含まれています。相互運用要求メッセージには、HS.FHIRServer.API.Data.Request タイプの Request プロパティも含まれますが、この Request プロパティを FHIR ペイロードへのアクセスに使用することはできません。これは、その Json プロパティが一時的であるためです (相互運用応答についても、これは当てはまります)。その結果、FHIR ペイロードにアクセスする必要のあるプロダクションのビジネス・ホストは、QuickStreamID を使用して、ペイロードを取得する必要があります。
ペイロードが JSON 形式である場合、ビジネス・ホストは、ペイロードを変更するため、そのペイロードにアクセスしてダイナミック・オブジェクトに変換できます。例えば、BPL ビジネス・プロセスでは、以下のコードを使用して、JSON 形式の要求メッセージの FHIR ペイロードにアクセスし、変更することができます。
//Identify payload as a Patient resource and convert to dynamic object
if ((request.Request.RequestMethod="POST") & (request.Request.RequestPath="Patient")){
set stream = ##class(HS.SDA3.QuickStream).%OpenId(request.QuickStreamId)
set myPatient = ##class(%DynamicObject).%FromJSON(stream)
// Modify Patient resource
do myPatient.%Set("active", 0, "boolean")
//Update payload with modified Patient resource
do myPatient.%ToJSON(stream)
do stream.%Save()
}
FHIR データをダイナミック・オブジェクトとして操作するその他の例は、"FHIR データ" を参照してください。
ObjectScript アプリケーション
ObjectScript アプリケーションがリソース・リポジトリからリソースを取得する必要がある場合は、プロダクション以外の要求オブジェクト (HS.FHIRServer.API.Data.Request) を構築してから、それをエンドポイントのサービスにディスパッチできます。アプリケーションでデータを取得する場合は、データはプロダクション以外の応答オブジェクト (HS.FHIRServer.API.Data.Response) として返されます。詳細は、"DispatchRequest の直接呼び出し" を参照してください。