View a markdown version of this page

$bulk-member-matchoperasi untuk HealthLake - AWS HealthLake

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

$bulk-member-matchoperasi untuk HealthLake

AWS HealthLake mendukung $bulk-member-match operasi untuk memproses beberapa permintaan kecocokan anggota secara asinkron. Operasi ini memungkinkan organisasi perawatan kesehatan untuk secara efisien mencocokkan ratusan pengidentifikasi unik anggota di berbagai sistem perawatan kesehatan menggunakan informasi demografis dan cakupan dalam satu permintaan massal. Kemampuan ini sangat penting untuk pertukaran payer-to-payer data skala besar, transisi anggota, dan persyaratan kepatuhan CMS dan mengikuti spesifikasi FHIR.

catatan

$bulk-member-matchOperasi ini didasarkan pada spesifikasi FHIR yang mendasari yang saat ini eksperimental dan dapat berubah. Seiring berkembangnya spesifikasi, perilaku dan antarmuka API ini akan diperbarui sesuai dengan itu. Pengembang disarankan untuk memantau catatan HealthLake rilis AWS dan pembaruan spesifikasi FHIR yang relevan agar tetap mendapat informasi tentang perubahan apa pun yang dapat memengaruhi integrasi mereka.

Operasi ini sangat berguna ketika Anda perlu:

  • Memproses pencocokan anggota pada skala selama periode pendaftaran terbuka

  • Memfasilitasi transisi anggota massal antar pembayar

  • Mendukung persyaratan pertukaran data kepatuhan CMS skala besar

  • Secara efisien mencocokkan kelompok anggota di seluruh jaringan perawatan kesehatan

  • Minimalkan panggilan API dan tingkatkan efisiensi operasional untuk skenario pencocokan volume tinggi

Penggunaan

$bulk-member-matchOperasi ini adalah operasi asinkron yang dipanggil pada sumber daya Grup menggunakan metode POST:

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

Setelah mengirimkan permintaan kecocokan massal, Anda dapat melakukan polling status pekerjaan menggunakan:

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

Parameter yang didukung

HealthLake mendukung $bulk-member-match parameter FHIR berikut:

Parameter Tipe Diperlukan Deskripsi

MemberPatient

Pasien

Ya

Sumber daya pasien yang berisi informasi demografis agar anggota dicocokkan.

CoverageToMatch

Cakupan

Ya

Sumber daya cakupan yang akan digunakan untuk pencocokan dengan catatan yang ada.

CoverageToLink

Cakupan

Tidak

Sumber daya cakupan yang akan ditautkan selama proses pencocokan.

Consent

Persetujuan

Ya

Sumber daya persetujuan untuk tujuan otorisasi juga disimpan. Ini berbeda dengan $member-match operasi individu di mana Persetujuan tidak diperlukan.

Permintaan POST untuk mengirimkan pekerjaan kecocokan anggota massal

Contoh berikut menunjukkan permintaan POST untuk mengirimkan pekerjaan kecocokan anggota massal. Setiap anggota dibungkus dalam MemberBundle parameter yang berisi yang diperlukanMemberPatient,CoverageToMatch, dan Consent sumber daya, bersama dengan opsionalCoverageToLink.

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" } ] } } ] } ] }

Menyelesaikan respons pekerjaan dengan output

Ketika pekerjaan selesai, respons mencakup metadata pekerjaan dan sumber daya Parameter FHIR yang berisi tiga sumber daya Grup yang mengkategorikan hasil pencocokan.

{ "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" } } ] } } ] } }

Sumber daya Grup Keluaran

Pekerjaan yang diselesaikan mengembalikan sumber daya Parameter yang berisi tiga sumber daya Grup:

MatchedMembers Kelompok

Berisi referensi Pasien untuk semua anggota yang berhasil dicocokkan dan tidak dikategorikan sebagai kendala persetujuan.

Group.quantityBidang berisi jumlah total anggota di masing-masing kelompok masing-masing.

NonMatchedMembers Kelompok

Berisi referensi ke anggota di mana tidak ada kecocokan yang ditemukan atau beberapa kecocokan diidentifikasi.

ConsentConstrainedMembers Kelompok

Berisi referensi Pasien untuk semua anggota yang berhasil dicocokkan di mana kendala persetujuan mencegah berbagi data. Sumber daya Persetujuan dianggap dibatasi ketika kedua kondisi berikut hadir:

  • URI kebijakan berakhir #sensitive — Ini adalah sinyal paling jelas dan paling langsung. Pembayar yang mengirimkan secara eksplisit mengatakan: “Data anggota ini sensitif — tangani dengan hati-hati.”

    "policy": [{ "uri": "...hrex-consent.html#sensitive" }]
  • Jenis ketentuan tingkat atas adalah deny — Anggota secara luas menolak berbagi data.

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

Integrasi dengan $ davinci-data-export

Sumber daya MatchedMembers Grup yang dikembalikan oleh $bulk-member-match dapat langsung digunakan dengan $davinci-data-export operasi untuk mengambil data anggota massal:

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

Integrasi ini memungkinkan alur kerja yang efisien di mana Anda pertama kali mengidentifikasi anggota yang cocok secara massal, kemudian mengekspor catatan kesehatan lengkap mereka menggunakan sumber daya Grup yang dihasilkan.

Karakteristik kinerja

$bulk-member-matchOperasi ini dirancang untuk pemrosesan volume tinggi dan berjalan secara asinkron:

  • Konkurensi: Maksimum 5 operasi bersamaan per penyimpanan data.

  • Skalabilitas: Menangani hingga 500 anggota per permintaan (batas muatan 5 MB).

  • Operasi paralel: Kompatibel dengan operasi impor, ekspor, atau penghapusan massal bersamaan.

Otorisasi

API menggunakan SMART pada protokol otorisasi FHIR dengan cakupan wajib berikut:

  • system/Patient.read— Diperlukan untuk mencari dan mencocokkan sumber daya pasien.

  • system/Coverage.read— Diperlukan untuk memvalidasi informasi cakupan.

  • system/Group.write— Diperlukan untuk membuat sumber daya Grup hasil.

  • system/Organization.read— Bersyarat, diperlukan jika cakupan referensi organisasi.

  • system/Practitioner.read— Bersyarat, diperlukan jika cakupan referensi praktisi.

  • system/PractitionerRole.read— Bersyarat, diperlukan jika cakupan referensi peran praktisi.

  • system/Consent.write— Bersyarat, diperlukan jika sumber daya persetujuan disediakan.

Operasi ini juga mendukung otorisasi AWS IAM Signature Version 4 (SiGv4) untuk akses terprogram.

Penanganan kesalahan

Operasi menangani kondisi kesalahan berikut:

  • 400 Permintaan Buruk: Format permintaan tidak valid, parameter yang diperlukan tidak ada, atau muatan melebihi batas ukuran (500 anggota atau 5 MB).

  • 422 Entitas yang Tidak Dapat Diproses: Memproses kesalahan selama eksekusi pekerjaan.

  • Kesalahan anggota individu: Ketika anggota tertentu gagal untuk memproses, operasi berlanjut dengan anggota yang tersisa dan mencakup rincian kesalahan dalam NonMatchedMembers Grup dengan kode alasan yang sesuai. Misalnya, MemberBundle dengan Pasien yang hilang birthDate parameter akan mengembalikan kesalahan berikut:

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

Detail kesalahan tersedia melalui titik akhir pemungutan suara status dan termasuk:

  • numberOfMembersWithCustomerError: Hitungan anggota dengan validasi atau kesalahan input.

  • numberOfMembersWithServerError: Hitungan anggota dengan kesalahan pemrosesan sisi server.