

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-package`Operazione FHIR per HealthLake
<a name="reference-fhir-operations-questionnaire-package"></a>

L'`$questionnaire-package`operazione 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](https://hl7.org/fhir/us/davinci-dtr/OperationDefinition-questionnaire-package.html) nei flussi di lavoro sanitari.

## Come funziona
<a name="questionnaire-package-how-it-works"></a>
+ **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
<a name="questionnaire-package-api-endpoint"></a>

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

## Parametri della richiesta
<a name="questionnaire-package-request-parameters"></a>

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

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


| Parametro | Tipo | Cardinalità | Description | 
| --- | --- | --- | --- | 
| coverage | Copertura | 1.. \$1 (Obbligatorio) | Risorse/e di copertura per stabilire il membro e copertura della documentazione | 
| questionnaire | canonico | 0.. \$1 | URL canonici per uno o più questionari specifici da restituire (la versione può includere) | 
| order | Risorsa | 0.. \$1 | 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
<a name="questionnaire-package-parameter-validation"></a>

È **necessario fornire almeno UNO dei seguenti elementi** (oltre a quelli obbligatori`coverage`):
+ Uno o più `questionnaire` canonici URLs
+ Una o più risorse `order`

**Combinazioni di richieste valide:**  

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

## Richiesta di esempio
<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"  
    }  
  ]  
}
```

## Formato della risposta
<a name="questionnaire-package-response-format"></a>

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

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.. \$1 | Librerie CQL contenenti logica condizionale e di precompilazione | 
| ValueSet | 0.. \$1 | Espanso ValueSets (per scelte di risposta con <40 espansioni) | 

**Example 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
<a name="questionnaire-package-operation-workflow"></a>

**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`

1. **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

1. **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

1. **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
<a name="questionnaire-package-error-responses"></a>

### 400 Richiesta non valida
<a name="questionnaire-package-400-error"></a>

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
<a name="questionnaire-package-424-error"></a>

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
<a name="questionnaire-package-401-error"></a>

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

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

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

### 406 Non accettabile
<a name="questionnaire-package-406-error"></a>

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

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

Restituito in caso di conflitto di versione o concorrenza.

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

Restituito quando la risorsa richiesta è stata eliminata definitivamente.

### 429 Troppe richieste
<a name="questionnaire-package-429-error"></a>

Restituito quando vengono superati i limiti di velocità.

### 500 - Errore interno del server
<a name="questionnaire-package-500-error"></a>

Restituito quando si verifica un errore imprevisto del server.

### 501 non implementato
<a name="questionnaire-package-501-error"></a>

Restituito quando l'operazione richiesta non è ancora implementata.

## Regole di convalida
<a name="questionnaire-package-validation-rules"></a>

### Convalida dell'input
<a name="questionnaire-package-input-validation"></a>
+ `coverage`il parametro è **obbligatorio** (1.. \$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
+ `changedSince`deve essere un DateTime ISO 8601 valido

### QuestionnaireResponse convalida
<a name="questionnaire-package-response-validation"></a>
+ `status`deve essere appropriato (`in-progress`,`completed`,`amended`)
+ La struttura deve corrispondere al questionario di riferimento
+ `basedOn`deve fare riferimento a risorse Order valide
+ `subject`deve fare riferimento a risorse valide per i pazienti

### Deduplicazione delle risorse
<a name="questionnaire-package-resource-dedup"></a>
+ 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
<a name="questionnaire-package-performance-specs"></a>


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

## Autorizzazioni richieste
<a name="questionnaire-package-required-permissions"></a>

Per utilizzare l'`$questionnaire-package`operazione, 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
<a name="questionnaire-package-implementation-notes"></a>

### Strategia di recupero delle risorse
<a name="questionnaire-package-retrieval-strategy"></a>

**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
<a name="questionnaire-package-dependency-resolution"></a>

**Librerie CQL:**  

+ Recuperato tramite l'`cqf-library`estensione 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
<a name="questionnaire-package-prepopulation"></a>

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
<a name="questionnaire-package-changed-filtering"></a>

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
<a name="questionnaire-package-multiple-bundles"></a>

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
<a name="questionnaire-package-common-use-cases"></a>

### Caso d'uso 1: documentazione di autorizzazione preventiva
<a name="questionnaire-package-use-case-1"></a>

**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
<a name="questionnaire-package-use-case-2"></a>

**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
<a name="questionnaire-package-use-case-3"></a>

**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
<a name="questionnaire-package-use-case-4"></a>

**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
<a name="questionnaire-package-integration"></a>

### Discovery dei requisiti di copertura (CRD)
<a name="questionnaire-package-crd-integration"></a>

**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)
<a name="questionnaire-package-pas-integration"></a>

**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)
<a name="questionnaire-package-cdex-integration"></a>

**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
<a name="questionnaire-package-troubleshooting"></a>

### Problema: nessun questionario restituito
<a name="questionnaire-package-no-questionnaire"></a>

**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
<a name="questionnaire-package-missing-dependencies"></a>

**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
<a name="questionnaire-package-empty-package"></a>

**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
<a name="questionnaire-package-not-prepopulated"></a>

**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
<a name="questionnaire-package-best-practices"></a>

### 1. Usa Canonical URLs con le versioni
<a name="questionnaire-package-bp-versions"></a>

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
<a name="questionnaire-package-bp-changed-since"></a>

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
<a name="questionnaire-package-bp-coverage"></a>

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
<a name="questionnaire-package-related-operations"></a>
+ `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