

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.

# `$member-add`operación para HealthLake
<a name="reference-fhir-operations-member-add"></a>

La `$member-add` operación del FHIR añade a un miembro (paciente) a un recurso del grupo, específicamente a una lista de atribuciones de miembros. Esta operación forma parte de la Guía de implementación de las atribuciones de DaVinci los miembros y apoya el proceso de conciliación para gestionar las atribuciones de los miembros.

## Operation Endpoint
<a name="member-add-endpoint"></a>

```
POST [base]/datastore/{datastoreId}/r4/Group/{groupId}/$member-add
Content-Type: application/json
```

## Parameters
<a name="member-add-parameters"></a>

La operación acepta un recurso de parámetros del FHIR con las siguientes combinaciones de parámetros:

### Opciones de parámetros
<a name="member-add-parameter-options"></a>

Puede utilizar una de las siguientes combinaciones de parámetros:

Opción 1: ID de miembro \$1 NPI del proveedor  
`memberId` \$1 `providerNpi`  
`memberId` \$1 `providerNpi` \$1 `attributionPeriod`

Opción 2: referencia del paciente \$1 referencia del proveedor  
`patientReference` \$1 `providerReference`  
`patientReference` \$1 `providerReference` \$1 `attributionPeriod`

### Detalles de los parámetros
<a name="member-add-parameter-details"></a>

ID de miembro (opcional)  
El identificador del miembro que se va a añadir al grupo.  
Tipo: identificador  
Sistema: sistema de identificación de pacientes  

```
{
  "name": "memberId",
  "valueIdentifier": {
    "system": "http://example.org/patient-id",
    "value": "patient-new"
  }
}
```

Proveedor NPI (opcional)  
El identificador nacional de proveedores (NPI) del proveedor atribuido.  
Tipo: identificador  
Sistema: http://terminology.hl7. org/CodeSystem/NPI  

```
{
  "name": "providerNpi",
  "valueIdentifier": {
    "system": "http://terminology.hl7.org/CodeSystem/NPI",
    "value": "1234567890"
  }
}
```

Referencia del paciente (opcional)  
Referencia directa al recurso para pacientes que se va a añadir.  
Tipo: Referencia  

```
{
  "name": "patientReference",
  "valueReference": {
    "reference": "Patient/patient-123"
  }
}
```

ProviderReference (opcional)  
Referencia directa al recurso del proveedor.  
Tipo: Referencia  

```
{
  "name": "providerReference",
  "valueReference": {
    "reference": "Practitioner/provider-456"
  }
}
```

Periodo de atribución (opcional)  
El período durante el cual se atribuye el paciente al proveedor.  
Tipo: Periodo  

```
{
  "name": "attributionPeriod",
  "valuePeriod": {
    "start": "2024-07-15",
    "end": "2025-07-14"
  }
}
```

## Ejemplos de solicitudes
<a name="member-add-examples"></a>

### Uso de la identificación de miembro y el NPI del proveedor
<a name="member-add-example-id-npi"></a>

```
{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "memberId",
      "valueIdentifier": {
        "system": "http://example.org/patient-id",
        "value": "patient-new"
      }
    },
    {
      "name": "providerNpi",
      "valueIdentifier": {
        "system": "http://terminology.hl7.org/CodeSystem/NPI",
        "value": "1234567890"
      }
    },
    {
      "name": "attributionPeriod",
      "valuePeriod": {
        "start": "2024-07-15",
        "end": "2025-07-14"
      }
    }
  ]
}
```

### Uso de referencias de pacientes y proveedores
<a name="member-add-example-references"></a>

```
{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "patientReference",
      "valueReference": {
        "reference": "Patient/patient-123"
      }
    },
    {
      "name": "providerReference",
      "valueReference": {
        "reference": "Practitioner/provider-456"
      }
    },
    {
      "name": "attributionPeriod",
      "valuePeriod": {
        "start": "2024-07-15",
        "end": "2025-07-14"
      }
    }
  ]
}
```

## Formato de respuesta
<a name="member-add-response"></a>

### Respuesta de adición exitosa
<a name="member-add-success-response"></a>

```
HTTP Status: 200 OK
Content-Type: application/fhir+json

{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "success",
      "code": "informational",
      "details": {
        "text": "Member Patient/patient-new successfully added to the Member Attribution List."
      }
    }
  ]
}
```

### Respuestas de error
<a name="member-add-error-responses"></a>

Sintaxis de solicitud no válida  
Estado HTTP: 400 solicitud incorrecta  

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "invalid",
      "details": {
        "text": "Invalid parameter combination provided"
      }
    }
  ]
}
```

Recurso no encontrado  
Estado HTTP: 404 no encontrado  

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "not-found",
      "details": {
        "text": "Resource not found."
      }
    }
  ]
}
```

Conflicto de versiones  
Estado HTTP: 409 Conflicto  

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "conflict",
      "details": {
        "text": "Resource version conflict detected"
      }
    }
  ]
}
```

Estado de atribución no válido  
Estado HTTP: 422 Entidad inprocesable  

```
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "business-rule",
      "details": {
        "text": "Cannot add member to Attribution List with status 'final'. Status must be 'draft' or 'open'."
      }
    }
  ]
}
```

## Reglas de negocio
<a name="member-add-business-rules"></a>

Validación del estado de la atribución  
La operación solo se puede realizar cuando el estado de atribución del grupo es:  
+ `draft`
+ `open`
No se permiten operaciones cuando el estado es`final`.

Prevención de miembros duplicados  
El sistema evita la adición de miembros duplicados en función de la combinación única de:  
+ Identificador de miembro
+ Identificador del pagador
+ Identificador de cobertura

Validación del período de cobertura  
Cuando `attributionPeriod` se proporciona uno, debe estar dentro de los límites del período de cobertura del miembro. El sistema hará lo siguiente:  
+ Busque el recurso de cobertura del miembro
+ Usa la cobertura más reciente (VersionID más alta) si existen varias
+ Valide que el período de atribución no exceda el período de cobertura

Validación de referencia  
Cuando se proporcionan tanto la identificación como la referencia para el mismo recurso (paciente o proveedor), el sistema valida que corresponden al mismo recurso.  
Cuando se proporcionan los campos ID y reference.identifier para el mismo recurso (paciente o proveedor), se produce un error.

## Autenticación y autorización
<a name="member-add-auth"></a>

La operación requiere la autorización de SMART on FHIR para:
+ Permisos de lectura: para validar los recursos de pacientes, proveedores y grupos
+ Permisos de búsqueda: para buscar recursos por identificador
+ Permisos de actualización: para modificar el recurso del grupo

## Comportamiento operativo
<a name="member-add-behavior"></a>

Actualizaciones de recursos  
+ Actualiza el ID de versión del recurso del grupo
+ Crea una entrada en el historial con el estado original del recurso antes de la operación
+ Añade la información de los miembros a la matriz group.Member con:
  + Referencia del paciente en entity.reference
  + Período de atribución en período
  + Información sobre la cobertura y el proveedor en los campos de extensión

Pasos de validación  
+ Validación de parámetros: garantiza la validez de las combinaciones de parámetros
+ Existencia de recursos: valida la existencia de recursos para pacientes, proveedores y grupos
+ Estado de atribución: confirma que el estado del grupo permite modificaciones
+ Verificación duplicada: impide añadir miembros existentes
+ Validación de la cobertura: garantiza que el período de atribución esté dentro de los límites de cobertura

## Limitaciones
<a name="member-add-limitations"></a>
+ Todos los recursos a los que se hace referencia deben estar en el mismo almacén de datos
+ La operación solo funciona con los recursos del grupo de listas de atribución de miembros
+ Los períodos de atribución deben estar dentro de los límites de cobertura
+ No se pueden modificar los grupos con el estado «final»