

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

# Convalida delle risorse FHIR con `$validate`
<a name="reference-fhir-operations-validate"></a>

AWS HealthLake ora supporta il `$validate` funzionamento delle risorse FHIR, consentendoti di convalidare una risorsa rispetto alle specifiche FHIR e di verificarne la conformità a un profilo specifico o a una definizione di risorsa di base senza eseguire alcuna operazione di storage. Questa operazione è particolarmente utile quando è necessario:
+ Convalidare i requisiti di conformità FHIR CMS
+ Testa le risorse prima di utilizzarle in produzione
+ Fornisci feedback di convalida in tempo reale mentre gli utenti modificano i dati clinici
+ Riduci gli invii di dati non validi per crearli e aggiornarli APIs

## Utilizzo
<a name="validate-usage"></a>

L'`$validate`operazione può essere richiamata sulle risorse FHIR utilizzando i metodi POST:

**Operazioni supportate**  


```
POST [base]/[type]/[id]/$validate
POST [base]/[type]/$validate
```

## Payload supportati
<a name="validate-payloads"></a>

**Risorsa di parametri**  


HealthLake supporta i seguenti `$validate` parametri FHIR:


| Parametro | Tipo | Campo obbligatorio | Description | 
| --- | --- | --- | --- | 
| resource | Risorsa | Sì | La risorsa da convalidare | 
| profile | canonico | No | URL canonico del profilo con cui eseguire la convalida | 
| mode | code | No | Modalità di convalida:, oppure create update | 

**Risorsa diretta con parametri di interrogazione**  



| Parametro | Tipo | Campo obbligatorio | Description | 
| --- | --- | --- | --- | 
| profile | canonico | No | URL canonico del profilo con cui eseguire la convalida | 
| mode | code | No | Modalità di convalida:, oppure create update | 

## Esempi
<a name="validate-examples"></a>

**Richiesta POST di risorsa con payload ID e parametri**  


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

**Richiesta POST per il tipo di risorsa e il payload dei parametri**  


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

**Richiesta di risorsa POST con ID e payload diretto della risorsa**  


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

**Richiesta POST per tipo di risorsa e payload diretto della risorsa**  


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

**Risposta di esempio**  
L'operazione restituisce una OperationOutcome risorsa con risultati di convalida:

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "information",
      "code": "informational",
      "diagnostics": "Validation successful"
    }
  ]
}
```

**Esempio di risposta con errori di convalida**  


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

## Comportamento
<a name="validate-behavior"></a>

L'`$validate`operazione:

1. Convalida la risorsa rispetto alla specifica FHIR e alla definizione della risorsa di base

1. Verifica la conformità ai profili specificati quando viene fornito il parametro `profile`

1. Esegue la convalida in base alla modalità specificata (o) `create` `update`

1. Restituisce risultati di convalida dettagliati, inclusi errori, avvisi e messaggi informativi

1. Non esegue alcuna operazione di archiviazione, solo convalida

1. Restituisce HTTP 200 OK quando è possibile eseguire la convalida, indipendentemente dal fatto che vengano rilevati problemi di convalida

## Modalità di convalida
<a name="validate-modes"></a>
+ **create**: convalida la risorsa come se fosse in fase di creazione (nuova risorsa)
+ **update**: convalida la risorsa come se fosse in fase di aggiornamento (risorsa esistente)

## Gestione errori
<a name="validate-error-handling"></a>

L'operazione restituisce:
+ 200 OK: la convalida è stata eseguita correttamente (indipendentemente dal risultato della convalida)
+ 400 Bad Request: formato o parametri della richiesta non validi
+ 404 Not Found: Tipo di risorsa o profilo non trovato

Per ulteriori informazioni sulle specifiche `$validate` operative, consulta la documentazione delle [risorse `$validate` FHIR R4](https://www.hl7.org/fhir/R4/operation-resource-validate.html).