

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# `$member-add`opération pour HealthLake
<a name="reference-fhir-operations-member-add"></a>

L'`$member-add`opération FHIR ajoute un membre (patient) à une ressource de groupe, en particulier à une liste d'attribution de membres. Cette opération fait partie du guide de mise en œuvre de l'attribution des DaVinci membres et soutient le processus de rapprochement pour la gestion des attributions des membres.

## Opération 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'opération accepte une ressource de paramètres FHIR avec les combinaisons de paramètres suivantes :

### Options de paramètres
<a name="member-add-parameter-options"></a>

Vous pouvez utiliser l'une des combinaisons de paramètres suivantes :

Option 1 : ID de membre \$1 NPI du fournisseur  
`memberId` \$1 `providerNpi`  
`memberId` \$1 `providerNpi` \$1 `attributionPeriod`

Option 2 : référence du patient et référence du fournisseur  
`patientReference` \$1 `providerReference`  
`patientReference` \$1 `providerReference` \$1 `attributionPeriod`

### Détails des paramètres
<a name="member-add-parameter-details"></a>

ID de membre (facultatif)  
Identifiant du membre à ajouter au groupe.  
Type : Identifiant  
Système : système d'identification du patient  

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

ProviderNPI (facultatif)  
L'identifiant national du fournisseur (NPI) du fournisseur attribué.  
Type : Identifiant  
Système : http://terminology.hl7. org/CodeSystem/NPI  

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

Référence du patient (facultatif)  
Référence directe à la ressource patient à ajouter.  
Type : Référence  

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

Référence du fournisseur (facultatif)  
Référence directe à la ressource du fournisseur.  
Type : Référence  

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

Période d'attribution (facultatif)  
Période pendant laquelle le patient est attribué au prestataire.  
Type : Période  

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

## Exemples de demandes
<a name="member-add-examples"></a>

### Utilisation de l'ID de membre et du NPI du fournisseur
<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"
      }
    }
  ]
}
```

### Utilisation des références des patients et des prestataires
<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"
      }
    }
  ]
}
```

## Format de la réponse
<a name="member-add-response"></a>

### Réponse d'ajout réussie
<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."
      }
    }
  ]
}
```

### Réponses d’erreur
<a name="member-add-error-responses"></a>

Syntaxe de demande non valide  
État HTTP : 400 demandes incorrectes  

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

Ressource introuvable  
État HTTP : 404 introuvable  

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

Conflit de version  
État HTTP : 409 Conflit  

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

État d'attribution non valide  
État HTTP : 422 Entité non traitable  

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

## Règles commerciales
<a name="member-add-business-rules"></a>

Validation du statut d'attribution  
L'opération ne peut être effectuée que lorsque le statut d'attribution du groupe est :  
+ `draft`
+ `open`
Les opérations ne sont pas autorisées lorsque le statut est défini`final`.

Prévention des doublons de membres  
Le système empêche l'ajout de membres dupliqués sur la base de la combinaison unique de :  
+ Identifiant du membre
+ Identifiant du payeur
+ Identifiant de couverture

Validation des périodes de couverture  
Lorsqu'une offre `attributionPeriod` est fournie, elle doit se situer dans les limites de la période de couverture du membre. Le système va :  
+ Recherchez la ressource de couverture du membre
+ Utiliser la couverture la plus récente (versionID le plus élevé) s'il en existe plusieurs
+ Validez que la période d'attribution ne dépasse pas la période de couverture

Validation des références  
Lorsque l'identifiant et la référence sont fournis pour la même ressource (patient ou fournisseur), le système valide qu'ils correspondent à la même ressource.  
Lorsque les champs ID et reference.identifier sont fournis pour la même ressource (patient ou fournisseur), une erreur est générée.

## Authentification et autorisation
<a name="member-add-auth"></a>

L'opération nécessite une autorisation SMART on FHIR pour :
+ Permissions de lecture : pour valider les ressources du patient, du fournisseur et du groupe
+ Autorisations de recherche : pour rechercher des ressources par identifiant
+ Mettre à jour les autorisations : pour modifier la ressource du groupe

## Comportement opérationnel
<a name="member-add-behavior"></a>

Mise à jour des ressources  
+ Met à jour l'ID de version de la ressource du groupe
+ Crée une entrée d'historique avec l'état de la ressource d'origine avant l'opération
+ Ajoute des informations sur les membres au tableau Group.member avec :
  + Référence du patient dans entity.reference
  + Période d'attribution dans la période
  + Couverture et informations sur les fournisseurs dans les domaines d'extension

Étapes de validation  
+ Validation des paramètres : garantit la validité des combinaisons de paramètres
+ Existence des ressources : valide l'existence des ressources du patient, du fournisseur et du groupe
+ État d'attribution : confirme que le statut du groupe autorise les modifications
+ Duplicate Check - Empêche l'ajout de membres existants
+ Validation de la couverture : garantit que la période d'attribution se situe dans les limites de couverture

## Limitations
<a name="member-add-limitations"></a>
+ Toutes les ressources référencées doivent exister dans la même banque de données
+ L'opération ne fonctionne qu'avec les ressources du groupe de listes d'attribution de membres
+ Les périodes d'attribution doivent se situer dans les limites de couverture
+ Impossible de modifier les groupes ayant le statut « final »