

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

# `$member-add`operazione per HealthLake
<a name="reference-fhir-operations-member-add"></a>

L'`$member-add`operazione FHIR aggiunge un membro (paziente) a una risorsa del Gruppo, in particolare a una lista di attribuzione dei membri. Questa operazione fa parte della DaVinci Member Attribution Implementation Guide e supporta il processo di riconciliazione per la gestione delle attribuzioni dei membri.

## Operazione 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>

L'operazione accetta una risorsa FHIR Parameters con le seguenti combinazioni di parametri:

### Opzioni dei parametri
<a name="member-add-parameter-options"></a>

È possibile utilizzare una delle seguenti combinazioni di parametri:

Opzione 1: Member ID \$1 Provider NPI  
`memberId` \$1 `providerNpi`  
`memberId` \$1 `providerNpi` \$1 `attributionPeriod`

Opzione 2: riferimento per il paziente e riferimento per il fornitore  
`patientReference` \$1 `providerReference`  
`patientReference` \$1 `providerReference` \$1 `attributionPeriod`

### Dettagli dei parametri
<a name="member-add-parameter-details"></a>

MemberID (opzionale)  
L'identificatore del membro da aggiungere al gruppo.  
Tipo: identificatore  
Sistema: sistema di identificazione del paziente  

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

ProviderNPI (opzionale)  
Il National Provider Identifier (NPI) del provider attribuito.  
Tipo: identificatore  
Sistema: http://terminology.hl7. org/CodeSystem/NPI  

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

Riferimento per il paziente (opzionale)  
Riferimento diretto alla risorsa per il paziente da aggiungere.  
Tipo: riferimento  

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

ProviderReference (opzionale)  
Riferimento diretto alla risorsa del provider.  
Tipo: riferimento  

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

Periodo di attribuzione (opzionale)  
Il periodo di tempo durante il quale il paziente viene attribuito al fornitore.  
Tipo: Periodo  

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

## Esempi di richieste
<a name="member-add-examples"></a>

### Utilizzo dell'ID membro e del provider NPI
<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"
      }
    }
  ]
}
```

### Utilizzo dei riferimenti di pazienti e fornitori
<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 della risposta
<a name="member-add-response"></a>

### Risposta di aggiunta riuscita
<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."
      }
    }
  ]
}
```

### Risposte agli errori
<a name="member-add-error-responses"></a>

Sintassi di richiesta non valida  
Stato HTTP: 400 Richiesta errata  

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

Risorsa non trovata  
Stato HTTP: 404 non trovato  

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

Conflitto di versione  
Stato HTTP: conflitto 409  

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

Stato di attribuzione non valido  
Stato HTTP: 422 Entità non processabile  

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

## Regole aziendali
<a name="member-add-business-rules"></a>

Convalida dello stato di attribuzione  
L'operazione può essere eseguita solo quando lo stato di attribuzione del gruppo è:  
+ `draft`
+ `open`
Le operazioni non sono consentite quando lo stato è`final`.

Prevenzione della duplicazione dei membri  
Il sistema impedisce l'aggiunta di membri duplicati in base alla combinazione unica di:  
+ Identificatore del membro
+ Identificativo del pagatore
+ Identificatore di copertura

Convalida del periodo di copertura  
Quando ne `attributionPeriod` viene fornita una, questa deve rientrare nei limiti del periodo di copertura del socio. Il sistema consentirà di:  
+ Cerca la risorsa Coverage del socio
+ Usa la copertura più recente (VersionID più alto) se ne esistono più
+ Verifica che il periodo di attribuzione non superi il periodo di copertura

Convalida del riferimento  
Quando vengono forniti sia l'ID che il riferimento per la stessa risorsa (paziente o fornitore), il sistema verifica che corrispondano alla stessa risorsa.  
Quando vengono forniti entrambi i campi ID e reference.identifier per la stessa risorsa (paziente o fornitore), viene generato un errore.

## Autenticazione e autorizzazione
<a name="member-add-auth"></a>

L'operazione richiede l'autorizzazione SMART on FHIR per:
+ Autorizzazioni di lettura: per convalidare le risorse di pazienti, fornitori e gruppi
+ Autorizzazioni di ricerca: per trovare risorse in base all'identificatore
+ Aggiorna le autorizzazioni: per modificare la risorsa del gruppo

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

Aggiornamenti delle risorse  
+ Aggiorna l'ID della versione della risorsa del gruppo
+ Crea una voce di cronologia con lo stato originale della risorsa prima dell'operazione
+ Aggiunge le informazioni sui membri all'array Group.member con:
  + Riferimento al paziente in entity.reference
  + Periodo di attribuzione in periodo
  + Informazioni sulla copertura e sul fornitore nei campi di estensione

Fasi di convalida  
+ Convalida dei parametri: garantisce combinazioni di parametri valide
+ Esistenza di risorse: verifica l'esistenza di risorse per pazienti, fornitori e gruppi
+ Stato di attribuzione: conferma che lo stato del gruppo consente modifiche
+ Duplicate Check: impedisce l'aggiunta di membri esistenti
+ Convalida della copertura: garantisce che il periodo di attribuzione rientri nei limiti di copertura

## Limitazioni
<a name="member-add-limitations"></a>
+ Tutte le risorse referenziate devono esistere all'interno dello stesso datastore
+ L'operazione funziona solo con le risorse del Member Attribution List Group
+ I periodi di attribuzione devono rientrare nei limiti di copertura
+ Non è possibile modificare i gruppi con lo stato «finale»