View a markdown version of this page

$questionnaire-packageOperazione FHIR per HealthLake - AWS HealthLake

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

$questionnaire-packageOperazione FHIR per HealthLake

L'$questionnaire-packageoperazione recupera un pacchetto completo contenente un questionario FHIR e tutte le sue dipendenze necessarie per il rendering e l'elaborazione del questionario. Questa operazione implementa la Da Vinci Documentation Templates and Rules (DTR) Implementation Guide, che consente il rendering dinamico dei moduli per i requisiti di documentazione nei flussi di lavoro sanitari.

Come funziona

  • Richiesta: inviate i parametri che identificano il questionario o i questionari necessari, insieme alla copertura e al contesto dell'ordine

  • Recupera: HealthLake raccoglie il questionario e tutte le dipendenze (, librerie CQL, ecc.) ValueSets

  • Package: Tutte le risorse sono raggruppate in un formato standardizzato

  • Rispondi: Riceverai un pacchetto completo pronto per il rendering e la raccolta dei dati

Casi d'uso

  • Documentazione di autorizzazione preventiva: raccoglie le informazioni cliniche necessarie per le richieste di autorizzazione preventiva

  • Requisiti di copertura: raccogliere la documentazione necessaria per soddisfare i requisiti di copertura dei pagatori

  • Clinical Data Exchange: struttura dei dati clinici da presentare ai pagatori

  • Moduli dinamici: renderizza i questionari con dati precompilati sui pazienti e logica condizionale

Endpoint API

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

Parametri della richiesta

Parametri di input

Il corpo della richiesta deve contenere una risorsa FHIR Parameters con i seguenti parametri:

Parametro Tipo Cardinalità Description
coverage Copertura 1.. * (Obbligatorio) Risorse/e di copertura per stabilire il membro e copertura della documentazione
questionnaire canonico 0.. * URL canonici per uno o più questionari specifici da restituire (la versione può includere)
order Risorsa 0.. * Ordina le risorse (DeviceRequest, ServiceRequest, MedicationRequest, Encounter, Appointment) per stabilire il contesto
changedSince dateTime 0.1. Se presenti, restituisce solo le risorse modificate dopo questo timestamp

Regole di convalida dei parametri

È necessario fornire almeno UNO dei seguenti elementi (oltre a quelli obbligatoricoverage):

  • Uno o più questionnaire canonici URLs

  • Una o più risorse order

Combinazioni di richieste valide:

  • coverage + questionnaire

  • coverage + order

  • coverage + questionnaire + order

Richiesta di esempio

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

Formato della risposta

Risposta riuscita (200 OK)

L'operazione restituisce una risorsa FHIR Parameters contenente uno o più Package Bundle. Ogni pacchetto Package include:

Tipo di ingresso Cardinalità Description
Questionario 1 Il questionario da rendere
QuestionnaireResponse 0.1.. Risposta precompilata o parzialmente completata (se applicabile)
Libreria 0.. * Librerie CQL contenenti logica condizionale e di precompilazione
ValueSet 0.. * Espanso ValueSets (per scelte di risposta con <40 espansioni)
Esempio Esempio di risposta
{ "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" } }] } } ] }

Flusso di lavoro operativo

Come HealthLake elabora la tua richiesta

Quando chiami$questionnaire-package, HealthLake effettua le seguenti operazioni:

  1. Identify Patient & Payer: estrae il paziente e l'organizzazione assicurativa dal parametro. coverage

  2. Trova il questionario giusto:

    • Con questionnaire parametro: utilizza l'URL canonico che hai fornito

    • Con order parametro: corrisponde al codice dell'ordine (CPT/HCPCS/LOINC) e al pagatore per trovare il questionario appropriato

  3. Raccogli le dipendenze: recupera automaticamente tutto ciò che serve per il rendering del questionario:

    • Librerie CQL - Logica per domande condizionali e preliminari

    • ValueSets- Scelte di risposta (espanse automaticamente se <40 opzioni)

    • QuestionnaireResponse- Eventuali risposte esistenti in corso o completate

  4. Package tutto insieme:

    • Raggruppa tutte le risorse (ogni risorsa è inclusa una sola volta)

    • Filtra per changedSince timestamp, se fornito

    • Aggiunge avvisi in Outcome caso di mancanza di risorse

Risultato: un pacchetto completo e autonomo pronto per il rendering.

Risposte agli errori

400 Richiesta non valida

Restituito quando la convalida della richiesta fallisce.

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

4.2.4 Dipendenza non riuscita

Restituito quando una risorsa dipendente non può essere recuperata.

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

401 - Autorizzazione negata

Restituito quando le credenziali di autenticazione sono mancanti o non valide.

403 Non consentito

Restituito quando l'utente autenticato non è autorizzato ad accedere alle risorse richieste.

406 Non accettabile

Restituito quando non è possibile fornire il tipo di contenuto richiesto.

409 Conflitto

Restituito in caso di conflitto di versione o concorrenza.

410 Andato

Restituito quando la risorsa richiesta è stata eliminata definitivamente.

429 Troppe richieste

Restituito quando vengono superati i limiti di velocità.

500 - Errore interno del server

Restituito quando si verifica un errore imprevisto del server.

501 non implementato

Restituito quando l'operazione richiesta non è ancora implementata.

Regole di convalida

Convalida dell'input

  • coverageil parametro è obbligatorio (1.. * cardinalità)

  • Almeno uno questionnaire o order deve essere fornito

  • Tutte le risorse di copertura devono essere risorse FHIR valide

  • Tutte le risorse dell'Ordine devono essere risorse FHIR valide

  • Canonical URLs deve essere formattato correttamente

  • changedSincedeve essere un DateTime ISO 8601 valido

QuestionnaireResponse convalida

  • statusdeve essere appropriato (in-progress,completed,amended)

  • La struttura deve corrispondere al questionario di riferimento

  • basedOndeve fare riferimento a risorse Order valide

  • subjectdeve fare riferimento a risorse valide per i pazienti

Deduplicazione delle risorse

  • Ogni risorsa appare solo una volta nel pacchetto

  • Eccezione: è possibile includere entrambe versioni diverse della stessa risorsa

  • Le risorse sono identificate in base all'URL e alla versione canonici

Specifiche prestazionali

Metrica Specifiche
Limite di conteggio delle risorse 500 risorse per pacchetto
Limite di dimensione del pacchetto Massimo 5 MB

Autorizzazioni richieste

Per utilizzare l'$questionnaire-packageoperazione, assicurati che il tuo ruolo IAM abbia:

  • healthlake:QuestionnairePackage- Per richiamare l'operazione

  • healthlake:ReadResource- Per recuperare il questionario e le risorse dipendenti

  • healthlake:SearchWithPost- Per cercare risorse correlate QuestionnaireResponse

SMART su FHIR Scopes

Ambiti minimi richiesti:

  • SMART v1: user/Questionnaire.read user/Library.read user/ValueSet.read user/QuestionnaireResponse.read

  • SMART versione 2: user/Questionnaire.rs user/Library.rs user/ValueSet.rs user/QuestionnaireResponse.rs

Note importanti sull'implementazione

Strategia di recupero delle risorse

Priorità di identificazione del questionario:

  • URL canonico (se il questionnaire parametro è stato fornito) - Priorità massima

  • Analisi dell'ordine (se il order parametro è fornito):

    • Abbina i codici degli ordini (CPT, HCPCS, LOINC) alle politiche mediche dei paganti

    • Utilizza Coverage Payor per filtrare i questionari specifici per ciascun pagatore

    • Prendi in considerazione i codici dei motivi per un contesto aggiuntivo

Risoluzione delle dipendenze

Librerie CQL:

  • Recuperato tramite l'cqf-libraryestensione sulle risorse del questionario

  • Recupera ricorsivamente le librerie dipendenti tramite type Library.relatedArtifact depends-on

  • Tutte le dipendenze della libreria sono incluse nel pacchetto

ValueSets:

  • Si espandono automaticamente se contengono meno di 40 concetti

  • ValueSets I più grandi sono inclusi senza espansione

  • ValueSets a cui si fa riferimento sia nel Questionario che nelle risorse della Libreria sono incluse

QuestionnaireResponse prepopolazione

L'operazione può restituire un file QuestionnaireResponse con dati precompilati quando:

  • Viene trovata una risposta esistente in corso o completata

  • La logica CQL nelle librerie associate può estrarre dati dalle cartelle cliniche dei pazienti

  • La risposta è collegata all'ordine e alla copertura pertinenti

Criteri di ricerca per QuestionnaireResponse:

Parametro di ricerca Percorso FHIR Description
based-on QuestionnaireResponse.basedOn Collegamenti a o ServiceRequest CarePlan
patient QuestionnaireResponse.subject Il paziente che è il soggetto
questionnaire QuestionnaireResponse.questionnaire Il questionario a cui si sta rispondendo

Filtraggio delle risorse modificato

Quando viene fornito il changedSince parametro:

  • Sono incluse solo le risorse modificate dopo il timestamp specificato

  • Se nessuna risorsa è stata modificata, ritorna 200 OK con un pacchetto vuoto

  • Utile per aggiornamenti incrementali e strategie di memorizzazione nella cache

  • Il confronto dei timestamp utilizza il campo delle risorse meta.lastUpdated

Pacchetti multipli

L'operazione può restituire più Package Bundle quando:

  • Vengono richiesti più questionari tramite canonical URLs

  • Ordini multipli richiedono questionari diversi

  • Sono applicabili versioni diverse dello stesso questionario

Ogni Package Bundle è autonomo con tutte le dipendenze necessarie.

Casi di utilizzo comune

Caso d'uso 1: documentazione di autorizzazione preventiva

Scenario: un fornitore deve raccogliere la documentazione per un'autorizzazione preventiva di ossigenoterapia domiciliare.

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

Risultato: restituisce un pacco con il questionario di ossigenoterapia, precompilato con i dati anagrafici dei pazienti e i codici di diagnosi dell'EHR.

Caso d'uso 2: recupero di una versione specifica del questionario

Scenario: un provider necessita di una versione specifica di un questionario per la conformità.

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

Risultato: restituisce esattamente la versione 3.1.0 del questionario di richiesta DME con tutte le dipendenze.

Caso d'uso 3: verifica la presenza di aggiornamenti

Scenario: un provider desidera verificare se alcune risorse del questionario sono state aggiornate dall'ultimo recupero.

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

Risultato: restituisce solo le risorse che sono state modificate dopo il 1° marzo 2024 o un pacchetto vuoto se non è cambiato nulla.

Caso d'uso 4: ordini multipli

Scenario: un provider invia più richieste di assistenza che possono richiedere questionari diversi.

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

Risultato: restituisce più Package Bundle, uno per ogni questionario applicabile.

Integrazione con Other Da Vinci IGs

Discovery dei requisiti di copertura (CRD)

Integrazione del flusso di lavoro:

  • Il fornitore ordina un servizio nel proprio EHR

  • Il CRD si blocca, verifica dei requisiti di copertura

  • Il pagatore risponde indicando che è necessaria la documentazione

  • Il provider chiama $questionnaire-package per recuperare il modulo di documentazione

  • Il provider completa il questionario

  • La documentazione viene inviata tramite PAS o CDex

Support di autorizzazione preventiva (PAS)

Integrazione del flusso di lavoro:

  • Utilizzare $questionnaire-package per recuperare i requisiti di documentazione

  • Completare il modulo QuestionnaireResponse con i dati clinici richiesti

  • Inviare l'autorizzazione preventiva utilizzando Claim/$submit con il QuestionnaireResponse

  • Controlla lo stato utilizzando Claim/$inquire

Data Exchange clinico (CDex)

Integrazione del flusso di lavoro:

  • Il pagante richiede documentazione aggiuntiva per un reclamo

  • Il fornitore utilizza $questionnaire-package per recuperare il modulo di raccolta dei dati strutturati

  • Il fornitore completa il QuestionnaireResponse

  • La documentazione viene inviata al pagatore tramite CDex il flusso di lavoro in allegato

Guida alla risoluzione dei problemi

Problema: nessun questionario restituito

Possibili cause:

  • L'URL canonico non corrisponde a nessun questionario nell'archivio dati

  • Il codice dell'ordine non corrisponde a nessun questionario nella politica medica del pagatore

  • Il beneficiario della copertura non dispone di questionari associati

Soluzioni:

  • Verifica che l'URL canonico sia corretto e che il questionario esista

  • Verifica che i codici d'ordine (CPT/HCPCS) siano specificati correttamente

  • Conferma che i questionari siano configurati per il pagatore o l'organizzazione

Problema: dipendenze mancanti nel pacchetto

Possibili cause:

  • Libreria referenziata o ValueSet non esiste nell'archivio dati

  • I riferimenti alla libreria sono interrotti o errati

  • ValueSet espansione non riuscita

Soluzioni:

  • Controlla il Outcome parametro per gli avvisi relativi alle risorse mancanti

  • Verifica che tutte le risorse di riferimento esistano nel tuo archivio dati

  • Assicurati che ValueSet URLs siano corretti e risolvibili

Problema: Package vuoto con ChangedSince

Possibili cause:

  • Questo è il comportamento previsto: nessuna risorsa è stata modificata dopo il timestamp specificato

Soluzioni:

  • Usa la versione cache del pacchetto

  • Rimuovi il changedSince parametro per recuperare il pacchetto completo

Problema: QuestionnaireResponse non precompilato

Possibili cause:

  • Nessun elemento esistente QuestionnaireResponse trovato

  • La logica della libreria CQL non è in grado di estrarre i dati richiesti

  • I dati del paziente sono mancanti o incompleti

Soluzioni:

  • Questo è prevedibile: non tutti i questionari hanno una logica di prepopolazione

  • Verificate che i dati del paziente esistano nell'archivio dati

  • Rivedi la logica della libreria CQL per i requisiti di estrazione dei dati

Best practice

1. Usa Canonical URLs con le versioni

Specificate sempre i numeri di versione quando richiedete questionari specifici:

{ "name": "questionnaire", "valueCanonical": "http://example.org/fhir/Questionnaire/dme|2.1.0" }

Perché: garantisce la coerenza e previene modifiche impreviste quando i questionari vengono aggiornati.

2. Sfrutta ChangedSince per le prestazioni

Per i questionari a cui si accede di frequente, utilizza changedSince per ridurre al minimo il trasferimento dei dati:

{ "name": "changedSince", "valueDateTime": "2024-03-10T15:30:00Z" }

Perché: riduce la latenza e l'utilizzo della larghezza di banda recuperando solo le risorse aggiornate.

3. Includi informazioni complete sulla copertura

Fornisci dettagli completi sulla copertura per garantire la corretta selezione del questionario:

{ "name": "coverage", "resource": { "resourceType": "Coverage", "beneficiary": { "reference": "Patient/123" }, "payor": [{ "reference": "Organization/payer-abc" }], "class": [{ /* Group/plan information */ }] } }

Perché: aiuta a HealthLake identificare i questionari e i requisiti specifici del pagatore.

  • Claim/$submit- Invia richieste di autorizzazione preventiva con documentazione completa

  • Claim/$inquire- Verifica lo stato delle autorizzazioni precedenti inviate

  • ValueSet/$expand- Espandi ValueSets per visualizzare le opzioni di risposta