

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Validación de los recursos del FHIR con `$validate`
<a name="reference-fhir-operations-validate"></a>

AWS HealthLake ahora admite la `$validate` operación con los recursos del FHIR, lo que le permite validar un recurso según la especificación del FHIR y comprobar su conformidad con un perfil específico o una definición de recurso base sin realizar ninguna operación de almacenamiento. Esta operación resulta especialmente útil cuando se necesita:
+ Validar los requisitos de conformidad con el CMS del FHIR
+ Pruebe los recursos antes de usarlos en producción
+ Proporcione comentarios de validación en tiempo real a medida que los usuarios editan los datos clínicos
+ Reduzca el envío de datos no válidos para crear y actualizar APIs

## De uso
<a name="validate-usage"></a>

La `$validate` operación se puede invocar en los recursos del FHIR mediante los métodos POST:

**Operaciones admitidas**  


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

## Cargas útiles compatibles
<a name="validate-payloads"></a>

**Recurso de parámetros**  


HealthLake admite los siguientes `$validate` parámetros del FHIR:


| Parámetro | Tipo | Obligatorio | Description (Descripción) | 
| --- | --- | --- | --- | 
| resource | Recurso | Sí | El recurso que se va a validar | 
| profile | canonical | No | URL canónica del perfil con el que se va a realizar la validación | 
| mode | code | No | Modo de validación:create, o update | 

**Recurso directo con parámetros de consulta**  



| Parámetro | Tipo | Obligatorio | Description (Descripción) | 
| --- | --- | --- | --- | 
| profile | canonical | No | URL canónica del perfil con el que realizar la validación | 
| mode | code | No | Modo de validación:create, o update | 

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

**Solicitud POST de recurso con carga útil de ID y parámetros**  


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

**Solicitud POST de carga útil sobre el tipo de recurso y los parámetros**  


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

**Solicitud POST de recurso con ID y carga útil de recurso directa**  


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

**Solicitud POST de tipo de recurso y carga útil directa del recurso**  


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

**Respuesta de ejemplo**  
La operación devuelve un OperationOutcome recurso con los resultados de la validación:

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

**Ejemplo de respuesta con errores de validación**  


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

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

La `$validate` operación:

1. Valida el recurso según la especificación del FHIR y la definición del recurso base

1. Comprueba la conformidad con los perfiles especificados cuando se proporciona el parámetro `profile`

1. Valida en función del modo (`create`o) especificado `update`

1. Devuelve los resultados de la validación detallados, incluidos los errores, las advertencias y los mensajes informativos

1. No realiza ninguna operación de almacenamiento, solo de validación

1. Devuelve HTTP 200 OK cuando se puede realizar la validación, independientemente de si se han detectado problemas de validación

## Modos de validación
<a name="validate-modes"></a>
+ **crear**: valida el recurso como si se estuviera creando (recurso nuevo)
+ **actualizar**: valida el recurso como si se estuviera actualizando (recurso existente)

## Gestión de errores
<a name="validate-error-handling"></a>

La operación devuelve:
+ 200 OK: La validación se realizó correctamente (independientemente del resultado de la validación)
+ 400 Solicitud errónea: el formato o los parámetros de la solicitud no son válidos
+ 404 No se encontró: no se encontró el tipo de recurso o perfil

Para obtener más información sobre la especificación de la `$validate` operación, consulte la documentación de [recursos `$validate` del FHIR R4](https://www.hl7.org/fhir/R4/operation-resource-validate.html).