FHIR Tips:リソース新規登録時に特定のIDをリソースの論理IDとして登録する方法
FHIR関連トレーニングの中で複数の方よりいただいたご質問をご紹介していきます。
IRIS for HealthのFHIRリポジトリでは、リソースPOST時のデフォルトの動作としてリポジトリ内でユニークな論理ID(id)を自動的に付与します。
例えば、以下のようなPatientリソースをPOSTした場合
{
"resourceType": "Patient",
"address": [
{
"postalCode": "1600023",
"text": "東京都新宿区西新宿6丁目"
}
],
"birthDate": "1970-01-01",
"gender": "male",
"identifier": [
{
"value": "P101001"
}
],
"name": [
{
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/iso21090-EN-representation",
"valueCode": "IDE"
}
],
"use": "official",
"text": "山田 太郎",
"family": "山田",
"given": [
"太郎"
]
},
{
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/iso21090-EN-representation",
"valueCode": "SYL"
}
],
"use": "official",
"text": "ヤマダ タロウ",
"family": "ヤマダ",
"given": [
"タロウ"
]
}
],
"telecom": [
{
"value": "0312345678"
}
]
}
以下 "id":"1" とあるように、リソースidにリポジトリ内でユニークとなる値を自動で設定します。(Patientリソースの一部抜粋)
"id": "1",
"meta": {
"lastUpdated": "2023-06-02T07:40:35Z",
"versionId": "1"
}
Patientリソースを例に、もともとユニークな値である患者IDをFHIRリポジトリのリソースidとして使用したい!という場合の登録方法をご紹介します。
新規登録時はPOST要求を使用しますが、PUT要求を利用することでリソースidを指定した登録が行えます。
指定するURLは、例えば患者IDが P101001 の場合
http://localhost:52773/csp/healthshare/r4fhirnamespace/fhir/r4/Patient/P101001
のように指定します。
例のエンドポイントのURL = http://localhost:52773/csp/healthshare/r4fhirnamespace/fhir/r4
また、Bodyに指定するPatientリソースのJSONにも、
"id": "P101001"
を指定します。
実行例は以下の通りです。
PUT要求例(Postmanを使用しています).png)
確認のためのGET要求は以下の通りです。
http://localhost:52773/csp/healthshare/r4fhirnamespace/fhir/r4/Patient/…
.png)
《ご参考》
FHIR標準仕様の中でも、FHIRリポジトリにまだ存在のないリソースに対するPUT要求についての記載があり、FHIRサーバがPUT要求を許可するかどうかを決定できる、と記載があります。
https://www.hl7.org/fhir/http.html#upsert
上記ドキュメントの中では、FHIRサーバの CapabilityStatement.rest.resource.updateCreate に存在のないリソースに対するPUTを許可するかどうかを示すことになっています。
IRISのFHIRリポジトリのCapabilityStatementを確認すると
(URL例:http://localhost:52773/csp/healthshare/r4fhirnamespace/fhir/r4/metadata).png)
updateCreateがtrueとなっているため、許可されていることを確認できます。