View a markdown version of this page

$questionnaire-packageOperasi FHIR untuk HealthLake - AWS HealthLake

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

$questionnaire-packageOperasi FHIR untuk HealthLake

$questionnaire-packageOperasi 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), memungkinkan rendering formulir dinamis untuk persyaratan dokumentasi dalam alur kerja perawatan kesehatan.

Cara kerjanya

  • 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

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

Permintaan parameter

Parameter input

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

Parameter Tipe Kardinalitas Deskripsi
coverage Cakupan 1.. * (Diperlukan) Sumber daya cakupan untuk menetapkan anggota dan cakupan untuk dokumentasi
questionnaire canonical 0.. * URL kanonik untuk Kuesioner tertentu untuk dikembalikan (mungkin termasuk versi)
order Sumber daya 0.. * 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

Setidaknya SATU dari berikut ini harus disediakan (selain yang diperlukancoverage):

  • Satu atau lebih questionnaire kanonik URLs

  • Satu atau lebih order sumber daya

Kombinasi Permintaan yang Valid:

  • coverage + questionnaire

  • coverage + order

  • coverage + questionnaire + order

Contoh permintaan

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

Respon sukses (200 OK)

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.. * Perpustakaan CQL yang berisi pra-populasi dan logika bersyarat
ValueSet 0.. * Diperluas ValueSets (untuk pilihan jawaban dengan <40 ekspansi)
contoh 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

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.

  2. 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

  3. 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

  4. 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

400 Permintaan Buruk

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

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

Dikembalikan ketika kredensi otentikasi hilang atau tidak valid.

403 Dilarang

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

406 Tidak Dapat Diterima

Dikembalikan ketika jenis konten yang diminta tidak dapat disediakan.

409 Konflik

Dikembalikan ketika ada versi atau konflik konkurensi.

410 Hilang

Dikembalikan ketika sumber daya yang diminta telah dihapus secara permanen.

429 Terlalu Banyak Permintaan

Dikembalikan ketika batas tarif terlampaui.

500 Kesalahan Server Internal

Dikembalikan ketika terjadi kesalahan server yang tidak terduga.

501 Tidak Diimplementasikan

Dikembalikan ketika operasi yang diminta belum dilaksanakan.

Aturan validasi

Validasi masukan

  • coverageparameter diperlukan (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

  • changedSinceharus berupa ISO 8601 DateTime yang valid

QuestionnaireResponse validasi

  • statusharus sesuai (in-progress,completed,amended)

  • Struktur harus sesuai dengan Kuesioner yang direferensikan

  • basedOnharus mereferensikan sumber daya Pesanan yang valid

  • subjectharus referensi sumber daya Pasien yang valid

Deduplikasi sumber daya

  • 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

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

Izin yang diperlukan

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

Strategi pengambilan sumber daya

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

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

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

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

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

Kasus Penggunaan 1: Dokumentasi Otorisasi Sebelumnya

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

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

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

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

Penemuan Persyaratan Cakupan (CRD)

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)

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)

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

Masalah: Tidak Ada Kuesioner yang Dikembalikan

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

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

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

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

1. Gunakan Canonical URLs dengan Versi

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

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

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.

  • Claim/$submit- Kirim permintaan otorisasi sebelumnya dengan dokumentasi lengkap

  • Claim/$inquire- Periksa status otorisasi sebelumnya yang dikirimkan

  • ValueSet/$expand- Perluas ValueSets untuk pilihan jawaban