$bulk-member-match HealthLake の オペレーション - AWS HealthLake

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

$bulk-member-match HealthLake の オペレーション

AWS HealthLake は、複数のメンバー一致リクエストを非同期的に処理する $bulk-member-matchオペレーションをサポートします。このオペレーションにより、医療組織は、属性情報とカバレッジ情報を 1 回の一括リクエストで使用して、さまざまな医療システム全体で何百人ものメンバーの一意の識別子を効率的に照合できます。この機能は、大規模なpayer-to-payerデータ交換、メンバー移行、CMS コンプライアンス要件に不可欠であり、FHIR 仕様に従います。

注記

$bulk-member-match オペレーションは、現在実験段階にあり、変更される可能性のある基盤となる FHIR 仕様に基づいています。仕様が進化するにつれて、この API の動作とインターフェイスはそれに応じて更新されます。開発者は、AWS HealthLake リリースノートと関連する FHIR 仕様の更新をモニタリングして、統合に影響を与える可能性のある変更を常に把握することをお勧めします。

このオペレーションは、以下が必要な場合に特に役立ちます。

  • オープン登録期間中に大規模なメンバーマッチングを処理する

  • 支払者間の一括メンバー移行を容易にする

  • 大規模な CMS コンプライアンスデータ交換要件をサポート

  • 医療ネットワーク全体でメンバーコホートを効率的にマッチングする

  • API コールを最小限に抑え、大量のマッチングシナリオの運用効率を向上させる

使用方法

$bulk-member-match オペレーションは、POST メソッドを使用してグループリソースで呼び出される非同期オペレーションです。

POST [base]/Group/$bulk-member-match

一括一致リクエストを送信したら、以下を使用してジョブステータスをポーリングできます。

GET [base]/$bulk-member-match-status/{jobId}

サポートされているパラメータ

HealthLake は、次の FHIR $bulk-member-matchパラメータをサポートしています。

パラメータ タイプ 必須 説明

MemberPatient

患者

はい

一致するメンバーの属性情報を含む患者リソース。

CoverageToMatch

カバレッジ

はい

既存のレコードとの照合に使用されるカバレッジリソース。

CoverageToLink

カバレッジ

いいえ

一致するプロセス中にリンクされるカバレッジリソース。

Consent

同意

はい

認可のための同意リソースも保存されます。これは、同意を必要としない個々の$member-matchオペレーションとは異なります。

一括メンバー一致ジョブを送信する POST リクエスト

次の例は、一括メンバー一致ジョブを送信する POST リクエストを示しています。各メンバーは、必要な MemberPatientCoverageToMatch、および Consentリソースとオプションの を含むMemberBundleパラメータでラップされますCoverageToLink

POST [base]/Group/$bulk-member-match Content-Type: application/fhir+json { "resourceType": "Parameters", "parameter": [ { "name": "MemberBundle", "part": [ { "name": "MemberPatient", "resource": { "resourceType": "Patient", "identifier": [ { "system": "http://example.org/patient-id", "value": "patient-0" } ], "name": [ { "family": "Smith", "given": ["James"] } ], "gender": "male", "birthDate": "1950-01-01" } }, { "name": "CoverageToMatch", "resource": { "resourceType": "Coverage", "status": "active", "identifier": [ { "system": "http://example.org/coverage-id", "value": "cov-0" } ], "subscriberId": "sub-0", "beneficiary": { "reference": "Patient/patient123" }, "relationship": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/subscriber-relationship", "code": "self" } ] }, "payor": [ { "reference": "Organization/org123" } ] } }, { "name": "Consent", "resource": { "resourceType": "Consent", "status": "active", "scope": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/consentscope", "code": "patient-privacy" } ] }, "category": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", "code": "IDSCL" } ] } ], "patient": { "reference": "Patient/patient123" }, "performer": [ { "reference": "Patient/patient123" } ], "sourceReference": { "reference": "http://example.org/DocumentReference/consent-source" }, "policy": [ { "uri": "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition-hrex-consent.html#regular" } ], "provision": { "type": "permit", "period": { "start": "2024-01-01", "end": "2025-12-31" }, "actor": [ { "role": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/provenance-participant-type", "code": "performer" } ] }, "reference": { "identifier": { "system": "http://hl7.org/fhir/sid/us-npi", "value": "9876543210" }, "display": "Old Health Plan" } }, { "role": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", "code": "IRCP" } ] }, "reference": { "identifier": { "system": "http://hl7.org/fhir/sid/us-npi", "value": "0123456789" }, "display": "New Health Plan" } } ], "action": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/consentaction", "code": "disclose" } ] } ] } } }, { "name": "CoverageToLink", "resource": { "resourceType": "Coverage", "status": "active", "identifier": [ { "system": "http://example.org/coverage-link-id", "value": "cov-link-0" } ], "subscriberId": "new-sub-0", "beneficiary": { "reference": "Patient/patient123" }, "relationship": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/subscriber-relationship", "code": "self" } ] }, "payor": [ { "identifier": { "system": "http://hl7.org/fhir/sid/us-npi", "value": "0123456789" }, "display": "New Health Plan" } ] } } ] } ] }

完了したジョブレスポンスと出力

ジョブが完了すると、レスポンスにはジョブメタデータと、一致結果を分類する 3 つのグループリソースを含む FHIR パラメータリソースが含まれます。

{ "datastoreId": "datastoreId", "jobId": "jobId", "status": "COMPLETED", "submittedTime": "2026-03-20T18:45:26.321Z", "numberOfMembers": 3, "numberOfMembersProcessedSuccessfully": 3, "numberOfMembersWithCustomerError": 0, "numberOfMembersWithServerError": 0, "output": { "resourceType": "Parameters", "meta": { "profile": [ "http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/pdex-parameters-multi-member-match-bundle-out" ] }, "parameter": [ { "name": "MatchedMembers", "resource": { "resourceType": "Group", "id": "group1", "text": { "status": "generated", "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Matched members group</div>" }, "contained": [ { "resourceType": "Patient", "id": "1", "identifier": [ { "system": "http://example.org/patient-id", "value": "patient-0" } ], "name": [ { "family": "Smith", "given": ["James"] } ], "gender": "male", "birthDate": "1950-01-01" } ], "type": "person", "actual": true, "code": { "coding": [ { "system": "http://hl7.org/fhir/us/davinci-pdex/CodeSystem/PdexMultiMemberMatchResultCS", "code": "match", "display": "Matched" } ] }, "quantity": 1, "member": [ { "entity": { "extension": [ { "url": "http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/base-ext-match-parameters", "valueReference": { "reference": "#1" } } ], "reference": "Patient/patient123" } } ] } }, { "name": "NonMatchedMembers", "resource": { "resourceType": "Group", "id": "Group2", "text": { "status": "generated", "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Non-matched members group</div>" }, "contained": [ { "resourceType": "Patient", "id": "1", "identifier": [ { "system": "http://example.org/patient-id", "value": "patient-501" } ], "name": [ { "family": "Carter", "given": ["Emily"] } ], "gender": "female", "birthDate": "1985-06-15" } ], "type": "person", "actual": true, "code": { "coding": [ { "system": "http://hl7.org/fhir/us/davinci-pdex/CodeSystem/PdexMultiMemberMatchResultCS", "code": "nomatch", "display": "Not Matched" } ] }, "quantity": 1, "member": [ { "entity": { "extension": [ { "url": "http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/base-ext-match-parameters", "valueReference": { "reference": "#1" } } ], "reference": "Patient/patient123" } } ] } }, { "name": "ConsentConstrainedMembers", "resource": { "resourceType": "Group", "id": "group3", "text": { "status": "generated", "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Consent constrained members group</div>" }, "contained": [ { "resourceType": "Patient", "id": "1", "identifier": [ { "system": "http://example.org/patient-id", "value": "patient-502" } ], "name": [ { "family": "Nguyen", "given": ["David"] } ], "gender": "male", "birthDate": "1972-11-22" } ], "type": "person", "actual": true, "code": { "coding": [ { "system": "http://hl7.org/fhir/us/davinci-pdex/CodeSystem/PdexMultiMemberMatchResultCS", "code": "consentconstraint", "display": "Consent Constraint" } ] }, "quantity": 1, "member": [ { "entity": { "extension": [ { "url": "http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/base-ext-match-parameters", "valueReference": { "reference": "#1" } } ], "reference": "Patient/123" } } ] } } ] } }

出力グループのリソース

完了したジョブは、3 つのグループリソースを含む Parameters リソースを返します。

MatchedMembers グループ

正常に一致したすべてのメンバーに対する患者参照が含まれ、同意制約として分類されません。

Group.quantity フィールドには、それぞれのグループのメンバーの合計数が含まれます。

NonMatchedMembers グループ

一致が見つからないか、複数の一致が特定されたメンバーへの参照が含まれます。

ConsentConstrainedMembers グループ

同意の制約によりデータ共有が妨げられている、正常に一致したすべてのメンバーに対する患者リファレンスが含まれます。以下の条件の両方が存在する場合、同意リソースは制約されていると見なされます。

  • ポリシー URI は で終わり#sensitiveます。これは最も明確で直接的なシグナルです。送信側の支払者は、「このメンバーのデータは機密です — 慎重に処理してください」と明示的に述べています。

    "policy": [{ "uri": "...hrex-consent.html#sensitive" }]
  • 最上位のプロビジョニングタイプは denyです — メンバーはデータ共有を広く拒否しています。

    "provision": { "type": "deny" }

$davinci-data-export との統合

によって返される MatchedMembers Group リソース$bulk-member-matchは、一括メンバーデータを取得する $davinci-data-exportオペレーションで直接使用できます。

POST [base]/Group/{matched-group-id}/$davinci-data-export GET [base]/Group/{matched-group-id}

この統合により、一致したメンバーを最初に一括で識別し、結果のグループリソースを使用して完全なヘルスレコードをエクスポートする効率的なワークフローが可能になります。

パフォーマンス特性

$bulk-member-match オペレーションは大量の処理用に設計されており、非同期的に実行されます。

  • 同時実行数: データストアあたり最大 5 回の同時オペレーション。

  • スケーラビリティ: リクエストごとに最大 500 のメンバーを処理します (5 MB のペイロード制限)。

  • 並列オペレーション: インポート、エクスポート、一括削除の同時オペレーションと互換性があります。

Authorization

API は、以下の必要なスコープで SMART on FHIR 認可プロトコルを使用します。

  • system/Patient.read — 患者リソースを検索して一致させるために必要です。

  • system/Coverage.read — カバレッジ情報を検証するために必要です。

  • system/Group.write — 結果グループリソースを作成するために必要です。

  • system/Organization.read — 条件付き。カバレッジが組織を参照する場合は必須です。

  • system/Practitioner.read — 条件付き。カバレッジが実務者を参照する場合は必須です。

  • system/PractitionerRole.read — 条件付き、カバレッジが実務者ロールを参照する場合は必須です。

  • system/Consent.write — 条件付き。同意リソースが指定されている場合は必須です。

オペレーションは、プログラムによるアクセスの AWS IAM 署名バージョン 4 (SigV4) 認可もサポートしています。

エラー処理

オペレーションは、次のエラー条件を処理します。

  • 400 不正なリクエスト: 無効なリクエスト形式、必須パラメータの欠落、またはペイロードがサイズ制限 (500 メンバーまたは 5 MB) を超えています。

  • 422 未処理のエンティティ: ジョブ実行中の処理エラー。

  • 個々のメンバーエラー: 特定のメンバーが処理に失敗すると、オペレーションは残りのメンバーを続行し、適切な理由コードを使用して NonMatchedMembers グループにエラーの詳細を含めます。たとえば、患者が birthDateパラメータを欠落MemberBundleしている は、次のエラーを返します。

    "errors": [ { "memberIndex": 1, "jsonBlob": { "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "invalid", "diagnostics": "MemberPatient.birthDate is required" } ], "statusCode": 400 } } ]

エラーの詳細は、ステータスポーリングエンドポイントを通じて利用でき、以下が含まれます。

  • numberOfMembersWithCustomerError: 検証エラーまたは入力エラーがあるメンバーの数。

  • numberOfMembersWithServerError: サーバー側の処理エラーがあるメンバーの数。