

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

# AWS HealthLake referensi
<a name="reference"></a>

Materi referensi pendukung berikut tersedia untuk SMART di FHIR, FHIR, dan. AWS HealthLake

**catatan**  
Semua HealthLake tindakan asli dan tipe data dijelaskan dalam referensi terpisah. Untuk informasi lebih lanjut, lihat [Referensi API *AWS HealthLake *](https://docs.aws.amazon.com/healthlake/latest/APIReference/).

**Topics**
+ [SMART di FHIR](reference-smart-on-fhir.md)
+ [FHIR R4](reference-fhir.md)
+ [Kepatuhan](reference-compliance.md)
+ [HealthLake](reference-healthlake.md)

# SMART pada dukungan FHIR untuk AWS HealthLake
<a name="reference-smart-on-fhir"></a>

Aplikasi Medis yang Dapat Diganti dan Teknologi yang Dapat Digunakan Kembali (SMART) pada penyimpanan HealthLake data berkemampuan FHIR memungkinkan akses ke SMART pada aplikasi yang sesuai dengan FHIR. HealthLake Data diakses dengan mengautentikasi dan mengotorisasi permintaan menggunakan server otorisasi pihak ketiga. Jadi, alih-alih mengelola kredensil pengguna melalui AWS Identity and Access Management, Anda melakukannya menggunakan SMART pada server otorisasi yang sesuai dengan FHIR.

**catatan**  
HealthLake mendukung SMART pada FHIR versi 1.0 dan 2.0. Untuk mempelajari lebih lanjut tentang kerangka kerja ini, lihat [Peluncuran Aplikasi SMART](https://www.hl7.org/fhir/smart-app-launch/) di dokumentasi *FHIR R4*.  
HealthLake penyimpanan data mendukung kerangka kerja otentikasi dan otorisasi berikut untuk SMART pada permintaan FHIR:  
**OpenID (AuthN)**: untuk mengautentikasi aplikasi orang atau klien adalah siapa (atau apa) yang mereka klaim. 
**OAuth 2.0 (AuthZ)**: untuk mengotorisasi sumber daya FHIR mana di penyimpanan HealthLake data Anda, permintaan yang diautentikasi dapat dibaca atau ditulis. Ini ditentukan oleh cakupan yang diatur di server otorisasi Anda.

Anda dapat membuat SMART di penyimpanan data berkemampuan FHIR menggunakan AWS CLI atau AWS SDKs. Lihat informasi yang lebih lengkap di [Membuat penyimpanan HealthLake data](managing-data-stores-create.md).

**Topics**
+ [Memulai SMART di FHIR](reference-smart-on-fhir-getting-started.md)
+ [HealthLake persyaratan otentikasi untuk SMART di FHIR](reference-smart-on-fhir-authentication.md)
+ [SMART pada cakupan FHIR OAuth 2.0 didukung oleh HealthLake](reference-smart-on-fhir-oauth-scopes.md)
+ [Validasi Token menggunakan AWS Lambda](reference-smart-on-fhir-token-validation.md)
+ [Menggunakan otorisasi berbutir halus dengan SMART pada penyimpanan data yang diaktifkan FHIR HealthLake](reference-smart-on-fhir-fine-grained-authorization.md)
+ [Mengambil SMART pada Dokumen Penemuan FHIR](reference-smart-on-fhir-discovery-document.md)
+ [Membuat permintaan FHIR REST API pada penyimpanan data berkemampuan SMART HealthLake](reference-smart-on-fhir-request-example.md)

# Memulai SMART di FHIR
<a name="reference-smart-on-fhir-getting-started"></a>

Topik berikut menjelaskan cara memulai dengan SMART pada otorisasi FHIR untuk. AWS HealthLake Mereka termasuk sumber daya yang harus Anda sediakan di AWS akun Anda, pembuatan SMART di penyimpanan HealthLake data yang diaktifkan FHIR, dan contoh bagaimana SMART pada aplikasi klien FHIR berinteraksi dengan server otorisasi dan penyimpanan data. HealthLake 

**Topics**
+ [Menyiapkan sumber daya untuk SMART di FHIR](#smart-on-fhir-resources)
+ [Alur kerja aplikasi klien untuk SMART di FHIR](#smart-on-fhir-client-app-workflow)

## Menyiapkan sumber daya untuk SMART di FHIR
<a name="smart-on-fhir-resources"></a>

Langkah-langkah berikut menentukan bagaimana SMART pada permintaan FHIR ditangani oleh HealthLake dan sumber daya yang dibutuhkan agar mereka berhasil. Elemen-elemen berikut bekerja sama dalam alur kerja untuk membuat SMART pada permintaan FHIR:
+ **Pengguna akhir**: Umumnya, pasien atau dokter menggunakan SMART pihak ketiga pada aplikasi FHIR untuk mengakses data di penyimpanan data. HealthLake 
+ **SMART pada aplikasi FHIR (disebut sebagai aplikasi klien)**: Aplikasi yang ingin mengakses data yang ditemukan di penyimpanan HealthLake data.
+ Server **otorisasi: Server** yang sesuai dengan OpenID Connect yang dapat mengautentikasi pengguna dan mengeluarkan token akses.
+ **Penyimpanan HealthLake data: SMART pada penyimpanan** HealthLake data berkemampuan FHIR yang menggunakan fungsi Lambda untuk menanggapi permintaan FHIR REST yang menyediakan token pembawa.

Agar elemen-elemen ini bekerja sama, Anda harus membuat sumber daya berikut.

**catatan**  
[Sebaiknya buat SMART Anda di penyimpanan HealthLake data berkemampuan FHIR setelah Anda menyiapkan server otorisasi, menentukan [cakupan](reference-smart-on-fhir-oauth-scopes.md) yang diperlukan di dalamnya, dan membuat AWS Lambda fungsi untuk menangani introspeksi token.](reference-smart-on-fhir-token-validation.md)

**1. Siapkan titik akhir server otorisasi**  
Untuk menggunakan kerangka kerja SMART pada FHIR, Anda perlu menyiapkan server otorisasi pihak ketiga yang dapat memvalidasi permintaan FHIR REST yang dibuat di penyimpanan data. Untuk informasi selengkapnya, lihat [HealthLake persyaratan otentikasi untuk SMART di FHIR](reference-smart-on-fhir-authentication.md).

**2. Tentukan cakupan pada server otorisasi Anda untuk mengontrol tingkat akses penyimpanan HealthLake data**  
Kerangka kerja SMART on FHIR menggunakan OAuth cakupan untuk menentukan sumber daya FHIR apa yang dapat diakses oleh permintaan yang diautentikasi dan sejauh mana. Mendefinisikan cakupan adalah cara untuk merancang hak istimewa paling sedikit. Untuk informasi selengkapnya, lihat [SMART pada cakupan FHIR OAuth 2.0 didukung oleh HealthLake](reference-smart-on-fhir-oauth-scopes.md).

**3. Siapkan AWS Lambda fungsi yang mampu melakukan introspeksi token**  
Permintaan FHIR REST yang dikirim oleh aplikasi klien pada SMART pada penyimpanan data berkemampuan FHIR berisi JSON Web Token (JWT). Untuk informasi lebih lanjut, lihat [Menguraikan kode](reference-smart-on-fhir-token-validation.md) JWT.

**4. Buat SMART di penyimpanan HealthLake data berkemampuan FHIR**  
Untuk membuat SMART di penyimpanan HealthLake data FHIR, Anda perlu menyediakan file`IdentityProviderConfiguration`. Untuk informasi selengkapnya, lihat [Membuat penyimpanan HealthLake data](managing-data-stores-create.md).

## Alur kerja aplikasi klien untuk SMART di FHIR
<a name="smart-on-fhir-client-app-workflow"></a>

Bagian berikut menjelaskan cara meluncurkan aplikasi klien dan membuat permintaan FHIR REST yang berhasil pada penyimpanan HealthLake data dalam konteks SMART di FHIR.

**1. Buat `GET` permintaan ke Pengenal Sumber Daya Seragam Terkenal menggunakan aplikasi klien**  
Aplikasi klien berkemampuan SMART harus membuat `GET` permintaan untuk menemukan titik akhir otorisasi penyimpanan HealthLake data Anda. Ini dilakukan melalui permintaan Pengenal Sumber Daya Seragam Terkenal (URI). Untuk informasi selengkapnya, lihat [Mengambil SMART pada Dokumen Penemuan FHIR](reference-smart-on-fhir-discovery-document.md).

**2. Minta akses dan cakupan**  
Aplikasi klien menggunakan titik akhir otorisasi dari server otorisasi, sehingga pengguna dapat login. Proses ini mengotentikasi pengguna. Cakupan digunakan untuk menentukan sumber daya FHIR apa yang ada di penyimpanan HealthLake data Anda yang dapat diakses oleh aplikasi klien. Untuk informasi selengkapnya, lihat [SMART pada cakupan FHIR OAuth 2.0 didukung oleh HealthLake](reference-smart-on-fhir-oauth-scopes.md). 

**3. Token akses**  
Sekarang pengguna telah diautentikasi, aplikasi klien menerima token akses JWT dari server otorisasi. Token ini disediakan ketika aplikasi klien mengirimkan permintaan FHIR REST ke HealthLake. Untuk informasi selengkapnya, lihat [Validasi token](reference-smart-on-fhir-token-validation.md).

**4. Buat permintaan FHIR REST API di SMART di penyimpanan data berkemampuan HealthLake FHIR**  
Aplikasi klien sekarang dapat mengirim permintaan FHIR REST API ke titik akhir penyimpanan HealthLake data menggunakan token akses yang disediakan oleh server otorisasi. Untuk informasi selengkapnya, lihat [Membuat permintaan FHIR REST API pada penyimpanan data berkemampuan SMART HealthLake](reference-smart-on-fhir-request-example.md).

**5. Validasi token akses JWT**  
Untuk memvalidasi token akses yang dikirim dalam permintaan FHIR REST, gunakan fungsi Lambda. Lihat informasi yang lebih lengkap di [Validasi Token menggunakan AWS Lambda](reference-smart-on-fhir-token-validation.md).

# HealthLake persyaratan otentikasi untuk SMART di FHIR
<a name="reference-smart-on-fhir-authentication"></a>

Untuk mengakses sumber daya FHIR di SMART pada penyimpanan HealthLake data berkemampuan FHIR, aplikasi klien harus diotorisasi oleh server otorisasi yang OAuth sesuai dengan 2.0 dan menyajikan token OAuth Pembawa sebagai bagian dari permintaan FHIR REST API. Untuk menemukan titik akhir server otorisasi, gunakan HealthLake SMART pada FHIR Discovery Document melalui `Well-Known` Uniform Resource Identifier. Untuk mempelajari lebih lanjut tentang proses ini, lihat[Mengambil SMART pada Dokumen Penemuan FHIR](reference-smart-on-fhir-discovery-document.md).

Saat Anda membuat SMART di penyimpanan HealthLake data FHIR, Anda harus menentukan titik akhir server otorisasi dan titik akhir token dalam `metadata` elemen permintaan. `CreateFHIRDatastore` Untuk mempelajari lebih lanjut tentang mendefinisikan `metadata` elemen, lihat[Membuat penyimpanan HealthLake data](managing-data-stores-create.md).

Menggunakan titik akhir server otorisasi, aplikasi klien akan mengautentikasi pengguna dengan layanan otorisasi. Setelah diotorisasi dan diautentikasi, JSON Web Token (JWT) dihasilkan oleh layanan otorisasi dan diteruskan ke aplikasi klien. Token ini berisi cakupan sumber daya FHIR yang diizinkan untuk digunakan oleh aplikasi klien, yang pada gilirannya membatasi data apa yang dapat diakses pengguna. Secara opsional, jika ruang lingkup peluncuran disediakan maka respons akan berisi detail tersebut. Untuk mempelajari lebih lanjut tentang SMART pada cakupan FHIR yang didukung oleh HealthLake, lihat. [SMART pada cakupan FHIR OAuth 2.0 didukung oleh HealthLake](reference-smart-on-fhir-oauth-scopes.md)

Menggunakan JWT yang diberikan oleh server otorisasi, aplikasi klien membuat panggilan FHIR REST API ke SMART di penyimpanan data berkemampuan FHIR. HealthLake Untuk memvalidasi dan memecahkan kode JWT, Anda perlu membuat fungsi Lambda. HealthLake memanggil fungsi Lambda ini atas nama Anda saat permintaan FHIR REST API diterima. Untuk melihat contoh fungsi Lambda starter, lihat. [Validasi Token menggunakan AWS Lambda](reference-smart-on-fhir-token-validation.md)

## Elemen server otorisasi diperlukan untuk membuat SMART di penyimpanan data berkemampuan HealthLake FHIR
<a name="datastore-auth-server"></a>

Dalam `CreateFHIRDatastore` permintaan, Anda perlu memberikan titik akhir otorisasi dan titik akhir token sebagai bagian dari `metadata` elemen dalam objek. `IdentityProviderConfiguration` Baik titik akhir otorisasi dan titik akhir token diperlukan. Untuk melihat contoh bagaimana ini ditentukan dalam `CreateFHIRDatastore` permintaan, lihat[Membuat penyimpanan HealthLake data](managing-data-stores-create.md).

## Klaim yang diperlukan untuk menyelesaikan permintaan FHIR REST API pada SMART di penyimpanan data berkemampuan HealthLake FHIR
<a name="server-response"></a>

 AWS Lambda Fungsi Anda harus berisi klaim berikut agar menjadi permintaan FHIR REST API yang valid pada SMART di penyimpanan HealthLake data berkemampuan FHIR.
+ `nbf`: [(Bukan Sebelum) Klaim - Klaim](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.5) “nbf” (bukan sebelumnya) mengidentifikasi waktu sebelum JWT TIDAK BOLEH diterima untuk diproses. Pemrosesan klaim “nbf” mensyaratkan bahwa arus date/time HARUS setelah atau sama dengan yang tidak date/time tercantum sebelumnya dalam klaim “nbf”. Contoh fungsi Lambda yang kami sediakan mengkonversi `iat` dari respons server menjadi. `nbf` 
+ `exp`: [(Waktu Kedaluwarsa) Klaim - Klaim](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.4) “exp” (waktu kedaluwarsa) mengidentifikasi waktu kedaluwarsa pada atau setelah itu JWT tidak boleh diterima untuk diproses.
+ `isAuthorized`: Sebuah boolean diatur ke`True`. Menunjukkan bahwa permintaan telah diotorisasi pada server otorisasi.
+ `aud`: [(Audiens) Klaim - Klaim](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.3) “aud” (audiens) mengidentifikasi penerima yang dimaksudkan untuk JWT. Ini harus menjadi SMART pada titik akhir penyimpanan HealthLake data yang diaktifkan FHIR.
+ `scope`: Ini harus setidaknya satu ruang lingkup terkait sumber daya FHIR. Cakupan ini didefinisikan pada server otorisasi Anda. Untuk mempelajari lebih lanjut tentang cakupan terkait sumber daya FHIR yang diterima oleh HealthLake, lihat. [SMART pada cakupan sumber daya FHIR untuk HealthLake](reference-smart-on-fhir-oauth-scopes.md#smart-on-fhir-scopes-rest)

# SMART pada cakupan FHIR OAuth 2.0 didukung oleh HealthLake
<a name="reference-smart-on-fhir-oauth-scopes"></a>

HealthLake menggunakan OAuth 2.0 sebagai protokol otorisasi. Menggunakan protokol ini di server otorisasi Anda memungkinkan Anda untuk menentukan izin penyimpanan HealthLake data (membuat, membaca, memperbarui, menghapus, dan mencari) untuk sumber daya FHIR yang dapat diakses oleh aplikasi klien.

SMART on FHIR framework mendefinisikan satu set cakupan yang dapat diminta dari server otorisasi. Misalnya, aplikasi klien yang hanya dirancang untuk memungkinkan pasien melihat hasil lab mereka atau melihat detail kontak mereka hanya boleh *diizinkan* untuk meminta `read` cakupan.

**catatan**  
HealthLake menyediakan dukungan untuk SMART pada FHIR V1 dan V2 seperti yang dijelaskan di bawah ini. SMART di FHIR [https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html#HealthLake-Type-IdentityProviderConfiguration-AuthorizationStrategy](https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html#HealthLake-Type-IdentityProviderConfiguration-AuthorizationStrategy)diatur ke salah satu dari tiga nilai berikut saat penyimpanan data Anda dibuat:  
`SMART_ON_FHIR_V1`— Dukungan hanya untuk SMART di FHIR V1, yang mencakup izin `read` (baca/cari) dan `write` (). create/update/delete
`SMART_ON_FHIR`— Support untuk SMART pada FHIR V1 dan V2, yang mencakup`create`,,`read`, `update``delete`, dan `search` izin.
`AWS_AUTH`— Strategi AWS HealthLake otorisasi default; tidak berafiliasi dengan SMART di FHIR.

## Lingkup peluncuran mandiri
<a name="smart-on-fhir-scopes-launch"></a>

HealthLake mendukung lingkup `launch/patient` mode peluncuran mandiri.

Dalam mode peluncuran mandiri aplikasi klien meminta akses ke data klinis pasien karena pengguna dan pasien tidak diketahui oleh aplikasi klien. Dengan demikian, permintaan otorisasi aplikasi klien secara eksplisit meminta ruang lingkup pasien dikembalikan. Setelah otentikasi berhasil, server otorisasi mengeluarkan token akses yang berisi lingkup pasien peluncuran yang diminta. Konteks pasien yang diperlukan disediakan bersama token akses dalam respons server otorisasi.


**Cakupan mode peluncuran yang didukung**  

| Lingkup | Deskripsi | 
| --- | --- | 
| `launch/patient` | Parameter dalam permintaan otorisasi OAuth 2.0 yang meminta agar data pasien dikembalikan dalam respons otorisasi. | 

## SMART pada cakupan sumber daya FHIR untuk HealthLake
<a name="smart-on-fhir-scopes-rest"></a>

HealthLake mendefinisikan tiga tingkat SMART pada cakupan sumber daya FHIR.
+ `patient`cakupan memberikan akses ke data spesifik tentang satu Pasien.
+ `user`cakupan memberikan akses ke data tertentu yang dapat diakses pengguna.
+ `system`cakupan memberikan akses ke semua sumber daya FHIR yang ditemukan di penyimpanan HealthLake data.

Bagian berikut mencantumkan sintaks untuk membangun cakupan sumber daya FHIR menggunakan SMART pada FHIR V1 atau SMART di FHIR V2.

**catatan**  
Strategi otorisasi SMART on FHIR diatur saat penyimpanan data Anda dibuat. Untuk informasi selengkapnya, lihat [https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html#HealthLake-Type-IdentityProviderConfiguration-AuthorizationStrategy](https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html#HealthLake-Type-IdentityProviderConfiguration-AuthorizationStrategy) di dalam *Referensi API AWS HealthLake *. 

### SMART pada cakupan FHIR V1 didukung oleh HealthLake
<a name="reference-smart-on-fhir-v1"></a>

Saat menggunakan SMART pada FHIR V1, sintaks umum untuk membangun cakupan sumber daya FHIR untuk berikut. HealthLake Untuk melihat seluruh jalur URL dalam contoh berikut, gulir ke atas tombol **Salin**.

```
('patient' | 'user' | 'system') '/' (fhir-resource | '*') '.' ('read' | 'write' | '*')
```


**SMART pada cakupan otorisasi yang didukung FHIR v1**  

| Sintaks lingkup | Contoh ruang lingkup | Hasil | 
| --- | --- | --- | 
| `patient/(fhir-resource \| '*').('read' \| 'write' \| '*')` | patient/AllergyIntolerance.\$1 | Aplikasi klien pasien memiliki akses baca/tulis tingkat instance ke semua alergi yang tercatat. | 
| `user/(fhir-resource \| '*').('read' \| 'write' \| '*')` | user/Observation.read | Aplikasi klien pengguna memiliki read/write akses tingkat instance ke semua pengamatan yang direkam.  | 
| system/('read' \$1 'write' \$1 \$1) | system/\$1.\$1 | Aplikasi klien sistem memiliki read/write akses ke semua data sumber daya FHIR. | 

### SMART pada cakupan FHIR V2 didukung oleh HealthLake
<a name="reference-smart-on-fhir-v2"></a>

Saat menggunakan SMART di FHIR V2, sintaks umum untuk membangun cakupan sumber daya FHIR untuk berikut. HealthLake Untuk melihat seluruh jalur URL dalam contoh berikut, gulir ke atas tombol **Salin**.

```
('patient' | 'user' | 'system') '/' (fhir-resource | '*') '.' ('c' | 'r' | 'u' | 'd' | 's')
```

**catatan**  
Untuk menggunakan SMART pada FHIR V2, Anda harus meneruskan nilai [https://hl7.org/fhir/smart-app-launch/STU2/conformance.html#permissions](https://hl7.org/fhir/smart-app-launch/STU2/conformance.html#permissions)ke dalam `capabilities` string metadata, yang merupakan anggota dari tipe data. [https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html](https://docs.aws.amazon.com/healthlake/latest/APIReference/API_IdentityProviderConfiguration.html)  
HealthLake mendukung cakupan granular. Untuk informasi lebih lanjut, lihat [cakupan granular yang didukung](https://hl7.org/fhir/us/core/scopes.html#the-following-granular-scopes-shall-be-supported) di Panduan Implementasi *Inti AS FHIR*.


**SMART pada cakupan otorisasi yang didukung FHIR V2**  

| Sintaks lingkup | Contoh lingkup V1 | Hasil | 
| --- | --- | --- | 
| `patient/Observation.rs` | user/Observation.read | Izin untuk membaca dan mencari Observation sumber daya untuk pasien saat ini. | 
| `system/*.cruds` | system/\$1.\$1 | Aplikasi klien sistem memiliki create/read/update/delete/search akses penuh ke semua data sumber daya FHIR.  | 

# Validasi Token menggunakan AWS Lambda
<a name="reference-smart-on-fhir-token-validation"></a>

Saat Anda membuat HealthLake SMART di penyimpanan data berkemampuan FHIR, Anda harus memberikan ARN fungsi AWS Lambda dalam `CreateFHIRDatastore` permintaan. ARN dari fungsi Lambda ditentukan dalam `IdentityProviderConfiguration` objek menggunakan parameter. `IdpLambdaArn`

Anda harus membuat fungsi Lambda sebelum membuat SMART Anda di penyimpanan data berkemampuan FHIR. Setelah Anda membuat penyimpanan data, Lambda ARN tidak dapat diubah. Untuk melihat Lambda ARN yang Anda tentukan saat penyimpanan data dibuat, gunakan tindakan API. `DescribeFHIRDatastore`

**Agar permintaan FHIR REST berhasil di SMART di penyimpanan data berkemampuan FHIR, fungsi Lambda Anda harus melakukan hal berikut:**
+ Kembalikan respons dalam waktu kurang dari 1 detik ke titik akhir penyimpanan HealthLake data.
+ Dekode token akses yang disediakan di header otorisasi permintaan REST API yang dikirim oleh aplikasi klien.
+ Tetapkan peran layanan IAM yang memiliki izin yang cukup untuk melaksanakan permintaan FHIR REST API.
+ Klaim berikut diperlukan untuk menyelesaikan permintaan FHIR REST API. Untuk mempelajari selengkapnya, lihat [Klaim yang diperlukan](reference-smart-on-fhir-authentication.md#server-response).
  + `nbf`
  + `exp`
  + `isAuthorized`
  + `aud`
  + `scope`

Saat bekerja dengan Lambda, Anda perlu membuat peran eksekusi dan kebijakan berbasis sumber daya selain fungsi Lambda Anda. Peran eksekusi fungsi Lambda adalah peran IAM yang memberikan izin fungsi untuk mengakses layanan AWS dan sumber daya yang diperlukan pada waktu berjalan. Kebijakan berbasis sumber daya yang Anda berikan harus memungkinkan HealthLake untuk menjalankan fungsi Anda atas nama Anda.

Bagian dalam topik ini menjelaskan contoh permintaan dari aplikasi klien dan respons yang diterjemahkan, langkah-langkah yang diperlukan untuk membuat fungsi AWS Lambda, dan cara membuat kebijakan berbasis sumber daya yang dapat diasumsikan. HealthLake 
+ [Bagian 1: Membuat fungsi Lambda](#smart-on-fhir-lambda-create)
+ [Bagian 2: Membuat peran HealthLake layanan yang digunakan oleh fungsi AWS Lambda](#smart-on-fhir-lambda-service-role)
+ [Bagian 3: Memperbarui peran eksekusi fungsi Lambda](#smart-on-fhir-lambda-service-role-execution-role)
+ [Bagian 4: Menambahkan kebijakan sumber daya ke fungsi Lambda Anda](#smart-on-fhir-lambda-invoke-healthlake)
+ [Bagian 5: Menyediakan konkurensi untuk fungsi Lambda Anda](#smart-on-fhir-lambda-function-scaling)

## Membuat fungsi AWS Lambda
<a name="smart-on-fhir-lambda-create"></a>

Fungsi Lambda yang dibuat dalam topik ini dipicu saat HealthLake menerima permintaan ke SMART di penyimpanan data berkemampuan FHIR. Permintaan dari aplikasi klien berisi panggilan REST API, dan header otorisasi yang berisi token akses.

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/
Authorization: Bearer i8hweunweunweofiwweoijewiwe
```

Contoh fungsi Lambda dalam topik ini digunakan AWS Secrets Manager untuk mengaburkan kredensyal yang terkait dengan server otorisasi. Kami sangat menyarankan untuk tidak memberikan rincian login server otorisasi secara langsung dalam fungsi Lambda.

**Example memvalidasi permintaan FHIR REST yang berisi token pembawa otorisasi**  
Contoh fungsi Lambda menunjukkan kepada Anda cara memvalidasi permintaan FHIR REST yang dikirim ke SMART di penyimpanan data berkemampuan FHIR. Untuk melihat step-by-steps petunjuk tentang cara menerapkan fungsi Lambda ini, lihat. [Membuat fungsi Lambda menggunakan Konsol Manajemen AWS](#create-lambda-console)  
Jika permintaan FHIR REST API tidak berisi titik akhir penyimpanan data yang valid, token akses, dan operasi REST, fungsi Lambda akan gagal. Untuk mempelajari lebih lanjut tentang elemen server otorisasi yang diperlukan, lihat[Klaim yang diperlukan](reference-smart-on-fhir-authentication.md#server-response).  

```
import base64
import boto3
import logging
import json
import os
from urllib import request, parse

logger = logging.getLogger()
logger.setLevel(logging.INFO)

## Uses Secrets manager to gain access to the access key ID and secret access key for the authorization server
client = boto3.client('secretsmanager', region_name="region-of-datastore")
response = client.get_secret_value(SecretId='name-specified-by-customer-in-secretsmanager')
secret = json.loads(response['SecretString'])
client_id = secret['client_id']
client_secret = secret['client_secret']


unencoded_auth = f'{client_id}:{client_secret}'
headers = {
  'Authorization': f'Basic {base64.b64encode(unencoded_auth.encode()).decode()}',
  'Content-Type': 'application/x-www-form-urlencoded'
}

auth_endpoint = os.environ['auth-server-base-url'] # Base URL of the Authorization server
user_role_arn = os.environ['iam-role-arn'] # The IAM role client application will use to complete the HTTP request on the datastore

def lambda_handler(event, context):
    if 'datastoreEndpoint' not in event or 'operationName' not in event or 'bearerToken' not in event:
    return {}

    datastore_endpoint = event['datastoreEndpoint']
    operation_name = event['operationName']
    bearer_token = event['bearerToken']
    logger.info('Datastore Endpoint [{}], Operation Name: [{}]'.format(datastore_endpoint, operation_name))

    ## To validate the token
    auth_response = auth_with_provider(bearer_token)
    logger.info('Auth response: [{}]'.format(auth_response))
    auth_payload = json.loads(auth_response)
    ## Required parameters needed to be sent to the datastore endpoint for the HTTP request to go through
    auth_payload["isAuthorized"] = bool(auth_payload["active"])
    auth_payload["nbf"] = auth_payload["iat"]
    return {"authPayload": auth_payload, "iamRoleARN": user_role_arn}

## access the server
def auth_with_provider(token):
    data = {'token': token, 'token_type_hint': 'access_token'}
    req = request.Request(url=auth_endpoint + '/v1/introspect', data=parse.urlencode(data).encode(), headers=headers)
    with request.urlopen(req) as resp:
    return resp.read().decode()
```

### Membuat fungsi Lambda menggunakan Konsol Manajemen AWS
<a name="create-lambda-console"></a>

Prosedur berikut mengasumsikan Anda telah membuat peran layanan yang HealthLake ingin Anda asumsikan saat menangani permintaan FHIR REST API pada SMART di penyimpanan data berkemampuan FHIR. Jika Anda belum membuat peran layanan, Anda masih dapat membuat fungsi Lambda. Anda harus menambahkan ARN peran layanan sebelum fungsi Lambda berfungsi. Untuk mempelajari selengkapnya tentang membuat peran layanan dan menentukannya dalam fungsi Lambda, lihat [Membuat peran HealthLake layanan untuk digunakan dalam fungsi AWS Lambda yang digunakan untuk memecahkan kode JWT](#smart-on-fhir-lambda-service-role)

**Untuk membuat fungsi Lambda ()Konsol Manajemen AWS**

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home/functions) di konsol Lambda.

1. Pilih **Buat fungsi**.

1. Pilih **Penulis dari awal**.

1. Di bawah **Informasi dasar** masukkan **nama Fungsi**. Di bawah **Runtime pilih runtime** berbasis python.

1. Untuk **peran Eksekusi**, pilih **Buat peran baru dengan izin Lambda dasar**.

   Lambda membuat [peran eksekusi](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) yang memberikan izin fungsi untuk mengunggah log ke Amazon. CloudWatch Fungsi Lambda mengasumsikan peran eksekusi saat Anda memanggil fungsi, dan menggunakan peran eksekusi untuk membuat kredensional SDK. AWS 

1. Pilih tab **Kode**, dan tambahkan contoh fungsi Lambda.

   Jika Anda belum membuat peran layanan untuk fungsi Lambda untuk digunakan, Anda harus membuatnya sebelum fungsi Lambda sampel berfungsi. Untuk mempelajari selengkapnya tentang membuat peran layanan untuk fungsi Lambda, lihat. [Membuat peran HealthLake layanan untuk digunakan dalam fungsi AWS Lambda yang digunakan untuk memecahkan kode JWT](#smart-on-fhir-lambda-service-role)

   ```
   import base64
   import boto3
   import logging
   import json
   import os
   from urllib import request, parse
   
   logger = logging.getLogger()
   logger.setLevel(logging.INFO)
   
   ## Uses Secrets manager to gain access to the access key ID and secret access key for the authorization server
   client = boto3.client('secretsmanager', region_name="region-of-datastore")
   response = client.get_secret_value(SecretId='name-specified-by-customer-in-secretsmanager')
   secret = json.loads(response['SecretString'])
   client_id = secret['client_id']
   client_secret = secret['client_secret']
   
   
   unencoded_auth = f'{client_id}:{client_secret}'
   headers = {
     'Authorization': f'Basic {base64.b64encode(unencoded_auth.encode()).decode()}',
     'Content-Type': 'application/x-www-form-urlencoded'
   }
   
   auth_endpoint = os.environ['auth-server-base-url'] # Base URL of the Authorization server
   user_role_arn = os.environ['iam-role-arn'] # The IAM role client application will use to complete the HTTP request on the datastore
   
   def lambda_handler(event, context):
       if 'datastoreEndpoint' not in event or 'operationName' not in event or 'bearerToken' not in event:
       return {}
   
       datastore_endpoint = event['datastoreEndpoint']
       operation_name = event['operationName']
       bearer_token = event['bearerToken']
       logger.info('Datastore Endpoint [{}], Operation Name: [{}]'.format(datastore_endpoint, operation_name))
   
       ## To validate the token
       auth_response = auth_with_provider(bearer_token)
       logger.info('Auth response: [{}]'.format(auth_response))
       auth_payload = json.loads(auth_response)
       ## Required parameters needed to be sent to the datastore endpoint for the HTTP request to go through
       auth_payload["isAuthorized"] = bool(auth_payload["active"])
       auth_payload["nbf"] = auth_payload["iat"]
       return {"authPayload": auth_payload, "iamRoleARN": user_role_arn}
   
   ## Access the server
   def auth_with_provider(token):
       data = {'token': token, 'token_type_hint': 'access_token'}
       req = request.Request(url=auth_endpoint + '/v1/introspect', data=parse.urlencode(data).encode(), headers=headers)
       with request.urlopen(req) as resp:
       return resp.read().decode()
   ```

### Memodifikasi peran eksekusi fungsi Lambda
<a name="modify-lambda-execution-role"></a>

Setelah membuat fungsi Lambda, Anda perlu memperbarui peran eksekusi untuk menyertakan izin yang diperlukan untuk memanggil Secrets Manager. Di Secrets Manager, setiap rahasia yang Anda buat memiliki ARN. Untuk menerapkan hak istimewa paling sedikit, peran eksekusi seharusnya hanya memiliki akses ke sumber daya yang diperlukan agar fungsi Lambda dapat dijalankan.

Anda dapat memodifikasi peran eksekusi fungsi Lambda dengan mencarinya di konsol IAM atau dengan memilih **Konfigurasi** di konsol Lambda. Untuk mempelajari selengkapnya tentang mengelola peran eksekusi fungsi Lambda, lihat. [Peran pelaksanaan Lambda](#smart-on-fhir-lambda-service-role-execution-role)

**Example Peran eksekusi fungsi Lambda yang memberikan akses ke `GetSecretValue`**  
Menambahkan tindakan IAM `GetSecretValue` ke peran eksekusi memberikan izin yang diperlukan agar fungsi Lambda sampel berfungsi.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "secretsmanager:GetSecretValue",
            "Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:secret-name-DKodTA"
        }
    ]
}
```

Pada titik ini Anda telah membuat fungsi Lambda yang dapat digunakan untuk memvalidasi token akses yang disediakan sebagai bagian dari permintaan FHIR REST yang dikirim ke SMART Anda di penyimpanan data berkemampuan FHIR.

## Membuat peran HealthLake layanan untuk digunakan dalam fungsi AWS Lambda yang digunakan untuk memecahkan kode JWT
<a name="smart-on-fhir-lambda-service-role"></a>

**Persona: IAM Administrator**  
Pengguna yang dapat menambah atau menghapus kebijakan IAM, dan membuat identitas IAM baru.  

**Peran layanan**  
 Peran layanan adalah [peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) yang diambil oleh sebuah layanan untuk melakukan tindakan atas nama Anda. Administrator IAM dapat membuat, mengubah, dan menghapus peran layanan dari dalam IAM. Untuk informasi selengkapnya, lihat [Buat sebuah peran untuk mendelegasikan izin ke Layanan AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) dalam *Panduan pengguna IAM*. 

Setelah Token Web JSON (JWT) diterjemahkan, otorisasi Lambda juga perlu mengembalikan peran IAM ARN. Peran ini harus memiliki izin yang diperlukan untuk melaksanakan permintaan REST API atau akan gagal karena izin yang tidak mencukupi.

Saat menyiapkan kebijakan khusus menggunakan IAM, yang terbaik adalah memberikan izin minimum yang diperlukan. *Untuk mempelajari selengkapnya, lihat [Menerapkan izin hak istimewa terkecil di Panduan Pengguna](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) IAM.*

Membuat peran HealthLake layanan untuk menunjuk dalam fungsi Lambda otorisasi membutuhkan dua langkah.
+ Pertama, Anda perlu membuat kebijakan IAM. Kebijakan harus menentukan akses ke sumber daya FHIR yang telah Anda berikan cakupan di server otorisasi.
+ Kedua, Anda perlu membuat peran layanan. Saat Anda membuat peran, Anda menetapkan hubungan kepercayaan dan melampirkan kebijakan yang Anda buat di langkah pertama. Hubungan kepercayaan menunjuk HealthLake sebagai kepala layanan. Anda perlu menentukan ARN penyimpanan HealthLake data dan ID AWS akun di langkah ini.

### Membuat kebijakan IAM baru
<a name="lambda-service-role-part-1"></a>

Cakupan yang Anda tentukan di server otorisasi Anda menentukan sumber daya FHIR apa yang dapat diakses oleh pengguna yang diautentikasi di penyimpanan data. HealthLake 

Kebijakan IAM yang Anda buat dapat disesuaikan agar sesuai dengan cakupan yang telah Anda tetapkan.

Tindakan berikut dalam `Action` elemen pernyataan kebijakan IAM dapat didefinisikan. Untuk masing-masing `Action` dalam tabel Anda dapat mendefinisikan a`Resource types`. Dalam penyimpanan data HealthLake adalah satu-satunya jenis sumber daya yang didukung yang dapat didefinisikan dalam `Resource` elemen pernyataan kebijakan izin IAM.

Sumber daya FHIR individu bukanlah sumber daya yang dapat Anda definisikan sebagai elemen dalam kebijakan izin IAM.


**Tindakan didefinisikan oleh HealthLake**  

| Tindakan | Deskripsi | Tingkat akses | Jenis sumber daya (Wajib) | 
| --- | --- | --- | --- | 
| CreateResource | Memberikan izin untuk membuat sumber daya | Tulis | Datastore ARN: arn:aws:healthlake: ::datastore/fhir/ your-region 111122223333 your-datastore-id | 
| DeleteResource | Memberikan izin untuk menghapus sumber daya | Tulis | Datastore ARN: arn:aws:healthlake: ::datastore/fhir/ your-region 111122223333 your-datastore-id | 
| ReadResource | Memberikan izin untuk membaca sumber daya | Baca | Datastore ARN: arn:aws:healthlake: ::datastore/fhir/ your-region 111122223333 your-datastore-id | 
| SearchWithGet | Memberikan izin untuk mencari sumber daya dengan metode GET | Baca | Datastore ARN: arn:aws:healthlake: ::datastore/fhir/ your-region 111122223333 your-datastore-id | 
| SearchWithPost | Memberikan izin untuk mencari sumber daya dengan metode POST | Baca | Datastore ARN: arn:aws:healthlake: ::datastore/fhir/ your-region 111122223333 your-datastore-id | 
| Mulai FHIRExport JobWithPost | Memberikan izin untuk memulai pekerjaan Ekspor FHIR dengan GET | Tulis | Datastore ARN: arn:aws:healthlake: ::datastore/fhir/ your-region 111122223333 your-datastore-id | 
| UpdateResource | Memberikan izin untuk memperbarui sumber daya | Tulis  | Datastore ARN: arn:aws:healthlake: ::datastore/fhir/ your-region 111122223333 your-datastore-id | 

Untuk memulai, Anda dapat menggunakan`AmazonHealthLakeFullAccess`. Kebijakan ini akan memberikan pembacaan, tulis, pencarian, dan ekspor pada semua sumber daya FHIR yang ditemukan di penyimpanan data. Untuk memberikan izin hanya-baca pada penggunaan penyimpanan data. `AmazonHealthLakeReadOnlyAccess`

Untuk mempelajari selengkapnya tentang membuat kebijakan kustom menggunakan Konsol Manajemen AWS, AWS CLI, atau IAM SDKs, lihat [Membuat kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) di Panduan Pengguna *IAM*.

### Membuat peran layanan untuk HealthLake (konsol IAM)
<a name="lambda-service-role-part-2"></a>

Gunakan prosedur ini untuk membuat peran layanan. Saat Anda membuat layanan, Anda juga perlu menetapkan kebijakan IAM.

**Untuk membuat peran layanan untuk HealthLake (konsol IAM)**

1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi konsol IAM, pilih **Peran**.

1. Kemudian, pilih **Buat peran**.

1. Pada halaman **Pilih entitas kepercayaan**, pilih **Kebijakan kepercayaan khusus**.

1. Selanjutnya, di bawah **Kebijakan kepercayaan khusus**, perbarui kebijakan sampel sebagai berikut. Ganti **your-account-id** dengan nomor akun Anda, dan tambahkan ARN dari penyimpanan data yang ingin Anda gunakan dalam pekerjaan impor atau ekspor Anda.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "sts:AssumeRole",
               "Principal": {
                   "Service": "healthlake.amazonaws.com"
               },
               "Condition": {
                   "StringEquals": {
                       "aws:SourceAccount": "123456789012"
                   },
                   "ArnEquals": {
                       "aws:SourceArn": "arn:aws:healthlake:us-east-1:123456789012:datastore/fhir/your-datastore-id"
                   }
               }
           }
       ]
   }
   ```

------

1. Lalu, pilih **Selanjutnya**.

1. Pada halaman **Tambah izin**, pilih kebijakan yang ingin diasumsikan oleh HealthLake layanan. Untuk menemukan kebijakan Anda, cari kebijakan tersebut di bawah **Kebijakan Izin**.

1. Kemudian, pilih **Lampirkan kebijakan**.

1. Kemudian pada halaman **Nama, tinjau, dan buat** di bawah **Nama peran** masukkan nama.

1. (Opsional) Kemudian di bawah **Deskripsi**, tambahkan deskripsi singkat untuk peran Anda.

1. Jika memungkinkan, masukkan nama peran atau akhiran nama peran untuk membantu Anda mengidentifikasi tujuan peran ini. Nama peran harus unik dalam diri Anda Akun AWS. Grup tidak dibedakan berdasarkan huruf besar-kecil. Misalnya, Anda tidak dapat membuat peran dengan nama **PRODROLE** dan **prodrole**. Anda tidak dapat mengubah nama peran setelah dibuat karena berbagai entitas mungkin mereferensikan peran tersebut.

1. Tinjau detail peran, lalu pilih **Buat peran**.

Untuk mempelajari cara menentukan peran ARN dalam contoh fungsi Lambda, lihat. [Membuat fungsi AWS Lambda](#smart-on-fhir-lambda-create)

## Peran pelaksanaan Lambda
<a name="smart-on-fhir-lambda-service-role-execution-role"></a>

Peran eksekusi fungsi Lambda adalah peran IAM yang memberikan izin fungsi untuk mengakses AWS layanan dan sumber daya. Halaman ini memberikan informasi tentang cara membuat, melihat, dan mengelola peran eksekusi fungsi Lambda.

Secara default, Lambda membuat peran eksekusi dengan izin minimal saat Anda membuat fungsi Lambda baru menggunakan. Konsol Manajemen AWS Untuk mengelola izin yang diberikan dalam peran eksekusi, lihat [Membuat peran eksekusi di konsol IAM di Panduan Pengembang](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html#permissions-executionrole-console) *Lambda*.

Contoh fungsi Lambda yang disediakan dalam topik ini menggunakan Secrets Manager untuk mengaburkan kredensyal server otorisasi.

Seperti halnya peran IAM yang Anda buat, penting untuk mengikuti praktik terbaik yang paling tidak istimewa. Selama frase pengembangan, terkadang Anda mungkin memberikan izin di luar apa yang diperlukan. Sebelum memublikasikan fungsi Anda di lingkungan produksi, sebagai praktik terbaik, sesuaikan kebijakan agar hanya menyertakan izin yang diperlukan. *Untuk informasi selengkapnya, lihat [Menerapkan hak istimewa terkecil](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) di Panduan Pengguna IAM.*

## Izinkan HealthLake untuk memicu fungsi Lambda Anda
<a name="smart-on-fhir-lambda-invoke-healthlake"></a>

Jadi HealthLake dapat memanggil fungsi Lambda atas nama Anda, Anda harus melakukan berikut: 
+ Anda perlu mengatur `IdpLambdaArn` sama dengan ARN dari fungsi Lambda yang HealthLake ingin Anda panggil dalam permintaan. `CreateFHIRDatastore`
+ Anda memerlukan kebijakan berbasis sumber daya yang memungkinkan untuk HealthLake menjalankan fungsi Lambda atas nama Anda.

Saat HealthLake menerima permintaan FHIR REST API pada SMART di penyimpanan data berkemampuan FHIR, diperlukan izin untuk menjalankan fungsi Lambda yang ditentukan pada pembuatan penyimpanan data atas nama Anda. Untuk memberikan HealthLake akses, Anda akan menggunakan kebijakan berbasis sumber daya. *Untuk mempelajari selengkapnya tentang membuat kebijakan berbasis sumber daya untuk fungsi Lambda, lihat [Mengizinkan layanan AWS memanggil fungsi Lambda di Panduan Pengembang](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html#permissions-resource-serviceinvoke).AWS Lambda *

## Menyediakan konkurensi untuk fungsi Lambda Anda
<a name="smart-on-fhir-lambda-function-scaling"></a>

**penting**  
HealthLake mengharuskan waktu berjalan maksimum untuk fungsi Lambda Anda kurang dari satu detik (1000 milidetik).  
Jika fungsi Lambda Anda melebihi batas waktu berjalan, Anda mendapatkan pengecualian. TimeOut

Untuk menghindari pengecualian ini, kami sarankan untuk mengonfigurasi konkurensi yang disediakan. Dengan mengalokasikan konkurensi yang disediakan sebelum peningkatan pemanggilan, Anda dapat memastikan bahwa semua permintaan dilayani oleh instance yang diinisialisasi dengan latensi rendah. *Untuk mempelajari lebih lanjut tentang mengonfigurasi konkurensi yang disediakan, lihat [Mengonfigurasi konkurensi yang disediakan di Panduan Pengembang Lambda](https://docs.aws.amazon.com/ambda/latest/dg/provisioned-concurrency.html)*

Untuk melihat rata-rata waktu berjalan untuk fungsi Lambda Anda saat ini gunakan halaman **Pemantauan** untuk fungsi Lambda Anda di konsol Lambda. Secara default, konsol Lambda menyediakan grafik **Durasi** yang menunjukkan jumlah waktu rata-rata, minimum, dan maksimum waktu yang dihabiskan kode fungsi untuk memproses suatu peristiwa. *Untuk mempelajari selengkapnya tentang memantau fungsi Lambda, lihat [Memantau fungsi di konsol Lambda di Panduan Pengembang Lambda](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions-access-metrics.html#monitoring-console-graph-types).*

*Jika Anda telah menyediakan konkurensi untuk fungsi Lambda Anda dan ingin memantaunya, lihat Memantau [konkurensi di](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-concurrency.html) Panduan Pengembang Lambda.*

# Menggunakan otorisasi berbutir halus dengan SMART pada penyimpanan data yang diaktifkan FHIR HealthLake
<a name="reference-smart-on-fhir-fine-grained-authorization"></a>

[Cakupan](reference-smart-on-fhir-oauth-scopes.md#smart-on-fhir-scopes-rest) saja tidak memberi Anda kekhususan yang diperlukan tentang data apa yang diizinkan untuk diakses oleh pemohon di penyimpanan data. Menggunakan otorisasi berbutir halus memungkinkan tingkat spesifisitas yang lebih tinggi saat memberikan akses ke SMART di penyimpanan data berkemampuan FHIR. HealthLake Untuk menggunakan otorisasi berbutir halus, tetapkan `FineGrainedAuthorizationEnabled` sama dengan `IdentityProviderConfiguration` parameter `True` permintaan Anda. `CreateFHIRDatastore`

Jika Anda mengaktifkan otorisasi berbutir halus, server otorisasi Anda mengembalikan `fhirUser` cakupan `id_token` bersama dengan token akses. Hal ini memungkinkan informasi tentang Pengguna untuk diambil oleh aplikasi klien. Aplikasi klien harus memperlakukan `fhirUser` klaim sebagai URI dari sumber daya FHIR yang mewakili pengguna saat ini. Ini dapat berupa `Patient`, `Practitioner`, atau `RelatedPerson`. Respons server otorisasi juga mencakup `user/` ruang lingkup yang mendefinisikan data apa yang dapat diakses pengguna. Ini menggunakan sintaks yang ditentukan untuk cakupan yang terkait dengan cakupan spesifik sumber daya FHIR:

```
user/(fhir-resource | '*').('read' | 'write' | '*')
```

Berikut ini adalah contoh bagaimana otorisasi halus dapat digunakan untuk lebih menentukan akses data terkait jenis sumber daya FHIR.
+ `fhirUser`Kapan otorisasi `Practitioner` berbutir halus menentukan kumpulan pasien yang dapat diakses pengguna. Akses ke hanya `fhirUser` diperbolehkan untuk pasien di mana Pasien memiliki referensi ke `fhirUser` sebagai Dokter Umum. 

  ```
  Patient.generalPractitioner : [{Reference(Practitioner)}]
  ```
+ `fhirUser`Kapan `Patient` atau `RelatedPerson` dan pasien yang dirujuk dalam permintaan berbeda dari`fhirUser`, otorisasi berbutir halus menentukan akses ke `fhirUser` pasien yang diminta. Akses diizinkan ketika ada hubungan yang ditentukan dalam `Patient` sumber daya yang diminta.

  ```
  Patient.link.other : {Reference(Patient|RelatedPerson)}
  ```

# Mengambil SMART pada Dokumen Penemuan FHIR
<a name="reference-smart-on-fhir-discovery-document"></a>

SMART mendefinisikan Dokumen Penemuan yang memungkinkan klien mempelajari titik akhir otorisasi URLs dan fitur yang didukung penyimpanan HealthLake data. Informasi ini membantu klien mengarahkan permintaan otorisasi ke titik akhir yang tepat dan membuat permintaan otorisasi yang didukung penyimpanan data. HealthLake

Agar aplikasi klien dapat membuat permintaan FHIR REST yang berhasil HealthLake, aplikasi tersebut harus mengumpulkan persyaratan otorisasi yang ditentukan oleh penyimpanan HealthLake data. Token pembawa (otorisasi) *tidak* diperlukan agar permintaan ini berhasil.. 

**Untuk meminta Discovery Document untuk penyimpanan HealthLake data**  


1. Kumpulkan HealthLake `region` dan `datastoreId` nilai. Untuk informasi selengkapnya, lihat [Mendapatkan properti penyimpanan data](managing-data-stores-describe.md).

1. Buat URL untuk permintaan menggunakan nilai yang dikumpulkan untuk HealthLake `region` dan`datastoreId`. Tambahkan `/.well-known/smart-configuration` ke titik akhir URL. Untuk melihat seluruh jalur URL dalam contoh berikut, gulir ke atas tombol **Salin**.

   ```
   https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/.well-known/smart-configuration
   ```

1. Kirim permintaan menggunakan `GET` protokol penandatanganan [AWS Signature Version 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html). Untuk melihat seluruh contoh, gulir ke atas tombol **Salin**.

------
#### [ curl ]

   ```
   curl --request GET \
     'https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/.well-known/smart-configuration \
     --aws-sigv4 'aws:amz:region:healthlake' \
     --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \
     --header "x-amz-security-token:$AWS_SESSION_TOKEN" \
     --header 'Accept: application/json'
   ```

------

   Dokumen Discovery untuk penyimpanan HealthLake data kembali sebagai gumpalan JSON, di mana Anda dapat menemukan `authorization_endpoint` dan`token_endpoint`, bersama dengan spesifikasi dan kemampuan yang ditentukan untuk penyimpanan data.

   ```
   {
       "authorization_endpoint": "https://oidc.example.com/authorize",
       "token_endpoint": "https://oidc.example.com/oauth/token",
       "capabilities": [
           "launch-ehr",
           "client-public"
       ]
   }
   ```

   Baik `authorization_endpoint` dan yang `token_endpoint` diperlukan untuk meluncurkan aplikasi klien.
   + **Titik akhir otorisasi** — URL yang diperlukan untuk mengotorisasi aplikasi klien atau pengguna.
   + **Titik akhir Token — Titik** akhir dari server otorisasi yang digunakan aplikasi klien untuk berkomunikasi dengan.

# Membuat permintaan FHIR REST API pada penyimpanan data berkemampuan SMART HealthLake
<a name="reference-smart-on-fhir-request-example"></a>

Anda dapat membuat permintaan FHIR REST API pada SMART di penyimpanan data berkemampuan FHIR HealthLake . Contoh berikut menunjukkan permintaan dari aplikasi klien yang berisi JWT di header otorisasi dan bagaimana Lambda harus memecahkan kode respons. Setelah permintaan aplikasi klien diotorisasi dan diautentikasi, ia harus menerima token pembawa dari server otorisasi. Gunakan token pembawa di header otorisasi saat mengirim permintaan FHIR REST API pada SMART di penyimpanan data berkemampuan HealthLake FHIR.

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/[ID]
Authorization: Bearer auth-server-provided-bearer-token
```

Karena token pembawa ditemukan di header otorisasi dan tidak ada identitas AWS IAM yang terdeteksi HealthLake memanggil fungsi Lambda yang ditentukan saat penyimpanan data yang diaktifkan SMART pada HealthLake FHIR dibuat. Ketika token berhasil diterjemahkan oleh fungsi Lambda Anda, contoh respons berikut dikirim ke. HealthLake

```
{
  "authPayload": {
    "iss": "https://authorization-server-endpoint/oauth2/token", # The issuer identifier of the authorization server
    "aud": "https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/", # Required, data store endpoint
    "iat": 1677115637,  # Identifies the time at which the token was issued
    "nbf": 1677115637,  # Required, the earliest time the JWT would be valid
    "exp": 1997877061,  # Required, the time at which the JWT is no longer valid
    "isAuthorized": "true",  # Required, boolean indicating the request has been authorized
    "uid": "100101",  # Unique identifier returned by the auth server
    "scope": "system/*.*" # Required, the scope of the request
  },
  "iamRoleARN": "iam-role-arn" #Required, IAM role to complete the request
}
```

# Dukungan FHIR R4 untuk AWS HealthLake
<a name="reference-fhir"></a>

AWS HealthLake mendukung spesifikasi FHIR R4 untuk pertukaran data kesehatan. Bagian berikut memberikan informasi pendukung tentang bagaimana HealthLake memanfaatkan spesifikasi FHIR R4 untuk membantu Anda [mengelola](managing-fhir-resources.md) dan [mencari](searching-fhir-resources.md) sumber daya FHIR di penyimpanan HealthLake data Anda menggunakan FHIR R4. RESTful APIs

**Topics**
+ [Pernyataan Kemampuan](reference-fhir-capability-statement.md)
+ [Validasi profil](reference-fhir-profile-validations.md)
+ [Jenis sumber daya](reference-fhir-resource-types.md)
+ [Parameter pencarian](reference-fhir-search-parameters.md)
+ [\$1 Operasi](reference-fhir-operations.md)

# Pernyataan Kemampuan FHIR R4 untuk AWS HealthLake
<a name="reference-fhir-capability-statement"></a>

Untuk menemukan kemampuan (perilaku) terkait fHIR dari penyimpanan HealthLake data aktif, Anda harus mengambil Pernyataan Kemampuannya. Pernyataan Kemampuan digunakan sebagai pernyataan fungsionalitas server aktual atau pernyataan implementasi server yang diperlukan atau diinginkan. [https://hl7.org/fhir/R4/http.html#capabilities](https://hl7.org/fhir/R4/http.html#capabilities)Interaksi FHIR mengambil informasi tentang kemampuan penyimpanan HealthLake data dan bagian mana dari spesifikasi FHIR yang didukungnya. HealthLake memvalidasi jenis sumber daya FHIR sesuai dengan sumber daya FHIR R4. [https://hl7.org/fhir/R4/structuredefinition.html](https://hl7.org/fhir/R4/structuredefinition.html)

**Untuk mendapatkan Pernyataan Kemampuan untuk penyimpanan HealthLake data**  


1. Kumpulkan HealthLake `region` dan `datastoreId` nilai. Untuk informasi selengkapnya, lihat [Mendapatkan properti penyimpanan data](managing-data-stores-describe.md).

1. Buat URL untuk permintaan menggunakan nilai yang dikumpulkan untuk HealthLake `region` dan`datastoreId`. Sertakan juga `metadata` elemen FHIR di URL. Untuk melihat seluruh jalur URL dalam contoh berikut, gulir ke atas tombol **Salin**.

   ```
   https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/metadata
   ```

1. Kirim permintaan . `capabilities`Interaksi FHIR menggunakan `GET` permintaan dengan protokol penandatanganan [AWS Signature Version 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html). `curl`Contoh berikut mendapatkan Pernyataan Kemampuan untuk penyimpanan HealthLake data yang ditentukan oleh`datastoreId`. Untuk melihat seluruh contoh, gulir ke atas tombol **Salin**.

------
#### [ curl ]

   ```
   curl --request GET \
     'https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/metadata \
     --aws-sigv4 'aws:amz:region:healthlake' \
     --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \
     --header "x-amz-security-token:$AWS_SESSION_TOKEN" \
     --header 'Accept: application/json'
   ```

------

   Anda akan menerima kode respons `200` HTTP dan Pernyataan Kemampuan untuk penyimpanan HealthLake data Anda. Untuk informasi lebih lanjut, lihat [https://hl7.org/fhir/R4/capabilitystatement.html](https://hl7.org/fhir/R4/capabilitystatement.html)di dokumentasi **FHIR R4**.

# Validasi profil FHIR untuk HealthLake
<a name="reference-fhir-profile-validations"></a>

AWS HealthLake mendukung spesifikasi dasar [FHIR R4](https://hl7.org/fhir/R4). Termasuk dalam spesifikasi dasar FHIR R4 adalah Profil FHIR. Profil digunakan pada tipe sumber daya FHIR untuk menentukan definisi jenis sumber daya yang lebih spesifik menggunakan and/or ekstensi kendala pada jenis sumber daya dasar. Misalnya, Profil FHIR dapat mengidentifikasi bidang wajib seperti ekstensi dan set nilai. Sumber daya dapat mendukung banyak profil. Semua HealthLake data menyimpan dukungan menggunakan Profil FHIR.

**catatan**  
Menambahkan profil FHIR *tidak* diperlukan saat menambahkan data ke penyimpanan HealthLake data. Jika profil FHIR tidak ditentukan ketika sumber daya ditambahkan atau diperbarui, sumber daya divalidasi hanya terhadap skema FHIR R4 dasar.  
Profil FHIR, yang sesuai dengan sumber daya FHIR, termasuk dalam sumber daya sebelum diimpor. HealthLake Oleh karena itu, profil FHIR divalidasi oleh HealthLake selama impor.

Profil FHIR ditentukan dalam panduan implementasi. Panduan Implementasi FHIR (IG) adalah seperangkat instruksi yang menjelaskan cara menggunakan standar FHIR untuk tujuan tertentu. HealthLake memvalidasi Profil FHIR didefinisikan dalam panduan implementasi berikut.


**Profil FHIR didukung oleh AWS HealthLake**  

| Nama | Versi | Panduan implementasi | Kemampuan | AS Timur (Ohio) | AS Timur (Virginia Utara) | US West (Oregon) | Asia Pasifik (Mumbai) | Asia Pasifik (Sydney) | Kanada (Pusat) | Eropa (Irlandia) | Eropa (London) | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| Inti AS |  3.1.1  |  [http://hl7.org/fhir/us/core/STU3.1.1/](http://hl7.org/fhir/us/core/STU3.1.1/)  | Default | X | X | X | X | X | X | X | X | 
| Inti AS |  4.0.0  |  [https://hl7.org/fhir/us/core/STU4/index.html](https://hl7.org/fhir/us/core/STU4/index.html)  | Didukung | X | X | X | X | X | X | X | X | 
| Inti AS |  5.0.1  |  [https://hl7.org/fhir/us/core/STU5.0.1/index.html](https://hl7.org/fhir/us/core/STU5.0.1/index.html)  | Didukung | X | X | X | X | X | X | X | X | 
| Inti AS |  6.1.0  |  [https://hl7.org/fhir/us/core/STU6.1/index.html](https://hl7.org/fhir/us/core/STU6.1/index.html)  | Didukung | X | X | X | X | X | X | X | X | 
| Inti AS |  7.0.0  |  [https://hl7.org/fhir/us/core/STU7/](https://hl7.org/fhir/us/core/STU7/)  | Didukung | X | X | X | X | X | X | X | X | 
| Inti Inggris |  2.0.1  |  [https://simplifier.net/guide/uk-core-implementation-guide-stu2/Home/ProfilesandExtensions/ProfilesIndex?version=2.0.1](https://simplifier.net/guide/uk-core-implementation-guide-stu2/Home/ProfilesandExtensions/ProfilesIndex?version=2.0.1)  | Didukung | X | X | X | X |  |  | X | X | 
| Tombol Biru CARIN | 1.1.0 |  [http://hl7.org/fhir/us/carin-bb/STU1.1/](http://hl7.org/fhir/us/carin-bb/STU1.1/)  | Default | X | X | X | X | X | X | X | X | 
| Tombol Biru CARIN | 1.0.0, 2.0.0, 2.1.0 |  [https://hl7.org/fhir/us/carin-bb/history.html](https://hl7.org/fhir/us/carin-bb/history.html)  | Didukung | X | X | X | X | X | X | X | X | 
| Da Vinci Payer Data Exchange |  1.0.0  |  [https://hl7.org/fhir/us/davinci-pdex/](https://hl7.org/fhir/us/davinci-pdex/)  | Default | X | X | X | X | X | X | X | X | 
| Da Vinci Payer Data Exchange |  2.0.0, 2.1.0  |  [https://hl7.org/fhir/us/davinci-pdex/history.html](https://hl7.org/fhir/us/davinci-pdex/history.html)  | Didukung | X | X | X | X | X | X | X | X | 
| Pertukaran Catatan Kesehatan Da Vinci () HRex |  0.2.0  |  [https://hl7.org/fhir/us/davinci-hrex/2020Sep/](https://hl7.org/fhir/us/davinci-hrex/2020Sep/)  | Default | X | X | X | X | X | X | X | X | 
| DaVinci Paket PDEX Bersih |  1.1.0  |  [https://hl7.org/fhir/us/davinci-pdex-plan-net/STU1.1/](https://hl7.org/fhir/us/davinci-pdex-plan-net/STU1.1/)  | Default | X | X | X | X | X | X | X | X | 
| DaVinci Paket PDEX Bersih |  1.0.0  |  [https://hl7.org/fhir/us/davinci-pdex-plan-net/STU1/](https://hl7.org/fhir/us/davinci-pdex-plan-net/STU1/)  | Didukung | X | X | X | X | X | X | X | X | 
| DaVinci Pembayar Data Exchange (PDex) Formularium Obat AS |  1.1.0  |  [https://hl7.org/fhir/us/davinci-drug-formulary/STU1.1/](https://hl7.org/fhir/us/davinci-drug-formulary/STU1.1/)  | Default | X | X | X | X | X | X | X | X | 
| DaVinci Pembayar Data Exchange (PDex) Formularium Obat AS |  1.0.1, 2.0.1, 2.1.0  |  [https://hl7.org/fhir/us/davinci-drug-formulary/history.html](https://hl7.org/fhir/us/davinci-drug-formulary/history.html)  | Didukung | X | X | X | X | X | X | X | X | 
| Data Exchange Klinis Da Vinci () CDex |  2.1.0  |  [https://build.fhir.org/ig/HL7/davinci-ecdx/index.html](https://build.fhir.org/ig/HL7/davinci-ecdx/index.html)  | Default | X | X | X | X | X | X | X | X | 
| Da Vinci Prior Authorization Support (PAS) FHIR IG |  2.1.0  |  [https://hl7.org/fhir/us/davinci-pas/](https://hl7.org/fhir/us/davinci-pas/)  | Default | X | X | X | X | X | X | X | X | 
| Panduan Implementasi NCQA HEDIS® |  0.3.1  |  [https://www.ncqa.org/resources/hedis-ig-resource-page/](https://www.ncqa.org/resources/hedis-ig-resource-page/)  | Default | X | X | X | X |  |  | X | X | 
| Ringkasan Pasien Internasional (IPS) |  2.0.0-surat suara  |  [https://hl7.org/fhir/uv/ips/2024Sep/](https://hl7.org/fhir/uv/ips/2024Sep/)  | Default | X | X | X | X | X | X | X | X | 
| Ukuran Kualitas |  5.0.0  |  [https://registry.fhir.org/package/hl7.fhir.us.cqfmeasures%7C5.0.0](https://registry.fhir.org/package/hl7.fhir.us.cqfmeasures%7C5.0.0)  | Default | X | X | X | X |  |  | X | X | 
| Pelaporan Genomik |  3.0.0  |  [https://build.fhir.org/ig/HL7/genomics-reporting/index.html](https://build.fhir.org/ig/HL7/genomics-reporting/index.html)  | Default | X | X | X | X |  |  | X | X | 
|  Misi Digital Ayushman Bharat Otoritas Kesehatan Nasional (ABDM)  | 2.0 |  [https://www.nrces.in/ndhm/fhir/r4/index.html](https://www.nrces.in/ndhm/fhir/r4/index.html)  | Default | X | X | X | X |  |  | X | X | 
| Inti CA \$1 | 1.1.0 |  [https://simplifier.net/ca-core](https://simplifier.net/ca-core)  | Didukung |  |  |  |  |  | X |  |  | 
| ca:Erec Pan-Canadian eReferral-Econsult | 1.1.0 |  [https://simplifier.net/CA-eReC/~introduction](https://simplifier.net/CA-eReC/~introduction)  | Didukung |  |  |  |  |  | X |  |  | 
| Ringkasan Pasien Edisi Kanada - (PS-CA) | 2.11 |  [https://simplifier.net/PS-CA-R1/~introduction](https://simplifier.net/PS-CA-R1/~introduction)  | Didukung |  |  |  |  |  | X |  |  | 
| Repositori Obat Kesehatan Digital Ontario | 4.0.3 |  [https://simplifier.net/ca-on-dhdr-r4/~introduction](https://simplifier.net/ca-on-dhdr-r4/~introduction)  | Didukung |  |  |  |  |  | X |  |  | 
| Inti AU | 1.0.0 |  [https://hl7.org.au/fhir/core/](https://hl7.org.au/fhir/core/)  | Didukung |  |  |  |  | X |  |  |  | 
| Manajemen Praktik Magentus | 1.2.16 |  [https://fhir-versions.dev.geniesolutions.io/1.2.16/downloads.html](https://fhir-versions.dev.geniesolutions.io/1.2.16/downloads.html)  | Didukung |  |  |  |  | X |  |  |  | 

## Memvalidasi profil FHIR yang ditentukan dalam sumber daya
<a name="add-fhir-profile-validation"></a>

Untuk Profil FHIR yang akan divalidasi tambahkan ke `profile` elemen sumber daya individu menggunakan URL profil yang ditunjuk dalam panduan implementasi. 

Profil FHIR divalidasi saat Anda menambahkan sumber daya baru ke penyimpanan data Anda. Untuk menambahkan sumber daya baru, Anda dapat menggunakan operasi `StartFHIRImportJob` API, membuat `POST` permintaan untuk menambahkan sumber daya baru, atau ` PUT ` membuat pembaruan sumber daya yang ada. 

**Example — Untuk melihat profil FHIR mana yang direferensikan dalam sumber daya**  
URL profil ditambahkan ke `profile` elemen dalam pasangan `"meta" : "profile"` kunci-nilai. Sumber daya ini dipotong untuk kejelasan.   

```
{
    "resourceType": "Patient",
    "id": "abcd1234efgh5678hijk9012",
    "meta": {
        "lastUpdated": "2023-05-30T00:48:07.8443764-07:00",
        "profile": [
            "http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
        ]
    }
}
```

**Example — Cara mereferensikan profil FHIR yang didukung non-default**  
Untuk memvalidasi terhadap profil non-default yang didukung (misalnya CarinBB 1.0.0) - tambahkan URL profil dengan versi (dipisahkan oleh '\$1') dan URL profil dasar dalam elemen. `meta.profile` Sumber daya contoh ini dipotong untuk kejelasan.   

```
{
    "resourceType": "ExplanationOfBenefit",
    "id": "sample-EOB",
    "meta": {
        "lastUpdated": "2024-02-02T05:56:09.4+00:00",
        "profile": [
            "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Pharmacy|1.0.0",
      "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-ExplanationOfBenefit-Pharmacy“
        ]
    }
}
```

# Jenis sumber daya yang didukung FHIR R4 untuk HealthLake
<a name="reference-fhir-resource-types"></a>

Tabel berikut mencantumkan jenis sumber daya FHIR R4 yang didukung oleh. AWS HealthLake Untuk informasi selengkapnya, lihat [Indeks Sumber Daya](https://hl7.org/fhir/R4/resourcelist.html) dalam dokumentasi **FHIR R4**.


**Jenis sumber daya FHIR R4 didukung oleh HealthLake**  

|  |  |  |  | 
| --- |--- |--- |--- |
| Akun | DetectedIssue | Faktur | Praktisi | 
| ActivityDefinition | Perangkat | Perpustakaan | PractitionerRole | 
| AdverseEvent | DeviceDefinition | Keterkaitan | Prosedur | 
| AllergyIntolerance | DeviceMetric | Daftar | Asal | 
| Janji | DeviceUseStatement | Lokasi | Kuesioner | 
| AppointmentResponse | DeviceRequest | Ukur | QuestionnaireResponse | 
| AuditEvent - Lihat Catatan | DiagnosticReport | MeasureReport | RelatedPerson | 
| Biner | DocumentManifest | Media | RequestGroup | 
| BodyStructure | DocumentReference | Obat-obatan | ResearchStudy | 
| Bundel - Lihat Catatan | EffectEvidenceSynthesis | MedicationAdministration | ResearchSubject | 
| CapabilityStatement | Perjumpaan | MedicationDispense | RiskAssessment | 
| CarePlan | Titik akhir | MedicationKnowledge | RiskEvidenceSynthesis | 
| CareTeam | EpisodeOfCare | MedicationRequest | Jadwal | 
| ChargeItem | EnrollmentRequest | MedicationStatement | ServiceRequest | 
| ChargeItemDefinition | EnrollmentResponse | MessageHeader | Slot | 
| Klaim | ExplanationOfBenefit | MolecularSequence | Spesimen | 
| ClaimResponse | FamilyMemberHistory | NutritionOrder | StructureDefinition | 
| Komunikasi | Bendera | Observasi | StructureMap | 
| CommunicationRequest | Tujuan | OperationOutcome - Lihat Catatan | Substansi | 
| Komposisi | Kelompok | Organisasi | SupplyDelivery | 
| ConceptMap | GuidanceResponse | OrganizationAffiliation | SupplyRequest | 
| Kondisi | HealthcareService | Parameter - Lihat Catatan | Tugas | 
| Persetujuan | ImagingStudy | Pasien | ValueSet | 
| Kontrak | Imunisasi | PaymentNotice | VisionPrescription | 
| Cakupan | ImmunizationEvaluation | PaymentReconciliation | VerificationResult - Lihat Catatan | 
| CoverageEligibilityRequest | ImmunizationRecommendation | Orang |  | 
| CoverageEligibilityResponse | InsurancePlan | PlanDefinition |  | 

**Spesifikasi dan spesifikasi FHIR HealthLake**  
Anda tidak dapat membuat `GET` atau `POST` meminta dengan FHIR `OperationOutcome` dan jenis `Parameters` sumber daya.
**AuditEvent** AuditEvent Sumber daya dapat dibuat atau dibaca, tetapi tidak dapat diperbarui atau dihapus.
**Bundel** — Ada beberapa cara HealthLake mengelola permintaan Bundle. Untuk detail selengkapnya, lihat [Bundling sumber daya FHIR](managing-fhir-resources-bundle.md).
**VerificationResult**- Jenis sumber daya ini hanya didukung untuk penyimpanan data yang dibuat setelah 09 Desember 2023.

# Parameter pencarian FHIR R4 untuk HealthLake
<a name="reference-fhir-search-parameters"></a>

Gunakan [https://hl7.org/fhir/R4/http.html#search](https://hl7.org/fhir/R4/http.html#search)interaksi FHIR untuk mencari satu set sumber daya FHIR di penyimpanan HealthLake data berdasarkan beberapa kriteria filter. `search`Interaksi dapat dilakukan dengan menggunakan permintaan `GET` atau `POST` permintaan. Untuk pencarian yang melibatkan informasi identitas pribadi (PII) atau informasi kesehatan yang dilindungi (PHI), disarankan untuk menggunakan `POST` permintaan, karena PII dan PHI ditambahkan sebagai bagian dari badan permintaan dan dienkripsi dalam perjalanan.

**catatan**  
`search`Interaksi FHIR yang dijelaskan dalam Bab ini dibangun sesuai dengan standar HL7 FHIR R4 untuk pertukaran data perawatan kesehatan. Karena merupakan representasi dari layanan HL7 FHIR, itu tidak ditawarkan melalui AWS CLI dan AWS SDKs. Untuk informasi selengkapnya, lihat [https://hl7.org/fhir/R4/http.html#search](https://hl7.org/fhir/R4/http.html#search)di dokumentasi **FHIR R4 RESTful API**.  
Anda juga dapat menanyakan penyimpanan HealthLake data dengan SQL menggunakan Amazon Athena. Untuk informasi selengkapnya, lihat Mengintegrasikan.

HealthLake mendukung subset parameter pencarian FHIR R4 berikut. Untuk informasi selengkapnya, lihat [Parameter pencarian FHIR R4 untuk HealthLake](#reference-fhir-search-parameters).

## Jenis parameter pencarian yang didukung
<a name="search-parameter-types"></a>

Tabel berikut menunjukkan jenis parameter pencarian yang didukung di HealthLake.


**Jenis parameter pencarian yang didukung**  

| Parameter pencarian  | Deskripsi | 
| --- | --- | 
| \$1id | Id sumber daya (bukan URL lengkap) | 
| \$1LastUpdated | Tanggal terakhir diperbarui. Server memiliki kebijaksanaan pada presisi batas. | 
| \$1tag | Cari berdasarkan tag sumber daya. | 
| \$1profil | Cari semua sumber daya yang ditandai dengan profil. | 
| \$1keamanan | Cari pada label keamanan yang diterapkan ke sumber daya ini. | 
| \$1sumber | Cari dari mana sumber daya berasal. | 
| \$1teks | Cari di narasi sumber daya. | 
| createdAt | Cari di ekstensi kustom CreateDat. | 

**catatan**  
Parameter pencarian berikut hanya didukung untuk datastores yang dibuat setelah 09 Desember 2023: \$1security, \$1source, \$1text, createDat.

Tabel berikut menunjukkan contoh cara memodifikasi string kueri berdasarkan tipe data tertentu untuk jenis sumber daya tertentu. Untuk kejelasan, karakter khusus di kolom contoh belum dikodekan. Untuk membuat kueri yang berhasil, pastikan bahwa string kueri telah dikodekan dengan benar.


**Cari contoh parameter**  

| Cari Jenis Parameter | Detail  | Contoh | 
| --- | --- | --- | 
|  Bilangan  | Mencari nilai numerik dalam sumber daya tertentu. Angka-angka signifikan diamati. Jumlah digit signifikan spesifik berdasarkan nilai parameter pencarian, tidak termasuk nol di depan. Awalan perbandingan diperbolehkan. |  `[parameter]=100` `[parameter]=1e2` `[parameter]=lt100`  | 
|  Tanggal/ DateTime  |  Mencari tanggal atau waktu tertentu. Format yang diharapkan adalah `yyyy-mm-ddThh:mm:ss[Z\|(+\|-)hh:mm]` tetapi dapat bervariasi. Menerima tipe data berikut:`date`,,`dateTime`, `instant``Period`, dan`Timing`. Untuk detail selengkapnya menggunakan tipe data ini dalam penelusuran, lihat [tanggal](https://www.hl7.org/fhir/search.html#date) dalam dokumentasi **FHIR R4 API RESTful **. Awalan perbandingan diperbolehkan.  |  `[parameter]=eq2013-01-14` `[parameter]=gt2013-01-14T10:00` `[parameter]=ne2013-01-14`  | 
|  String  |  Mencari urutan karakter dengan cara yang peka huruf besar/kecil. Mendukung keduanya `HumanName` dan `Address` jenis. Untuk lebih jelasnya, lihat entri [tipe HumanName data](https://www.hl7.org/fhir/datatypes.html#HumanName) dan entri [tipe `Address` data](https://www.hl7.org/fhir/datatypes.html#Address) dalam dokumentasi **FHIR R4**. Pencarian lanjutan didukung menggunakan `:text` pengubah.  |  `[base]/Patient?given=eve` `[base]/Patient?given:contains=eve`  | 
|  Token  |  Mencari close-to-exact kecocokan terhadap serangkaian karakter, sering dibandingkan dengan sepasang nilai kode medis. Sensitivitas kasus ditautkan ke sistem kode yang digunakan saat membuat kueri. Kueri berbasis subsumption dapat membantu mengurangi masalah yang terkait dengan sensitivitas huruf besar. Untuk kejelasan `\|` belum dikodekan.  |  `[parameter]=[system]\|[code]`Di sini `[system]` mengacu pada sistem pengkodean, dan `[code]` mengacu pada nilai kode yang ditemukan dalam sistem tertentu. `[parameter]=[code]`: Di sini masukan Anda akan cocok dengan kode atau sistem. `[parameter]=\|[code]`: Di sini masukan Anda akan cocok dengan kode, dan properti sistem tidak memiliki pengenal.  | 
|  Komposit  |  Mencari beberapa parameter dalam satu jenis sumber daya, menggunakan pengubah `$` dan `,` operasi. Awalan perbandingan diperbolehkan.  |  `/Patient?language=FR,NL&language=EN` `Observation?component-code-value-quantity=http://loinc.org\|8480-6$lt60` `[base]/Group?characteristic-value=gender$mixed`  | 
|  Kuantitas  |  Mencari nomor, sistem, dan kode sebagai nilai. Diperlukan nomor, tetapi sistem dan kode bersifat opsional. Berdasarkan tipe data Kuantitas. Untuk lebih jelasnya, lihat [Kuantitas](https://www.hl7.org/fhir/datatypes.html#Quantity) dalam dokumentasi **FHIR R4**. Menggunakan sintaks yang diasumsikan berikut `[parameter]=[prefix][number]\|[system]\|[code]`  |  `[base]/Observation?value-quantity=5.4\|http://unitsofmeasure.org\|mg` `[base]/Observation?value-quantity=5.4\|http://unitsofmeasure.org\|mg` `[base]/Observation?value-quantity=5.4\|http://unitsofmeasure.org\|mg` `[base]/Observation?value-quantity=le5.4\|http://unitsofmeasure.org\|mg`  | 
|  Referensi  |  Mencari referensi ke sumber daya lain.  |  `[base]/Observation?subject=Patient/23` `test`  | 
|  URI  |  Mencari serangkaian karakter yang secara jelas mengidentifikasi sumber daya tertentu.  |  `[base]/ValueSet?url=http://acme.org/fhir/ValueSet/123`  | 
|  Khusus  |  Pencarian berdasarkan ekstensi NLP medis terintegrasi.  | 

## Parameter pencarian lanjutan yang didukung oleh HealthLake
<a name="search-parameters-advanced"></a>

HealthLake mendukung parameter pencarian lanjutan berikut.


| Nama | Deskripsi | Contoh | Kemampuan | 
| --- | --- | --- | --- | 
| \$1include | Digunakan untuk meminta agar sumber daya tambahan dikembalikan dalam permintaan pencarian. Ia mengembalikan sumber daya yang direferensikan oleh instance sumber daya target. | Encounter?\$1include=Encounter:subject |   | 
| \$1revinclude | Digunakan untuk meminta agar sumber daya tambahan dikembalikan dalam permintaan pencarian. Ia mengembalikan sumber daya yang mereferensikan contoh sumber daya utama. | Patient?\$1id=patient-identifier&\$1revinclude=Encounter:patient |   | 
| \$1summary | Ringkasan dapat digunakan untuk meminta subset dari sumber daya. | Patient?\$1summary=text | Parameter ringkasan berikut didukung:\$1summary=true,\$1summary=false,\$1summary=text,\$1summary=data. | 
| \$1elements | Minta sekumpulan elemen tertentu yang akan dikembalikan sebagai bagian dari sumber daya dalam hasil pencarian. | Patient?\$1elements=identifier,active,link |   | 
| \$1total | Mengembalikan jumlah sumber daya yang cocok dengan parameter pencarian.  | Patient?\$1total=accurate | Support\$1total=accurate,\$1total=none. | 
| \$1sort | Tunjukkan urutan pengurutan hasil pencarian yang dikembalikan menggunakan daftar yang dipisahkan koma. -Awalan dapat digunakan untuk aturan pengurutan apa pun dalam daftar yang dipisahkan koma untuk menunjukkan urutan menurun.  | Observation?\$1sort=status,-date | Support mengurutkan berdasarkan bidang dengan tipeNumber, String, Quantity, Token, URI, Reference. Urutkan berdasarkan hanya Date didukung untuk penyimpanan data yang dibuat setelah 09 Desember 2023. Support hingga 5 aturan pengurutan. | 
| \$1count | Kontrol berapa banyak sumber daya yang dikembalikan per halaman bundel pencarian. | Patient?\$1count=100 | Ukuran halaman maksimum adalah 100. | 
| chaining | Cari elemen sumber daya yang direferensikan. .Mengarahkan pencarian dirantai ke elemen dalam sumber daya yang direferensikan. | DiagnosticReport?subject:Patient.name=peter |   | 
| reverse chaining (\$1has) | Cari sumber daya berdasarkan elemen sumber daya yang merujuknya.  | Patient?\$1has:Observation:patient:code=1234-5 |   | 

`_include`

Menggunakan `_include` dalam kueri penelusuran memungkinkan sumber daya FHIR tambahan yang ditentukan juga dikembalikan. Gunakan `_include` untuk menyertakan sumber daya yang ditautkan ke depan. 

**Example — `_include` Untuk digunakan untuk menemukan pasien atau kelompok pasien yang telah didiagnosis dengan batuk**  
Anda akan mencari pada jenis `Condition` sumber daya yang menentukan kode diagnostik untuk batuk, dan kemudian menggunakan `_include` tentukan bahwa Anda ingin diagnosis itu dikembalikan juga. `subject` Dalam tipe `Condition` sumber daya `subject` mengacu pada jenis sumber daya pasien atau tipe sumber daya grup.  
Untuk kejelasan, karakter khusus dalam contoh belum dikodekan. Untuk membuat kueri yang berhasil, pastikan bahwa string kueri telah dikodekan dengan benar.  

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/
Condition?code=49727002&_include=Condition:subject
```

`_include:iterate`Pengubah

`_include:iterate`Pengubah memungkinkan penyertaan rekursif sumber daya yang direferensikan di dua tingkatan. Misalnya, 

```
GET /ServiceRequest?identifier=025C0931195&_include=ServiceRequest:requester&_include:iterate=PractitionerRole:practitioner
```

akan mengembalikan ServiceRequest, yang terkait PractitionerRole (melalui referensi pemohon), dan kemudian secara rekursif menyertakan Praktisi yang direferensikan oleh itu. PractitionerRole Pengubah ini tersedia untuk semua jenis sumber daya di HealthLake.

`_include=*`Pengubah

`_include=*`Pengubah adalah wildcard yang secara otomatis menyertakan semua sumber daya yang direferensikan langsung oleh hasil pencarian. Misalnya, 

```
GET /ServiceRequest?specimen.accession=12345&_include=*
```

akan mengembalikan pencocokan ServiceRequest bersama dengan semua sumber daya yang dirujukannya (seperti Pasien, Praktisi, Spesimen, dll.) Tanpa perlu menentukan setiap jalur referensi secara individual. Pengubah ini tersedia untuk semua jenis sumber daya di HealthLake.

`_revinclude`

Menggunakan `_revinclude` dalam kueri penelusuran memungkinkan sumber daya FHIR tambahan yang ditentukan juga dikembalikan. Gunakan `_revinclude` untuk menyertakan sumber daya yang ditautkan ke belakang.

**Example — Untuk digunakan `_revinclude` untuk memasukkan jenis sumber daya Pertemuan dan Pengamatan terkait yang terkait dengan Pasien tertentu**  
Untuk melakukan pencarian ini, pertama-tama Anda akan menentukan individu `Patient` dengan menentukan pengenal mereka di parameter `_id` pencarian. Kemudian Anda akan menentukan sumber daya FHIR tambahan menggunakan struktur `Encounter:patient` dan`Observation:patient`.  
Untuk kejelasan, karakter khusus dalam contoh belum dikodekan. Untuk membuat kueri yang berhasil, pastikan bahwa string kueri telah dikodekan dengan benar.  

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/
Patient?_id=patient-identifier&_revinclude=Encounter:patient&_revinclude=Observation:patient
```

`_summary`

Menggunakan `_summary` dalam permintaan pencarian memungkinkan pengguna untuk meminta subset dari sumber daya FHIR. Ini dapat berisi salah satu nilai berikut:`true, text, data, false`. Nilai lainnya akan diperlakukan sebagai tidak valid. Sumber daya yang dikembalikan akan ditandai dengan `'SUBSETTED'` meta.tag, untuk menunjukkan bahwa sumber daya tidak lengkap. 
+ `true`: Kembalikan semua elemen yang didukung yang ditandai sebagai 'ringkasan' dalam definisi dasar sumber daya.
+ `text`: Kembalikan hanya elemen 'teks', 'id', 'meta', dan hanya elemen wajib tingkat atas.
+ `data`: Kembalikan semua bagian kecuali elemen 'teks'.
+ `false`: Kembalikan semua bagian sumber daya

Dalam satu permintaan pencarian, `_summary=text` tidak dapat digabungkan dengan `_include` atau parameter `_revinclude` pencarian. 

**Example — Dapatkan elemen “teks” dari sumber daya Pasien di penyimpanan data.**  

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient?_summary=text
```

`_elements`

Menggunakan `_elements` dalam permintaan pencarian memungkinkan untuk elemen sumber daya FHIR tertentu yang akan diminta. Sumber daya yang dikembalikan akan ditandai dengan `'SUBSETTED'` meta.tag, untuk menunjukkan bahwa sumber daya tidak lengkap. 

`_elements`Parameter terdiri dari daftar nama elemen dasar yang dipisahkan koma seperti elemen yang didefinisikan pada tingkat root dalam sumber daya. Hanya elemen yang terdaftar yang akan dikembalikan. Jika nilai `_elements` parameter mengandung elemen yang tidak valid, server akan mengabaikannya dan mengembalikan elemen wajib dan elemen yang valid. 

`_elements`tidak akan berlaku untuk sumber daya yang disertakan (sumber daya yang dikembalikan yang mode pencariannya`include`).

Dalam satu permintaan pencarian, `_elements` tidak dapat digabungkan dengan parameter `_summary` pencarian. 

**Example — Dapatkan elemen “pengenal”, “aktif”, “tautan” dari sumber daya Pasien di penyimpanan HealthLake data Anda.**  

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient?_elements=identifier,active,link
```

`_total`

Menggunakan `_total` dalam permintaan pencarian akan mengembalikan jumlah sumber daya yang cocok dengan parameter pencarian yang diminta. HealthLake akan mengembalikan jumlah total sumber daya yang cocok (sumber daya yang dikembalikan yang mode pencariannya`match`) dalam `Bundle.total` respons pencarian. 

`_total`mendukung`accurate`, nilai `none` parameter. `_total=estimate`tidak didukung. Nilai lainnya akan diperlakukan sebagai tidak valid. `_total`tidak berlaku untuk sumber daya yang disertakan (sumber daya yang dikembalikan yang mode pencariannya`include`). 

**Example — Dapatkan jumlah total sumber daya Pasien di penyimpanan data:**  

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient?_total=accurate
```

`_sort`

Menggunakan `_sort` dalam permintaan pencarian mengatur hasil dalam urutan tertentu. Hasilnya diurutkan berdasarkan daftar aturan pengurutan yang dipisahkan koma dalam urutan prioritas. Aturan pengurutan harus berupa parameter pencarian yang valid. Nilai lainnya akan diperlakukan sebagai tidak valid. 

Dalam satu permintaan pencarian, Anda dapat menggunakan hingga 5 parameter pencarian pengurutan. Anda secara opsional dapat menggunakan `-` awalan untuk menunjukkan urutan menurun. Server akan mengurutkan urutan menaik secara default. 

Jenis parameter pencarian sortir yang didukung adalah:`Number, String, Date, Quantity, Token, URI, Reference`. Jika parameter pencarian mengacu pada elemen yang bersarang, parameter pencarian ini tidak didukung untuk pengurutan. Misalnya, pencarian pada 'nama' dari tipe sumber daya Pasien mengacu pada elemen Patient.name dengan tipe HumanName data dianggap sebagai bersarang. Dengan demikian, urutkan sumber daya Pasien dengan 'nama' tidak didukung.

**Example — Dapatkan sumber daya Pasien di penyimpanan data dan urutkan berdasarkan tanggal lahir dalam urutan menaik:**  

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient?_sort=birthdate
```

`_count`

Parameter `_count` didefinisikan sebagai instruksi ke server mengenai berapa banyak sumber daya yang harus dikembalikan dalam satu halaman.

Ukuran halaman maksimum adalah 100. Nilai apa pun yang lebih besar dari 100 tidak valid. `_count=0`tidak didukung.

**Example — Cari sumber daya Pasien dan atur ukuran halaman pencarian ke 25:**  

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient?_count=25
```

`Chaining and Reverse Chaining(_has)`

Chaining dan reverse chaining di FHIR memberikan cara yang lebih efisien dan ringkas untuk mendapatkan data yang saling berhubungan, mengurangi kebutuhan akan beberapa kueri terpisah dan membuat pengambilan data lebih nyaman bagi pengembang dan pengguna.

Jika ada tingkat rekursi yang mengembalikan lebih dari 100 hasil, HealthLake akan mengembalikan 4xx untuk melindungi penyimpanan data agar tidak kelebihan beban dan menyebabkan beberapa paginasi.

**Example — Chaining - Mendapat semua DiagnosticReport yang merujuk pada Pasien di mana nama Pasien adalah peter.**  

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/DiagnosticReport?subject:Patient.name=peter
```

**Example — Reverse Chaining - Dapatkan sumber daya Pasien, di mana sumber daya pasien dirujuk oleh setidaknya satu Observasi di mana pengamatan memiliki kode 1234, dan di mana Observasi mengacu pada sumber daya pasien dalam parameter pencarian pasien.**  
  

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient?_has:Observation:patient:code=1234
```

## Pengubah pencarian yang didukung
<a name="search-parameter-modifiers"></a>

Pengubah pencarian digunakan dengan bidang berbasis string. Semua pengubah pencarian HealthLake menggunakan logika berbasis Boolean. Misalnya, Anda dapat menentukan `:contains` untuk menentukan bahwa bidang string yang lebih besar harus menyertakan string kecil agar dapat disertakan dalam hasil pencarian Anda.


**Pengubah pencarian yang didukung**  

| Pengubah pencarian | Tipe | 
| --- | --- | 
| :hilang | Semua parameter kecuali Composite | 
| :tepat | String | 
| :berisi | String | 
| :tidak | Token | 
| :teks | Token | 
| :pengidentifikasi | Referensi | 
| :di bawah | URI | 

## Komparator pencarian yang didukung
<a name="search-comparators"></a>

Anda dapat menggunakan pembanding pencarian untuk mengontrol sifat pencocokan dalam pencarian. Anda dapat menggunakan komparator saat mencari bidang angka, tanggal, dan kuantitas. Tabel berikut mencantumkan pembanding pencarian dan definisinya yang didukung oleh HealthLake.


**Komparator pencarian yang didukung**  

|  Cari pembanding  |  Deskripsi  | 
| --- | --- | 
| persamaan | Nilai untuk parameter dalam sumber daya sama dengan nilai yang diberikan. | 
| ne | Nilai untuk parameter dalam sumber daya tidak sama dengan nilai yang diberikan. | 
| gt | Nilai untuk parameter dalam sumber daya lebih besar dari nilai yang diberikan. | 
| lt | Nilai untuk parameter dalam sumber daya kurang dari nilai yang diberikan. | 
| ge | Nilai untuk parameter dalam sumber daya lebih besar atau sama dengan nilai yang diberikan. | 
| le | Nilai untuk parameter dalam sumber daya kurang atau sama dengan nilai yang diberikan. | 
| sa | Nilai untuk parameter dalam sumber daya dimulai setelah nilai yang diberikan. | 
| eb | Nilai untuk parameter dalam sumber daya berakhir sebelum nilai yang diberikan. | 

## Parameter pencarian FHIR tidak didukung oleh HealthLake
<a name="search-parameters-unsupported"></a>

HealthLake mendukung semua parameter pencarian FHIR dengan pengecualian yang tercantum dalam tabel berikut. Untuk daftar lengkap parameter pencarian FHIR, lihat registri [parameter pencarian FHIR](https://hl7.org/fhir/R4/searchparameter-registry.html). 


**Parameter pencarian yang tidak didukung**  

|  |  | 
| --- |--- |
| Komposisi bundel | Lokasi-dekat | 
| Pengenal bundel | C onsent-source-reference | 
| Pesan bundel | Kontrak-pasien | 
| Jenis bundel | Konten sumber daya | 
| Bundle-stempel waktu | Permintaan sumber daya | 

# FHIR `$operations` R4 untuk HealthLake
<a name="reference-fhir-operations"></a>

 Operasi FHIR \$1 (juga disebut “operasi dolar”) adalah fungsi sisi server khusus yang melampaui operasi CRUD (`Create`,, `Read``Update`,`Delete`) standar dalam spesifikasi FHIR. Operasi ini diidentifikasi dengan awalan “\$1” dan memungkinkan pemrosesan kompleks, transformasi data, dan operasi massal yang akan sulit atau tidak efisien untuk dilakukan menggunakan panggilan REST API standar. \$1 Operasi dapat dipanggil pada tingkat sistem, tingkat jenis sumber daya, atau pada contoh sumber daya tertentu, menyediakan cara yang fleksibel untuk berinteraksi dengan data FHIR. AWS HealthLake mendukung beberapa FHIR`$operations`. Silakan merujuk ke setiap halaman individu di bawah ini untuk detail tambahan.

**Topics**
+ [Operasi FHIR R4 `$attribution-status` untuk HealthLake](reference-fhir-operations-attribution-status.md)
+ [Menghapus Jenis Sumber Daya dengan `$bulk-delete`](reference-fhir-operations-bulk-delete.md)
+ [`$bulk-member-match`operasi untuk HealthLake](reference-fhir-operations-bulk-member-match.md)
+ [Operasi FHIR R4 `$confirm-attribution-list` untuk HealthLake](reference-fhir-operations-confirm-attribution-list.md)
+ [Operasi FHIR R4 `$davinci-data-export` untuk HealthLake](reference-fhir-operations-davinci-data-export.md)
+ [Menghasilkan Dokumen Klinis dengan `$document`](reference-fhir-operations-document.md)
+ [Menghapus Sumber Daya Secara Permanen dengan `$erase`](reference-fhir-operations-erase.md)
+ [Mendapatkan data pasien dengan `Patient/$everything`](reference-fhir-operations-everything.md)
+ [Mengambil ValueSet Kode dengan `$expand`](reference-fhir-operations-expand.md)
+ [Mengekspor HealthLake data dengan FHIR `$export`](reference-fhir-operations-export.md)
+ [`$inquire`Operasi FHIR untuk HealthLake](reference-fhir-operations-inquire.md)
+ [Mengambil Detail Konsep dengan `$lookup`](reference-fhir-operations-lookup.md)
+ [`$member-add`operasi untuk HealthLake](reference-fhir-operations-member-add.md)
+ [`$member-match`operasi untuk HealthLake](reference-fhir-operations-member-match.md)
+ [`$member-remove`operasi untuk HealthLake](reference-fhir-operations-member-remove.md)
+ [Menghapus Sumber Daya Kompartemen Pasien dengan `$purge`](reference-fhir-operations-purge.md)
+ [`$questionnaire-package`Operasi FHIR untuk HealthLake](reference-fhir-operations-questionnaire-package.md)
+ [`$submit`Operasi FHIR untuk HealthLake](reference-fhir-operations-submit.md)
+ [Memvalidasi Sumber Daya FHIR dengan `$validate`](reference-fhir-operations-validate.md)

# Operasi FHIR R4 `$attribution-status` untuk HealthLake
<a name="reference-fhir-operations-attribution-status"></a>

Mengambil status atribusi untuk anggota tertentu, mengembalikan Bundel yang berisi semua sumber atribusi yang terkait dengan Pasien. Operasi ini merupakan bagian dari implementasi [Daftar Atribusi Anggota FHIR (ATR) IG](https://build.fhir.org/ig/HL7/davinci-atr/spec.html) 2.1.0.

## Titik akhir
<a name="attribution-status-endpoint"></a>

```
POST [base]/Group/[id]/$attribution-status
```

## Parameter Permintaan
<a name="attribution-status-parameters"></a>

Operasi menerima parameter opsional berikut:


| Parameter | Jenis | Deskripsi | 
| --- | --- | --- | 
| MemberID | Pengidentifikasi |  MemberId Anggota yang meminta status atribusi | 
| PatientReferensi | Referensi | Referensi ke sumber daya pasien dalam sistem Produsen | 

**catatan**  
Baik `memberId` atau `patientReference` dapat disediakan, atau keduanya untuk tujuan validasi.

## Permintaan Sampel
<a name="attribution-status-request-example"></a>

```
{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "memberId",
      "valueIdentifier": {
        "system": "http://example.org",
        "value": "MBR123456789"
      }
    },
    {
      "name": "patientReference",
      "valueReference": {
        "reference": "Patient/patient-123",
        "display": "John Doe"
      }
    }
  ]
}
```

## Respons
<a name="attribution-status-response"></a>

Mengembalikan Bundel yang berisi sumber daya atribusi yang terkait dengan Pasien:


| Sumber daya | Kardinalitas | Lokasi | 
| --- | --- | --- | 
| Pasien | 1.. 1 | Group.member.entity | 
| Cakupan | 0.. 1 | Group.member.extension:CoverageReference | 
| Organization/Practitioner/PractitionerRole | 0.. 1 | group.member.extension:AttributedProvider | 
| Sumber Daya Apa Pun | 0.. 1 | Group.member.extension:AssociatedData | 

### Contoh Respons
<a name="attribution-status-response-example"></a>

```
{
  "resourceType": "Bundle",
  "id": "bundle-response",
  "meta": {
    "lastUpdated": "2014-08-18T01:43:33Z"
  },
  "type": "collection",
  "entry": [
    {
      "fullUrl": "http://example.org/fhir/Patient/12423",
      "resource": {
        "resourceType": "Patient",
        "id": "12423",
        "meta": {
          "versionId": "1",
          "lastUpdated": "2014-08-18T01:43:31Z"
        },
        "active": true,
        "name": [
          {
            "use": "official",
            "family": "Chalmers",
            "given": ["Peter", "James"]
          }
        ],
        "gender": "male",
        "birthDate": "1974-12-25"
      }
    },
    {
      "fullUrl": "http://example.org/fhir/Coverage/123456",
      "resource": {
        "resourceType": "Coverage",
        "id": "1"
        // ... additional Coverage resource details
      }
    },
    {
      "fullUrl": "http://example.org/fhir/Organization/666666",
      "resource": {
        "resourceType": "Organization",
        "id": "2"
        // ... additional Organization resource details
      }
    }
  ]
}
```

## Penanganan Kesalahan
<a name="attribution-status-error-handling"></a>

Operasi menangani kondisi kesalahan berikut:


| Kesalahan | Status HTTP | Deskripsi | 
| --- | --- | --- | 
| Permintaan operasi tidak valid | 400 | Parameter atau struktur permintaan yang tidak sesuai | 
| Sumber daya grup tidak ditemukan | 404 | ID Grup yang ditentukan tidak ada | 
| Sumber daya pasien tidak ditemukan | 404 | Referensi Pasien yang ditentukan tidak ada | 

## Otorisasi dan Keamanan
<a name="attribution-status-authorization"></a>

Persyaratan Lingkup SMART  
Klien harus memiliki hak istimewa yang sesuai untuk membaca sumber daya Grup dan sumber daya atribusi terkait  
Mekanisme otorisasi FHIR standar berlaku untuk semua operasi

# Menghapus Jenis Sumber Daya dengan `$bulk-delete`
<a name="reference-fhir-operations-bulk-delete"></a>

AWS HealthLake mendukung `$bulk-delete` operasi, memungkinkan penghapusan semua sumber daya dari jenis tertentu dalam datastore. Operasi ini sangat berguna ketika Anda perlu:
+ Lakukan audit dan pembersihan musiman
+ Mengelola siklus hidup data dalam skala
+ Hapus jenis sumber daya tertentu
+ Mematuhi kebijakan penyimpanan data

## Penggunaan
<a name="bulk-delete-usage"></a>

`$bulk-delete`Operasi dapat dipanggil menggunakan metode POST:

```
POST [base]/[ResourceType]/$bulk-delete?isHardDelete=false&deleteAuditEvent=true
```

## Parameter
<a name="bulk-delete-parameters"></a>


| Parameter | Tipe | Diperlukan | Default | Deskripsi | 
| --- | --- | --- | --- | --- | 
| isHardDelete | boolean | Tidak | false | Ketika benar, secara permanen menghapus sumber daya dari penyimpanan | 
| deleteAuditEvent | boolean | Tidak | true | Jika benar, menghapus peristiwa audit terkait | 
| \$1since | string | Tidak | Waktu pembuatan Datastore | Saat dimasukkan, pilih waktu cutoff awal untuk menemukan sumber daya berdasarkan waktu LastModified mereka. Tidak dapat digunakan dengan awal atau akhir | 
| start | string | Tidak | Waktu pembuatan Datastore | Saat dimasukkan, pilih waktu cutoff untuk menemukan sumber daya berdasarkan waktu LastModified mereka. Dapat digunakan dengan akhir | 
| end | string | Tidak | Waktu pengajuan Job | Saat dimasukkan, pilih waktu cutoff akhir untuk menemukan sumber daya berdasarkan waktu LastModified mereka | 

## Contoh
<a name="bulk-delete-examples"></a>

**Contoh Permintaan**  


```
POST [base]/Observation/$bulk-delete?isHardDelete=false
```

**Contoh Respons**  


```
{
      "jobId": "jobId",
      "jobStatus": "SUBMITTED"
    }
```

## Status Tugas
<a name="bulk-delete-job-status"></a>

Untuk memeriksa status pekerjaan penghapusan massal:

```
GET [base]/$bulk-delete/[jobId]
```

Operasi mengembalikan informasi status pekerjaan:

```
{
      "datastoreId": "datastoreId",
      "jobId": "jobId",
      "status": "COMPLETED",
      "submittedTime": "2025-10-09T15:09:51.336Z"
    }
```

## Perilaku
<a name="bulk-delete-behavior"></a>

`$bulk-delete`Operasi:

1. Memproses secara asinkron untuk menangani volume sumber daya yang besar

1. Menjaga transaksi ACID untuk integritas data

1. Menyediakan pelacakan status pekerjaan dengan jumlah penghapusan sumber daya

1. Mendukung mode penghapusan lunak dan keras

1. Termasuk pencatatan audit yang komprehensif atas kegiatan penghapusan

1. Memungkinkan penghapusan selektif versi historis dan peristiwa audit

## Pencatatan Audit
<a name="bulk-delete-audit-logging"></a>

Log `$bulk-delete` operasi sebagai Mulai FHIRBulk DeleteJob dan Jelaskan FHIRBulk DeleteJob dengan informasi operasi terperinci.

## Batasan
<a name="bulk-delete-limitations"></a>
+ Bila `isHardDelete` disetel ke true, sumber daya yang dihapus tidak akan muncul di hasil penelusuran atau `_history` kueri.
+ Sumber daya yang dihapus melalui operasi ini mungkin sementara tidak dapat diakses selama pemrosesan
+ Pengukuran penyimpanan disesuaikan hanya pada versi historis - deleteVersionHistory =false tidak akan menyesuaikan penyimpanan datastore

# `$bulk-member-match`operasi untuk HealthLake
<a name="reference-fhir-operations-bulk-member-match"></a>

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.](https://build.fhir.org/ig/HL7/davinci-epdx/OperationDefinition-BulkMemberMatch.html)

**catatan**  
`$bulk-member-match`Operasi 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
<a name="bulk-member-match-usage"></a>

`$bulk-member-match`Operasi 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
<a name="bulk-member-match-parameters"></a>

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
<a name="bulk-member-match-request-example"></a>

Contoh berikut menunjukkan permintaan POST untuk mengirimkan pekerjaan kecocokan anggota massal. Setiap anggota dibungkus dalam `MemberBundle` parameter yang berisi yang diperlukan`MemberPatient`,`CoverageToMatch`, dan `Consent` sumber daya, bersama dengan opsional`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"
              }
            ]
          }
        }
      ]
    }
  ]
}
```

## Menyelesaikan respons pekerjaan dengan output
<a name="bulk-member-match-response-example"></a>

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
<a name="bulk-member-match-output-groups"></a>

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.quantity`Bidang 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 \$1 davinci-data-export
<a name="bulk-member-match-davinci-integration"></a>

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
<a name="bulk-member-match-performance"></a>

`$bulk-member-match`Operasi 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
<a name="bulk-member-match-authorization"></a>

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
<a name="bulk-member-match-errors"></a>

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.

## Operasi terkait
<a name="bulk-member-match-related"></a>
+ [`$member-match`operasi untuk HealthLake](reference-fhir-operations-member-match.md)— Operasi pencocokan anggota individu.
+ [Operasi FHIR R4 `$davinci-data-export` untuk HealthLake](reference-fhir-operations-davinci-data-export.md)— Ekspor data massal menggunakan sumber daya Grup.
+ [FHIR `$operations` R4 untuk HealthLake](reference-fhir-operations.md)— Daftar lengkap operasi yang didukung.

# Operasi FHIR R4 `$confirm-attribution-list` untuk HealthLake
<a name="reference-fhir-operations-confirm-attribution-list"></a>

Menunjukkan kepada Produser bahwa Konsumen tidak memiliki perubahan lagi untuk dilakukan pada Daftar Atribusi. Operasi ini menyelesaikan daftar atribusi dengan menghapus anggota yang tidak aktif dari daftar, mengubah status menjadi “final”, dan mengakui operasi. Operasi ini merupakan bagian dari implementasi [Daftar Atribusi Anggota FHIR (ATR) IG](https://build.fhir.org/ig/HL7/davinci-atr/spec.html) 2.1.0.

## Titik akhir
<a name="confirm-attribution-list-endpoint"></a>

```
POST [base]/Group/[id]/$confirm-attribution-list
```

## Permintaan
<a name="confirm-attribution-list-request"></a>

Tidak ada parameter yang diperlukan.

```
POST [base]/Group/[id]/$confirm-attribution-list
```

## Respons
<a name="confirm-attribution-list-response"></a>

Mengembalikan HTTP 201 dengan pesan konfirmasi.

### Contoh Respons
<a name="confirm-attribution-list-response-example"></a>

```
HTTP Status Code: 201

{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "message",
      "valueString": "Accepted."
    }
  ]
}
```

## Status Grup Setelah Konfirmasi
<a name="confirm-attribution-list-group-status"></a>

Setelah konfirmasi berhasil, sumber daya Grup akan memiliki status daftar atribusi disetel ke “final”:

```
{
  "resourceType": "Group",
  "id": "fullexample",
  "extension": [
    {
      "url": "http://hl7.org/fhir/us/davinci-atr/StructureDefinition/ext-attributionListStatus",
      "valueCode": "final"
    }
  ]
  // ... other Group properties
}
```

## Penanganan Kesalahan
<a name="confirm-attribution-list-error-handling"></a>

Operasi menangani kondisi kesalahan berikut:


| Kesalahan | Status HTTP | Deskripsi | 
| --- | --- | --- | 
| Permintaan operasi tidak valid | 400 | Parameter atau struktur permintaan yang tidak sesuai | 
| Sumber daya grup tidak ditemukan | 404 | ID Grup yang ditentukan tidak ada | 

## Otorisasi dan Keamanan
<a name="confirm-attribution-list-authorization"></a>

Persyaratan Lingkup SMART  
Klien harus memiliki hak istimewa yang sesuai untuk membaca sumber daya Grup dan sumber daya atribusi terkait  
Untuk`$confirm-attribution-list`, klien juga harus memiliki hak menulis untuk memodifikasi sumber daya Grup  
Mekanisme otorisasi FHIR standar berlaku untuk semua operasi

# Operasi FHIR R4 `$davinci-data-export` untuk HealthLake
<a name="reference-fhir-operations-davinci-data-export"></a>

`$davinci-data-export`Operasi ini adalah operasi FHIR asinkron yang dapat Anda gunakan untuk mengekspor data perawatan kesehatan. AWS HealthLake Operasi ini mendukung beberapa jenis ekspor, termasuk Atribusi Anggota (ATR), Akses PDex Penyedia Payer-to-Payer, dan Akses Anggota. APIs Ini adalah versi khusus dari `$export` operasi FHIR standar, yang dirancang untuk memenuhi persyaratan panduan DaVinci implementasi.

## Fitur Utama
<a name="davinci-data-export-features"></a>
+ *Pemrosesan Asinkron: Mengikuti* pola permintaan asinkron FHIR standar
+ *Ekspor Tingkat Grup: Mengekspor* data untuk anggota dalam sumber daya Grup tertentu
+ *Beberapa Jenis Ekspor*: Mendukung ATR (Atribusi Anggota), Akses PDex Penyedia Payer-to-Payer, dan Akses Anggota APIs
+ *Dukungan Profil Komprehensif*: Termasuk US Core, CARIN Blue Button, dan PDex profil
+ *Penyaringan Fleksibel*: Mendukung penyaringan oleh pasien, jenis sumber daya, dan rentang waktu
+ *Output NDJSON*: Menyediakan data dalam format JSON yang dibatasi baris baru

## Titik Akhir Operasi
<a name="davinci-data-export-endpoint"></a>

```
GET [base]/Group/[id]/$davinci-data-export
POST [base]/Group/[id]/$davinci-data-export
```

## Parameter Permintaan
<a name="davinci-data-export-parameters"></a>


| Parameter | Kardinalitas | Deskripsi | 
| --- | --- | --- | 
| patient | 0.. \$1 | Anggota tertentu yang datanya akan diekspor. Ketika dihilangkan, semua anggota di Grup diekspor. | 
| \$1type | 0.. 1 | Daftar tipe sumber daya FHIR yang dibatasi koma untuk diekspor. | 
| \$1since | 0.. 1 | Hanya sertakan sumber daya yang diperbarui setelah tanggal dan waktu ini. | 
| \$1until | 0.. 1 | Hanya sertakan sumber daya yang diperbarui sebelum tanggal dan waktu ini. | 
| exportType | 0.. 1 | Jenis ekspor yang akan dilakukan. Nilai yang valid:hl7.fhir.us.davinci-atr,hl7.fhir.us.davinci-pdex,hl7.fhir.us.davinci-pdex.p2p,hl7.fhir.us.davinci-pdex.member. Default: hl7.fhir.us.davinci-atr. | 
| \$1includeEOB2xWoFinancial | 0.. 1 | Menentukan apakah akan menyertakan ExplanationOfBenefit sumber daya CARIN BB 2.x dengan data keuangan dihapus. Default: false. | 

### Jenis Sumber Daya yang Didukung
<a name="davinci-data-export-supported-resources"></a>

Jenis sumber daya yang didukung bergantung pada jenis ekspor yang Anda tentukan. Untuk ekspor ATR, jenis sumber daya berikut didukung:
+ `Group`
+ `Patient`
+ `Coverage`
+ `RelatedPerson`
+ `Practitioner`
+ `PractitionerRole`
+ `Organization`
+ `Location`

Untuk PDex ekspor (Akses Penyedia Payer-to-Payer, dan Akses Anggota), semua jenis sumber daya klinis dan klaim didukung selain jenis sebelumnya. Untuk daftar lengkap jenis sumber daya yang didukung, lihat [Panduan Implementasi Inti AS (STU 6.1), Panduan Implementasi](https://hl7.org/fhir/us/core/STU6.1/) [Tombol Biru CARIN, dan Panduan Implementasi](https://hl7.org/fhir/us/carin-bb/) Dukungan [Otorisasi Sebelumnya Da Vinci](https://hl7.org/fhir/us/davinci-pas/).

## Jenis Ekspor
<a name="davinci-data-export-types"></a>

`$davinci-data-export`Operasi ini mendukung jenis ekspor berikut. Anda menentukan jenis ekspor dengan menggunakan `exportType` parameter.


| Jenis Ekspor | Tujuan | Lingkup Data | Batas Temporal | 
| --- | --- | --- | --- | 
| hl7.fhir.us.davinci-atr | Daftar Atribusi Anggota | Sumber daya terkait atribusi | Tidak ada | 
| hl7.fhir.us.davinci-pdex | API Akses Penyedia | Data klinis dan klaim untuk pasien yang dikaitkan | 5 tahun | 
| hl7.fhir.us.davinci-pdex.p2p | Payer-to-Payer Pertukaran | Data anggota historis untuk transisi asuransi | 5 tahun | 
| hl7.fhir.us.davinci-pdex.member | API Akses Anggota | Data kesehatan anggota sendiri | 5 tahun | 

**catatan**  
Untuk PDex ekspor, batas temporal 5 tahun tidak berlaku untuk jenis sumber daya ATR (`Group`,,,`Patient`,`Coverage`, `RelatedPerson` `Practitioner``PractitionerRole`,`Organization`). `Location` Sumber daya ini selalu disertakan tanpa memandang usia.

### ATR (hl7.fhir.us.davinci-atr)
<a name="davinci-data-export-type-atr"></a>

Dengan tipe ekspor ATR, Anda dapat mengekspor data Daftar Atribusi Anggota. Gunakan jenis ekspor ini untuk mengambil sumber daya terkait atribusi bagi anggota dalam Grup. Untuk informasi lebih lanjut, lihat Operasi [Ekspor ATR Da Vinci](https://build.fhir.org/ig/HL7/davinci-atr/OperationDefinition-davinci-data-export.html).

Jenis Sumber Daya yang Didukung  
`Group`, `Patient`, `Coverage`, `RelatedPerson`, `Practitioner`, `PractitionerRole`, `Organization`, `Location`

Penyaringan Temporal  
Tidak ada penyaringan temporal yang diterapkan. Semua sumber daya yang cocok diekspor terlepas dari tanggal.

### PDex Jenis Ekspor
<a name="davinci-data-export-type-pdex"></a>

Semua jenis PDex ekspor berbagi profil yang didukung dan logika pemfilteran yang sama. Untuk informasi selengkapnya, lihat [Da Vinci PDex Provider Access API](https://build.fhir.org/ig/HL7/davinci-epdx/provider-access-api.html). Profil berikut didukung:
+ US Core 3.1.1, 6.1.0, dan 7.0.0
+ PDex Otorisasi Sebelumnya (tidak didukung untuk Akses Anggota)
+ CARIN BB 2.x Profil dasar: Institusional Rawat Inap, Kelembagaan Rawat Jalan, Profesional, Lisan, Farmasi NonClinician

Akses Penyedia (`hl7.fhir.us.davinci-pdex`)  
Memungkinkan penyedia dalam jaringan untuk mengambil data pasien untuk pasien yang dikaitkan.

Payer-to-Payer (`hl7.fhir.us.davinci-pdex.p2p`)  
Memungkinkan pertukaran data antara pembayar ketika pasien mengubah asuransi.

Akses Anggota (`hl7.fhir.us.davinci-pdex.member`)  
Memungkinkan anggota untuk mengakses data kesehatan mereka sendiri. Jenis ekspor ini dapat mencakup data keuangan dalam sumber klaim.

## Dukungan Profil dan Logika Inklusi
<a name="davinci-data-export-profile-support"></a>

Untuk PDex ekspor, `$davinci-data-export` operasi menggunakan deklarasi profil dalam `meta.profile` elemen untuk menentukan sumber daya mana yang akan disertakan dalam ekspor.

### ExplanationOfBenefit Penanganan Sumber Daya
<a name="davinci-data-export-carin-handling"></a>

`ExplanationOfBenefit`(EOB) sumber daya dimasukkan atau dikecualikan dari PDex ekspor berdasarkan deklarasinya`meta.profile`:
+ ExplanationOfBenefit sumber daya dengan profil CARIN BB 1.x dikecualikan dari ekspor.
+ ExplanationOfBenefit sumber daya tanpa `meta.profile` set dikecualikan dari ekspor.
+ ExplanationOfBenefit sumber daya dengan profil CARIN BB 2.x Basis selalu disertakan.
+ ExplanationOfBenefit sumber daya dengan profil CARIN BB 2.x yang berisi data keuangan dikecualikan secara default. Ketika `_includeEOB2xWoFinancial=true` diatur, mereka disertakan dengan data keuangan yang dilucuti dan sumber daya diubah ke profil Basis yang sesuai.
+ ExplanationOfBenefit sumber daya dengan profil Otorisasi PDex Sebelumnya selalu disertakan.

### Transformasi Data Keuangan
<a name="davinci-data-export-financial-transformation"></a>

Ketika Anda mengatur`_includeEOB2xWoFinancial=true`, operasi mengubah ExplanationOfBenefit sumber daya [CARIN BB 2.x](https://hl7.org/fhir/us/carin-bb/) ke profil Basis yang sesuai dengan menghapus data keuangan. Misalnya, `C4BB ExplanationOfBenefit Oral` sumber daya diubah menjadi`C4BB ExplanationOfBenefit Oral Basis`, yang menghapus data keuangan dari catatan per spesifikasi FHIR.

Elemen data keuangan berikut dihapus selama transformasi:
+ Semua mengiris elemen `total`
+ Semua `adjudication` elemen dengan `amounttype` irisan
+ Semua `item.adjudication` elemen dengan informasi jumlah

Operasi ini juga memperbarui metadata profil selama transformasi:
+ `meta.profile`diperbarui ke URL kanonik profil Dasar
+ Versi diperbarui ke versi CARIN BB 2.x Basis
+ Sumber daya yang ada di penyimpanan data tidak dimodifikasi
+ Sumber daya yang diekspor tidak disimpan kembali ke penyimpanan data

### Aturan Deteksi Profil
<a name="davinci-data-export-profile-detection"></a>

Operasi menggunakan aturan berikut untuk mendeteksi dan memvalidasi profil:
+ Deteksi versi didasarkan pada `meta.profile` kanonik URLs
+ Sumber daya disertakan jika ADA profil yang dideklarasikan sesuai dengan kriteria ekspor
+ Validasi profil terjadi selama pemrosesan ekspor

## Penyaringan Temporal Lima Tahun untuk Ekspor PDex
<a name="davinci-data-export-temporal-filtering"></a>

Untuk semua jenis PDex ekspor, HealthLake terapkan filter temporal 5 tahun berdasarkan kapan sumber daya terakhir diperbarui. Filter temporal berlaku untuk semua sumber daya kecuali jenis sumber daya atribusi inti berikut, yang selalu diekspor tanpa memandang usia:
+ `Patient`
+ `Coverage`
+ `Organization`
+ `Practitioner`
+ `PractitionerRole`
+ `RelatedPerson`
+ `Location`
+ `Group`

Sumber daya administratif dan demografis ini dikecualikan karena menyediakan konteks penting untuk data yang diekspor. Ekspor ATR tidak tunduk pada penyaringan temporal apa pun.

## Sampel Permintaan
<a name="davinci-data-export-examples"></a>

Contoh berikut menunjukkan cara memulai pekerjaan ekspor untuk berbagai jenis ekspor.

*Ekspor ATR*

```
GET https://healthlake.{region}.amazonaws.com/datastore/{datastoreId}/r4/Group/example-group/$davinci-data-export?_type=Group,Patient,Coverage,Practitioner,Organization&exportType=hl7.fhir.us.davinci-atr

POST https://healthlake.{region}.amazonaws.com/datastore/{datastoreId}/r4/Group/example-group/$davinci-data-export?_type=Group,Patient,Coverage,Practitioner,Organization&exportType=hl7.fhir.us.davinci-atr
Content-Type: application/json

{
  "DataAccessRoleArn": "arn:aws:iam::444455556666:role/your-healthlake-service-role",
  "JobName": "attribution-export-job",
  "OutputDataConfig": {
    "S3Configuration": {
      "S3Uri": "s3://your-export-bucket/EXPORT-JOB",
      "KmsKeyId": "arn:aws:kms:region:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    }
  }
}
```

*Ekspor Akses Penyedia dengan penghapusan data ExplanationOfBenefit keuangan*

```
GET https://healthlake.{region}.amazonaws.com/datastore/{datastoreId}/r4/Group/example-group/$davinci-data-export?_type=Patient,Observation,Condition,MedicationRequest,ExplanationOfBenefit&exportType=hl7.fhir.us.davinci-pdex&_includeEOB2xWoFinancial=true
```

*Payer-to-Payer ekspor*

```
GET https://healthlake.{region}.amazonaws.com/datastore/{datastoreId}/r4/Group/example-group/$davinci-data-export?_type=Patient,Coverage,ExplanationOfBenefit,Condition,Procedure&exportType=hl7.fhir.us.davinci-pdex.p2p&_includeEOB2xWoFinancial=true
```

*Ekspor Akses Anggota untuk pasien tertentu*

```
GET https://healthlake.{region}.amazonaws.com/datastore/{datastoreId}/r4/Group/example-group/$davinci-data-export?_type=Patient,Observation,Condition,ExplanationOfBenefit,MedicationRequest&exportType=hl7.fhir.us.davinci-pdex.member&patient=Patient/example-patient-id
```

## Contoh Respons
<a name="davinci-data-export-sample-response"></a>

```
{
  "datastoreId": "eaee622d8406b41eb86c0f4741201ff9",
  "jobStatus": "SUBMITTED",
  "jobId": "48d7b91dae4a64d00d54b70862f33f61"
}
```

## Hubungan Sumber Daya
<a name="davinci-data-export-resource-relationships"></a>

Operasi mengekspor sumber daya berdasarkan hubungan mereka dalam Daftar Atribusi Anggota:

```
Group (Attribution List)
├── Patient (Members)
├── Coverage → RelatedPerson (Subscribers)
├── Practitioner (Attributed Providers)
├── PractitionerRole → Location
└── Organization (Attributed Providers)
```

### Sumber Sumber Daya
<a name="davinci-data-export-resource-sources"></a>


| Sumber daya | Lokasi Sumber | Deskripsi | 
| --- | --- | --- | 
| Patient | Group.member.entity | Pasien yang menjadi anggota daftar atribusi | 
| Coverage | Group.member.extension:coverageReference | Cakupan yang mengakibatkan keanggotaan pasien | 
| Organization | Group.member.extension:attributedProvider | Organizations yang dikaitkan dengan pasien | 
| Practitioner | Group.member.extension:attributedProvider | Praktisi individu yang dikaitkan dengan pasien | 
| PractitionerRole | Group.member.extension:attributedProvider | Peran praktisi yang dikaitkan dengan pasien | 
| RelatedPerson | Coverage.subscriber | Pelanggan cakupan | 
| Location | PractitionerRole.location | Lokasi yang terkait dengan peran praktisi | 
| Group | Titik akhir masukan | Daftar atribusi itu sendiri | 

## Manajemen Job
<a name="davinci-data-export-job-management"></a>

Periksa Status Job  
`GET [base]/export/[job-id]`

Batalkan Tugas  
`DELETE [base]/export/[job-id]`

### Siklus Hidup Tugas
<a name="davinci-data-export-job-lifecycle"></a>
+ `SUBMITTED`- Job telah diterima dan diantrian
+ `IN_PROGRESS`- Job sedang aktif memproses
+ `COMPLETED`- Job selesai dengan sukses, file tersedia untuk diunduh
+ `FAILED`- Job mengalami kesalahan

## Format Output
<a name="davinci-data-export-output-format"></a>
+ *Format File*: NDJSON (JSON Terbatas Baris Baru)
+ *Organisasi File*: File terpisah untuk setiap jenis sumber daya
+ *Ekstensi File*: .ndjson
+ *Lokasi*: Bucket dan jalur S3 yang ditentukan

## Penanganan Kesalahan
<a name="davinci-data-export-error-handling"></a>

Operasi mengembalikan HTTP 400 Bad Request dengan OperationOutcome untuk kondisi berikut:

Kesalahan Otorisasi  
Peran IAM yang ditentukan dalam `DataAccessRoleArn` tidak memiliki izin yang cukup untuk melakukan operasi ekspor. Untuk daftar lengkap izin S3 dan KMS yang diperlukan, lihat [Menyiapkan izin untuk pekerjaan ekspor](getting-started-setting-up.md#setting-up-export-permissions).

Kesalahan Validasi Parameter  
+ `patient`Parameter tidak diformat sebagai `Patient/id,Patient/id,...`
+ Satu atau lebih referensi pasien tidak valid atau bukan milik Grup yang ditentukan
+ Nilai `exportType` parameter bukan jenis ekspor yang didukung
+ `_type`Parameter berisi jenis sumber daya yang tidak didukung untuk jenis ekspor yang ditentukan
+ `_type`Parameter tidak memiliki tipe sumber daya yang diperlukan (`Group``Patient`,,`Coverage`) untuk jenis `hl7.fhir.us.davinci-atr` ekspor
+ Nilai `_includeEOB2xWoFinancial` parameter bukan boolean yang valid

Kesalahan Validasi Sumber Daya  
+ Sumber daya Grup yang ditentukan tidak ada di penyimpanan data
+ Sumber daya Grup yang ditentukan tidak memiliki anggota
+ Satu atau lebih anggota Grup mereferensikan sumber daya Pasien yang tidak ada di penyimpanan data

## Keamanan dan Otorisasi
<a name="davinci-data-export-security"></a>
+ Mekanisme otorisasi FHIR standar berlaku
+ Peran akses data harus memiliki izin IAM yang diperlukan untuk operasi S3 dan KMS. Untuk daftar lengkap izin yang diperlukan, lihat [Menyiapkan izin untuk pekerjaan ekspor](getting-started-setting-up.md#setting-up-export-permissions).

## Praktik Terbaik
<a name="davinci-data-export-best-practices"></a>
+ *Pemilihan Jenis Sumber Daya*: Hanya minta jenis sumber daya yang Anda perlukan untuk meminimalkan ukuran ekspor dan waktu pemrosesan
+ *Penyaringan Berbasis Waktu*: Gunakan `_since` parameter untuk ekspor tambahan
+ *Penyaringan Pasien*: Gunakan `patient` parameter saat Anda hanya membutuhkan data untuk anggota tertentu
+ *Job Monitoring*: Secara teratur memeriksa status pekerjaan untuk ekspor besar
+ *Penanganan Kesalahan: Menerapkan* logika coba lagi yang tepat untuk pekerjaan yang gagal
+ *Kesadaran Filter Temporal*: Untuk PDex ekspor, pertimbangkan filter temporal 5 tahun saat Anda memilih jenis sumber daya
+ *Penghapusan Data Keuangan*: Gunakan `_includeEOB2xWoFinancial=true` saat Anda membutuhkan data klaim tanpa informasi keuangan
+ *Manajemen Profil*: Pastikan sumber daya memiliki deklarasi profil yang sesuai, validasi terhadap profil target sebelum konsumsi, dan gunakan versi profil untuk mengontrol perilaku ekspor

## Batasan
<a name="davinci-data-export-limitations"></a>
+ Maksimal 500 pasien dapat ditentukan dalam `patient` parameter
+ Ekspor terbatas hanya untuk operasi tingkat Grup
+ Hanya mendukung kumpulan tipe sumber daya yang telah ditentukan untuk setiap jenis ekspor
+ Output selalu dalam format NDJSON
+ PDex Ekspor dibatasi hingga 5 tahun data klinis dan klaim
+ Transformasi data keuangan hanya berlaku untuk profil CARIN BB 2.x ExplanationOfBenefit 

## Sumber Daya Tambahan
<a name="davinci-data-export-additional-resources"></a>
+ [Daftar Atribusi Anggota Da Vinci IG](https://build.fhir.org/ig/HL7/davinci-atr/)
+ [Da Vinci Payer Data Exchange IG](https://hl7.org/fhir/us/davinci-pdex/)
+ [CARIN IG Pertukaran Data Exchange Pembayar yang Diarahkan Konsumen](https://build.fhir.org/ig/HL7/carin-bb/)
+ [Panduan Implementasi Inti AS](https://www.hl7.org/fhir/us/core/)
+ [Spesifikasi Akses Data Massal FHIR](https://hl7.org/fhir/uv/bulkdata/)

# Menghasilkan Dokumen Klinis dengan `$document`
<a name="reference-fhir-operations-document"></a>

AWS HealthLake sekarang mendukung `$document` operasi untuk sumber daya Komposisi, memungkinkan Anda untuk menghasilkan dokumen klinis lengkap dengan menggabungkan Komposisi dengan semua sumber daya yang direferensikan ke dalam satu paket kohesif. Operasi ini sangat penting untuk aplikasi perawatan kesehatan yang perlu:
+ Buat dokumen klinis standar
+ Tukar catatan pasien lengkap
+ Simpan dokumentasi klinis yang komprehensif
+ Hasilkan laporan yang mencakup semua konteks yang relevan

## Penggunaan
<a name="document-usage"></a>

`$document`Operasi dapat dipanggil pada sumber daya Komposisi menggunakan metode GET dan POST:

**Operasi yang Didukung**  


```
GET/POST [base]/Composition/[id]/$document
```

## Parameter yang Didukung
<a name="document-parameters"></a>

HealthLake mendukung `$document` parameter FHIR berikut:


| Parameter | Tipe | Diperlukan | Default | Deskripsi | 
| --- | --- | --- | --- | --- | 
| persist | boolean | Tidak | false | Boolean menunjukkan apakah server harus menyimpan bundel dokumen yang dihasilkan | 

## Contoh
<a name="document-examples"></a>

**DAPATKAN Permintaan**  


```
GET [base]/Composition/180f219f-97a8-486d-99d9-ed631fe4fc57/$document?persist=true
```

**Permintaan POST dengan Parameter**  


```
POST [base]/Composition/180f219f-97a8-486d-99d9-ed631fe4fc57/$document
Content-Type: application/fhir+json

{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "persist",
      "valueBoolean": true
    }
  ]
}
```

**Contoh Respons**  
Operasi mengembalikan sumber daya Bundle berjenis “dokumen” yang berisi Komposisi dan semua sumber daya yang direferensikan:

```
{
  "resourceType": "Bundle",
  "id": "180f219f-97a8-486d-99d9-ed631fe4fc57",
  "type": "document",
  "identifier": {
    "system": "urn:ietf:rfc:3986",
    "value": "urn:uuid:0c3151bd-1cbf-4d64-b04d-cd9187a4c6e0"
  },
  "timestamp": "2024-06-21T15:30:00Z",
  "entry": [
    {
      "fullUrl": "http://example.org/fhir/Composition/180f219f-97a8-486d-99d9-ed631fe4fc57",
      "resource": {
        "resourceType": "Composition",
        "id": "180f219f-97a8-486d-99d9-ed631fe4fc57",
        "status": "final",
        "type": {
          "coding": [
            {
              "system": "http://loinc.org",
              "code": "34133-9",
              "display": "Summary of Episode Note"
            }
          ]
        },
        "subject": {
          "reference": "Patient/example"
        },
        "section": [
          {
            "title": "Allergies",
            "entry": [
              {
                "reference": "AllergyIntolerance/123"
              }
            ]
          }
        ]
      }
    },
    {
      "fullUrl": "http://example.org/fhir/Patient/example",
      "resource": {
        "resourceType": "Patient",
        "id": "example",
        "name": [
          {
            "family": "Smith",
            "given": ["John"]
          }
        ]
      }
    },
    {
      "fullUrl": "http://example.org/fhir/AllergyIntolerance/123",
      "resource": {
        "resourceType": "AllergyIntolerance",
        "id": "123",
        "patient": {
          "reference": "Patient/example"
        },
        "code": {
          "coding": [
            {
              "system": "http://snomed.info/sct",
              "code": "418689008",
              "display": "Allergy to penicillin"
            }
          ]
        }
      }
    }
  ]
}
```

## Perilaku
<a name="document-behavior"></a>

`$document`Operasi:

1. Mengambil sumber daya Komposisi yang ditentukan sebagai dasar untuk dokumen

1. Mengidentifikasi dan mengambil semua sumber daya yang direferensikan secara langsung oleh Komposisi

1. Mengemas Komposisi dan semua sumber daya yang direferensikan ke dalam Bundel jenis “dokumen”

1. Menyimpan bundel dokumen yang dihasilkan di datastore saat parameter persisten disetel ke true

1. Mengidentifikasi dan mengambil sumber daya yang secara tidak langsung direferensikan oleh Komposisi untuk pembuatan dokumen yang komprehensif

`$document`Operasi saat ini mendukung pengambilan referensi sumber daya dalam format berikut:

1. 

   ```
   GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Resource/id
   ```

1. Sumber daya/ID

Referensi sumber daya yang tidak didukung dalam sumber daya Komposisi akan disaring dari dokumen yang dihasilkan.

## Penanganan Kesalahan
<a name="document-error-handling"></a>

Operasi menangani kondisi kesalahan berikut:
+ 400 Permintaan Buruk: `$document` Operasi tidak valid (permintaan tidak sesuai) atau jika dokumen yang dihasilkan gagal validasi FHIR karena referensi yang disaring saat persisten disetel ke true
+ 404 Tidak Ditemukan: Sumber daya komposisi tidak ditemukan

Untuk informasi lebih lanjut tentang spesifikasi `$document` operasi, lihat dokumentasi [Komposisi `$document` FHIR R4](https://www.hl7.org/fhir/R4/composition-operation-document.html).

# Menghapus Sumber Daya Secara Permanen dengan `$erase`
<a name="reference-fhir-operations-erase"></a>

AWS HealthLake mendukung `$erase` operasi, memungkinkan penghapusan permanen sumber daya tertentu dan versi historisnya. Operasi ini sangat berguna ketika Anda perlu:
+ Hapus sumber daya individu secara permanen
+ Hapus riwayat versi tertentu
+ Mengelola siklus hidup sumber daya individu
+ Mematuhi persyaratan penghapusan data tertentu

## Penggunaan
<a name="erase-usage"></a>

`$erase`Operasi dapat dipanggil pada dua tingkat:

**Tingkat Instans Sumber Daya**  


```
POST [base]/[ResourceType]/[ID]/$erase?deleteAuditEvent=true
```

**Level Khusus Versi**  


```
POST [base]/[ResourceType]/[ID]/_history/[VersionID]/$erase
```

## Parameter
<a name="erase-parameters"></a>


| Parameter | Tipe | Diperlukan | Default | Deskripsi | 
| --- | --- | --- | --- | --- | 
| deleteAuditEvent | boolean | Tidak | false | Jika benar, menghapus peristiwa audit terkait | 

## Contoh
<a name="erase-examples"></a>

**Contoh Permintaan**  


```
POST [base]/Patient/example-patient/$erase
```

**Contoh Respons**  


```
{
      "jobId": "5df47e2f51ff3c731847678cb8cad48e",
      "jobStatus": "SUBMITTED"
    }
```

## Status Tugas
<a name="erase-job-status"></a>

Untuk memeriksa status pekerjaan penghapusan:

```
GET [base]/$erase/[jobId]
```

Operasi mengembalikan informasi status pekerjaan:

```
{
      "datastoreId": "36622996b1fcecb7e12ee2ee085308d3",
      "jobId": "5df47e2f51ff3c731847678cb8cad48e",
      "status": "COMPLETED",
      "submittedTime": "2025-10-30T16:39:24.160Z"
    }
```

## Perilaku
<a name="erase-behavior"></a>

`$erase`Operasi:

1. Memproses secara asinkron untuk memastikan integritas data

1. Mempertahankan transaksi ACID

1. Menyediakan pelacakan status pekerjaan

1. Secara permanen menghapus sumber daya yang ditentukan dan versinya

1. Termasuk pencatatan audit yang komprehensif atas kegiatan penghapusan

1. Mendukung penghapusan selektif peristiwa audit

## Pencatatan Audit
<a name="erase-audit-logging"></a>

Log `$erase` operasi seperti DeleteResource ID pengguna, stempel waktu, dan detail sumber daya.

## Batasan
<a name="erase-limitations"></a>
+ `$erased`sumber daya tidak akan muncul di hasil penelusuran atau `_history` kueri.
+ Sumber daya yang dihapus mungkin sementara tidak dapat diakses selama pemrosesan
+ Pengukuran penyimpanan segera disesuaikan karena sumber daya dihapus secara permanen

# Mendapatkan data pasien dengan `Patient/$everything`
<a name="reference-fhir-operations-everything"></a>

 `Patient/$everything`Operasi ini digunakan untuk query sumber daya FHIR, bersama dengan `Patient` sumber daya lain yang terkait dengan itu`Patient`. Operasi ini dapat digunakan untuk memberi pasien akses ke seluruh catatan mereka atau untuk penyedia untuk melakukan pengunduhan data massal yang terkait dengan pasien. HealthLakemendukung `Patient/$everything` untuk pasien tertentu`id`.

`Patient/$everything`adalah operasi FHIR REST API yang dapat dipanggil seperti yang ditunjukkan pada contoh di bawah ini.

------
#### [ GET request ]

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/id/$everything
```

------

**catatan**  
Sumber daya dalam tanggapan diurutkan berdasarkan jenis sumber daya dan sumber daya`id`.  
Respon selalu diisi dengan`Bundle.total`. 

## Parameter `Patient/$everything`
<a name="patient-everything-query-params"></a>

HealthLake mendukung parameter query berikut


| Parameter | Detail | 
| --- | --- | 
|  start  |  Dapatkan semua `Patient` data setelah tanggal mulai yang ditentukan.  | 
|  end  |  Dapatkan semua `Patient` data sebelum tanggal akhir yang ditentukan.  | 
|  sejak  |  Dapatkan semua `Patient` data diperbarui setelah tanggal yang ditentukan.  | 
|  \$1ketik  |  Dapatkan `Patient` data untuk jenis sumber daya tertentu.  | 
|  \$1hitung  |  Dapatkan `Patient` data dan tentukan ukuran halaman.  | 

**Example - Dapatkan semua data pasien setelah tanggal mulai yang ditentukan**  
`Patient/$everything`dapat menggunakan `start` filter untuk menanyakan hanya data setelah tanggal tertentu.   

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/id/$everything?start=2024-03-15T00:00:00.000Z
```

**Example - Dapatkan semua `Patient` data sebelum tanggal akhir yang ditentukan**  
Patient \$1everything dapat menggunakan `end` filter untuk hanya menanyakan data sebelum tanggal tertentu.   

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/id/$everything?end=2024-03-15T00:00:00.000Z
```

**Example - Dapatkan semua `Patient` data diperbarui setelah tanggal yang ditentukan**  
`Patient/$everything`dapat menggunakan `since` filter untuk menanyakan hanya data yang diperbarui setelah tanggal tertentu.  

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/id/$everything?since=2024-03-15T00:00:00.000Z
```

**Example - Dapatkan `Patient` data untuk jenis sumber daya tertentu**  
Patient \$1everything dapat menggunakan `_type` filter untuk menentukan jenis sumber daya tertentu yang akan disertakan dalam respons. Beberapa jenis sumber daya dapat ditentukan dalam daftar dipisahkan koma.   

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/id/$everything?_type=Observation,Condition
```

**Example - Dapatkan `Patient` data dan tentukan ukuran halaman**  
Pasien \$1everything dapat menggunakan `_count` untuk mengatur ukuran halaman.   

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/id/$everything?_count=15
```

## `Patient/$everything``start`dan `end` atribut
<a name="reference-patient-everything-start-end-attributes"></a>

HealthLake mendukung atribut sumber daya berikut untuk parameter `Patient/ $everything` `start` dan `end` kueri.


| Sumber daya | Elemen Sumber Daya | 
| --- | --- | 
| Akun | Account.ServicePeriod.Start | 
| AdverseEvent | AdverseEvent.tanggal | 
| AllergyIntolerance | AllergyIntolerance.RecordedDate | 
| Pengangkatan | Janji temu. Mulai | 
| AppointmentResponse | AppointmentResponse.mulai | 
| AuditEvent | AuditEvent.period.start | 
| Basic | Dasar.dibuat | 
| BodyStructure | TIDAK\$1TANGGAL | 
| CarePlan | CarePlan.period.start | 
| CareTeam | CareTeam.period.start | 
| ChargeItem | ChargeItem. occurrenceDateTime, ChargeItem .OcuncencePeriod.start, .OcuncenceTiming.event ChargeItem | 
| Klaim | Claim.billablePeriod.Start | 
| ClaimResponse | ClaimResponse.dibuat | 
| ClinicalImpression | ClinicalImpression.tanggal | 
| Komunikasi | Komunikasi.dikirim | 
| CommunicationRequest | CommunicationRequest. occurrenceDateTime, CommunicationRequest .OcuncencePeriod.start | 
| Komposisi | Komposisi.date | 
| Kondisi | kondisi.RecordedDate | 
| Persetujuan | Consent.DateTime | 
| Cakupan | Cakupan. Period.Start | 
| CoverageEligibilityRequest | CoverageEligibilityRequest.dibuat | 
| CoverageEligibilityResponse | CoverageEligibilityResponse.dibuat | 
| DetectedIssue | DetectedIssue.diidentifikasi | 
| DeviceRequest | DeviceRequest.Authoredon | 
| DeviceUseStatement | DeviceUseStatement.RecordEdon | 
| DiagnosticReport | DiagnosticReport.efektif | 
| DocumentManifest | DocumentManifest.dibuat | 
| DocumentReference | DocumentReference.context.period.start | 
| Pertemuan | Encounter.period.start | 
| EnrollmentRequest | EnrollmentRequest.dibuat | 
| EpisodeOfCare | EpisodeOfCare.period.start | 
| ExplanationOfBenefit | ExplanationOfBenefit.BillablePeriod.Start | 
| FamilyMemberHistory | TIDAK\$1TANGGAL | 
| Bendera | Bendera.period.mulai | 
| Tujuan | Goal.statusDate | 
| Kelompok | TIDAK\$1TANGGAL | 
| ImagingStudy | ImagingStudy.dimulai | 
| Imunisasi | imunisasi.Tercatat | 
| ImmunizationEvaluation | ImmunizationEvaluation.tanggal | 
| ImmunizationRecommendation | ImmunizationRecommendation.tanggal | 
| Faktur | Faktur.tanggal | 
| Daftar | Daftar.tanggal | 
| MeasureReport | MeasureReport.period.start | 
| Media | media.Diterbitkan | 
| MedicationAdministration | MedicationAdministration.efektif | 
| MedicationDispense | MedicationDispense.Ketika Disiapkan | 
| MedicationRequest | MedicationRequest.PenulisDon | 
| MedicationStatement | MedicationStatement.dateAsserted | 
| MolecularSequence | TIDAK\$1TANGGAL | 
| NutritionOrder | NutritionOrder.DateTime | 
| Observasi | pengamatan. Efektif | 
| Pasien | TIDAK\$1TANGGAL | 
| Orang | TIDAK\$1TANGGAL | 
| Prosedur | prosedur.Dilakukan | 
| Asal | Provenance.OcuncredPeriod.Start, Asal. occurredDateTime | 
| QuestionnaireResponse | QuestionnaireResponse.menulis | 
| RelatedPerson | TIDAK\$1TANGGAL | 
| RequestGroup | RequestGroup.PenulisDon | 
| ResearchSubject | ResearchSubject.periode | 
| RiskAssessment | RiskAssessment. occurrenceDateTime, RiskAssessment .OcuncencePeriod.start | 
| Jadwal | jadwal.planningHorizon | 
| ServiceRequest | ServiceRequest.PenulisDon | 
| Spesimen | Specimen.ReceivedTime | 
| SupplyDelivery | SupplyDelivery. occurrenceDateTime, SupplyDelivery .OcuncencePeriod.start, .OcuncenceTiming.event SupplyDelivery | 
| SupplyRequest | SupplyRequest.PenulisDon | 
| VisionPrescription | VisionPrescription.dateDitulis | 

# Mengambil ValueSet Kode dengan `$expand`
<a name="reference-fhir-operations-expand"></a>

AWS HealthLake sekarang mendukung `$expand` operasi untuk ValueSets yang dicerna oleh Anda sebagai pelanggan, memungkinkan Anda untuk mengambil daftar lengkap kode yang terkandung dalam ValueSet sumber daya tersebut. Operasi ini sangat berguna ketika Anda perlu:
+ Ambil semua kode yang mungkin untuk tujuan validasi
+ Tampilkan opsi yang tersedia di antarmuka pengguna
+ Lakukan pencarian kode komprehensif dalam konteks terminologi tertentu

## Penggunaan
<a name="expand-usage"></a>

`$expand`Operasi dapat dipanggil pada ValueSet sumber daya menggunakan metode GET dan POST:

**Operasi yang Didukung**  


```
GET/POST [base]/ValueSet/[id]/$expand
GET [base]/ValueSet/$expand?url=http://example.com
POST [base]/ValueSet/$expand
```

## Parameter yang Didukung
<a name="expand-parameters"></a>

HealthLake mendukung subset parameter FHIR `$expand` R4:


| Parameter | Tipe | Diperlukan | Deskripsi | 
| --- | --- | --- | --- | 
| url | uri | Tidak | URL kanonik untuk memperluas ValueSet  | 
| id | id | Tidak | ValueSet id sumber daya untuk diperluas (untuk operasi GET atau POST) | 
| filter | string | Tidak | Filter hasil ekspansi kode | 
| count | integer | Tidak | Jumlah kode yang akan dikembalikan | 
| offset | integer | Tidak | Jumlah kode yang cocok untuk dilewati sebelum kembali. Berlaku setelah pemfilteran dan hanya untuk kode yang cocok, bukan untuk konten asli yang lengkap dan tanpa filter ValueSet | 

## Contoh
<a name="expand-examples"></a>

**DAPATKAN Permintaan dengan ID**  


```
GET [base]/ValueSet/example-valueset/$expand
```

**DAPATKAN Permintaan berdasarkan URL dengan Filter**  


```
GET [base]/ValueSet/$expand?url=http://example.com/ValueSet/my-valueset&filter=male&count=5
```

**Permintaan POST dengan Parameter (berdasarkan ID)**  


```
POST [base]/ValueSet/example-valueset/$expand
Content-Type: application/fhir+json

{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "count",
      "valueInteger": 10
    },
    {
      "name": "filter",
      "valueString": "admin"
    }
  ]
}
```

**Permintaan POST dengan Parameter (berdasarkan URL)**  


```
POST [base]/ValueSet/$expand
Content-Type: application/fhir+json

{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "url",
      "valueUri": "http://hl7.org/fhir/ValueSet/administrative-gender"
    },
    {
      "name": "count",
      "valueInteger": 10
    }
  ]
}
```

**Contoh Respons**  
Operasi mengembalikan ValueSet sumber daya dengan `expansion` elemen yang berisi kode diperluas:

```
{
  "resourceType": "ValueSet",
  "id": "administrative-gender",
  "status": "active",
  "expansion": {
    "identifier": "urn:uuid:12345678-1234-1234-1234-123456789abc",
    "timestamp": "2024-01-15T10:30:00Z",
    "total": 4,
    "parameter": [
      {
        "name": "count",
        "valueInteger": 10
      }
    ],
    "contains": [
      {
        "system": "http://hl7.org/fhir/administrative-gender",
        "code": "male",
        "display": "Male"
      },
      {
        "system": "http://hl7.org/fhir/administrative-gender",
        "code": "female",
        "display": "Female"
      },
      {
        "system": "http://hl7.org/fhir/administrative-gender",
        "code": "other",
        "display": "Other"
      },
      {
        "system": "http://hl7.org/fhir/administrative-gender",
        "code": "unknown",
        "display": "Unknown"
      }
    ]
  }
}
```

Respons meliputi:
+ expansion.total: Jumlah total kode yang diperluas ValueSet
+ expansion.contains: Array kode yang diperluas dengan sistem, kode, dan nilai tampilannya
+ expansion.parameter: Parameter yang digunakan dalam permintaan ekspansi

Untuk informasi lebih lanjut tentang spesifikasi `$expand` operasi, lihat dokumentasi [FHIR R4 ValueSet `$expand`](https://build.fhir.org/valueset-operation-expand.html).

# Mengekspor HealthLake data dengan FHIR `$export`
<a name="reference-fhir-operations-export"></a>

Anda dapat mengekspor data secara massal dari penyimpanan HealthLake data Anda menggunakan operasi FHIR \$1export. HealthLake mendukung `$export` penggunaan `POST` dan `GET` permintaan FHIR. Untuk membuat permintaan ekspor dengan`POST`, Anda harus memiliki pengguna, grup, atau peran IAM dengan izin yang diperlukan, tentukan `$export` sebagai bagian dari permintaan, dan sertakan parameter yang diinginkan dalam badan permintaan.

**catatan**  
Semua permintaan HealthLake ekspor yang dibuat menggunakan FHIR dikembalikan dalam `ndjson` format dan diekspor ke bucket Amazon S3, di `$export` mana setiap objek Amazon S3 hanya berisi satu jenis sumber daya FHIR.  
Anda dapat mengantri permintaan ekspor per kuota layanan AWS akun. Untuk informasi selengkapnya, lihat [Kuota layanan](reference-healthlake-endpoints-quotas.md#reference-healthlake-quotas).

HealthLake mendukung tiga jenis permintaan titik akhir ekspor massal berikut.


**HealthLake `$export`jenis massal**  

| Tipe ekspor | Deskripsi | Sintaksis | 
| --- | --- | --- | 
| Sistem | Ekspor semua data dari server HealthLake FHIR. | `POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/$export`  | 
| Semua pasien | Ekspor semua data yang berkaitan dengan semua pasien termasuk jenis sumber daya yang terkait dengan jenis sumber daya Pasien. | `POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/$export` `GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/$export` | 
| Sekelompok pasien | Ekspor semua data yang berkaitan dengan sekelompok pasien yang ditentukan dengan ID Grup. | `POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Group/id/$export` `GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Group/id/$export` | 

## Sebelum Anda mulai
<a name="export-rest-before-you-begin"></a>

Memenuhi persyaratan berikut untuk membuat permintaan ekspor menggunakan FHIR REST API untuk HealthLake.
+ Anda harus menyiapkan pengguna, grup, atau peran yang memiliki izin yang diperlukan untuk membuat permintaan ekspor. Untuk mempelajari selengkapnya, lihat [Mengotorisasi permintaan `$export`](#export-rest-auth).
+ Anda harus telah membuat peran layanan yang memberikan HealthLake akses ke bucket Amazon S3 tempat Anda ingin data Anda diekspor. Peran layanan juga harus ditentukan HealthLake sebagai kepala layanan. Untuk informasi selengkapnya tentang menyiapkan izin, lihat[Menyiapkan izin untuk pekerjaan ekspor](getting-started-setting-up.md#setting-up-export-permissions).

## Mengotorisasi permintaan `$export`
<a name="export-rest-auth"></a>

Untuk membuat permintaan ekspor yang berhasil menggunakan FHIR REST API, otorisasi pengguna, grup, atau peran Anda menggunakan IAM atau .0. OAuth2 Anda juga harus memiliki peran layanan.

**Mengotorisasi permintaan menggunakan IAM**  
Saat Anda membuat `$export` permintaan, pengguna, grup, atau peran harus memiliki tindakan IAM yang disertakan dalam kebijakan. Untuk informasi selengkapnya, lihat [Menyiapkan izin untuk pekerjaan ekspor](getting-started-setting-up.md#setting-up-export-permissions).

**Mengotorisasi permintaan menggunakan SMART di FHIR (2.0) OAuth**  
Saat Anda membuat `$export` permintaan pada SMART di penyimpanan HealthLake data berkemampuan FHIR, Anda harus memiliki cakupan yang sesuai yang ditetapkan. Untuk informasi selengkapnya, lihat [SMART pada cakupan sumber daya FHIR untuk HealthLake](reference-smart-on-fhir-oauth-scopes.md#smart-on-fhir-scopes-rest).

**catatan**  
FHIR `$export` dengan `GET` permintaan memerlukan metode otentikasi atau token pembawa yang sama (dalam kasus SMART di FHIR) untuk meminta ekspor dan mengambil file. File yang diekspor menggunakan FHIR `$export` dengan `GET` tersedia untuk diunduh selama 48 jam.

## Membuat `$export` permintaan
<a name="export-rest-request"></a>

Bagian ini menjelaskan langkah-langkah yang diperlukan yang harus Anda ambil saat membuat permintaan ekspor menggunakan FHIR REST API.

Untuk menghindari tagihan yang tidak disengaja pada AWS akun Anda, kami sarankan untuk menguji permintaan Anda dengan membuat `POST` permintaan tanpa menyediakan sintaks. `$export`

Untuk membuat permintaan, Anda harus melakukan hal berikut:

1. Tentukan `$export` di URL `POST` permintaan untuk titik akhir yang didukung.

1. Tentukan parameter header yang diperlukan.

1. Tentukan badan permintaan yang mendefinisikan parameter yang diperlukan.

### Langkah 1: Tentukan `$export` URL `POST` permintaan untuk [titik akhir](reference-healthlake-endpoints-quotas.md#reference-healthlake-endpoints) yang didukung.
<a name="export-rest-request-step-1"></a>

HealthLake mendukung tiga jenis permintaan titik akhir ekspor massal. Untuk membuat permintaan ekspor massal, Anda harus membuat permintaan `POST` berbasis pada salah satu dari tiga titik akhir yang didukung. Contoh berikut menunjukkan di mana harus menentukan `$export` dalam URL permintaan.
+ `POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/$export`
+ `POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/$export`
+ `POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Group/id/$export`

Anda dapat menggunakan parameter pencarian yang didukung berikut dalam string `POST` permintaan.

#### Parameter pencarian yang didukung
<a name="export-rest-query-parameters"></a>

HealthLake mendukung pengubah pencarian berikut dalam permintaan ekspor massal.

Contoh berikut termasuk karakter khusus yang harus dikodekan sebelum mengirimkan permintaan Anda.


| Nama | Wajib? | Deskripsi | Contoh | 
| --- | --- | --- | --- | 
| \$1outputFormat | Tidak | Format untuk file Data Massal yang diminta untuk dihasilkan. Nilai yang diterima adalahapplication/fhir\$1ndjson,application/ndjson,ndjson. |  | 
| \$1type | Tidak | Serangkaian jenis sumber daya FHIR yang dibatasi koma yang ingin Anda sertakan dalam pekerjaan ekspor Anda. Kami merekomendasikan termasuk \$1type karena ini dapat memiliki implikasi biaya ketika semua sumber daya diekspor. | &\$1type=MedicationStatement, Observation | 
| \$1since | Tidak | Jenis sumber daya dimodifikasi pada atau setelah stempel tanggal waktu. Jika jenis sumber daya tidak memiliki waktu pembaruan terakhir, mereka akan disertakan dalam respons Anda. | &\$1since=2024-05-09T00%3A00%3A00Z | 
| \$1until | Tidak | Jenis sumber daya dimodifikasi pada atau sebelum stempel tanggal waktu. Digunakan dalam kombinasi dengan \$1since untuk menentukan rentang waktu tertentu untuk ekspor. Jika jenis sumber daya tidak memiliki waktu pembaruan terakhir, mereka akan dikecualikan dari respons Anda. | &\$1until=2024-12-31T23%3A59%3A59Z | 

### Langkah 2: Tentukan parameter header yang diperlukan
<a name="export-rest-request-step-2"></a>

Untuk membuat permintaan ekspor menggunakan FHIR REST API, Anda harus menentukan parameter header berikut.
+ Tipe Konten: `application/fhir+json`
+ Lebih suka: `respond-async`

Selanjutnya, Anda harus menentukan elemen yang diperlukan di badan permintaan.

### Langkah 3: Tentukan badan permintaan yang menentukan parameter yang diperlukan.
<a name="export-rest-request-step-3"></a>

Permintaan ekspor juga membutuhkan badan dalam `JSON` format. Tubuh dapat mencakup parameter berikut.


| Key | Wajib? | Deskripsi | Nilai | 
| --- | --- | --- | --- | 
| DataAccessRoleArn | Ya | ARN dari peran HealthLake layanan. Peran layanan yang digunakan harus ditentukan HealthLake sebagai prinsipal layanan. | arn:aws:iam::444455556666:role/your-healthlake-service-role | 
| JobName | Tidak | Nama permintaan ekspor. | your-export-job-name | 
| S3Uri | Ya | Bagian dari sebuah OutputDataConfig kunci. URI S3 dari bucket tujuan tempat data Anda yang diekspor akan diunduh. | s3://amzn-s3-demo-bucket/EXPORT-JOB/ | 
| KmsKeyId | Ya | Bagian dari sebuah OutputDataConfig kunci. ARN dari AWS KMS kunci yang digunakan untuk mengamankan bucket Amazon S3. | arn:aws:kms:region-of-bucket:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab | 

**Example Isi permintaan ekspor yang dibuat menggunakan FHIR REST API**  
Untuk membuat permintaan ekspor dengan menggunakan FHIR REST API, Anda harus menentukan isi, seperti yang ditunjukkan dalam berikut ini.  

```
{
  "DataAccessRoleArn": "arn:aws:iam::444455556666:role/your-healthlake-service-role",
  "JobName": "your-export-job",
  "OutputDataConfig": {
    "S3Configuration": {
      "S3Uri": "s3://amzn-s3-demo-bucket/EXPORT-JOB",
      "KmsKeyId": "arn:aws:kms:region-of-bucket:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    }
  }
}
```

Ketika permintaan Anda berhasil, Anda akan menerima tanggapan berikut.

*Respon Header*

```
content-location: https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/export/your-export-request-job-id
```

*Respon Tubuh*

```
{
  "datastoreId": "your-data-store-id",
  "jobStatus": "SUBMITTED",
  "jobId": "your-export-request-job-id"
}
```

## Mengelola permintaan ekspor Anda
<a name="export-rest-management"></a>

Setelah membuat permintaan ekspor berhasil, Anda dapat mengelola permintaan menggunakan `$export` untuk menjelaskan status permintaan ekspor saat ini, dan `$export` untuk membatalkan permintaan ekspor saat ini.

Saat membatalkan permintaan ekspor menggunakan REST API, Anda hanya ditagih untuk bagian data yang diekspor hingga saat Anda mengirimkan permintaan pembatalan.

Topik berikut menjelaskan bagaimana Anda bisa mendapatkan status atau membatalkan permintaan ekspor saat ini.

### Membatalkan permintaan ekspor
<a name="export-rest-management-describe"></a>

Untuk membatalkan permintaan ekspor, buat `DELETE` permintaan dan berikan ID pekerjaan di URL permintaan.

```
DELETE https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/export/your-export-request-job-id
```

Ketika permintaan Anda berhasil, Anda menerima yang berikut ini.

```
{
  "exportJobProperties": {
    "jobId": "your-original-export-request-job-id",
    "jobStatus": "CANCEL_SUBMITTED",
    "datastoreId": "your-data-store-id"
  }
}
```

Ketika permintaan Anda tidak berhasil, Anda menerima yang berikut ini.

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "not-supported",
      "diagnostics": "Interaction not supported."
    }
  ]
}
```

### Menjelaskan permintaan ekspor
<a name="export-rest-management-describe"></a>

Untuk mendapatkan status permintaan ekspor, buat `GET` permintaan dengan menggunakan `export` dan Anda`export-request-job-id`.

```
GET https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/export/your-export-request-id
```

Respons JSON akan berisi `ExportJobProperties` objek. Ini mungkin berisi pasangan key:value berikut.


| Nama | Wajib? | Deskripsi | Nilai | 
| --- | --- | --- | --- | 
| DataAccessRoleArn | Tidak | ARN dari peran HealthLake layanan. Peran layanan yang digunakan harus ditentukan HealthLake sebagai prinsipal layanan. | arn:aws:iam::444455556666:role/your-healthlake-service-role | 
| SubmitTime | Tidak | Tanggal waktu pekerjaan ekspor diajukan. | Apr 21, 2023 5:58:02 | 
| EndTime | Tidak | Waktu pekerjaan ekspor selesai. | Apr 21, 2023 6:00:08 PM | 
| JobName | Tidak | Nama permintaan ekspor. | your-export-job-name | 
| JobStatus | Tidak |  | Nilai yang valid adalah:<pre>SUBMITTED | IN_PROGRESS | COMPLETED_WITH_ERRORS | COMPLETED |<br />      FAILED</pre> | 
| S3Uri | Ya | Bagian dari suatu [OutputDataConfig](https://docs.aws.amazon.com/healthlake/latest/APIReference/API_OutputDataConfig.html)objek. URI Amazon S3 dari bucket tujuan tempat data yang Anda ekspor akan diunduh. | s3://amzn-s3-demo-bucket/EXPORT-JOB/ | 
| KmsKeyId | Ya | Bagian dari suatu [OutputDataConfig](https://docs.aws.amazon.com/healthlake/latest/APIReference/API_OutputDataConfig.html)objek. ARN dari AWS KMS kunci yang digunakan untuk mengamankan bucket Amazon S3. | arn:aws:kms:region-of-bucket:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab | 

**Example : Isi permintaan ekspor deskripsi yang dibuat menggunakan FHIR REST API**  
Ketika berhasil, Anda akan mendapatkan respon JSON berikut.  

```
{
  "exportJobProperties": {
    "jobId": "your-export-request-id",
    "JobName": "your-export-job",
    "jobStatus": "SUBMITTED",
    "submitTime": "Apr 21, 2023 5:58:02 PM",
    "endTime": "Apr 21, 2023 6:00:08 PM",
    "datastoreId": "your-data-store-id",
    "outputDataConfig": {
      "s3Configuration": {
        "S3Uri": "s3://amzn-s3-demo-bucket/EXPORT-JOB",
        "KmsKeyId": "arn:aws:kms:region-of-bucket:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab""
      }
    },
    "DataAccessRoleArn": "arn:aws:iam::444455556666:role/your-healthlake-service-role",
  }
}
```

# `$inquire`Operasi FHIR untuk HealthLake
<a name="reference-fhir-operations-inquire"></a>

`$inquire`Operasi ini memungkinkan Anda untuk memeriksa status permintaan otorisasi sebelumnya yang diajukan sebelumnya. Operasi ini mengimplementasikan Panduan [Implementasi Da Vinci Prior Authorization Support (PAS)](https://hl7.org/fhir/us/davinci-pas/), menyediakan alur kerja berbasis FHIR standar untuk mengambil keputusan otorisasi saat ini.

## Cara kerjanya
<a name="inquire-how-it-works"></a>
+ **Kirim Pertanyaan**: Anda mengirim Paket FHIR yang berisi Klaim yang ingin Anda periksa dan informasi pendukung
+ **Cari**: HealthLake mencari yang sesuai ClaimResponse di penyimpanan data Anda
+ **Ambil**: Status otorisasi terbaru diambil
+ **Tanggapan**: Anda menerima tanggapan langsung dengan status otorisasi saat ini (mengantri, disetujui, ditolak, dll.)

**catatan**  
`$inquire`adalah **operasi hanya-baca yang mengambil status** otorisasi yang ada. Itu tidak mengubah atau memperbarui sumber daya apa pun di penyimpanan data Anda.

## Titik akhir API
<a name="inquire-api-endpoint"></a>

```
POST /datastore/{datastoreId}/r4/Claim/$inquire  
Content-Type: application/fhir+json
```

## Struktur permintaan
<a name="inquire-request-structure"></a>

### Persyaratan bundel
<a name="inquire-bundle-requirements"></a>

Permintaan Anda harus berupa sumber daya Bundel FHIR dengan:
+ **Bundle.type**: Harus `"collection"`
+ **Bundle.entry**: Harus berisi tepat **satu** sumber Klaim dengan:
  + `use = "preauthorization"`
  + `status = "active"`
+ **Sumber Daya yang Direferensikan**: Semua sumber daya yang direferensikan oleh Klaim harus disertakan dalam Bundel

**Kueri demi contoh**  
Sumber daya dalam Bundle masukan Anda berfungsi sebagai template pencarian. HealthLake menggunakan informasi yang diberikan untuk menemukan yang sesuai ClaimResponse.

### Sumber daya yang dibutuhkan
<a name="inquire-required-resources"></a>


| Sumber daya | Kardinalitas | Profil | Deskripsi | 
| --- | --- | --- | --- | 
| Klaim | 1 | Permintaan Klaim PAS | Otorisasi sebelumnya yang Anda tanyakan | 
| Pasien | 1 | Pasien Penerima PAS | Informasi demografis pasien | 
| Organisasi (Penanggung) | 1 | Organisasi Penanggung PAS | Perusahaan asuransi | 
| Organisasi (Penyedia) | 1 | Organisasi Permintaan PAS | Penyedia layanan kesehatan yang mengajukan permintaan | 

### Kriteria pencarian penting
<a name="inquire-search-criteria"></a>

HealthLake pencarian untuk ClaimResponse menggunakan:
+ **Referensi pasien** dari Klaim
+ **Referensi Penanggung dari Klaim**
+ **Referensi penyedia** dari Klaim
+ **Tanggal dibuat** dari Klaim (sebagai filter waktu)

**Hanya Pertanyaan Khusus Pasien**  
Semua pertanyaan harus dikaitkan dengan pasien tertentu. Pertanyaan di seluruh sistem tanpa identifikasi pasien tidak diizinkan.

## Contoh permintaan
<a name="inquire-example-request"></a>

```
POST /datastore/example-datastore/r4/Claim/$inquire  
Content-Type: application/fhir+json  
Authorization: Bearer <your-token>  
  
{  
  "resourceType": "Bundle",  
  "id": "PASClaimInquiryBundleExample",  
  "meta": {  
    "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-inquiry-request-bundle"]  
  },  
  "identifier": {  
    "system": "http://example.org/SUBMITTER_TRANSACTION_IDENTIFIER",  
    "value": "5269368"  
  },  
  "type": "collection",  
  "timestamp": "2005-05-02T14:30:00+05:00",  
  "entry": [  
    {  
      "fullUrl": "http://example.org/fhir/Claim/MedicalServicesAuthorizationExample",  
      "resource": {  
        "resourceType": "Claim",  
        "id": "MedicalServicesAuthorizationExample",  
        "meta": {  
          "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claim-inquiry"]  
        },  
        "status": "active",  
        "type": {  
          "coding": [{  
            "system": "http://terminology.hl7.org/CodeSystem/claim-type",  
            "code": "professional"  
          }]  
        },  
        "use": "preauthorization",  
        "patient": {  
          "reference": "Patient/SubscriberExample"  
        },  
        "created": "2005-05-02T11:01:00+05:00",  
        "insurer": {  
          "reference": "Organization/InsurerExample"  
        },  
        "provider": {  
          "reference": "Organization/UMOExample"  
        }  
      }  
    },  
    {  
      "fullUrl": "http://example.org/fhir/Patient/SubscriberExample",  
      "resource": {  
        "resourceType": "Patient",  
        "id": "SubscriberExample",  
        "meta": {  
          "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-beneficiary"]  
        },  
        "name": [{  
          "family": "SMITH",  
          "given": ["JOE"]  
        }],  
        "gender": "male"  
      }  
    },  
    {  
      "fullUrl": "http://example.org/fhir/Organization/UMOExample",  
      "resource": {  
        "resourceType": "Organization",  
        "id": "UMOExample",  
        "meta": {  
          "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-requestor"]  
        },  
        "name": "Provider Organization"  
      }  
    },  
    {  
      "fullUrl": "http://example.org/fhir/Organization/InsurerExample",  
      "resource": {  
        "resourceType": "Organization",  
        "id": "InsurerExample",  
        "meta": {  
          "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-insurer"]  
        },  
        "name": "Insurance Company"  
      }  
    }  
  ]  
}
```

## Format respons
<a name="inquire-response-format"></a>

### Respon sukses (200 OK)
<a name="inquire-success-response"></a>

Anda akan menerima Paket Respons Pertanyaan PAS yang berisi:
+ **ClaimResponse**dengan status otorisasi saat ini; beberapa **ClaimResponse**jika cocok dengan kriteria pencarian
+ Semua sumber daya asli dari permintaan Anda (bergema kembali)
+ Stempel waktu saat respons dirakit

**Kemungkinan ClaimResponse Hasil**  



| Hasil | Deskripsi | 
| --- | --- | 
| queued | Permintaan otorisasi masih menunggu peninjauan | 
| complete | Keputusan otorisasi telah dibuat (periksa disposition untuk disetujui/ditolak) | 
| error | Terjadi kesalahan selama pemrosesan | 
| partial | Otorisasi sebagian diberikan | 

```
{  
  "resourceType": "Bundle",  
  "identifier": {  
        "system": "http://example.org/SUBMITTER_TRANSACTION_IDENTIFIER",  
        "value": "5269367"  
  },  
  "type": "collection",  
  "timestamp": "2005-05-02T14:30:15+05:00",  
  "entry": [  
    {  
      "fullUrl": "http://example.org/fhir/ClaimResponse/InquiryResponseExample",  
      "resource": {  
        "resourceType": "ClaimResponse",  
        "id": "InquiryResponseExample",  
        "meta": {  
          "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claimresponse-inquiry"]  
        },  
        "status": "active",  
        "type": {  
          "coding": [{  
            "system": "http://terminology.hl7.org/CodeSystem/claim-type",  
            "code": "professional"  
          }]  
        },  
        "use": "preauthorization",  
        "patient": {  
          "reference": "Patient/SubscriberExample"  
        },  
        "created": "2005-05-02T11:05:00+05:00",  
        "insurer": {  
          "reference": "Organization/InsurerExample"  
        },  
        "request": {  
          "reference": "Claim/MedicalServicesAuthorizationExample"  
        },  
        "outcome": "complete",  
        "disposition": "Approved",  
        "preAuthRef": "AUTH12345"  
      }  
    },  
    {  
      "fullUrl": "http://example.org/fhir/Claim/MedicalServicesAuthorizationExample",  
      "resource": {  
        "resourceType": "Claim",  
        "id": "MedicalServicesAuthorizationExample",  
        "meta": {  
          "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claim-inquiry"]  
        },  
        "status": "active",  
        "type": {  
          "coding": [{  
            "system": "http://terminology.hl7.org/CodeSystem/claim-type",  
            "code": "professional"  
          }]  
        },  
        "use": "preauthorization",  
        "patient": {  
          "reference": "Patient/SubscriberExample"  
        },  
        "created": "2005-05-02T11:01:00+05:00",  
        "insurer": {  
          "reference": "Organization/InsurerExample"  
        },  
        "provider": {  
          "reference": "Organization/UMOExample"  
        }  
      }  
    },  
    {  
      "fullUrl": "http://example.org/fhir/Patient/SubscriberExample",  
      "resource": {  
        "resourceType": "Patient",  
        "id": "SubscriberExample",  
        "meta": {  
          "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-beneficiary"]  
        },  
        "name": [{  
          "family": "SMITH",  
          "given": ["JOE"]  
        }],  
        "gender": "male"  
      }  
    },  
    {  
      "fullUrl": "http://example.org/fhir/Organization/UMOExample",  
      "resource": {  
        "resourceType": "Organization",  
        "id": "UMOExample",  
        "meta": {  
          "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-requestor"]  
        },  
        "name": "Provider Organization"  
      }  
    },  
    {  
      "fullUrl": "http://example.org/fhir/Organization/InsurerExample",  
      "resource": {  
        "resourceType": "Organization",  
        "id": "InsurerExample",  
        "meta": {  
          "profile": ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-insurer"]  
        },  
        "name": "Insurance Company"  
      }  
    }  
  ]  
}
```

## Tanggapan kesalahan
<a name="inquire-error-responses"></a>

### 400 Permintaan Buruk
<a name="inquire-400-error"></a>

Dikembalikan ketika format permintaan tidak valid atau validasi gagal.

```
{  
    "resourceType": "OperationOutcome",  
    "issue": [  
        {  
            "severity": "error",  
            "code": "required",  
            "diagnostics": "Reference 'Patient/SubscriberExample' at path 'patient' for 'CLAIM' resource not found(at Bundle.entry[0].resource)"  
        }  
    ]  
}
```

### 401 Tidak Sah
<a name="inquire-401-error"></a>

Dikembalikan ketika kredensi otentikasi hilang atau tidak valid.

```
{  
    "resourceType": "OperationOutcome",  
    "issue": [  
        {  
            "severity": "error",  
            "code": "forbidden",  
            "diagnostics": "Invalid authorization header"  
        }  
    ]  
}
```

### 403 Dilarang
<a name="inquire-403-error"></a>

Dikembalikan ketika pengguna yang diautentikasi tidak memiliki izin untuk mengakses sumber daya yang diminta.

```
{  
    "resourceType": "OperationOutcome",  
    "issue": [  
        {  
            "severity": "error",  
            "code": "exception",  
            "diagnostics": "Insufficient SMART scope permissions."  
        }  
    ]  
}
```

### 400 Ketika tidak ada yang ditemukan
<a name="inquire-400-none-found"></a>

Dikembalikan ketika tidak ClaimResponse ada kecocokan yang ditemukan untuk penyelidikan.

```
{  
  "resourceType": "OperationOutcome",
  "issue": [{
    "severity": "error",
    "code": "not-found",
    "diagnostics": "Resource not found. No ClaimResponse found from the input Claim that matches the specified Claim properties patient, insurer, provider, and created(at Bundle.entry[0].resource)"
  }]
}
```

### 415 Jenis Media yang Tidak Didukung
<a name="inquire-415-error"></a>

Dikembalikan ketika header Content-Type bukan application/fhir\$1json.

```
{  
  "resourceType": "OperationOutcome",  
  "issue": [{  
    "severity": "error",  
    "code": "value",  
    "diagnostics": "Incorrect MIME-type. Update request Content-Type header."  
  }]  
}
```

### 429 Terlalu Banyak Permintaan
<a name="inquire-429-error"></a>

Dikembalikan ketika batas tarif terlampaui.

```
{  
  "resourceType": "OperationOutcome",  
  "issue": [{  
    "severity": "error",  
    "code": "throttled",  
    "diagnostics": "Rate limit exceeded. Please retry after some time."  
  }]  
}
```

## Aturan validasi
<a name="inquire-validation-rules"></a>

HealthLake melakukan validasi komprehensif atas pertanyaan Anda:

### Validasi bundel
<a name="inquire-bundle-validation"></a>
+ Harus sesuai dengan profil Paket Permintaan Pertanyaan PAS
+ `Bundle.type`harus `"collection"`
+ Harus berisi persis satu sumber Klaim
+ Semua sumber daya yang direferensikan harus disertakan dalam Bundel

### Validasi klaim
<a name="inquire-claim-validation"></a>
+ Harus sesuai dengan profil Permintaan Klaim PAS
+ `Claim.use`harus `"preauthorization"`
+ `Claim.status`harus `"active"`
+ Bidang yang diperlukan:`patient`,`insurer`,`provider`, `created`

### Validasi sumber daya
<a name="inquire-resource-validation"></a>
+ Semua sumber daya harus sesuai dengan profil Penyelidikan PAS masing-masing
+ Sumber daya pendukung yang diperlukan harus ada (Pasien, Organisasi Penanggung, Organisasi Penyedia)
+ Referensi silang harus valid dan dapat diselesaikan dalam Bundel

## Spesifikasi kinerja
<a name="inquire-performance-specs"></a>


| Metrik | Spesifikasi | 
| --- | --- | 
| Batas Hitungan Sumber Daya | 500 sumber daya per Bundel | 
| Batas Ukuran Bundel | Maksimum 5 MB | 

## Izin yang diperlukan
<a name="inquire-required-permissions"></a>

Untuk menggunakan `$inquire` operasi, pastikan peran IAM Anda memiliki:
+ `healthlake:InquirePreAuthClaim`- Untuk memanggil operasi

**SMART pada Lingkup FHIR**  
**Cakupan minimum yang diperlukan:**
+ **SMART v1:** `user/ClaimResponse.read`
+ **SMART v2**: `user/ClaimResponse.s`

## Catatan implementasi penting
<a name="inquire-implementation-notes"></a>

### Perilaku pencarian
<a name="inquire-search-behavior"></a>

Saat Anda mengirimkan pertanyaan, HealthLake cari penggunaan: ClaimResponse 
+ **Referensi pasien** dari klaim masukan
+ **Referensi Penanggung dari Masukan** Klaim
+ **Referensi penyedia** dari Klaim masukan
+ **Tanggal dibuat** dari Klaim masukan (sebagai filter waktu)

**Beberapa Kecocokan**: Jika beberapa ClaimResponses cocok dengan kriteria pencarian Anda, HealthLake mengembalikan semua hasil yang cocok. Anda harus menggunakan `ClaimResponse.created` stempel waktu terbaru untuk mengidentifikasi status terbaru.

### Klaim yang diperbarui
<a name="inquire-updated-claims"></a>

Jika Anda telah mengirimkan beberapa pembaruan ke otorisasi sebelumnya yang sama (misalnya, Klaim v1.1, v1.2, v1.3), `$inquire` operasi akan mengambil yang ClaimResponse terkait dengan **versi terbaru** berdasarkan kriteria pencarian yang disediakan.

### Operasi hanya-baca
<a name="inquire-read-only"></a>

`$inquire`Operasi:
+ **Apakah** mengambil status otorisasi yang ada
+ **Apakah** mengembalikan yang terbaru ClaimResponse
+ **Tidak** mengubah atau memperbarui sumber daya apa pun
+ **Tidak** membuat sumber daya baru
+ **Tidak** memicu pemrosesan otorisasi baru

## Contoh alur kerja
<a name="inquire-workflow-example"></a>

**Alur Kerja Permintaan Otorisasi Sebelumnya yang Khas**  


```
1. Provider submits PA request  
   POST /Claim/$submit  
   → Returns ClaimResponse with outcome="queued"  
  
2. Payer reviews request (asynchronous)  
   → Updates ClaimResponse status internally  
  
3. Provider checks status  
   POST /Claim/$inquire  
   → Returns ClaimResponse with outcome="queued" (still pending)  
  
4. Provider checks status again later  
   POST /Claim/$inquire  
   → Returns ClaimResponse with outcome="complete", disposition="Approved"
```

## Operasi terkait
<a name="inquire-related-operations"></a>
+ `Claim/$submit`- Kirim permintaan otorisasi sebelumnya yang baru atau perbarui yang sudah ada
+ `Patient/$everything`- Ambil data pasien yang komprehensif untuk konteks otorisasi sebelumnya

# Mengambil Detail Konsep dengan `$lookup`
<a name="reference-fhir-operations-lookup"></a>

AWS HealthLake sekarang mendukung `$lookup` operasi untuk CodeSystem sumber daya, memungkinkan Anda untuk mengambil rincian tentang konsep tertentu dalam sistem kode dengan memberikan informasi identifikasi seperti kodenya. Operasi ini sangat berguna ketika Anda perlu:
+ Ambil informasi rinci tentang kode medis tertentu
+ Validasi arti dan properti kode
+ Akses definisi dan hubungan konsep
+ Support pengambilan keputusan klinis dengan data terminologi yang akurat

## Penggunaan
<a name="lookup-usage"></a>

`$lookup`Operasi dapat dipanggil pada CodeSystem sumber daya menggunakan metode GET dan POST:

**Operasi yang Didukung**  


```
GET [base]/CodeSystem/$lookup?system=http://snomed.info/sct&code=73211009&version=20230901
POST [base]/CodeSystem/$lookup
```

## Parameter yang Didukung
<a name="lookup-parameters"></a>

HealthLake mendukung subset parameter FHIR `$lookup` R4:


| Parameter | Tipe | Diperlukan | Deskripsi | 
| --- | --- | --- | --- | 
| code | code | Ya | Kode konsep yang Anda cari (misalnya, “71620000" di SNOMED CT) | 
| system | uri | Ya | URL kanonik dari sistem kode (misalnya, "[http://snomed.info/sct](http://snomed.info/sct) “) | 
| version | string | Tidak | Versi spesifik dari sistem kode | 

## Contoh
<a name="lookup-examples"></a>

**DAPATKAN Permintaan**  


```
GET [base]/CodeSystem/$lookup?system=http://snomed.info/sct&code=71620000&version=2023-09
```

**Permintaan POST**  


```
POST [base]/CodeSystem/$lookup
Content-Type: application/fhir+json

{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "system",
      "valueUri": "http://snomed.info/sct"
    },
    {
      "name": "code",
      "valueCode": "71620000"
    },
    {
      "name": "version",
      "valueString": "2023-09"
    }
  ]
}
```

**Contoh Respons**  
Operasi mengembalikan sumber daya Parameter yang berisi rincian konsep:

```
{
    "resourceType": "Parameters",
    "parameter": [{
            "name": "name",
            "valueString": "SNOMED CT Fractures"
        },
        {
            "name": "version",
            "valueString": "2023-09"
        },
        {
            "name": "display",
            "valueString": "Fracture of femur"
        },
        {
            "name": "property",
            "part": [{
                    "name": "code",
                    "valueCode": "child"
                },
                {
                    "name": "value",
                    "valueCode": "263225007"
                },
                {
                    "name": "description",
                    "valueString": "Fracture of neck of femur"
                }
            ]
        },
        {
            "name": "property",
            "part": [{
                    "name": "code",
                    "valueCode": "child"
                },
                {
                    "name": "value",
                    "valueCode": "263227004"
                },
                {
                    "name": "description",
                    "valueString": "Fracture of shaft of femur"
                }
            ]
        }
    ]
}
```

## Parameter Respons
<a name="lookup-response-parameters"></a>

Respons mencakup parameter berikut bila tersedia:


| Parameter | Jenis | Deskripsi | 
| --- | --- | --- | 
| name | string | Nama sistem kode | 
| version | string | Versi sistem kode | 
| display | string | Nama tampilan konsep | 
| designation | BackboneElement | Representasi tambahan untuk konsep ini. | 
| property | BackboneElement | Properti tambahan dari konsep (definisi, hubungan, dll.) | 

## Perilaku
<a name="lookup-behavior"></a>

`$lookup`Operasi:

1. Memvalidasi parameter yang diperlukan (`code`dan`system`)

1. Mencari konsep dalam sistem kode tertentu yang disimpan dalam datastore

1. Mengembalikan informasi konsep rinci termasuk nama tampilan, sebutan, dan properti.

1. Mendukung pencarian khusus versi saat parameter disediakan `version`

1. Beroperasi hanya pada sistem kode yang disimpan secara eksplisit di datastore HealthLake 

## Penanganan Kesalahan
<a name="lookup-error-handling"></a>

Operasi menangani kondisi kesalahan berikut:
+ 400 Permintaan Buruk: `$lookup` Operasi tidak valid (permintaan tidak sesuai atau parameter yang diperlukan tidak ada)
+ 404 Tidak Ditemukan: Sistem kode tidak ditemukan atau kode tidak ditemukan dalam sistem kode yang ditentukan

## Peringatan
<a name="lookup-caveats"></a>

Untuk rilis ini, berikut ini tidak didukung:
+ `$lookup`operasi dengan memanggil server terminologi eksternal
+ `$lookup`operasi pada CodeSystems dikelola oleh HealthLake tetapi tidak secara eksplisit disimpan di datastore

Untuk informasi lebih lanjut tentang spesifikasi `$lookup` operasi, lihat dokumentasi [FHIR R4 CodeSystem `$lookup`](https://www.hl7.org/fhir/R4/codesystem-operation-lookup.html).

# `$member-add`operasi untuk HealthLake
<a name="reference-fhir-operations-member-add"></a>

`$member-add`Operasi FHIR menambahkan anggota (pasien) ke sumber daya Grup, khususnya Daftar Atribusi Anggota. Operasi ini merupakan bagian dari Panduan Implementasi Atribusi DaVinci Anggota dan mendukung proses rekonsiliasi untuk mengelola atribusi anggota.

## Titik Akhir Operasi
<a name="member-add-endpoint"></a>

```
POST [base]/datastore/{datastoreId}/r4/Group/{groupId}/$member-add
Content-Type: application/json
```

## Parameter
<a name="member-add-parameters"></a>

Operasi menerima sumber daya Parameter FHIR dengan kombinasi parameter berikut:

### Opsi Parameter
<a name="member-add-parameter-options"></a>

Anda dapat menggunakan salah satu kombinasi parameter berikut:

Opsi 1: ID Member\$1NPI Penyedia  
`memberId` \$1 `providerNpi`  
`memberId` \$1 `providerNpi` \$1 `attributionPeriod`

Opsi 2: Referensi Pasien\$1Referensi Penyedia  
`patientReference` \$1 `providerReference`  
`patientReference` \$1 `providerReference` \$1 `attributionPeriod`

### Rincian Parameter
<a name="member-add-parameter-details"></a>

MemberID (Opsional)  
Pengenal anggota yang akan ditambahkan ke Grup.  
Jenis: Identifier  
Sistem: Sistem pengenal pasien  

```
{
  "name": "memberId",
  "valueIdentifier": {
    "system": "http://example.org/patient-id",
    "value": "patient-new"
  }
}
```

ProviderNPI (Opsional)  
Pengenal Penyedia Nasional (NPI) dari penyedia yang dikaitkan.  
Jenis: Identifier  
Sistem: http://terminology.hl7. org/CodeSystem/NPI  

```
{
  "name": "providerNpi",
  "valueIdentifier": {
    "system": "http://terminology.hl7.org/CodeSystem/NPI",
    "value": "1234567890"
  }
}
```

PatientReference (Opsional)  
Referensi langsung ke sumber daya pasien yang akan ditambahkan.  
Jenis: Referensi  

```
{
  "name": "patientReference",
  "valueReference": {
    "reference": "Patient/patient-123"
  }
}
```

ProviderReference (Opsional)  
Referensi langsung ke sumber daya penyedia.  
Jenis: Referensi  

```
{
  "name": "providerReference",
  "valueReference": {
    "reference": "Practitioner/provider-456"
  }
}
```

Periode Atribusi (Opsional)  
Periode waktu di mana pasien dikaitkan dengan penyedia.  
Jenis: Periode  

```
{
  "name": "attributionPeriod",
  "valuePeriod": {
    "start": "2024-07-15",
    "end": "2025-07-14"
  }
}
```

## Minta Contoh
<a name="member-add-examples"></a>

### Menggunakan ID Anggota dan NPI Penyedia
<a name="member-add-example-id-npi"></a>

```
{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "memberId",
      "valueIdentifier": {
        "system": "http://example.org/patient-id",
        "value": "patient-new"
      }
    },
    {
      "name": "providerNpi",
      "valueIdentifier": {
        "system": "http://terminology.hl7.org/CodeSystem/NPI",
        "value": "1234567890"
      }
    },
    {
      "name": "attributionPeriod",
      "valuePeriod": {
        "start": "2024-07-15",
        "end": "2025-07-14"
      }
    }
  ]
}
```

### Menggunakan Referensi Pasien dan Penyedia
<a name="member-add-example-references"></a>

```
{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "patientReference",
      "valueReference": {
        "reference": "Patient/patient-123"
      }
    },
    {
      "name": "providerReference",
      "valueReference": {
        "reference": "Practitioner/provider-456"
      }
    },
    {
      "name": "attributionPeriod",
      "valuePeriod": {
        "start": "2024-07-15",
        "end": "2025-07-14"
      }
    }
  ]
}
```

## Format Respons
<a name="member-add-response"></a>

### Respon Penambahan yang Berhasil
<a name="member-add-success-response"></a>

```
HTTP Status: 200 OK
Content-Type: application/fhir+json

{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "success",
      "code": "informational",
      "details": {
        "text": "Member Patient/patient-new successfully added to the Member Attribution List."
      }
    }
  ]
}
```

### Respons Kesalahan
<a name="member-add-error-responses"></a>

Sintaks Permintaan Tidak Valid  
Status HTTP: 400 Permintaan Buruk  

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "invalid",
      "details": {
        "text": "Invalid parameter combination provided"
      }
    }
  ]
}
```

Sumber Daya Tidak Ditemukan  
Status HTTP: 404 Tidak Ditemukan  

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "not-found",
      "details": {
        "text": "Resource not found."
      }
    }
  ]
}
```

Konflik Versi  
Status HTTP: 409 Konflik  

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "conflict",
      "details": {
        "text": "Resource version conflict detected"
      }
    }
  ]
}
```

Status Atribusi Tidak Valid  
Status HTTP: 422 Entitas yang Tidak Dapat Diproses  

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "business-rule",
      "details": {
        "text": "Cannot add member to Attribution List with status 'final'. Status must be 'draft' or 'open'."
      }
    }
  ]
}
```

## Aturan Bisnis
<a name="member-add-business-rules"></a>

Validasi Status Atribusi  
Operasi hanya dapat dilakukan jika Status Atribusi Grup adalah:  
+ `draft`
+ `open`
Operasi tidak diperbolehkan ketika statusnya`final`.

Pencegahan Anggota Duplikat  
Sistem mencegah penambahan anggota duplikat berdasarkan kombinasi unik dari:  
+ Pengenal Anggota
+ Pengidentifikasi Pembayar
+ Pengidentifikasi Cakupan

Validasi Periode Cakupan  
Ketika `attributionPeriod` disediakan, itu harus berada dalam batas-batas periode pertanggungan anggota. Sistem akan:  
+ Cari sumber daya Cakupan anggota
+ Gunakan Cakupan terbaru (versionId tertinggi) jika ada beberapa
+ Memvalidasi bahwa periode atribusi tidak melebihi periode pertanggungan

Validasi Referensi  
Ketika ID dan referensi disediakan untuk sumber daya yang sama (pasien atau penyedia), sistem memvalidasi bahwa mereka sesuai dengan sumber daya yang sama.  
Ketika bidang ID dan reference.identifier disediakan untuk sumber daya yang sama (pasien atau penyedia), kesalahan akan muncul.

## Otentikasi & Otorisasi
<a name="member-add-auth"></a>

Operasi ini membutuhkan otorisasi SMART pada FHIR untuk:
+ Izin baca - Untuk memvalidasi sumber daya pasien, penyedia, dan grup
+ Izin pencarian - Untuk menemukan sumber daya berdasarkan pengenal
+ Perbarui izin - Untuk memodifikasi sumber daya Grup

## Perilaku Operasional
<a name="member-add-behavior"></a>

Pembaruan Sumber Daya  
+ Memperbarui ID versi sumber daya Grup
+ Membuat entri riwayat dengan status sumber daya asli sebelum operasi
+ Menambahkan informasi anggota ke array Group.member dengan:
  + Referensi pasien di entity.reference
  + Periode atribusi dalam periode
  + Informasi cakupan dan penyedia di bidang ekstensi

Langkah Validasi  
+ Validasi Parameter - Memastikan kombinasi parameter yang valid
+ Keberadaan Sumber Daya - Memvalidasi sumber daya pasien, penyedia, dan kelompok yang ada
+ Status Atribusi - Mengonfirmasi status grup memungkinkan modifikasi
+ Pemeriksaan Duplikat - Mencegah penambahan anggota yang ada
+ Validasi Cakupan - Memastikan periode atribusi berada dalam batas cakupan

## Batasan
<a name="member-add-limitations"></a>
+ Semua sumber daya yang direferensikan harus ada dalam datastore yang sama
+ Operasi hanya berfungsi dengan sumber daya Grup Daftar Atribusi Anggota
+ Periode atribusi harus berada dalam batas pertanggungan
+ Tidak dapat mengubah grup dengan status “final”

# `$member-match`operasi untuk HealthLake
<a name="reference-fhir-operations-member-match"></a>

AWS HealthLake sekarang mendukung `$member-match` operasi untuk sumber daya Pasien, memungkinkan organisasi perawatan kesehatan untuk menemukan pengenal unik anggota di berbagai sistem perawatan kesehatan menggunakan informasi demografis dan cakupan. Operasi ini sangat penting untuk mencapai kepatuhan CMS dan memfasilitasi pertukaran payer-to-payer data yang aman sambil menjaga privasi pasien.

Operasi ini sangat berguna ketika Anda perlu:
+ Aktifkan pertukaran data perawatan kesehatan yang aman antar organisasi
+ Pertahankan kontinuitas perawatan pasien di berbagai sistem
+ Mendukung persyaratan kepatuhan CMS
+ Memfasilitasi identifikasi anggota yang akurat di seluruh jaringan perawatan kesehatan

## Penggunaan
<a name="member-match-usage"></a>

`$member-match`Operasi dapat dipanggil pada sumber daya Pasien menggunakan metode POST:

```
POST [base]/Patient/$member-match
```

## Parameter yang Didukung
<a name="member-match-parameters"></a>

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


| Parameter | Tipe | Diperlukan | Default | 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 | 
| Persetujuan | Persetujuan | Tidak | — | Sumber daya persetujuan untuk tujuan otorisasi | 

## Contoh
<a name="member-match-examples"></a>

### Permintaan POST dengan Parameter
<a name="member-match-request-example"></a>

```
POST [base]/Patient/$member-match
Content-Type: application/fhir+json

{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "MemberPatient",
      "resource": {
        "resourceType": "Patient",
        "name": [
          {
            "family": "Jones",
            "given": ["Sarah"]
          }
        ],
        "gender": "female",
        "birthDate": "1985-05-15"
      }
    },
    {
      "name": "CoverageToMatch",
      "resource": {
        "resourceType": "Coverage",
        "status": "active",
        "beneficiary": {
          "reference": "Patient/1"
        },
        "relationship": {
          "coding": [
            {
              "system": "http://terminology.hl7.org/CodeSystem/subscriber-relationship",
              "code": "self",
              "display": "Self"
            }
          ]
        },
        "payor": [
          {
            "reference": "Organization/payer456"
          }
        ]
      }
    },
    {
      "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/1"
        },
        "performer": [
          {
            "reference": "Patient/patient123"
          }
        ],
        "sourceReference": {
          "reference": "Document/someconsent"
        },
        "policy": [
          {
            "uri": "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition-hrex-consent.html#regular"
          }
        ]
      }
    }
  ]
}
```

### Contoh Respons
<a name="member-match-response-example"></a>

Operasi mengembalikan sumber daya Parameter yang berisi hasil yang cocok:

```
{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "MemberIdentifier",
      "valueIdentifier": {
        "system": "http://hospital.org/medical-record-number",
        "value": "MRN-123456"
      }
    },
    {
      "name": "MemberId",
      "valueReference": {
        "reference": "Patient/patient123"
      }
    },
    {
      "name": "matchAlgorithm",
      "valueString": "DEMOGRAPHIC_MATCH"
    },
    {
      "name": "matchDetails",
      "valueString": "Demographic match: DOB + Name"
    },
    {
      "name": "matchedFields",
      "valueString": "given,birthdate,gender,family"
    }
  ]
}
```

## Parameter Respons
<a name="member-match-response-parameters"></a>

Respons mencakup parameter berikut ketika kecocokan ditemukan:


| Parameter | Jenis | Deskripsi | 
| --- | --- | --- | 
| MemberIdentifier | Pengidentifikasi | Pengenal unik untuk anggota yang cocok | 
| MemberId | Referensi | Referensi ke sumber daya Pasien | 
| MatchAlgorithm | String | Jenis algoritma pencocokan yang digunakan (EXACT\$1MATCH, STRONG\$1MATCH, atau DEMOGRAPHIC\$1MATCH) | 
| Detail pertandingan | String | Informasi terperinci tentang proses pencocokan | 
| MatchedFields | String | Daftar bidang tertentu yang berhasil dicocokkan | 

## Algoritma Pencocokan
<a name="member-match-algorithms"></a>

`$member-match`API menggunakan pendekatan pencocokan multi-tier untuk memastikan identifikasi anggota yang akurat:

EXACT\$1MATCH  
Menggunakan Patient Identifier dikombinasikan dengan Cakupan SubscriberId  
Memberikan tingkat kepercayaan tertinggi untuk pencocokan anggota

STRONG\$1MATCH  
Menggunakan Patient Identifier dengan informasi cakupan minimum  
Menawarkan kepercayaan diri yang tinggi ketika kriteria kecocokan yang tepat tidak terpenuhi

DEMOGRAFIK\$1MATCH  
Bergantung pada informasi demografis dasar  
Digunakan saat pencocokan berbasis pengenal tidak dimungkinkan

## Perilaku
<a name="member-match-behavior"></a>

`$member-match`Operasi:
+ Menerima demografi pasien, detail cakupan, dan informasi persetujuan opsional sebagai masukan
+ Mengembalikan pengenal anggota unik yang dapat digunakan untuk interaksi selanjutnya
+ Menerapkan pencocokan multi-tier (tepat, kuat, demografis) untuk memastikan identifikasi anggota yang akurat di berbagai sistem perawatan kesehatan
+ Menyimpan informasi persetujuan yang diberikan untuk tujuan otorisasi future
+ Mendukung pertukaran payer-to-payer data yang aman sambil menjaga privasi pasien
+ Memenuhi persyaratan CMS untuk pertukaran data perawatan kesehatan

## Otorisasi
<a name="member-match-authorization"></a>

API menggunakan SMART pada protokol otorisasi FHIR dengan cakupan wajib berikut:
+ `system/Patient.read`
+ `system/Coverage.read`
+ `system/Organization.read`(bersyarat)
+ `system/Practitioner.read`(bersyarat)
+ `system/PractitionerRole.read`(bersyarat)
+ `system/Consent.write`(bersyarat)

## Penanganan Kesalahan
<a name="member-match-error-handling"></a>

Operasi menangani kondisi kesalahan berikut:
+ `400 Bad Request`: `$member-match` Operasi tidak valid (permintaan yang tidak sesuai atau parameter yang diperlukan tidak ada)
+ `422 Unprocessable Entity`: Tidak ada kecocokan atau beberapa kecocokan yang ditemukan

# `$member-remove`operasi untuk HealthLake
<a name="reference-fhir-operations-member-remove"></a>

`$member-remove`Operasi ini memungkinkan Anda untuk menghapus anggota dari Daftar Atribusi Anggota FHIR (sumber daya Grup) di. AWS HealthLake Operasi ini merupakan bagian dari Panduan Implementasi Atribusi DaVinci Anggota dan mendukung proses rekonsiliasi untuk mengelola atribusi anggota.

## Prasyarat
<a name="member-remove-prerequisites"></a>
+ AWS HealthLake Datasore FHIR
+ Izin IAM yang sesuai untuk operasi HealthLake 
+ Daftar Atribusi Anggota (Sumber daya grup) dalam draf atau status terbuka

## Detail Operasi
<a name="member-remove-endpoint"></a>

Titik akhir  
`POST /Group/{id}/$member-remove`

Jenis Konten  
`application/fhir+json`

## Parameter
<a name="member-remove-parameters"></a>

Operasi menerima sumber daya Parameter FHIR dengan parameter opsional berikut:


| Parameter | Kardinalitas | Tipe | Deskripsi | 
| --- | --- | --- | --- | 
| MemberID | 0.. 1 | Pengidentifikasi | Pengenal bisnis anggota yang akan dihapus | 
| ProviderNPI | 0.. 1 | Pengidentifikasi | NPI dari penyedia yang dikaitkan | 
| PatientReferensi | 0.. 1 | Referensi | Referensi langsung ke sumber daya Pasien | 
| Penyedia Referensi | 0.. 1 | Referensi | Referensi langsung ke sumber daya Penyedia (Praktisi, PractitionerRole, atau Organisasi) | 
| CoverageReference | 0.. 1 | Referensi | Referensi ke sumber daya Cakupan | 

### Kombinasi Parameter yang Didukung
<a name="member-remove-parameter-combinations"></a>

Kombinasi parameter berikut didukung:
+ `memberId`only - Menghapus semua atribusi untuk anggota yang ditentukan
+ `memberId`\$1 `providerNpi` - Menghapus atribusi untuk kombinasi member-provider tertentu
+ `patientReference`hanya - Menghapus semua atribusi untuk pasien yang ditentukan
+ `patientReference`\$1 `providerReference` - Menghapus atribusi untuk kombinasi pasien-penyedia tertentu
+ `patientReference`\$1 `providerReference` \$1 `coverageReference` - Menghapus atribusi spesifik berdasarkan pasien, penyedia, dan cakupan

## Contoh Permintaan
<a name="member-remove-examples"></a>

```
{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "patientReference",
      "valueReference": {
        "reference": "Patient/12345"
      }
    },
    {
      "name": "providerReference",
      "valueReference": {
        "reference": "Practitioner/67890"
      }
    }
  ]
}
```

## Respons
<a name="member-remove-response"></a>

### Respon yang Berhasil
<a name="member-remove-success-response"></a>

```
{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "result",
      "valueBoolean": true
    },
    {
      "name": "effectiveDate",
      "valueDate": "2024-06-30"
    },
    {
      "name": "status",
      "valueCode": "inactive"
    },
    {
      "name": "message",
      "valueString": "Member successfully removed from attribution list"
    }
  ]
}
```

## Perilaku
<a name="member-remove-behavior"></a>

Persyaratan Status  
Operasi hanya berfungsi pada daftar atribusi dengan status `draft` atau `open`  
Daftar dengan `final` status akan menolak operasi dengan kesalahan 422

Proses Penghapusan Anggota  
*Daftar Status Draf*: Anggota ditandai sebagai tidak aktif (`inactive: true`) dan `changeType` ekstensi mereka diperbarui ke `changed`  
*Daftar Status Terbuka*: Perilaku serupa dengan status draf  
*Daftar Status Akhir*: Operasi ditolak

Validasi  
Referensi divalidasi untuk memastikan mereka ada di datastore HealthLake   
Jika pengenal dan referensi disediakan untuk jenis sumber daya yang sama, mereka harus sesuai dengan sumber daya yang sama  
Kombinasi parameter divalidasi sesuai dengan pola yang didukung

## Penanganan Kesalahan
<a name="member-remove-error-handling"></a>

### Tanggapan Kesalahan Umum
<a name="member-remove-common-errors"></a>

Sumber Daya Tidak Ditemukan (404)  

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "not-found",
      "details": {
        "text": "Patient with identifier 'http://example.org/fhir/identifiers|99999' not found in system"
      },
      "diagnostics": "Cannot remove member from attribution list. Verify patient identifier and try again.",
      "expression": ["memberId"]
    }
  ]
}
```

Status Akhir Daftar Atribusi (422)  

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "business-rule",
      "details": {
        "coding": [
          {
            "system": "http://hl7.org/fhir/us/davinci-atr/CodeSystem/atr-error-codes",
            "code": "list-final",
            "display": "Attribution list is final and cannot be modified"
          }
        ]
      },
      "diagnostics": "Cannot modify attribution list with status 'final'. List modifications are not permitted after finalization.",
      "expression": ["Group.status"]
    }
  ]
}
```

Operasi Tidak Valid (400)  
Dikembalikan ketika kombinasi parameter tidak valid atau cacat.

Ditemukan Beberapa Pertandingan (412)  
Dikembalikan ketika parameter yang disediakan cocok dengan beberapa anggota dalam daftar atribusi.  

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "processing",
      "diagnostics": "Multiple members found matching the criteria"
    }
  ]
}
```

## Praktik Terbaik
<a name="member-remove-best-practices"></a>
+ *Gunakan Parameter Spesifik*: Jika memungkinkan, gunakan kombinasi parameter yang paling spesifik untuk menghindari penghapusan yang tidak diinginkan
+ *Periksa Status Daftar*: Verifikasi status daftar atribusi sebelum mencoba menghapus
+ *Menangani Kesalahan dengan Anggun*: Menerapkan penanganan kesalahan yang tepat untuk semua kemungkinan kondisi kesalahan
+ *Validasi Referensi*: Pastikan semua sumber daya yang direferensikan ada sebelum membuat permintaan

# Menghapus Sumber Daya Kompartemen Pasien dengan `$purge`
<a name="reference-fhir-operations-purge"></a>

AWS HealthLake mendukung `$purge` operasi, memungkinkan penghapusan permanen semua sumber daya dalam kompartemen pasien. Operasi ini sangat berguna ketika Anda perlu:
+ Hapus semua data yang terkait dengan pasien
+ Mematuhi permintaan penghapusan data pasien
+ Kelola siklus hidup data pasien
+ Jalankan pembersihan catatan pasien yang komprehensif

## Penggunaan
<a name="purge-usage"></a>

`$purge`Operasi dapat dipanggil pada sumber daya Pasien:

```
POST [base]/Patient/[ID]/$purge?deleteAuditEvent=true
```

## Parameter
<a name="purge-parameters"></a>


| Parameter | Tipe | Diperlukan | Default | Deskripsi | 
| --- | --- | --- | --- | --- | 
| deleteAuditEvent | boolean | Tidak | false | Jika benar, menghapus peristiwa audit terkait | 
| \$1since | string | Tidak | Waktu pembuatan Datastore | Saat dimasukkan, pilih waktu cutoff awal untuk menemukan sumber daya berdasarkan waktu LastModified mereka. Tidak dapat digunakan dengan awal atau akhir | 
| start | string | Tidak | Waktu pembuatan Datastore | Saat dimasukkan, pilih waktu cutoff untuk menemukan sumber daya berdasarkan waktu LastModified mereka. Dapat digunakan dengan akhir | 
| end | string | Tidak | Waktu pengajuan Job | Saat dimasukkan, pilih waktu cutoff akhir untuk menemukan sumber daya berdasarkan waktu LastModified mereka | 

## Contoh
<a name="purge-examples"></a>

**Contoh Permintaan**  


```
POST [base]/Patient/example-patient/$purge?deleteAuditEvent=true
```

**Contoh Respons**  


```
{
  "resourceType": "OperationOutcome",
  "id": "purge-job",
  "issue": [
    {
      "severity": "information",
      "code": "informational",
      "diagnostics": "Purge job started successfully. Job ID: 12345678-1234-1234-1234-123456789012"
    }
  ]
}
```

## Status Tugas
<a name="purge-job-status"></a>

Untuk memeriksa status pekerjaan pembersihan:

```
GET [base]/$purge/[jobId]
```

Operasi mengembalikan informasi status pekerjaan:

```
{
      "datastoreId": "36622996b1fcecb7e12ee2ee085308d3",
      "jobId": "3dd1c7a5b6c0ef8c110f566eb87e2ef9",
      "status": "COMPLETED",
      "submittedTime": "2025-10-31T18:43:21.822Z"
    }
```

## Perilaku
<a name="purge-behavior"></a>

`$purge`Operasi:

1. Memproses secara asinkron untuk menangani banyak sumber daya

1. Menjaga transaksi ACID untuk integritas data

1. Menyediakan pelacakan status pekerjaan dengan jumlah penghapusan sumber daya

1. Secara permanen menghapus semua sumber daya di kompartemen pasien

1. Termasuk pencatatan audit komprehensif dari kegiatan penghapusan

1. Mendukung penghapusan selektif peristiwa audit

## Pencatatan Audit
<a name="purge-audit-logging"></a>

Log `$purge` operasi sebagai Mulai FHIRBulk DeleteJob dan Jelaskan FHIRBulk DeleteJob dengan informasi operasi terperinci.

## Batasan
<a name="purge-limitations"></a>
+ Sumber daya yang dibersihkan tidak akan muncul di respons penelusuran
+ Sumber daya yang sedang dibersihkan mungkin sementara tidak dapat diakses selama pemrosesan
+ Semua sumber daya di kompartemen pasien dihapus secara permanen

# `$questionnaire-package`Operasi FHIR untuk HealthLake
<a name="reference-fhir-operations-questionnaire-package"></a>

`$questionnaire-package`Operasi mengambil bundel komprehensif yang berisi Kuesioner FHIR dan semua dependensinya yang diperlukan untuk membuat dan memproses kuesioner. Operasi ini mengimplementasikan [Panduan Implementasi Template dan Aturan Dokumentasi Da Vinci (DTR)](https://hl7.org/fhir/us/davinci-dtr/OperationDefinition-questionnaire-package.html), memungkinkan rendering formulir dinamis untuk persyaratan dokumentasi dalam alur kerja perawatan kesehatan.

## Cara kerjanya
<a name="questionnaire-package-how-it-works"></a>
+ **Permintaan**: Anda mengirim parameter yang mengidentifikasi kuesioner yang diperlukan, bersama dengan cakupan dan konteks pesanan
+ **Ambil**: HealthLake mengumpulkan Kuesioner dan semua dependensi (, Perpustakaan CQLValueSets, dll.)
+ **Package**: Semua sumber daya dibundel bersama dalam format standar
+ **Menanggapi**: Anda menerima paket lengkap yang siap untuk rendering dan pengumpulan data

**Kasus penggunaan**  

+ **Dokumentasi Otorisasi Sebelumnya**: Kumpulkan informasi klinis yang diperlukan untuk permintaan otorisasi sebelumnya
+ **Persyaratan Cakupan**: Kumpulkan dokumentasi yang diperlukan untuk memenuhi persyaratan cakupan pembayar
+ **Clinical Data Exchange**: Struktur data klinis untuk diserahkan kepada pembayar
+ **Formulir Dinamis**: Render kuesioner dengan data pasien yang telah diisi sebelumnya dan logika bersyarat

## Titik akhir API
<a name="questionnaire-package-api-endpoint"></a>

```
POST /datastore/{datastoreId}/r4/Questionnaire/$questionnaire-package  
Content-Type: application/fhir+json
```

## Permintaan parameter
<a name="questionnaire-package-request-parameters"></a>

### Parameter input
<a name="questionnaire-package-input-parameters"></a>

Badan permintaan harus berisi sumber daya Parameter FHIR dengan parameter berikut:


| Parameter | Tipe | Kardinalitas | Deskripsi | 
| --- | --- | --- | --- | 
| coverage | Cakupan | 1.. \$1 (Diperlukan) | Sumber daya cakupan untuk menetapkan anggota dan cakupan untuk dokumentasi | 
| questionnaire | canonical | 0.. \$1 | URL kanonik untuk Kuesioner tertentu untuk dikembalikan (mungkin termasuk versi) | 
| order | Sumber daya | 0.. \$1 | Pesan sumber daya (DeviceRequest, ServiceRequest, MedicationRequest, Encounter, Appointment) untuk menetapkan konteks | 
| changedSince | dateTime | 0.. 1 | Jika ada, hanya sumber daya yang dikembalikan yang diubah setelah stempel waktu ini | 

### Aturan validasi parameter
<a name="questionnaire-package-parameter-validation"></a>

**Setidaknya SATU dari berikut ini harus disediakan** (selain yang diperlukan`coverage`):
+ Satu atau lebih `questionnaire` kanonik URLs
+ Satu atau lebih `order` sumber daya

**Kombinasi Permintaan yang Valid:**  

+ `coverage` \$1 `questionnaire`
+ `coverage` \$1 `order`
+ `coverage` \$1 `questionnaire` \$1 `order`

## Contoh permintaan
<a name="questionnaire-package-example-request"></a>

```
POST /datastore/example-datastore/r4/Questionnaire/$questionnaire-package  
Content-Type: application/fhir+json  
Authorization: Bearer <your-token>  
  
{  
  "resourceType": "Parameters",  
  "parameter": [  
    {  
      "name": "coverage",  
      "resource": {  
        "resourceType": "Coverage",  
        "id": "example-coverage",  
        "status": "active",  
        "beneficiary": {  
          "reference": "Patient/example-patient"  
        },  
        "payor": [{  
          "reference": "Organization/example-payer"  
        }],  
        "class": [{  
          "type": {  
            "coding": [{  
              "system": "http://terminology.hl7.org/CodeSystem/coverage-class",  
              "code": "group"  
            }]  
          },  
          "value": "12345"  
        }]  
      }  
    },  
    {  
      "name": "questionnaire",  
      "valueCanonical": "http://example.org/fhir/Questionnaire/home-oxygen-therapy|2.0"  
    },  
    {  
      "name": "order",  
      "resource": {  
        "resourceType": "ServiceRequest",  
        "id": "example-service-request",  
        "status": "active",  
        "intent": "order",  
        "code": {  
          "coding": [{  
            "system": "http://www.ama-assn.org/go/cpt",  
            "code": "94660",  
            "display": "Continuous positive airway pressure ventilation (CPAP)"  
          }]  
        },  
        "subject": {  
          "reference": "Patient/example-patient"  
        }  
      }  
    },  
    {  
      "name": "changedSince",  
      "valueDateTime": "2024-01-01T00:00:00Z"  
    }  
  ]  
}
```

## Format respons
<a name="questionnaire-package-response-format"></a>

### Respon sukses (200 OK)
<a name="questionnaire-package-success-response"></a>

Operasi mengembalikan sumber daya Parameter FHIR yang berisi satu atau lebih **Package Bundle**. Setiap Package Bundle meliputi:


| Jenis Entri | Kardinalitas | Deskripsi | 
| --- | --- | --- | 
| Kuesioner | 1 | Kuesioner yang akan diberikan | 
| QuestionnaireResponse | 0.. 1 | Respons yang telah diisi sebelumnya atau sebagian selesai (jika ada) | 
| Perpustakaan | 0.. \$1 | Perpustakaan CQL yang berisi pra-populasi dan logika bersyarat | 
| ValueSet | 0.. \$1 | Diperluas ValueSets (untuk pilihan jawaban dengan <40 ekspansi) | 

**Example Contoh tanggapan**  

```
{  
  "resourceType": "Parameters",  
  "parameter": [  
    {  
      "name": "PackageBundle",  
      "resource": {  
        "resourceType": "Bundle",  
        "id": "questionnaire-package-example",  
        "meta": {  
          "profile": ["http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/DTR-QPackageBundle"]  
        },  
        "type": "collection",  
        "timestamp": "2024-03-15T10:30:00Z",  
        "entry": [  
          {  
            "fullUrl": "http://example.org/fhir/Questionnaire/home-oxygen-therapy",  
            "resource": {  
              "resourceType": "Questionnaire",  
              "id": "home-oxygen-therapy",  
              "url": "http://example.org/fhir/Questionnaire/home-oxygen-therapy",  
              "version": "2.0",  
              "status": "active",  
              "title": "Home Oxygen Therapy Documentation",  
              "item": [  
                {  
                  "linkId": "1",  
                  "text": "Patient diagnosis",  
                  "type": "choice",  
                  "answerValueSet": "http://example.org/fhir/ValueSet/oxygen-diagnoses"  
                }  
              ]  
            }  
          },  
          {  
            "fullUrl": "http://example.org/fhir/Library/oxygen-prepopulation",  
            "resource": {  
              "resourceType": "Library",  
              "id": "oxygen-prepopulation",  
              "url": "http://example.org/fhir/Library/oxygen-prepopulation",  
              "version": "1.0",  
              "type": {  
                "coding": [{  
                  "system": "http://terminology.hl7.org/CodeSystem/library-type",  
                  "code": "logic-library"  
                }]  
              },  
              "content": [{  
                "contentType": "text/cql",  
                "data": "bGlicmFyeSBPeHlnZW5QcmVwb3B1bGF0aW9u..."  
              }]  
            }  
          },  
          {  
            "fullUrl": "http://example.org/fhir/ValueSet/oxygen-diagnoses",  
            "resource": {  
              "resourceType": "ValueSet",  
              "id": "oxygen-diagnoses",  
              "url": "http://example.org/fhir/ValueSet/oxygen-diagnoses",  
              "status": "active",  
              "expansion": {  
                "timestamp": "2024-03-15T10:30:00Z",  
                "contains": [  
                  {  
                    "system": "http://hl7.org/fhir/sid/icd-10",  
                    "code": "J44.0",  
                    "display": "COPD with acute lower respiratory infection"  
                  },  
                  {  
                    "system": "http://hl7.org/fhir/sid/icd-10",  
                    "code": "J96.01",  
                    "display": "Acute respiratory failure with hypoxia"  
                  }  
                ]  
              }  
            }  
          },  
          {  
            "fullUrl": "http://example.org/fhir/QuestionnaireResponse/example-prepopulated",  
            "resource": {  
              "resourceType": "QuestionnaireResponse",  
              "id": "example-prepopulated",  
              "questionnaire": "http://example.org/fhir/Questionnaire/home-oxygen-therapy|2.0",  
              "status": "in-progress",  
              "subject": {  
                "reference": "Patient/example-patient"  
              },  
              "basedOn": [{  
                "reference": "ServiceRequest/example-service-request"  
              }],  
              "item": [  
                {  
                  "linkId": "1",  
                  "text": "Patient diagnosis",  
                  "answer": [{  
                    "valueCoding": {  
                      "system": "http://hl7.org/fhir/sid/icd-10",  
                      "code": "J44.0",  
                      "display": "COPD with acute lower respiratory infection"  
                    }  
                  }]  
                }  
              ]  
            }  
          }  
        ]  
      }  
    },  
    {  
      "name": "Outcome",  
      "resource": {  
        "resourceType": "OperationOutcome",  
        "issue": [{  
          "severity": "information",  
          "code": "informational",  
          "details": {  
            "text": "Successfully retrieved questionnaire package"  
          }  
        }]  
      }  
    }  
  ]  
}
```

## Alur kerja operasi
<a name="questionnaire-package-operation-workflow"></a>

**Bagaimana HealthLake Memproses Permintaan Anda**  
Saat Anda menelepon `$questionnaire-package` HealthLake , lakukan langkah-langkah berikut:

1. **Identifikasi Pasien & Pembayar**: Ekstrak pasien dan organisasi asuransi dari `coverage` parameter Anda.

1. **Temukan Kuesioner yang Tepat**:
   + **Dengan `questionnaire`** **parameter**: Menggunakan URL kanonik yang Anda berikan
   + **Dengan `order`** **parameter**: Cocokkan kode pesanan (CPT/HCPCS/LOINC) dan pembayar untuk menemukan kuesioner yang sesuai

1. **Kumpulkan Dependensi**: Secara otomatis mengambil semua yang diperlukan untuk membuat kuesioner:
   + **Perpustakaan CQL** - Logika untuk pertanyaan pra-populasi dan bersyarat
   + **ValueSets**- Pilihan jawaban (secara otomatis diperluas jika <40 opsi)
   + **QuestionnaireResponse**- Setiap tanggapan yang sedang berlangsung atau selesai

1. **Package Semuanya Bersama**:
   + Bundel semua sumber daya (setiap sumber daya hanya disertakan sekali)
   + Filter berdasarkan `changedSince` stempel waktu jika disediakan
   + Menambahkan peringatan `Outcome` jika ada sumber daya yang hilang

**Hasil**: Paket lengkap dan mandiri yang siap untuk dirender.

## Tanggapan kesalahan
<a name="questionnaire-package-error-responses"></a>

### 400 Permintaan Buruk
<a name="questionnaire-package-400-error"></a>

Dikembalikan ketika validasi permintaan gagal.

```
{  
  "resourceType": "OperationOutcome",  
  "issue": [{  
    "severity": "error",  
    "code": "required",  
    "details": {  
      "text": "At least one of 'questionnaire' or 'order' must be provided along with 'coverage'"  
    }  
  }]  
}
```

### 424 Ketergantungan Gagal
<a name="questionnaire-package-424-error"></a>

Dikembalikan ketika sumber daya dependen tidak dapat diambil.

```
{  
  "resourceType": "OperationOutcome",  
  "issue": [{  
    "severity": "warning",  
    "code": "not-found",  
    "details": {  
      "text": "Referenced Library 'http://example.org/fhir/Library/missing-library' could not be retrieved"  
    }  
  }]  
}
```

### 401 Tidak Sah
<a name="questionnaire-package-401-error"></a>

Dikembalikan ketika kredensi otentikasi hilang atau tidak valid.

### 403 Dilarang
<a name="questionnaire-package-403-error"></a>

Dikembalikan ketika pengguna yang diautentikasi tidak memiliki izin untuk mengakses sumber daya yang diminta.

### 406 Tidak Dapat Diterima
<a name="questionnaire-package-406-error"></a>

Dikembalikan ketika jenis konten yang diminta tidak dapat disediakan.

### 409 Konflik
<a name="questionnaire-package-409-error"></a>

Dikembalikan ketika ada versi atau konflik konkurensi.

### 410 Hilang
<a name="questionnaire-package-410-error"></a>

Dikembalikan ketika sumber daya yang diminta telah dihapus secara permanen.

### 429 Terlalu Banyak Permintaan
<a name="questionnaire-package-429-error"></a>

Dikembalikan ketika batas tarif terlampaui.

### 500 Kesalahan Server Internal
<a name="questionnaire-package-500-error"></a>

Dikembalikan ketika terjadi kesalahan server yang tidak terduga.

### 501 Tidak Diimplementasikan
<a name="questionnaire-package-501-error"></a>

Dikembalikan ketika operasi yang diminta belum dilaksanakan.

## Aturan validasi
<a name="questionnaire-package-validation-rules"></a>

### Validasi masukan
<a name="questionnaire-package-input-validation"></a>
+ `coverage`parameter **diperlukan** (1.. \$1 kardinalitas)
+ Setidaknya satu dari `questionnaire` atau `order` harus disediakan
+ Semua sumber daya Cakupan harus sumber daya FHIR yang valid
+ Semua sumber daya Pesanan harus sumber daya FHIR yang valid
+ Canonical URLs harus diformat dengan benar
+ `changedSince`harus berupa ISO 8601 DateTime yang valid

### QuestionnaireResponse validasi
<a name="questionnaire-package-response-validation"></a>
+ `status`harus sesuai (`in-progress`,`completed`,`amended`)
+ Struktur harus sesuai dengan Kuesioner yang direferensikan
+ `basedOn`harus mereferensikan sumber daya Pesanan yang valid
+ `subject`harus referensi sumber daya Pasien yang valid

### Deduplikasi sumber daya
<a name="questionnaire-package-resource-dedup"></a>
+ Setiap sumber daya hanya muncul sekali dalam bundel
+ Pengecualian: Versi berbeda dari sumber daya yang sama dapat disertakan
+ Sumber daya diidentifikasi oleh URL dan versi kanonik mereka

## Spesifikasi kinerja
<a name="questionnaire-package-performance-specs"></a>


| Metrik | Spesifikasi | 
| --- | --- | 
| Batas Hitungan Sumber Daya | 500 sumber daya per Bundel | 
| Batas Ukuran Bundel | Maksimum 5 MB | 

## Izin yang diperlukan
<a name="questionnaire-package-required-permissions"></a>

Untuk menggunakan `$questionnaire-package` operasi, pastikan peran IAM Anda memiliki:
+ `healthlake:QuestionnairePackage`- Untuk memanggil operasi
+ `healthlake:ReadResource`- Untuk mengambil Kuesioner dan sumber daya dependen
+ `healthlake:SearchWithPost`- Untuk mencari QuestionnaireResponse dan sumber daya terkait

**SMART pada Lingkup FHIR**  
**Cakupan minimum yang diperlukan:**
+ **SMART v1:** `user/Questionnaire.read user/Library.read user/ValueSet.read user/QuestionnaireResponse.read`
+ **SMART v2**: `user/Questionnaire.rs user/Library.rs user/ValueSet.rs user/QuestionnaireResponse.rs`

## Catatan implementasi penting
<a name="questionnaire-package-implementation-notes"></a>

### Strategi pengambilan sumber daya
<a name="questionnaire-package-retrieval-strategy"></a>

**Prioritas Identifikasi Kuesioner:**  

+ **URL kanonik** (jika `questionnaire` parameter disediakan) - Prioritas tertinggi
+ **Analisis Pesanan** (jika `order` parameter disediakan):
  + Cocokkan kode pesanan (CPT, HCPCS, LOINC) dengan kebijakan medis pembayar
  + Gunakan pembayar cakupan untuk memfilter kuesioner khusus pembayar
  + Pertimbangkan kode alasan untuk konteks tambahan

### Resolusi ketergantungan
<a name="questionnaire-package-dependency-resolution"></a>

**Perpustakaan CQL:**  

+ Diperoleh melalui `cqf-library` ekstensi pada sumber Kuesioner
+ Mengambil pustaka dependen secara rekursif melalui tipe `Library.relatedArtifact` `depends-on`
+ Semua dependensi perpustakaan disertakan dalam paket

**ValueSets:**  

+ Secara otomatis diperluas jika mengandung kurang dari 40 konsep
+ Lebih besar ValueSets disertakan tanpa ekspansi
+ ValueSets direferensikan dalam Kuesioner dan sumber daya Perpustakaan disertakan

### QuestionnaireResponse pra-populasi
<a name="questionnaire-package-prepopulation"></a>

Operasi dapat mengembalikan data yang telah QuestionnaireResponse diisi sebelumnya ketika:
+ Respons yang sedang berlangsung atau selesai ditemukan
+ Logika CQL di Perpustakaan terkait dapat mengekstrak data dari catatan pasien
+ Tanggapan terkait dengan urutan dan cakupan yang relevan

**Kriteria Pencarian untuk QuestionnaireResponse:**  



| Parameter Pencarian | Jalan FHIR | Deskripsi | 
| --- | --- | --- | 
| based-on | QuestionnaireResponse.basedOn | Tautan ke ServiceRequest atau CarePlan | 
| patient | QuestionnaireResponse.subject | Pasien yang menjadi subjeknya | 
| questionnaire | QuestionnaireResponse.questionnaire | Kuesioner yang dijawab | 

### Pemfilteran sumber daya yang diubah
<a name="questionnaire-package-changed-filtering"></a>

Ketika `changedSince` parameter disediakan:
+ Hanya sumber daya yang dimodifikasi **setelah** stempel waktu yang ditentukan disertakan
+ Jika tidak ada sumber daya yang berubah, kembali `200 OK` dengan paket kosong
+ Berguna untuk pembaruan tambahan dan strategi caching
+ Perbandingan stempel waktu menggunakan bidang sumber daya `meta.lastUpdated`

### Beberapa paket bundel
<a name="questionnaire-package-multiple-bundles"></a>

Operasi dapat mengembalikan **beberapa Package Bundle** ketika:
+ Beberapa kuesioner diminta melalui kanonik URLs
+ Beberapa pesanan memerlukan kuesioner yang berbeda
+ Versi berbeda dari kuesioner yang sama berlaku

Setiap Package Bundle mandiri dengan semua dependensi yang diperlukan.

## Kasus penggunaan umum
<a name="questionnaire-package-common-use-cases"></a>

### Kasus Penggunaan 1: Dokumentasi Otorisasi Sebelumnya
<a name="questionnaire-package-use-case-1"></a>

**Skenario**: Penyedia perlu mengumpulkan dokumentasi untuk terapi oksigen rumah sebelum otorisasi.

```
{  
  "resourceType": "Parameters",  
  "parameter": [  
    {  
      "name": "coverage",  
      "resource": { /* Patient's insurance coverage */ }  
    },  
    {  
      "name": "order",  
      "resource": {  
        "resourceType": "ServiceRequest",  
        "code": {  
          "coding": [{  
            "system": "http://www.ama-assn.org/go/cpt",  
            "code": "94660"  
          }]  
        }  
      }  
    }  
  ]  
}
```

**Hasil**: Mengembalikan paket dengan kuesioner terapi oksigen, diisi sebelumnya dengan tanda vital pasien dan kode diagnosis dari EHR.

### Kasus Penggunaan 2: Ambil Versi Kuesioner Khusus
<a name="questionnaire-package-use-case-2"></a>

**Skenario**: Penyedia membutuhkan versi kuesioner tertentu untuk kepatuhan.

```
{  
  "resourceType": "Parameters",  
  "parameter": [  
    {  
      "name": "coverage",  
      "resource": { /* Coverage resource */ }  
    },  
    {  
      "name": "questionnaire",  
      "valueCanonical": "http://example.org/fhir/Questionnaire/dme-request|3.1.0"  
    }  
  ]  
}
```

**Hasil**: Mengembalikan persis versi 3.1.0 dari kuesioner permintaan DME dengan semua dependensi.

### Kasus Penggunaan 3: Periksa Pembaruan
<a name="questionnaire-package-use-case-3"></a>

**Skenario**: Penyedia ingin memeriksa apakah ada sumber kuesioner yang telah diperbarui sejak pengambilan terakhir.

```
{  
  "resourceType": "Parameters",  
  "parameter": [  
    {  
      "name": "coverage",  
      "resource": { /* Coverage resource */ }  
    },  
    {  
      "name": "questionnaire",  
      "valueCanonical": "http://example.org/fhir/Questionnaire/medication-request"  
    },  
    {  
      "name": "changedSince",  
      "valueDateTime": "2024-03-01T00:00:00Z"  
    }  
  ]  
}
```

**Hasil**: Mengembalikan hanya sumber daya yang telah dimodifikasi setelah 1 Maret 2024, atau paket kosong jika tidak ada yang berubah.

### Kasus Penggunaan 4: Beberapa Pesanan
<a name="questionnaire-package-use-case-4"></a>

**Skenario**: Penyedia mengirimkan beberapa permintaan layanan yang mungkin memerlukan kuesioner yang berbeda.

```
{  
  "resourceType": "Parameters",  
  "parameter": [  
    {  
      "name": "coverage",  
      "resource": { /* Coverage resource */ }  
    },  
    {  
      "name": "order",  
      "resource": { /* ServiceRequest for imaging */ }  
    },  
    {  
      "name": "order",  
      "resource": { /* ServiceRequest for DME */ }  
    }  
  ]  
}
```

**Hasil**: Mengembalikan beberapa Paket Paket, satu untuk setiap kuesioner yang berlaku.

## Integrasi dengan Da Vinci Lainnya IGs
<a name="questionnaire-package-integration"></a>

### Penemuan Persyaratan Cakupan (CRD)
<a name="questionnaire-package-crd-integration"></a>

**Integrasi Alur Kerja:**  

+ Penyedia memesan layanan di EHR mereka
+ CRD hook fire, memeriksa persyaratan cakupan
+ Pembayar merespons yang menunjukkan dokumentasi diperlukan
+ Panggilan penyedia `$questionnaire-package` untuk mengambil formulir dokumentasi
+ Penyedia melengkapi kuesioner
+ Dokumentasi disampaikan melalui PAS atau CDex

### Prior Authorization Support (PAS)
<a name="questionnaire-package-pas-integration"></a>

**Integrasi Alur Kerja:**  

+ Gunakan `$questionnaire-package` untuk mengambil persyaratan dokumentasi
+ Lengkapi QuestionnaireResponse dengan data klinis yang diperlukan
+ Kirimkan otorisasi sebelumnya menggunakan `Claim/$submit` dengan yang sudah selesai QuestionnaireResponse
+ Periksa status menggunakan `Claim/$inquire`

### Data Exchange Klinis (CDex)
<a name="questionnaire-package-cdex-integration"></a>

**Integrasi Alur Kerja:**  

+ Pembayar meminta dokumentasi tambahan untuk klaim
+ Penyedia menggunakan `$questionnaire-package` untuk mengambil formulir pengumpulan data terstruktur
+ Penyedia menyelesaikan QuestionnaireResponse
+ Dokumentasi diserahkan kepada pembayar melalui alur kerja CDex lampiran

## Panduan pemecahan masalah
<a name="questionnaire-package-troubleshooting"></a>

### Masalah: Tidak Ada Kuesioner yang Dikembalikan
<a name="questionnaire-package-no-questionnaire"></a>

**Kemungkinan Penyebab:**  

+ URL Canonical tidak cocok dengan Kuesioner apa pun di penyimpanan data
+ Kode pesanan tidak dipetakan ke kuesioner apa pun dalam kebijakan medis pembayar
+ Pembayar cakupan tidak memiliki kuesioner terkait

**Solusi:**  

+ Verifikasi URL kanonik benar dan Kuesioner ada
+ Periksa apakah kode pesanan (CPT/HCPCS) ditentukan dengan benar
+ Konfirmasikan bahwa organisasi pembayar memiliki kuesioner yang dikonfigurasi

### Masalah: Dependensi Hilang dalam Package
<a name="questionnaire-package-missing-dependencies"></a>

**Kemungkinan Penyebab:**  

+ Perpustakaan yang direferensikan atau ValueSet tidak ada di penyimpanan data
+ Referensi perpustakaan rusak atau salah
+ ValueSet ekspansi gagal

**Solusi:**  

+ Periksa `Outcome` parameter untuk peringatan tentang sumber daya yang hilang
+ Verifikasi semua sumber daya yang direferensikan ada di penyimpanan data Anda
+ Pastikan ValueSet URLs benar dan dapat diselesaikan

### Masalah: Paket Kosong dengan ChangedSince
<a name="questionnaire-package-empty-package"></a>

**Kemungkinan Penyebab:**  

+ Ini adalah perilaku yang diharapkan - tidak ada sumber daya yang telah dimodifikasi sejak stempel waktu yang ditentukan

**Solusi:**  

+ Gunakan versi paket yang di-cache
+ Hapus `changedSince` parameter untuk mengambil paket lengkap

### Masalah: QuestionnaireResponse Tidak Terisi
<a name="questionnaire-package-not-prepopulated"></a>

**Kemungkinan Penyebab:**  

+ Tidak ada yang QuestionnaireResponse ditemukan
+ Logika Perpustakaan CQL tidak dapat mengekstrak data yang diperlukan
+ Data pasien hilang atau tidak lengkap

**Solusi:**  

+ Ini mungkin diharapkan - tidak semua kuesioner memiliki logika pra-populasi
+ Periksa apakah data pasien ada di penyimpanan data
+ Tinjau logika Perpustakaan CQL untuk persyaratan ekstraksi data

## Praktik terbaik
<a name="questionnaire-package-best-practices"></a>

### 1. Gunakan Canonical URLs dengan Versi
<a name="questionnaire-package-bp-versions"></a>

Selalu tentukan nomor versi saat meminta kuesioner tertentu:

```
{  
  "name": "questionnaire",  
  "valueCanonical": "http://example.org/fhir/Questionnaire/dme|2.1.0"  
}
```

**Mengapa**: Memastikan konsistensi dan mencegah perubahan tak terduga saat kuesioner diperbarui.

### 2. Leverage BerubahSejak untuk Kinerja
<a name="questionnaire-package-bp-changed-since"></a>

Untuk kuesioner yang sering diakses, gunakan `changedSince` untuk meminimalkan transfer data:

```
{  
  "name": "changedSince",  
  "valueDateTime": "2024-03-10T15:30:00Z"  
}
```

**Mengapa**: Mengurangi penggunaan latensi dan bandwidth dengan hanya mengambil sumber daya yang diperbarui.

### 3. Sertakan Informasi Cakupan Lengkap
<a name="questionnaire-package-bp-coverage"></a>

Berikan detail cakupan yang komprehensif untuk memastikan pemilihan kuesioner yang benar:

```
{  
  "name": "coverage",  
  "resource": {  
    "resourceType": "Coverage",  
    "beneficiary": { "reference": "Patient/123" },  
    "payor": [{ "reference": "Organization/payer-abc" }],  
    "class": [{ /* Group/plan information */ }]  
  }  
}
```

**Mengapa**: Membantu HealthLake mengidentifikasi kuesioner dan persyaratan khusus pembayar.

## Operasi terkait
<a name="questionnaire-package-related-operations"></a>
+ `Claim/$submit`- Kirim permintaan otorisasi sebelumnya dengan dokumentasi lengkap
+ `Claim/$inquire`- Periksa status otorisasi sebelumnya yang dikirimkan
+ `ValueSet/$expand`- Perluas ValueSets untuk pilihan jawaban

# `$submit`Operasi FHIR untuk HealthLake
<a name="reference-fhir-operations-submit"></a>

`$submit`Operasi ini memungkinkan Anda untuk secara elektronik mengirimkan permintaan otorisasi sebelumnya kepada pembayar untuk persetujuan. Operasi ini mengimplementasikan Panduan [Implementasi Da Vinci Prior Authorization Support (PAS)](https://hl7.org/fhir/us/davinci-pas/), menyediakan alur kerja berbasis FHIR standar untuk pengiriman otorisasi sebelumnya.

## Cara kerjanya
<a name="submit-how-it-works"></a>
+ **Kirim**: Anda mengirim Bundel FHIR yang berisi permintaan otorisasi sebelumnya dan data klinis pendukung
+ **Validasi**: HealthLake memvalidasi pengajuan terhadap persyaratan PAS
+ **Bertahan**: Semua sumber daya disimpan di penyimpanan HealthLake data Anda
+ **Tanggapan**: Anda menerima tanggapan langsung dengan status “antrian”
+ **Proses**: Keputusan otorisasi diproses secara asinkron oleh pembayar

## Titik akhir API
<a name="submit-api-endpoint"></a>

```
POST /datastore/{datastoreId}/r4/Claim/$submit  
Content-Type: application/fhir+json
```

## Struktur permintaan
<a name="submit-request-structure"></a>

### Persyaratan bundel
<a name="submit-bundle-requirements"></a>

Permintaan Anda harus berupa sumber daya FHIR Bundle dengan:
+ **Bundle.type**: Harus `"collection"`
+ **Bundle.entry**: Harus berisi tepat **satu** sumber daya Klaim dengan `use = "preauthorization"`
+ **Sumber Daya yang Direferensikan**: Semua sumber daya yang direferensikan oleh Klaim harus disertakan dalam Bundel

### Sumber daya yang dibutuhkan
<a name="submit-required-resources"></a>


| Sumber daya | Kardinalitas | Profil | Deskripsi | 
| --- | --- | --- | --- | 
| Klaim | 1 | Klaim PAS | Permintaan otorisasi sebelumnya | 
| Pasien | 1 | Pasien PAS | Informasi demografis pasien | 
| Organisasi (Penanggung) | 1 | Penanggung PAS | Perusahaan asuransi | 
| Organisasi (Penyedia) | 1 | Pemohon PAS | Penyedia layanan kesehatan mengirimkan permintaan | 
| Cakupan | 1 atau lebih | Cakupan PAS | Detail pertanggungan asuransi | 

### Sumber daya opsional
<a name="submit-optional-resources"></a>


| Sumber daya | Kardinalitas | Profil | Deskripsi | 
| --- | --- | --- | --- | 
| Praktisi | 0 atau lebih | Praktisi PAS | Praktisi kesehatan | 
| PractitionerRole | 0 atau lebih | PAS PractitionerRole | Peran praktisi | 
| ServiceRequest | 0 atau lebih | PAS ServiceRequest | Meminta layanan medis | 
| DeviceRequest | 0 atau lebih | PAS DeviceRequest | Alat kesehatan yang diminta | 
| MedicationRequest | 0 atau lebih | PAS MedicationRequest | Obat yang diminta | 
| DocumentReference | 0 atau lebih | PAS DocumentReference | Mendukung dokumentasi klinis | 

## Contoh permintaan
<a name="submit-example-request"></a>

```
POST /datastore/example-datastore/r4/Claim/$submit  
Content-Type: application/fhir+json  
Authorization: Bearer <your-token>  
  
{  
  "resourceType" : "Bundle",  
  "id" : "MedicalServicesAuthorizationBundleExample",  
  "meta" : {  
    "profile" : ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-request-bundle"]  
  },  
  "identifier" : {  
    "system" : "http://example.org/SUBMITTER_TRANSACTION_IDENTIFIER",  
    "value" : "5269367"  
  },  
  "type" : "collection",  
  "timestamp" : "2005-05-02T11:01:00+05:00",  
  "entry" : [{  
    "fullUrl" : "http://example.org/fhir/Claim/MedicalServicesAuthorizationExample",  
    "resource" : {  
      "resourceType" : "Claim",  
      "id" : "MedicalServicesAuthorizationExample",  
      "meta" : {  
        "profile" : ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claim"]  
      },  
      "identifier" : [{  
        "system" : "http://example.org/PATIENT_EVENT_TRACE_NUMBER",  
        "value" : "111099"   
      }],  
      "status" : "active",  
      "type" : {  
        "coding" : [{  
          "system" : "http://terminology.hl7.org/CodeSystem/claim-type",  
          "code" : "professional"  
        }]  
      },  
      "use" : "preauthorization",  
      "patient" : {  
        "reference" : "Patient/SubscriberExample"  
      },  
      "created" : "2005-05-02T11:01:00+05:00",  
      "insurer" : {  
        "reference" : "Organization/InsurerExample"  
      },  
      "provider" : {  
        "reference" : "Organization/UMOExample"  
      },  
      "priority" : {  
        "coding" : [{  
          "system" : "http://terminology.hl7.org/CodeSystem/processpriority",  
          "code" : "normal"  
        }]  
      },  
      "insurance" : [{  
        "sequence" : 1,  
        "focal" : true,  
        "coverage" : {  
          "reference" : "Coverage/InsuranceExample"  
        }  
      }],  
      "item" : [{  
        "extension" : [{  
          "url" : "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-serviceItemRequestType",  
          "valueCodeableConcept" : {  
            "coding" : [{  
              "system" : "https://codesystem.x12.org/005010/1525",  
              "code" : "IN",  
              "display" : "Initial Medical Services Reservation"  
            }]  
          }  
        },  
        {  
          "url" : "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-certificationType",  
          "valueCodeableConcept" : {  
            "coding" : [{  
              "system" : "https://codesystem.x12.org/005010/1322",  
              "code" : "I",  
              "display" : "Initial"  
            }]  
          }  
        },  
        {  
          "url" : "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-authorizationNumber",  
          "valueString" : "1122344"  
        },  
        {  
          "url" : "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-administrationReferenceNumber",  
          "valueString" : "33441122"  
        }],  
        "sequence" : 1,  
        "category" : {  
          "coding" : [{  
            "system" : "https://codesystem.x12.org/005010/1365",  
            "code" : "1",  
            "display" : "Medical Care"  
          }]  
        },  
        "productOrService" : {  
          "coding" : [{  
            "system" : "http://www.cms.gov/Medicare/Coding/HCPCS​ReleaseCodeSets",  
            "code" : "99212",  
            "display" : "Established Office Visit"  
          }]  
        },  
        "servicedDate" : "2005-05-10",  
        "locationCodeableConcept" : {  
          "coding" : [{  
            "system" : "https://www.cms.gov/Medicare/Coding/place-of-service-codes/Place_of_Service_Code_Set",  
            "code" : "11"  
          }]  
        }  
      }]  
    }  
  },  
  {  
    "fullUrl" : "http://example.org/fhir/Organization/UMOExample",  
    "resource" : {  
      "resourceType" : "Organization",  
      "id" : "UMOExample",  
      "meta" : {  
        "profile" : ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-requestor"]  
      },  
      "identifier" : [{  
        "system" : "http://hl7.org/fhir/sid/us-npi",  
        "value" : "8189991234"  
      }],  
      "active" : true,  
      "type" : [{  
        "coding" : [{  
          "system" : "https://codesystem.x12.org/005010/98",  
          "code" : "X3"  
        }]  
      }],  
      "name" : "DR. JOE SMITH CORPORATION",  
      "address" : [{  
        "line" : ["111 1ST STREET"],  
        "city" : "SAN DIEGO",  
        "state" : "CA",  
        "postalCode" : "92101",  
        "country" : "US"  
      }]  
    }  
  },  
  {  
    "fullUrl" : "http://example.org/fhir/Organization/InsurerExample",  
    "resource" : {  
      "resourceType" : "Organization",  
      "id" : "InsurerExample",  
      "meta" : {  
        "profile" : ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-insurer"]  
      },  
      "identifier" : [{  
        "system" : "http://hl7.org/fhir/sid/us-npi",  
        "value" : "1234567893"  
      }],  
      "active" : true,  
      "type" : [{  
        "coding" : [{  
          "system" : "https://codesystem.x12.org/005010/98",  
          "code" : "PR"  
        }]  
      }],  
      "name" : "MARYLAND CAPITAL INSURANCE COMPANY"  
    }  
  },  
  {  
    "fullUrl" : "http://example.org/fhir/Coverage/InsuranceExample",  
    "resource" : {  
      "resourceType" : "Coverage",  
      "id" : "InsuranceExample",  
      "meta" : {  
        "profile" : ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-coverage"]  
      },  
      "status" : "active",  
      "subscriberId" : "1122334455",  
      "beneficiary" : {  
        "reference" : "Patient/SubscriberExample"  
      },  
      "relationship" : {  
        "coding" : [{  
          "system" : "http://terminology.hl7.org/CodeSystem/subscriber-relationship",  
          "code" : "self"  
        },  
        {  
          "system" : "https://codesystem.x12.org/005010/1069",  
          "code" : "18"  
        }]  
      },  
      "payor" : [{  
        "reference" : "Organization/InsurerExample"  
      }]  
    }  
  },  
  {  
    "fullUrl" : "http://example.org/fhir/Patient/SubscriberExample",  
    "resource" : {  
      "resourceType" : "Patient",  
      "id" : "SubscriberExample",  
      "meta" : {  
        "profile" : ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-subscriber"]  
      },  
      "extension" : [{  
        "url" : "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-militaryStatus",  
        "valueCodeableConcept" : {  
          "coding" : [{  
            "system" : "https://codesystem.x12.org/005010/584",  
            "code" : "RU"  
          }]  
        }  
      }],  
      "identifier" : [{  
        "type" : {  
          "coding" : [{  
            "system" : "http://terminology.hl7.org/CodeSystem/v2-0203",  
            "code" : "MB"  
          }]  
        },  
        "system" : "http://example.org/MIN",  
        "value" : "12345678901"  
      }],  
      "name" : [{  
        "family" : "SMITH",  
        "given" : ["JOE"]  
      }],  
      "gender" : "male"  
    }  
  }]  
}
```

## Format respons
<a name="submit-response-format"></a>

### Respon sukses (200 OK)
<a name="submit-success-response"></a>

Anda akan menerima PAS Response Bundle yang berisi:
+ **ClaimResponse**dengan `outcome: "queued"` dan `status: "active"`
+ Semua sumber daya asli dari permintaan Anda
+ Tanda terima konfirmasi stempel waktu

```
{  
  "resourceType" : "Bundle",  
  "identifier": {  
        "system": "http://example.org/SUBMITTER_TRANSACTION_IDENTIFIER",  
        "value": "5269367"  
  },  
  "type" : "collection",  
  "timestamp" : "2005-05-02T11:02:00+05:00",  
  "entry" : [{  
    "fullUrl" : "http://example.org/fhir/ClaimResponse/PractitionerRequestorPendingResponseExample",  
    "resource" : {  
      "resourceType" : "ClaimResponse",  
      "id" : "PractitionerRequestorPendingResponseExample",  
      "meta" : {  
        "profile" : ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claimresponse"]  
      },  
      "identifier" : [{  
        "system" : "http://example.org/PATIENT_EVENT_TRACE_NUMBER",  
        "value" : "111099"  
      }],  
      "status" : "active",  
      "type" : {  
        "coding" : [{  
          "system" : "http://terminology.hl7.org/CodeSystem/claim-type",  
          "code" : "professional"  
        }]  
      },  
      "use" : "preauthorization",  
      "patient" : {  
        "reference" : "Patient/SubscriberExample"  
      },  
      "created" : "2005-05-02T11:02:00+05:00",  
      "insurer" : {  
        "reference" : "Organization/InsurerExample"  
      },  
      "requestor" : {  
        "reference" : "PractitionerRole/ReferralPractitionerRoleExample"  
      },  
      "request" : {  
        "reference" : "Claim/MedicalServicesAuthorizationExample"  
      },  
      "outcome" : "queued"  
    }  
  },  
  {  
    "fullUrl" : "http://example.org/fhir/Claim/MedicalServicesAuthorizationExample",  
    "resource" : {  
      "resourceType" : "Claim",  
      "id" : "MedicalServicesAuthorizationExample",  
      "meta" : {  
        "profile": [  
            "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claim",  
            "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claim|2.1.0"  
        ]  
      },  
      "identifier" : [{  
        "system" : "http://example.org/PATIENT_EVENT_TRACE_NUMBER",  
        "value" : "111099"  
        }  
      }],  
      "status" : "active",  
      "type" : {  
        "coding" : [{  
          "system" : "http://terminology.hl7.org/CodeSystem/claim-type",  
          "code" : "professional"  
        }]  
      },  
      "use" : "preauthorization",  
      "patient" : {  
        "reference" : "Patient/SubscriberExample"  
      },  
      "created" : "2005-05-02T11:01:00+05:00",  
      "insurer" : {  
        "reference" : "Organization/InsurerExample"  
      },  
      "provider" : {  
        "reference" : "Organization/UMOExample"  
      },  
      "priority" : {  
        "coding" : [{  
          "system" : "http://terminology.hl7.org/CodeSystem/processpriority",  
          "code" : "normal"  
        }]  
      },  
      "insurance" : [{  
        "sequence" : 1,  
        "focal" : true,  
        "coverage" : {  
          "reference" : "Coverage/InsuranceExample"  
        }  
      }],  
      "item" : [{  
        "extension" : [{  
          "url" : "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-serviceItemRequestType",  
          "valueCodeableConcept" : {  
            "coding" : [{  
              "system" : "https://codesystem.x12.org/005010/1525",  
              "code" : "IN",  
              "display" : "Initial Medical Services Reservation"  
            }]  
          }  
        },  
        {  
          "url" : "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-certificationType",  
          "valueCodeableConcept" : {  
            "coding" : [{  
              "system" : "https://codesystem.x12.org/005010/1322",  
              "code" : "I",  
              "display" : "Initial"  
            }]  
          }  
        },  
        {  
          "url" : "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-authorizationNumber",  
          "valueString" : "1122344"  
        },  
        {  
          "url" : "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-administrationReferenceNumber",  
          "valueString" : "33441122"  
        }],  
        "sequence" : 1,  
        "category" : {  
          "coding" : [{  
            "system" : "https://codesystem.x12.org/005010/1365",  
            "code" : "1",  
            "display" : "Medical Care"  
          }]  
        },  
        "productOrService" : {  
          "coding" : [{  
            "system" : "http://www.cms.gov/Medicare/Coding/HCPCS​ReleaseCodeSets",  
            "code" : "99212",  
            "display" : "Established Office Visit"  
          }]  
        },  
        "servicedDate" : "2005-05-10",  
        "locationCodeableConcept" : {  
          "coding" : [{  
            "system" : "https://www.cms.gov/Medicare/Coding/place-of-service-codes/Place_of_Service_Code_Set",  
            "code" : "11"  
          }]  
        }  
      }]  
    }  
  },  
  {  
    "fullUrl" : "http://example.org/fhir/Organization/UMOExample",  
    "resource" : {  
      "resourceType" : "Organization",  
      "id" : "UMOExample",  
      "meta" : {  
        "profile": [  
            "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-requestor",  
            "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-requestor|2.1.0"  
        ]  
      },  
      "identifier" : [{  
        "system" : "http://hl7.org/fhir/sid/us-npi",  
        "value" : "8189991234"  
      }],  
      "active" : true,  
      "type" : [{  
        "coding" : [{  
          "system" : "https://codesystem.x12.org/005010/98",  
          "code" : "X3"  
        }]  
      }],  
      "name" : "DR. JOE SMITH CORPORATION",  
      "address" : [{  
        "line" : ["111 1ST STREET"],  
        "city" : "SAN DIEGO",  
        "state" : "CA",  
        "postalCode" : "92101",  
        "country" : "US"  
      }]  
    }  
  },  
  {  
    "fullUrl" : "http://example.org/fhir/Organization/InsurerExample",  
    "resource" : {  
      "resourceType" : "Organization",  
      "id" : "InsurerExample",  
      "meta" : {  
           "profile": [  
                "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-insurer",  
                "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-insurer|2.1.0"  
            ]  
      },  
      "identifier" : [{  
        "system" : "http://hl7.org/fhir/sid/us-npi",  
        "value" : "1234567893"  
      }],  
      "active" : true,  
      "type" : [{  
        "coding" : [{  
          "system" : "https://codesystem.x12.org/005010/98",  
          "code" : "PR"  
        }]  
      }],  
      "name" : "MARYLAND CAPITAL INSURANCE COMPANY"  
    }  
  },  
  {  
    "fullUrl" : "http://example.org/fhir/Coverage/InsuranceExample",  
    "resource" : {  
      "resourceType" : "Coverage",  
      "id" : "InsuranceExample",  
      "meta": {  
            "profile": [  
                "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-coverage",  
                "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-coverage|2.1.0"  
            ]  
        },  
      "status" : "active",  
      "subscriberId" : "1122334455",  
      "beneficiary" : {  
        "reference" : "Patient/SubscriberExample"  
      },  
      "relationship" : {  
        "coding" : [{  
          "system" : "http://terminology.hl7.org/CodeSystem/subscriber-relationship",  
          "code" : "self"  
        },  
        {  
          "system" : "https://codesystem.x12.org/005010/1069",  
          "code" : "18"  
        }]  
      },  
      "payor" : [{  
        "reference" : "Organization/InsurerExample"  
      }]  
    }  
  },  
  {  
    "fullUrl" : "http://example.org/fhir/Patient/SubscriberExample",  
    "resource" : {  
      "resourceType" : "Patient",  
      "id" : "SubscriberExample",  
      "meta": {  
            "profile": [  
                "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-subscriber",  
                "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-beneficiary",  
                "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-beneficiary|2.1.0"  
            ]  
        },  
      "extension" : [{  
        "url" : "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-militaryStatus",  
        "valueCodeableConcept" : {  
          "coding" : [{  
            "system" : "https://codesystem.x12.org/005010/584",  
            "code" : "RU"  
          }]  
        }  
      }],  
      "identifier" : [{  
        "type" : {  
          "coding" : [{  
            "system" : "http://terminology.hl7.org/CodeSystem/v2-0203",  
            "code" : "MB"  
          }]  
        },  
        "system" : "http://example.org/MIN",  
        "value" : "12345678901"  
      }],  
      "name" : [{  
        "family" : "SMITH",  
        "given" : ["JOE"]  
      }],  
      "gender" : "male"  
    }  
  }]  
}
```

## Tanggapan kesalahan
<a name="submit-error-responses"></a>

### 400 Permintaan Buruk
<a name="submit-400-error"></a>

Dikembalikan ketika format permintaan tidak valid atau cacat.

```
{  
  "resourceType": "OperationOutcome",  
  "issue": [{  
    "severity": "error",  
    "code": "invalid",  
    "diagnostics": "The provided payload was invalid and could not be parsed correctly."  
  }]  
}
```

### 412 Prasyarat Gagal
<a name="submit-412-error"></a>

Dikembalikan ketika permintaan otorisasi sebelumnya yang sama telah dikirimkan (duplikat pengiriman terdeteksi).

```
{  
  "resourceType": "OperationOutcome",  
  "issue": [{  
    "severity": "error",  
    "code": "processing",  
    "diagnostics": "PreAuth Claim already exists"  
  }]  
}
```

**Idempotensi**  
`$submit`Operasi ini idempoten. Mengirimkan permintaan yang sama beberapa kali tidak akan membuat duplikat permintaan otorisasi sebelumnya. Sebagai gantinya, Anda akan menerima kesalahan 412 yang mengarahkan Anda untuk menggunakan `$inquire` untuk memeriksa status pengiriman asli Anda.

### 422 Entitas yang Tidak Dapat Diproses
<a name="submit-422-error"></a>

Dikembalikan ketika validasi FHIR gagal.

```
{  
  "resourceType": "OperationOutcome",  
  "issue": [{  
    "severity": "error",  
    "code": "required",  
    "diagnostics": "Bundle contains more than one preauthorization claim"  
  }]  
}
```

## Aturan validasi
<a name="submit-validation-rules"></a>

HealthLake melakukan validasi komprehensif pada kiriman Anda:

### Validasi bundel
<a name="submit-bundle-validation"></a>
+ Harus sesuai dengan profil PAS Request Bundle
+ `Bundle.type`harus `"collection"`
+ Dapat berisi beberapa sumber Klaim
+ Namun, harus berisi persis satu sumber Klaim dengan penggunaan pra-otorisasi
  + Dan sumber daya Klaim ini harus menjadi entri pertama dalam bundel
+ Semua sumber daya yang direferensikan harus disertakan dalam Bundel

### Validasi klaim
<a name="submit-claim-validation"></a>
+ Harus sesuai dengan profil Klaim PAS
+ `Claim.use`harus `"preauthorization"`
+ Bidang yang diperlukan: `patient``insurer`,,`provider`,`created`, `priority`
+ Pengidentifikasi bisnis harus ada dan valid

### Validasi sumber daya
<a name="submit-resource-validation"></a>
+ Semua sumber daya harus sesuai dengan profil PAS masing-masing
+ Sumber daya pendukung yang diperlukan harus ada (Pasien, Cakupan, Organisasi)
+ Referensi silang harus valid dan dapat diselesaikan dalam Bundel

## Spesifikasi kinerja
<a name="submit-performance-specs"></a>


| Metrik | Spesifikasi | 
| --- | --- | 
| Batas Ukuran Bundel | Maksimum 5 MB | 
| Batas Hitungan Sumber Daya | 500 sumber daya per Bundel | 

## Izin yang diperlukan
<a name="submit-required-permissions"></a>

Untuk menggunakan `$submit` operasi, seseorang dapat menggunakan AWS Sigv4 atau SMART di FHIR:
+ Pastikan peran IAM Anda memiliki: `healthlake:SubmitPreAuthClaim` - Untuk memanggil operasi

**SMART pada Lingkup FHIR**  
**Cakupan minimum yang diperlukan:**
+ **SMART v1:** `user/Claim.write & <all_resourceTypes_in_Bundle>.write`
+ **SMART v2**: `user/Claim.c & <all_resourceTypes_in_Bundle>.c or system/*.*`

## Catatan implementasi penting
<a name="submit-implementation-notes"></a>

### Kegigihan sumber daya
<a name="submit-resource-persistence"></a>
+ Semua entri Bundle dipertahankan sebagai sumber daya FHIR individual di penyimpanan data Anda
+ Disediakan pelanggan dipertahankan saat IDs disediakan
+ Riwayat versi dipertahankan untuk tujuan audit
+ Deteksi duplikat mencegah konflik sumber daya

### Perilaku pemrosesan
<a name="submit-processing-behavior"></a>
+ Setiap pengiriman yang valid menghasilkan persis satu ClaimResponse dengan `"queued"` hasil
+ Kiriman tidak valid mengembalikan kode status 400 atau 422 dengan informasi kesalahan terperinci
+ Kesalahan sistem mengembalikan kode status 5xx yang sesuai
+ Semua kiriman yang berhasil mengembalikan 200 status dengan pended ClaimResponse

### Persyaratan bundel
<a name="submit-bundle-requirements-impl"></a>
+ `Bundle.entry.fullUrl`nilai harus berupa REST URLs atau `"urn:uuid:[guid]"` format
+ Semua GUIDs harus unik di seluruh kiriman (kecuali untuk contoh sumber daya yang sama)
+ Sumber daya yang direferensikan harus ada di dalam Bundel atau dapat diselesaikan

## Operasi terkait
<a name="submit-related-operations"></a>
+ `Claim/$inquire`- Kueri status permintaan otorisasi sebelumnya yang diajukan
+ `Patient/$everything`- Ambil data pasien yang komprehensif untuk konteks otorisasi sebelumnya

# Memvalidasi Sumber Daya FHIR dengan `$validate`
<a name="reference-fhir-operations-validate"></a>

AWS HealthLake sekarang mendukung `$validate` operasi untuk sumber daya FHIR, memungkinkan Anda untuk memvalidasi sumber daya terhadap spesifikasi FHIR dan memeriksa kesesuaiannya dengan profil tertentu atau definisi sumber daya dasar tanpa melakukan operasi penyimpanan apa pun. Operasi ini sangat berguna ketika Anda perlu:
+ Validasi persyaratan kepatuhan FHIR CMS
+ Uji sumber daya sebelum menggunakannya dalam produksi
+ Berikan umpan balik validasi waktu nyata saat pengguna mengedit data klinis
+ Mengurangi pengiriman data yang tidak valid untuk membuat dan memperbarui APIs

## Penggunaan
<a name="validate-usage"></a>

`$validate`Operasi dapat dipanggil pada sumber daya FHIR menggunakan metode POST:

**Operasi yang Didukung**  


```
POST [base]/[type]/[id]/$validate
POST [base]/[type]/$validate
```

## Muatan yang Didukung
<a name="validate-payloads"></a>

**Parameter sumber daya**  


HealthLake mendukung `$validate` parameter FHIR berikut:


| Parameter | Tipe | Diperlukan | Deskripsi | 
| --- | --- | --- | --- | 
| resource | Sumber daya | Ya | Sumber daya yang akan divalidasi | 
| profile | canonical | Tidak | URL kanonik profil untuk memvalidasi | 
| mode | code | Tidak | Mode validasi:create, atau update | 

**Sumber daya langsung dengan Parameter Kueri**  



| Parameter | Tipe | Diperlukan | Deskripsi | 
| --- | --- | --- | --- | 
| profile | canonical | Tidak | URL kanonik profil untuk memvalidasi | 
| mode | code | Tidak | Mode validasi:create, atau update | 

## Contoh
<a name="validate-examples"></a>

**POST Permintaan Sumber Daya dengan ID dan Parameter payload**  


```
POST [base]/Patient/example-patient/$validate
Content-Type: application/fhir+json

{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "resource",
      "resource": {
        "resourceType": "Patient",
        "id": "example-patient",
        "name": [
          {
            "family": "Smith",
            "given": ["John"]
          }
        ],
        "gender": "male",
        "birthDate": "1990-01-01"
      }
    },
    {
      "name": "profile",
      "valueCanonical": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
    },
    {
      "name": "mode",
      "valueString": "create"
    }
  ]
}
```

**POST Permintaan untuk Jenis Sumber Daya dan Parameter payload**  


```
POST [base]/Patient/$validate
Content-Type: application/fhir+json

{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "resource",
      "resource": {
        "resourceType": "Patient",
        "name": [
          {
            "family": "Doe",
            "given": ["Jane"]
          }
        ],
        "gender": "female",
        "birthDate": "1985-05-15"
      }
    },
    {
      "name": "profile",
      "valueCanonical": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
    },
    {
      "name": "mode",
      "valueString": "update"
    }
  ]
}
```

**POST Permintaan Sumber Daya dengan ID dan muatan sumber daya langsung**  


```
POST [base]/Patient/example-patient/$validate?profile=http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient&mode=create
Content-Type: application/fhir+json

{
    "resourceType": "Patient",
    "id": "example-patient",
    "name": [
        {
        "family": "Smith",
        "given": ["John"]
        }
    ],
    "gender": "male",
    "birthDate": "1990-01-01"
}
```

**POST Permintaan untuk Jenis Sumber Daya dan muatan sumber daya langsung**  


```
POST [base]/Patient/$validate?profile=http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient&mode=create
Content-Type: application/fhir+json

{
    "resourceType": "Patient",
    "id": "example-patient",
    "name": [
        {
        "family": "Smith",
        "given": ["John"]
        }
    ],
    "gender": "male",
    "birthDate": "1990-01-01"
}
```

**Contoh Respons**  
Operasi mengembalikan OperationOutcome sumber daya dengan hasil validasi:

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "information",
      "code": "informational",
      "diagnostics": "Validation successful"
    }
  ]
}
```

**Sampel Respon dengan Kesalahan Validasi**  


```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "required",
      "details": {
        "text": "Missing required element"
      },
      "diagnostics": "Patient.identifier is required by the US Core Patient profile",
      "location": [
        "Patient.identifier"
      ]
    },
    {
      "severity": "warning",
      "code": "code-invalid",
      "details": {
        "text": "Invalid code value"
      },
      "diagnostics": "The provided gender code is not from the required value set",
      "location": [
        "Patient.gender"
      ]
    }
  ]
}
```

## Perilaku
<a name="validate-behavior"></a>

`$validate`Operasi:

1. Memvalidasi sumber daya terhadap spesifikasi FHIR dan definisi sumber daya dasar

1. Memeriksa kesesuaian dengan profil yang ditentukan saat parameter disediakan `profile`

1. Memvalidasi berdasarkan mode yang ditentukan (`create`atau`update`)

1. Mengembalikan hasil validasi rinci termasuk kesalahan, peringatan, dan pesan informasi

1. Tidak melakukan operasi penyimpanan apa pun - hanya validasi

1. Mengembalikan HTTP 200 OK ketika validasi dapat dilakukan, terlepas dari apakah masalah validasi ditemukan

## Mode Validasi
<a name="validate-modes"></a>
+ **create**: Memvalidasi sumber daya seolah-olah sedang dibuat (sumber daya baru)
+ **update**: Memvalidasi sumber daya seolah-olah sedang diperbarui (sumber daya yang ada)

## Penanganan Kesalahan
<a name="validate-error-handling"></a>

Operasi kembali:
+ 200 OK: Validasi berhasil dilakukan (terlepas dari hasil validasi)
+ 400 Permintaan Buruk: Format atau parameter permintaan tidak valid
+ 404 Tidak Ditemukan: Jenis sumber daya atau profil tidak ditemukan

Untuk informasi selengkapnya tentang spesifikasi `$validate` operasi, lihat dokumentasi [FHIR R4 Resource `$validate`](https://www.hl7.org/fhir/R4/operation-resource-validate.html).

# Referensi kepatuhan untuk AWS HealthLake
<a name="reference-compliance"></a>

AWS HealthLake menyediakan fitur yang dirancang untuk membantu Anda melacak dan melaporkan penggunaan API sesuai dengan persyaratan interoperabilitas CMS (Pusat Layanan Medicare & Medicaid). Fitur-fitur ini memungkinkan Anda untuk mengkategorikan transaksi API berdasarkan kategori yang diamanatkan CMS dan secara otomatis menangkap metrik penggunaan untuk tujuan pelaporan kepatuhan.

**Memahami Tanggung Jawab Kepatuhan Anda**  
Menggunakan AWS HealthLake dan titik akhir interoperabilitas CMS **tidak cukup dengan sendirinya** untuk mencapai kepatuhan CMS. Anda bertanggung jawab untuk:  
Memetakan alur kerja API Anda dengan benar ke titik akhir kategori CMS yang sesuai berdasarkan kasus penggunaan spesifik dan kewajiban peraturan Anda
Menerapkan kontrol otentikasi dan otorisasi yang tepat yang memenuhi persyaratan CMS
Memastikan sumber daya dan pertukaran data FHIR Anda mematuhi peraturan dan panduan implementasi CMS yang berlaku
Mengkonfigurasi dan memantau CloudWatch metrik untuk mendukung kebutuhan pelaporan kepatuhan Anda
Memahami aturan CMS mana yang berlaku untuk organisasi Anda dan menerapkan kontrol teknis dan operasional yang sesuai

AWS HealthLake menyediakan infrastruktur dan perkakas untuk mendukung upaya kepatuhan Anda, tetapi Anda harus menggunakan fitur ini dengan tepat berdasarkan persyaratan peraturan khusus Anda. Cukup merutekan panggilan API melalui titik akhir ini tidak secara otomatis membuat aplikasi Anda sesuai dengan peraturan CMS.

**Topics**
+ [CMS](reference-compliance-cms.md)

# Fitur kepatuhan CMS
<a name="reference-compliance-cms"></a>

AWS HealthLake menyediakan fitur untuk membantu Anda memenuhi persyaratan interoperabilitas dan kepatuhan CMS (Pusat Layanan Medicare & Medicaid). Fitur-fitur ini memungkinkan Anda melacak penggunaan API menurut kategori CMS dan selanjutnya melaporkan metrik penggunaan untuk tujuan kepatuhan.

**Topics**
+ [Titik akhir interoperabilitas CMS](#cms-interoperability-endpoints)
+ [CloudWatch Metrik yang disempurnakan untuk kepatuhan CMS](#cms-cloudwatch-metrics)

## Titik akhir interoperabilitas CMS
<a name="cms-interoperability-endpoints"></a>

### Ikhtisar
<a name="cms-endpoints-overview"></a>

HealthLake menyediakan empat titik akhir interoperabilitas CMS yang sesuai dengan kategori API yang diamanatkan CMS. URL dasar yang mendasari penyimpanan HealthLake data Anda tidak berubah. Titik akhir ini hanya menyediakan cara untuk mengkategorikan dan melacak panggilan API Anda untuk tujuan pelaporan CMS.

### Tujuan
<a name="cms-endpoints-purpose"></a>

Tujuan utama dari titik akhir interoperabilitas ini adalah untuk memungkinkan pelanggan untuk:
+ **Melacak transaksi API dengan mudah** berdasarkan kategori CMS
+ **Secara otomatis melaporkan** metrik penggunaan untuk kepatuhan CMS
+ **Pertahankan** alur kerja FHIR yang ada dengan perubahan minimal

Semua panggilan API berfungsi secara identik apakah Anda menggunakan titik akhir interoperabilitas atau titik akhir FHIR standar—satu-satunya perbedaan adalah bagaimana transaksi dikategorikan dalam metrik. CloudWatch 

### Titik akhir interoperabilitas CMS yang didukung
<a name="cms-supported-endpoints"></a>


| Kategori CMS | Titik Akhir Interoperabilitas | Contoh Penggunaan | 
| --- | --- | --- | 
| Akses Pasien | /patientaccess/v2/r4 | baseURL/patientaccess/v2/r4/Patient/123 | 
| Akses Penyedia | /​provideraccess/v2/r4 | baseURL/​provideraccess/v2/r4/Observation?patient=123 | 
| Pembayar ke Pembayar | /payertopayerdx/v2/r4 | baseURL/payertopayerdx/v2/r4/Practitioner/456 | 
| Layanan Auth Sebelumnya | /priorauthservice/v2/r4 | baseURL/priorauthservice/v2/r4/ExplanationOfBenefit?patient=789 | 

### Bagaimana titik akhir interoperabilitas bekerja
<a name="cms-endpoints-how-it-works"></a>

**Panggilan HealthLake API Standar:**

```
baseURL/resourceType/[id]
baseURL/resourceType?[parameters]
```

**Dengan Titik Akhir Interoperabilitas CMS:**

```
baseURL/interoperability-endpoint/resourceType/[id]
baseURL/interoperability-endpoint/resourceType?[parameters]
```

Jalur titik akhir interoperabilitas hanya disisipkan antara URL dasar Anda dan jenis sumber daya. Segala sesuatu setelah jalur titik akhir interoperabilitas tetap sama persis dengan panggilan API Anda saat ini.

### Contoh penggunaan
<a name="cms-endpoints-examples"></a>

#### Contoh 1: API Akses Pasien
<a name="cms-example-patient-access"></a>

**Panggilan API saat ini (masih berfungsi):**

```
curl -X GET \
  https://healthlake.us-east-1.amazonaws.com/datastore/abc123/r4/Patient/123 \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/fhir+json"
```

**Dengan titik akhir interoperabilitas Akses Pasien (untuk pelacakan CMS):**

```
curl -X GET \
  https://healthlake.us-east-1.amazonaws.com/datastore/abc123/patientaccess/v2/r4/Patient/123 \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/fhir+json"
```

**Poin Utama:**
+ URL dasar tetap: `https://healthlake.us-east-1.amazonaws.com/datastore/abc123`
+ Titik akhir interoperabilitas dimasukkan: `/patientaccess/v2/r4`
+ Jalur sumber daya tidak berubah: `/Patient/123`
+ **Kedua panggilan mengembalikan respons yang identik**
+ Panggilan titik akhir interoperabilitas secara otomatis dilacak di bawah `URIType=patient-access` CloudWatch
+ Operasi POST, PUT, PATCH, DELETE bekerja secara identik.
+ Badan permintaan tetap tidak berubah.

### Referensi terjemahan titik akhir
<a name="cms-endpoint-translation"></a>


| Titik Akhir Interoperabilitas | Menerjemahkan Ke | Kategori CMS | 
| --- | --- | --- | 
| baseURL/patientaccess/v2/r4/Patient | baseURL/r4/Patient | Akses Pasien | 
| baseURL/​provideraccess/v2/r4/Observation | baseURL/r4/Observation | Akses Penyedia | 
| baseURL/payertopayerdx/v2/r4/Practitioner/456 | baseURL/r4/Practitioner/456 | Pembayar ke Pembayar Data Exchange | 
| baseURL/priorauthservice/v2/r4/ExplanationOfBenefit?patient=789 | baseURL/r4/ExplanationOfBenefit?patient=789 | Otorisasi Sebelumnya | 

### Catatan penting
<a name="cms-endpoints-important-notes"></a>
+ **Tidak Ada Perbedaan Fungsional**: Titik akhir interoperabilitas dan titik akhir FHIR standar mengembalikan respons yang identik dan mendukung operasi yang identik
+ **URL Dasar Tidak Berubah**: Titik akhir penyimpanan HealthLake data Anda tetap sama
+ **Integrasi Sederhana**: Masukkan jalur titik akhir interoperabilitas antara URL dasar dan tipe sumber daya Anda
+ **Pelacakan Otomatis**: CloudWatch metrik secara otomatis mengkategorikan panggilan berdasarkan titik akhir interoperabilitas yang digunakan
+ **Kompatibel Mundur**: Panggilan API yang ada tanpa titik akhir interoperabilitas terus bekerja secara normal

## CloudWatch Metrik yang disempurnakan untuk kepatuhan CMS
<a name="cms-cloudwatch-metrics"></a>

### Ikhtisar
<a name="cms-metrics-overview"></a>

Saat Anda menggunakan titik akhir interoperabilitas CMS, HealthLake secara otomatis memancarkan CloudWatch metrik yang disempurnakan dengan dimensi tambahan untuk mendukung persyaratan pelaporan CMS. Metrik ini melacak penggunaan API berdasarkan identitas pemanggil, aplikasi, dan jenis URI khusus CMS **tanpa** memerlukan konfigurasi tambahan.

### Cara kerjanya
<a name="cms-metrics-how-it-works"></a>

Saat Anda melakukan panggilan API menggunakan titik akhir interoperabilitas:

```
# This call...
curl https://healthlake.us-east-1.amazonaws.com/datastore/abc123/patientaccess/v2/r4/Patient/123

# Automatically generates metrics with:
# - URIType: "patient-access"
# - Sub: extracted from your bearer token (SMART on FHIR datastores only)
# - ClientId: extracted from your bearer token (SMART on FHIR datastores only)
# - Plus all standard dimensions (DatastoreId, Operation, etc.)
```

**Tidak diperlukan kode atau konfigurasi tambahan.** Cukup gunakan titik akhir interoperabilitas, dan metrik yang disempurnakan akan ditangkap secara otomatis.

**catatan**  
Untuk penyimpanan data non-SMART di FHIR, `URIType` dimensi masih ditangkap, memungkinkan Anda melacak penggunaan API menurut kategori CMS. `ClientId`Dimensi `Sub` dan hanya tersedia saat menggunakan SMART pada otentikasi FHIR dengan token pembawa yang berisi klaim ini.

### Dimensi metrik baru
<a name="cms-metrics-dimensions"></a>

Selain dimensi yang ada (`DatastoreId`,,`Operation`)`DatastoreType`, dimensi berikut secara otomatis ditambahkan saat menggunakan titik akhir interoperabilitas:


| Dimensi | Deskripsi | Nilai contoh | Sumber | 
| --- | --- | --- | --- | 
| URIType | Kategori kepatuhan CMS | patient-access, provider-access, payer-to-payer, prior-authorization | Secara otomatis ditentukan dari jalur titik akhir interoperabilitas | 
| Sub | Identitas penelepon | Pengidentifikasi pengguna/entitas | Diekstrak dari klaim token pembawa sub | 
| ClientId | Pengidentifikasi aplikasi | portal\$1app, ehr\$1system | Diekstrak dari klaim token pembawa client\$1id | 

### Metrik yang tersedia
<a name="cms-available-metrics"></a>

Semua HealthLake metrik yang ada sekarang menyertakan dimensi tambahan saat menggunakan titik akhir interoperabilitas:
+ **CallCount**- Jumlah total panggilan API
+ **Latensi** - Waktu respons API dalam milidetik
+ **UserErrors**- Hitungan kesalahan klien 4xx
+ **SystemErrors**- Hitungan kesalahan server 5xx
+ **Throttles** - Hitungan permintaan yang dibatasi
+ **SuccessfulRequests**- Hitungan panggilan API yang berhasil

### Kueri metrik di CloudWatch
<a name="cms-querying-metrics"></a>

#### CloudWatch Contoh kueri wawasan
<a name="cms-cloudwatch-insights-example"></a>

**Kueri semua panggilan API Akses Pasien berdasarkan aplikasi:**

```
SELECT SUM(CallCount)
FROM "AWS/HealthLake"
WHERE DatastoreId = '75c1cf9b0d71cd38fec8f7fb317c4c1a'
    AND URIType = 'patient-access'
GROUP BY ClientId
```

# Referensi Support untuk AWS HealthLake
<a name="reference-healthlake"></a>

Bahan referensi pendukung berikut tersedia untuk AWS HealthLake.

**catatan**  
Semua HealthLake tindakan asli dan tipe data dijelaskan dalam referensi terpisah. Untuk informasi lebih lanjut, lihat [Referensi API *AWS HealthLake *](https://docs.aws.amazon.com/healthlake/latest/APIReference/).

**Topics**
+ [Titik akhir dan kuota](reference-healthlake-endpoints-quotas.md)
+ [Tipe data yang dimuat sebelumnya](reference-healthlake-preloaded-data-types.md)
+ [Contoh proyek](reference-healthlake-sample-projects.md)
+ [Pemecahan masalah](reference-healthlake-troubleshooting.md)
+ [Bekerja dengan AWS SDKs](sdk-general-information-section.md)

# AWS HealthLake titik akhir dan kuota
<a name="reference-healthlake-endpoints-quotas"></a>

Topik berikut berisi informasi tentang titik akhir AWS HealthLake layanan dan kuota.

**Topics**
+ [Titik akhir layanan](#reference-healthlake-endpoints)
+ [Kuota layanan](#reference-healthlake-quotas)

## Titik akhir layanan
<a name="reference-healthlake-endpoints"></a>

Endpoint layanan adalah URL yang mengidentifikasi host dan port sebagai titik masuk untuk layanan web. Setiap permintaan layanan web berisi titik akhir. Sebagian besar AWS layanan menyediakan titik akhir untuk Wilayah tertentu untuk memungkinkan konektivitas yang lebih cepat. Tabel berikut mencantumkan titik akhir layanan untuk AWS HealthLake.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/healthlake/latest/devguide/reference-healthlake-endpoints-quotas.html)

## Kuota layanan
<a name="reference-healthlake-quotas"></a>

Kuota layanan didefinisikan sebagai nilai maksimum untuk sumber daya, tindakan, dan item di AWS akun Anda.

**catatan**  
Untuk kuota yang dapat disesuaikan, Anda dapat meminta peningkatan kuota menggunakan konsol [Service Quotas](https://console.aws.amazon.com/servicequotas/). Untuk informasi selengkapnya, lihat [Meminta peningkatan kuota](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html) di *Panduan Pengguna Service Quotas*.  
Tingkat Sync Write API meningkat secara proporsional dengan ukuran payload, dengan setiap kenaikan 1KB menghabiskan kapasitas tambahan (misalnya, payload 4KB menggunakan kapasitas tulis 4x). Mengatur `x-amz-fhir-history-consistency-level` header opsional untuk `strong` menggandakan konsumsi kapasitas tulis per sumber daya.  
Sumber daya dalam Bundel mengikuti read/write batas standar berdasarkan ukuran muatan 1 KB. *Transaksi* jenis bundel mengkonsumsi dua kali kapasitas tulis dibandingkan dengan jenis *batch, yang berarti *batch** Bundle dapat memproses dua kali lebih banyak sumber daya per detik sebagai bundel transaksi.

Tabel berikut mencantumkan kuota default untuk AWS HealthLake.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/healthlake/latest/devguide/reference-healthlake-endpoints-quotas.html)

# Synthea tipe data yang dimuat sebelumnya untuk HealthLake
<a name="reference-healthlake-preloaded-data-types"></a>

HealthLake hanya mendukung SYNTHEA sebagai tipe data yang dimuat sebelumnya. [Synthea](https://synthetichealth.github.io/synthea/) adalah generator pasien sintetis yang memodelkan riwayat `Patient` medis. Ini di-host di repositori Git open-source yang memungkinkan HealthLake untuk menghasilkan sumber daya yang sesuai dengan FHIR R4 `Bundle` sehingga pengguna dapat menguji model tanpa menggunakan data pasien yang sebenarnya.

Jenis sumber daya berikut tersedia di penyimpanan HealthLake data yang dimuat sebelumnya. Untuk informasi selengkapnya tentang preloading penyimpanan HealthLake data dengan data Synthea, lihat. [Membuat penyimpanan HealthLake data](managing-data-stores-create.md)

**catatan**  
Untuk melihat daftar lengkap sumber daya FHIR R4 yang HealthLake didukung, lihat. [Jenis sumber daya yang didukung FHIR R4 untuk HealthLake](reference-fhir-resource-types.md)


**Jenis sumber daya Synthea FHIR didukung oleh HealthLake**  

|  |  | 
| --- |--- |
| AllergyIntolerance | Lokasi | 
| CarePlan | MedicationAdministration | 
| CareTeam | MedicationRequest | 
| Klaim | Observasi | 
| Kondisi | Organisasi | 
| Perangkat | Pasien | 
| DiagnosticReport | Praktisi | 
| Perjumpaan | PractitionerRole | 
| ExplanationofBenefit | Prosedur | 
| ImagingStudy | Asal | 
| Imunisasi |   | 

# AWS HealthLake proyek sampel
<a name="reference-healthlake-sample-projects"></a>

Untuk melanjutkan analisis Anda, Anda dapat menggunakan HealthLake dengan AWS layanan lain seperti yang ditunjukkan dalam contoh posting blog berikut.

**HealthLake analitik terintegrasi**
+ [Aplikasi kesehatan populasi dengan AWS HealthLake — Bagian 1: Analisis dan pemantauan menggunakan Amazon Quick](https://aws.amazon.com/blogs/machine-learning/population-health-applications-with-amazon-healthlake-part-1-analytics-and-monitoring-using-amazon-quicksight/).
+ [Membangun model penyakit prediktif menggunakan Amazon SageMaker AI dengan data yang AWS HealthLake dinormalisasi.](https://aws.amazon.com/blogs/machine-learning/building-predictive-disease-models-using-amazon-sagemaker-with-amazon-healthlake-normalized-data/)
+ [Bangun pencarian kognitif dan grafik pengetahuan kesehatan menggunakan layanan AWS AI](https://aws.amazon.com/blogs/machine-learning/build-a-cognitive-search-and-a-health-knowledge-graph-using-amazon-healthlake-amazon-kendra-and-amazon-neptune/).

**HealthLake pemantauan acara**
+ [ EventBridge Integrasi Amazon dengan AWS HealthLake](https://aws.amazon.com/blogs/industries/amazon-eventbridge-integration-for-aws-healthlake/)

# Pemecahan masalah AWS HealthLake
<a name="reference-healthlake-troubleshooting"></a>

Topik berikut memberikan saran pemecahan masalah untuk kesalahan dan masalah yang mungkin Anda temui saat menggunakan AWS CLI, AWS SDKs, atau HealthLake konsol. Jika Anda menemukan masalah yang tidak tercantum di bagian ini, gunakan tombol **Berikan umpan balik** di bilah sisi kanan halaman ini untuk melaporkannya.

**Topics**
+ [Tindakan penyimpanan data](#troubleshooting-data-store)
+ [Tindakan impor](#troubleshooting-import)
+ [FHIR APIs](#troubleshooting-fhir-apis)
+ [Integrasi NLP](#troubleshooting-nlp-integrations)
+ [Integrasi SQL](#troubleshooting-sql-integrations)

## Tindakan penyimpanan data
<a name="troubleshooting-data-store"></a>

**Masalah:** *Ketika saya mencoba membuat penyimpanan HealthLake data, saya menerima kesalahan berikut:*

```
AccessDeniedException: Insufficient Lake Formation permission(s): Required Database on Catalog
```

Pada 14 November 2022, HealthLake memperbarui izin IAM yang diperlukan untuk membuat penyimpanan data baru. Untuk informasi selengkapnya, lihat [Konfigurasikan pengguna IAM atau peran yang akan digunakan HealthLake (Administrator IAM)](getting-started-setting-up.md#setting-up-configure-iam).

**Masalah:** *Saat membuat penyimpanan HealthLake data menggunakan AWS SDKs, status pembuatan penyimpanan data mengembalikan pengecualian atau status tidak dikenal.*

Perbarui AWS SDK Anda ke versi terbaru jika panggilan `DescribeFHIRDatastore` atau `ListFHIRDatastores` API menampilkan pengecualian atau status penyimpanan data yang tidak dikenal.

## Tindakan impor
<a name="troubleshooting-import"></a>

**Masalah:** Apakah *saya masih dapat menggunakan HealthLake jika data saya tidak dalam format FHIR R4?*

Hanya data berformat FHIR R4 yang dapat diimpor ke penyimpanan data. HealthLake [Untuk daftar mitra yang dapat membantu mengubah data kesehatan yang ada ke format FHIR R4, lihat AWS HealthLake Mitra.](https://docs.aws.amazon.com/healthlake/partners/)

**Masalah:** *Mengapa pekerjaan impor FHIR saya gagal*?

Pekerjaan impor yang berhasil akan menghasilkan folder dengan hasil (log keluaran) dalam `.ndjson` format, namun, catatan individu dapat gagal diimpor. Ketika ini terjadi, `FAILURE` folder kedua akan dihasilkan dengan manifes catatan yang gagal diimpor. Untuk informasi selengkapnya, lihat [Mengimpor data FHIR dengan AWS HealthLake](importing-fhir-data.md).

Untuk menganalisis mengapa pekerjaan impor gagal, gunakan `DescribeFHIRImportJob` API untuk menganalisis JobProperties. Berikut ini direkomendasikan:
+ Jika status `FAILED` dan pesan ada, kegagalan terkait dengan parameter pekerjaan seperti ukuran data input atau jumlah file input yang berada di luar HealthLake kuota.
+ Jika status pekerjaan impor adalah`COMPLETED_WITH_ERRORS`, periksa file manifes,`manifest.json`, untuk informasi tentang file mana yang tidak berhasil diimpor. 
+ Jika status pekerjaan impor `FAILED` dan pesan tidak ada, buka lokasi keluaran pekerjaan untuk mengakses file manifes,`manifest.json`. 

 Untuk setiap file input, ada file keluaran kegagalan dengan nama file input untuk sumber daya apa pun yang gagal diimpor. Tanggapan berisi nomor baris (lineID) yang sesuai dengan lokasi data input, objek respons FHIR (UpdateResourceResponse), dan kode status (statusCode) respons.

File keluaran sampel mungkin mirip dengan yang berikut ini:

```
{"lineId":3, UpdateResourceResponse:{"jsonBlob":{"resourceType":"OperationOutcome","issue":[{"severity":"error","code":"processing","diagnostics":"1 validation error detected: Value 'Patient123' at 'resourceType' failed to satisfy constraint: Member must satisfy regular expression pattern: [A-Za-z]{1,256}"}]}, "statusCode":400}
{"lineId":5, UpdateResourceResponse:{"jsonBlob":{"resourceType":"OperationOutcome","issue":[{"severity":"error","code":"processing","diagnostics":"This property must be an simple value, not a com.google.gson.JsonArray","location":["/EffectEvidenceSynthesis/name"]},{"severity":"error","code":"processing","diagnostics":"Unrecognised property '@telecom'","location":["/EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Unrecognised property '@gender'","location":["/EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Unrecognised property '@birthDate'","location":["/EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Unrecognised property '@address'","location":["/EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Unrecognised property '@maritalStatus'","location":["/EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Unrecognised property '@multipleBirthBoolean'","location":["/EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Unrecognised property '@communication'","location":["/EffectEvidenceSynthesis"]},{"severity":"warning","code":"processing","diagnostics":"Name should be usable as an identifier for the module by machine processing applications such as code generation [name.matches('[A-Z]([A-Za-z0-9_]){0,254}')]","location":["EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Profile http://hl7.org/fhir/StructureDefinition/EffectEvidenceSynthesis, Element 'EffectEvidenceSynthesis.status': minimum required = 1, but only found 0","location":["EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Profile http://hl7.org/fhir/StructureDefinition/EffectEvidenceSynthesis, Element 'EffectEvidenceSynthesis.population': minimum required = 1, but only found 0","location":["EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Profile http://hl7.org/fhir/StructureDefinition/EffectEvidenceSynthesis, Element 'EffectEvidenceSynthesis.exposure': minimum required = 1, but only found 0","location":["EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Profile http://hl7.org/fhir/StructureDefinition/EffectEvidenceSynthesis, Element 'EffectEvidenceSynthesis.exposureAlternative': minimum required = 1, but only found 0","location":["EffectEvidenceSynthesis"]},{"severity":"error","code":"processing","diagnostics":"Profile http://hl7.org/fhir/StructureDefinition/EffectEvidenceSynthesis, Element 'EffectEvidenceSynthesis.outcome': minimum required = 1, but only found 0","location":["EffectEvidenceSynthesis"]},{"severity":"information","code":"processing","diagnostics":"Unknown extension http://synthetichealth.github.io/synthea/disability-adjusted-life-years","location":["EffectEvidenceSynthesis.extension[3]"]},{"severity":"information","code":"processing","diagnostics":"Unknown extension http://synthetichealth.github.io/synthea/quality-adjusted-life-years","location":["EffectEvidenceSynthesis.extension[4]"]}]}, "statusCode":400}
{"lineId":7, UpdateResourceResponse:{"jsonBlob":{"resourceType":"OperationOutcome","issue":[{"severity":"error","code":"processing","diagnostics":"2 validation errors detected: Value at 'resourceId' failed to satisfy constraint: Member must satisfy regular expression pattern: [A-Za-z0-9-.]{1,64}; Value at 'resourceId' failed to satisfy constraint: Member must have length greater than or equal to 1"}]}, "statusCode":400}
{"lineId":9, UpdateResourceResponse:{"jsonBlob":{"resourceType":"OperationOutcome","issue":[{"severity":"error","code":"processing","diagnostics":"Missing required id field in resource json"}]}, "statusCode":400}
{"lineId":15, UpdateResourceResponse:{"jsonBlob":{"resourceType":"OperationOutcome","issue":[{"severity":"error","code":"processing","diagnostics":"Invalid JSON found in input file"}]}, "statusCode":400}
```

Contoh di atas menunjukkan bahwa ada kegagalan pada baris 3, 4, 7, 9, 15 dari baris input yang sesuai dari file input. Untuk masing-masing baris tersebut, penjelasannya adalah sebagai berikut: 
+ Pada Baris 3, respons menjelaskan bahwa `resourceType` disediakan di baris 3 file input tidak valid.
+ Pada Baris 5, respons menjelaskan bahwa ada kesalahan validasi FHIR di baris 5 file input.
+ Pada Baris 7, tanggapan menjelaskan bahwa ada masalah validasi dengan `resourceId` disediakan sebagai input.
+ Pada Baris 9, respons menjelaskan bahwa file input harus berisi id sumber daya yang valid.
+ Pada baris 15, respons file input adalah bahwa file tersebut tidak dalam format JSON yang valid.

## FHIR APIs
<a name="troubleshooting-fhir-apis"></a>

**Masalah:** *Bagaimana cara menerapkan otorisasi untuk FHIR? RESTful APIs*

Tentukan [Strategi otorisasi penyimpanan data](getting-started-concepts.md#concept-data-store-authorization-strategy) yang akan digunakan.

Untuk membuat otorisasi SigV4 menggunakan AWS SDK untuk Python (Boto3), buat skrip yang mirip dengan contoh berikut.

```
import boto3
import requests
import json
from requests_auth_aws_sigv4 import AWSSigV4
 
# Set the input arguments
data_store_endpoint = 'https://healthlake.us-east-1.amazonaws.com/datastore/<datastore id>/r4//'
resource_path = "Patient"
requestBody = {"resourceType": "Patient", "active": True, "name": [{"use": "official","family": "Dow","given": ["Jen"]},{"use": "usual","given": ["Jen"]}],"gender": "female","birthDate": "1966-09-01"}
region = 'us-east-1'
 
#Frame the resource endpoint
resource_endpoint = data_store_endpoint+resource_path
session = boto3.session.Session(region_name=region)
client = session.client("healthlake")
 
# Frame authorization
auth = AWSSigV4("healthlake", session=session)
 
# Call data store FHIR endpoint using SigV4 auth

r = requests.post(resource_endpoint, json=requestBody, auth=auth, )
print(r.json())
```

**Masalah:** *Mengapa saya menerima `AccessDenied` kesalahan saat menggunakan FHIR RESTful APIs untuk penyimpanan data yang dienkripsi dengan kunci KMS yang dikelola pelanggan*?

Izin untuk kunci yang dikelola pelanggan dan kebijakan IAM diperlukan bagi pengguna atau peran untuk mengakses penyimpanan data. Pengguna harus memiliki izin IAM yang diperlukan untuk menggunakan kunci yang dikelola pelanggan. Jika pengguna mencabut atau menghentikan hibah yang memberikan HealthLake izin untuk menggunakan kunci KMS yang dikelola pelanggan, HealthLake akan mengembalikan kesalahan. `AccessDenied`

HealthLake harus memiliki izin untuk mengakses data pelanggan, mengenkripsi sumber daya FHIR baru yang diimpor ke penyimpanan data, dan untuk mendekripsi sumber daya FHIR saat diminta. Untuk informasi selengkapnya, lihat [Izin pemecahan masalah AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html).

**Masalah:** *Operasi `POST` API FHIR untuk HealthLake menggunakan dokumen 10MB mengembalikan kesalahan. `413 Request Entity Too Large`*

AWS HealthLake memiliki batas Create and Update API sinkron sebesar 5MB untuk menghindari peningkatan latensi dan batas waktu. Anda dapat menyerap dokumen besar, hingga 164MB, menggunakan jenis `Binary` sumber daya menggunakan API Impor Massal.

## Integrasi NLP
<a name="troubleshooting-nlp-integrations"></a>

**Masalah:** *Bagaimana cara mengaktifkan HealthLake fitur pemrosesan bahasa alami terintegrasi?*

Per 14 November 2022, perilaku default penyimpanan HealthLake data berubah.

**Penyimpanan data saat ini: Semua penyimpanan** HealthLake data saat ini akan berhenti menggunakan pemrosesan bahasa alami (NLP) pada sumber daya yang dikodekan `DocumentReference` base64. Ini berarti bahwa `DocumentReference` sumber daya baru tidak akan dianalisis menggunakan NLP, dan tidak ada sumber daya baru yang akan dihasilkan berdasarkan teks dalam jenis `DocumentReference` sumber daya. Untuk `DocumentReference` sumber daya yang ada, data dan sumber daya yang dihasilkan melalui NLP tetap ada, tetapi tidak akan diperbarui setelah 20 Februari 2023.

**Penyimpanan data baru: penyimpanan** HealthLake data yang dibuat setelah 20 Februari 2023 *tidak* akan melakukan pemrosesan bahasa alami (NLP) pada sumber daya yang disandikan base64. `DocumentReference`

Untuk mengaktifkan integrasi HealthLake NLP, buat kasus dukungan menggunakan. [AWS Support Center Console](https://console.aws.amazon.com/support/home#/) Untuk membuat kasus Anda, masuk ke kasing Anda Akun AWS, lalu pilih **Buat kasus**. Untuk mempelajari selengkapnya tentang membuat manajemen kasus dan kasus, lihat [Membuat kasus dukungan dan manajemen kasus](https://docs.aws.amazon.com/awssupport/latest/user/case-management.html) di *Panduan Dukungan Pengguna*.

**Masalah:** *>Bagaimana cara menemukan `DocumentReference` sumber daya yang tidak dapat diproses oleh NLP terintegrasi?*

Jika `DocumentReference` sumber daya tidak valid, HealthLake berikan ekstensi yang menunjukkan kesalahan validasi alih-alih menyediakannya dalam output NLP medis terintegrasi. **Untuk menemukan `DocumentReference` sumber daya yang menyebabkan kesalahan validasi selama pemrosesan NLP, Anda dapat menggunakan HealthLake `search` fungsi FHIR dengan kunci pencarian **cm-decoration-status**dan nilai pencarian VALIDATION\$1ERROR.** Pencarian ini akan mencantumkan semua `DocumentReference` sumber daya yang menyebabkan kesalahan validasi, bersama dengan pesan kesalahan yang menjelaskan sifat kesalahan. Struktur bidang ekstensi dalam `DocumentReference` sumber daya tersebut dengan kesalahan validasi akan menyerupai contoh berikut.

```
"extension": [
          {
              "extension": [
                  {
                      "url": "http://healthlake.amazonaws.com/aws-cm/status/",
                      "valueString": "VALIDATION_ERROR"
                  },
                  {
                      "url": "http://healthlake.amazonaws.com/aws-cm/message/",
                      "valueString": "Resource led to too many nested objects after NLP operation processed the document. 10937 nested objects exceeds the limit of 10000."
                  }
              ],
              "url": "http://healthlake.amazonaws.com/aws-cm/"
          }
    ]
```

**catatan**  
A juga `VALIDATION_ERROR` dapat terjadi jika dekorasi NLP menciptakan lebih dari 10.000 objek bersarang. Ketika ini terjadi, dokumen harus dibagi menjadi dokumen yang lebih kecil sebelum diproses.

## Integrasi SQL
<a name="troubleshooting-sql-integrations"></a>

**Masalah:** *Mengapa saya mendapatkan Lake Formation `permissions error: lakeformation:PutDataLakeSettings` saat menambahkan administrator danau data baru?*

Jika pengguna atau peran IAM Anda berisi kebijakan `AWSLakeFormationDataAdmin` AWS terkelola, Anda tidak dapat menambahkan administrator data lake baru. Anda akan mendapatkan kesalahan yang berisi berikut ini:

```
User arn:aws:sts::111122223333:assumed-role/lakeformation-admin-user is not authorized to perform: lakeformation:PutDataLakeSettings on resource: arn:aws:lakeformation:us-east-2:111122223333:catalog:111122223333 with an explicit deny in an identity-based policy
```

Kebijakan AWS terkelola `AdministratorAccess` diperlukan untuk menambahkan pengguna IAM atau peran sebagai administrator danau data AWS Lake Formation. Jika pengguna atau peran IAM Anda juga berisi `AWSLakeFormationDataAdmin` tindakan akan gagal. Kebijakan `AWSLakeFormationDataAdmin` AWS terkelola berisi penolakan eksplisit untuk operasi AWS Lake Formation API,`PutDataLakeSetting`. Bahkan administrator dengan akses penuh untuk AWS menggunakan kebijakan `AdministratorAccess` terkelola dapat dibatasi oleh `AWSLakeFormationDataAdmin` kebijakan.

**Masalah:** *Bagaimana cara memigrasi penyimpanan HealthLake data yang ada untuk menggunakan integrasi SQL Amazon Athena?*

HealthLake penyimpanan data yang dibuat sebelum 14 November 2022 berfungsi, tetapi tidak dapat ditanyakan di Athena menggunakan SQL. Untuk menanyakan penyimpanan data yang sudah ada sebelumnya dengan Athena, Anda harus terlebih dahulu memigrasikannya ke penyimpanan data baru. 

**Untuk memigrasikan HealthLake data Anda ke penyimpanan data baru**

1. Buat toko data baru.

1. Ekspor data dari yang sudah ada sebelumnya ke bucket Amazon S3.

1. Impor data ke penyimpanan data baru dari bucket Amazon S3.

**catatan**  
Mengekspor data ke bucket Amazon S3 menimbulkan biaya tambahan. Biaya tambahan tergantung pada ukuran data yang Anda ekspor.

**Masalah:** *Saat membuat penyimpanan HealthLake data baru untuk integrasi SQL, status penyimpanan data tidak berubah*. `Creating`

Jika Anda mencoba membuat penyimpanan HealthLake data baru, dan status penyimpanan data Anda tidak berubah dari **Membuat**, Anda perlu memperbarui Athena untuk menggunakan. AWS Glue Data Catalog Untuk informasi selengkapnya, lihat [Memutakhirkan ke Katalog Data AWS Glue step-by-step](https://docs.aws.amazon.com/athena/latest/ug/glue-upgrade.html) di Panduan *Pengguna Amazon Athena*.

Setelah berhasil memutakhirkan AWS Glue Data Catalog, Anda dapat membuat penyimpanan HealthLake data.

Untuk menghapus penyimpanan HealthLake data lama, buat kasus dukungan menggunakan [AWS Support Center Console](https://console.aws.amazon.com/support/home#/). Untuk membuat kasus Anda, masuk ke kasing Anda Akun AWS, lalu pilih **Buat kasus**. Untuk mempelajari selengkapnya, lihat [Membuat kasus dukungan dan manajemen kasus](https://docs.aws.amazon.com/awssupport/latest/user/case-management.html) di *Panduan Dukungan Pengguna*.

**Masalah:** *Konsol Athena tidak berfungsi setelah mengimpor data ke penyimpanan data baru HealthLake *

Setelah Anda mengimpor data ke penyimpanan HealthLake data baru, data mungkin tidak tersedia untuk segera digunakan. Ini untuk memberikan waktu bagi data untuk dicerna ke dalam tabel Apache Iceberg. Coba lagi di lain waktu.

**Masalah:** *Bagaimana cara menghubungkan hasil pencarian di Athena ke layanan lain? AWS *

Saat membagikan hasil penelusuran Anda dari Athena dengan AWS layanan lain, masalah dapat terjadi saat Anda menggunakan `json_extract[1]` sebagai bagian dari kueri penelusuran SQL. Untuk memperbaiki masalah ini, Anda harus memperbarui ke`CATVAR`.

Anda mungkin mengalami masalah ini saat mencoba **Membuat** hasil penyimpanan, **Tabel** (statis), atau **Tampilan** (dinamis).

# Menggunakan HealthLake dengan AWS SDK
<a name="sdk-general-information-section"></a>

AWS kit pengembangan perangkat lunak (SDKs) tersedia untuk banyak bahasa pemrograman populer. Setiap SDK menyediakan API, contoh kode, dan dokumentasi yang memudahkan developer untuk membangun aplikasi dalam bahasa pilihan mereka.


| Dokumentasi SDK | Contoh kode | 
| --- | --- | 
| [AWS SDK untuk C\$1\$1](https://docs.aws.amazon.com/sdk-for-cpp) | [AWS SDK untuk C\$1\$1 contoh kode](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp) | 
| [AWS CLI](https://docs.aws.amazon.com/cli) | [AWS CLI contoh kode](https://docs.aws.amazon.com/code-library/latest/ug/cli_2_code_examples.html) | 
| [AWS SDK untuk Go](https://docs.aws.amazon.com/sdk-for-go) | [AWS SDK untuk Go contoh kode](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/gov2) | 
| [AWS SDK untuk Java](https://docs.aws.amazon.com/sdk-for-java) | [AWS SDK untuk Java contoh kode](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2) | 
| [AWS SDK untuk JavaScript](https://docs.aws.amazon.com/sdk-for-javascript) | [AWS SDK untuk JavaScript contoh kode](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3) | 
| [AWS SDK untuk Kotlin](https://docs.aws.amazon.com/sdk-for-kotlin) | [AWS SDK untuk Kotlin contoh kode](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/kotlin) | 
| [AWS SDK untuk .NET](https://docs.aws.amazon.com/sdk-for-net) | [AWS SDK untuk .NET contoh kode](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3) | 
| [AWS SDK untuk PHP](https://docs.aws.amazon.com/sdk-for-php) | [AWS SDK untuk PHP contoh kode](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php) | 
| [Alat AWS untuk PowerShell](https://docs.aws.amazon.com/powershell) | [Alat AWS untuk PowerShell contoh kode](https://docs.aws.amazon.com/code-library/latest/ug/powershell_5_code_examples.html) | 
| [AWS SDK untuk Python (Boto3)](https://docs.aws.amazon.com/pythonsdk) | [AWS SDK untuk Python (Boto3) contoh kode](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python) | 
| [AWS SDK untuk Ruby](https://docs.aws.amazon.com/sdk-for-ruby) | [AWS SDK untuk Ruby contoh kode](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/ruby) | 
| [AWS SDK for Rust](https://docs.aws.amazon.com/sdk-for-rust) | [AWS SDK for Rust contoh kode](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rustv1) | 
| [AWS SDK for SAP ABAP](https://docs.aws.amazon.com/sdk-for-sapabap) | [AWS SDK for SAP ABAP contoh kode](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/sap-abap) | 
| [AWS SDK for Swift](https://docs.aws.amazon.com/sdk-for-swift) | [AWS SDK for Swift contoh kode](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/swift) | 

**Ketersediaan contoh**  
Tidak dapat menemukan apa yang Anda butuhkan? Minta contoh kode menggunakan tautan **Berikan umpan balik** di bagian bawah halaman ini.