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
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ù
questionnairecanonici 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:
-
Identify Patient & Payer: estrae il paziente e l'organizzazione assicurativa dal parametro.
coverage -
Trova il questionario giusto:
-
Con
questionnaireparametro: utilizza l'URL canonico che hai fornito -
Con
orderparametro: corrisponde al codice dell'ordine (CPT/HCPCS/LOINC) e al pagatore per trovare il questionario appropriato
-
-
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
-
-
Package tutto insieme:
-
Raggruppa tutte le risorse (ogni risorsa è inclusa una sola volta)
-
Filtra per
changedSincetimestamp, se fornito -
Aggiunge avvisi in
Outcomecaso 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
questionnaireoorderdeve 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
questionnaireparametro è stato fornito) - Priorità massima -
Analisi dell'ordine (se il
orderparametro è 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.relatedArtifactdepends-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 OKcon 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-packageper 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-packageper recuperare i requisiti di documentazione -
Completare il modulo QuestionnaireResponse con i dati clinici richiesti
-
Inviare l'autorizzazione preventiva utilizzando
Claim/$submitcon 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-packageper 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
Outcomeparametro 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
changedSinceparametro 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.
Operazioni correlate
-
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