

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.

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

AWS HealthLake prend en charge l'`$bulk-member-match`opération de traitement asynchrone des demandes de correspondance de plusieurs membres. Cette opération permet aux établissements de santé de faire correspondre efficacement les identifiants uniques de centaines de membres dans différents systèmes de santé en utilisant des informations démographiques et de couverture dans une seule demande groupée. Cette fonctionnalité est essentielle pour l'échange de payer-to-payer données à grande échelle, les transitions de membres et les exigences de conformité au CMS et est conforme à la [spécification](https://build.fhir.org/ig/HL7/davinci-epdx/OperationDefinition-BulkMemberMatch.html) FHIR.

**Note**  
L'`$bulk-member-match`opération est basée sur une spécification FHIR sous-jacente qui est actuellement expérimentale et sujette à modification. Au fur et à mesure de l'évolution des spécifications, le comportement et l'interface de cette API seront mis à jour en conséquence. Il est conseillé aux développeurs de surveiller les notes de HealthLake publication d'AWS et les mises à jour pertinentes des spécifications FHIR afin de rester informés de toute modification susceptible d'avoir un impact sur leurs intégrations.

Cette opération est particulièrement utile lorsque vous devez :
+ Procédez au jumelage des membres à grande échelle pendant les périodes d'inscription ouvertes
+ Faciliter les transitions de membres en masse entre les payeurs
+ Support des exigences d'échange de données de conformité des CMS à grande échelle
+ Associez efficacement les cohortes de membres à travers les réseaux de santé
+ Minimisez les appels d'API et améliorez l'efficacité opérationnelle pour les scénarios de mise en correspondance de volumes élevés

## Usage
<a name="bulk-member-match-usage"></a>

L'`$bulk-member-match`opération est une opération asynchrone invoquée sur les ressources du groupe à l'aide de la méthode POST :

```
POST [base]/Group/$bulk-member-match
```

Après avoir soumis une demande de correspondance groupée, vous pouvez consulter le statut du poste en utilisant :

```
GET [base]/$bulk-member-match-status/{jobId}
```

## Paramètres pris en charge
<a name="bulk-member-match-parameters"></a>

HealthLake prend en charge les `$bulk-member-match` paramètres FHIR suivants :


| Paramètre | Type | Obligatoire | Description | 
| --- | --- | --- | --- | 
| `MemberPatient` | Patient | Oui | Ressource destinée aux patients contenant des informations démographiques pour le membre à jumeler. | 
| `CoverageToMatch` | Couverture | Oui | Ressource de couverture qui sera utilisée pour la comparaison avec les enregistrements existants. | 
| `CoverageToLink` | Couverture | Non | Ressource de couverture à associer pendant le processus de mise en correspondance. | 
| `Consent` | Consentement | Oui | La ressource de consentement à des fins d'autorisation est également stockée. Cela est différent de l'`$member-match`opération individuelle pour laquelle le consentement *n'est pas* requis. | 

## Demande POST pour soumettre en masse un job correspondant à un nombre de membres
<a name="bulk-member-match-request-example"></a>

L'exemple suivant montre une demande POST visant à soumettre un job de mise en relation groupé de membres. Chaque membre est encapsulé dans un `MemberBundle` paramètre contenant les `Consent` ressources requises `MemberPatient``CoverageToMatch`, ainsi qu'un paramètre facultatif`CoverageToLink`.

```
POST [base]/Group/$bulk-member-match
Content-Type: application/fhir+json
{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "MemberBundle",
      "part": [
        {
          "name": "MemberPatient",
          "resource": {
            "resourceType": "Patient",
            "identifier": [
              {
                "system": "http://example.org/patient-id",
                "value": "patient-0"
              }
            ],
            "name": [
              {
                "family": "Smith",
                "given": ["James"]
              }
            ],
            "gender": "male",
            "birthDate": "1950-01-01"
          }
        },
        {
          "name": "CoverageToMatch",
          "resource": {
            "resourceType": "Coverage",
            "status": "active",
            "identifier": [
              {
                "system": "http://example.org/coverage-id",
                "value": "cov-0"
              }
            ],
            "subscriberId": "sub-0",
            "beneficiary": {
              "reference": "Patient/patient123"
            },
            "relationship": {
              "coding": [
                {
                  "system": "http://terminology.hl7.org/CodeSystem/subscriber-relationship",
                  "code": "self"
                }
              ]
            },
            "payor": [
              {
                "reference": "Organization/org123"
              }
            ]
          }
        },
        {
          "name": "Consent",
          "resource": {
            "resourceType": "Consent",
            "status": "active",
            "scope": {
              "coding": [
                {
                  "system": "http://terminology.hl7.org/CodeSystem/consentscope",
                  "code": "patient-privacy"
                }
              ]
            },
            "category": [
              {
                "coding": [
                  {
                    "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
                    "code": "IDSCL"
                  }
                ]
              }
            ],
            "patient": {
              "reference": "Patient/patient123"
            },
            "performer": [
              {
                "reference": "Patient/patient123"
              }
            ],
            "sourceReference": {
              "reference": "http://example.org/DocumentReference/consent-source"
            },
            "policy": [
              {
                "uri": "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition-hrex-consent.html#regular"
              }
            ],
            "provision": {
              "type": "permit",
              "period": {
                "start": "2024-01-01",
                "end": "2025-12-31"
              },
              "actor": [
                {
                  "role": {
                    "coding": [
                      {
                        "system": "http://terminology.hl7.org/CodeSystem/provenance-participant-type",
                        "code": "performer"
                      }
                    ]
                  },
                  "reference": {
                    "identifier": {
                      "system": "http://hl7.org/fhir/sid/us-npi",
                      "value": "9876543210"
                    },
                    "display": "Old Health Plan"
                  }
                },
                {
                  "role": {
                    "coding": [
                      {
                        "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType",
                        "code": "IRCP"
                      }
                    ]
                  },
                  "reference": {
                    "identifier": {
                      "system": "http://hl7.org/fhir/sid/us-npi",
                      "value": "0123456789"
                    },
                    "display": "New Health Plan"
                  }
                }
              ],
              "action": [
                {
                  "coding": [
                    {
                      "system": "http://terminology.hl7.org/CodeSystem/consentaction",
                      "code": "disclose"
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "name": "CoverageToLink",
          "resource": {
            "resourceType": "Coverage",
            "status": "active",
            "identifier": [
              {
                "system": "http://example.org/coverage-link-id",
                "value": "cov-link-0"
              }
            ],
            "subscriberId": "new-sub-0",
            "beneficiary": {
              "reference": "Patient/patient123"
            },
            "relationship": {
              "coding": [
                {
                  "system": "http://terminology.hl7.org/CodeSystem/subscriber-relationship",
                  "code": "self"
                }
              ]
            },
            "payor": [
              {
                "identifier": {
                  "system": "http://hl7.org/fhir/sid/us-npi",
                  "value": "0123456789"
                },
                "display": "New Health Plan"
              }
            ]
          }
        }
      ]
    }
  ]
}
```

## Réponse à la tâche terminée avec sortie
<a name="bulk-member-match-response-example"></a>

Lorsque le travail est terminé, la réponse inclut les métadonnées du travail et une ressource de paramètres FHIR contenant trois ressources de groupe qui catégorisent les résultats du match.

```
{
  "datastoreId": "datastoreId",
  "jobId": "jobId",
  "status": "COMPLETED",
  "submittedTime": "2026-03-20T18:45:26.321Z",
  "numberOfMembers": 3,
  "numberOfMembersProcessedSuccessfully": 3,
  "numberOfMembersWithCustomerError": 0,
  "numberOfMembersWithServerError": 0,
  "output": {
    "resourceType": "Parameters",
    "meta": {
      "profile": [
        "http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/pdex-parameters-multi-member-match-bundle-out"
      ]
    },
    "parameter": [
      {
        "name": "MatchedMembers",
        "resource": {
          "resourceType": "Group",
          "id": "group1",
          "text": {
            "status": "generated",
            "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Matched members group</div>"
          },
          "contained": [
            {
              "resourceType": "Patient",
              "id": "1",
              "identifier": [
                {
                  "system": "http://example.org/patient-id",
                  "value": "patient-0"
                }
              ],
              "name": [
                {
                  "family": "Smith",
                  "given": ["James"]
                }
              ],
              "gender": "male",
              "birthDate": "1950-01-01"
            }
          ],
          "type": "person",
          "actual": true,
          "code": {
            "coding": [
              {
                "system": "http://hl7.org/fhir/us/davinci-pdex/CodeSystem/PdexMultiMemberMatchResultCS",
                "code": "match",
                "display": "Matched"
              }
            ]
          },
          "quantity": 1,
          "member": [
            {
              "entity": {
                "extension": [
                  {
                    "url": "http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/base-ext-match-parameters",
                    "valueReference": {
                      "reference": "#1"
                    }
                  }
                ],
                "reference": "Patient/patient123"
              }
            }
          ]
        }
      },
      {
        "name": "NonMatchedMembers",
        "resource": {
          "resourceType": "Group",
          "id": "Group2",
          "text": {
            "status": "generated",
            "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Non-matched members group</div>"
          },
          "contained": [
            {
              "resourceType": "Patient",
              "id": "1",
              "identifier": [
                {
                  "system": "http://example.org/patient-id",
                  "value": "patient-501"
                }
              ],
              "name": [
                {
                  "family": "Carter",
                  "given": ["Emily"]
                }
              ],
              "gender": "female",
              "birthDate": "1985-06-15"
            }
          ],
          "type": "person",
          "actual": true,
          "code": {
            "coding": [
              {
                "system": "http://hl7.org/fhir/us/davinci-pdex/CodeSystem/PdexMultiMemberMatchResultCS",
                "code": "nomatch",
                "display": "Not Matched"
              }
            ]
          },
          "quantity": 1,
          "member": [
            {
              "entity": {
                "extension": [
                  {
                    "url": "http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/base-ext-match-parameters",
                    "valueReference": {
                      "reference": "#1"
                    }
                  }
                ],
                "reference": "Patient/patient123"
              }
            }
          ]
        }
      },
      {
        "name": "ConsentConstrainedMembers",
        "resource": {
          "resourceType": "Group",
          "id": "group3",
          "text": {
            "status": "generated",
            "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Consent constrained members group</div>"
          },
          "contained": [
            {
              "resourceType": "Patient",
              "id": "1",
              "identifier": [
                {
                  "system": "http://example.org/patient-id",
                  "value": "patient-502"
                }
              ],
              "name": [
                {
                  "family": "Nguyen",
                  "given": ["David"]
                }
              ],
              "gender": "male",
              "birthDate": "1972-11-22"
            }
          ],
          "type": "person",
          "actual": true,
          "code": {
            "coding": [
              {
                "system": "http://hl7.org/fhir/us/davinci-pdex/CodeSystem/PdexMultiMemberMatchResultCS",
                "code": "consentconstraint",
                "display": "Consent Constraint"
              }
            ]
          },
          "quantity": 1,
          "member": [
            {
              "entity": {
                "extension": [
                  {
                    "url": "http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/base-ext-match-parameters",
                    "valueReference": {
                      "reference": "#1"
                    }
                  }
                ],
                "reference": "Patient/123"
              }
            }
          ]
        }
      }
    ]
  }
}
```

## Ressources du groupe de sortie
<a name="bulk-member-match-output-groups"></a>

La tâche terminée renvoie une ressource Parameters contenant trois ressources de groupe :

**MatchedMembers Groupe**  
Contient les références des patients pour tous les membres correctement mis en correspondance et n'est pas classé dans la catégorie des contraintes de consentement.

Le `Group.quantity` champ contient le nombre total de membres dans chacun de leurs groupes respectifs.

**NonMatchedMembers Groupe**  
Contient des références aux membres pour lesquels aucune correspondance n'a été trouvée ou plusieurs correspondances ont été identifiées.

**ConsentConstrainedMembers Groupe**  
Contient des références de patients pour tous les membres mis en correspondance avec succès lorsque les contraintes de consentement empêchent le partage de données. Une ressource de consentement est considérée comme limitée lorsque les deux conditions suivantes sont présentes :  
+ **L'URI de la politique se termine par `#sensitive`** — Il s'agit du signal le plus clair et le plus direct. Le payeur soumissionnaire déclare explicitement : « Les données de ce membre sont sensibles, manipulez-les avec soin ».

  ```
  "policy": [{ "uri": "...hrex-consent.html#sensitive" }]
  ```
+ **Le type de disposition de niveau supérieur est** le `deny` suivant : le membre a largement refusé le partage de données.

  ```
  "provision": { "type": "deny" }
  ```

## Intégration avec \$1 davinci-data-export
<a name="bulk-member-match-davinci-integration"></a>

La ressource de MatchedMembers groupe renvoyée par `$bulk-member-match` peut être directement utilisée avec l'`$davinci-data-export`opération de récupération des données des membres en masse :

```
POST [base]/Group/{matched-group-id}/$davinci-data-export
GET [base]/Group/{matched-group-id}
```

Cette intégration permet des flux de travail efficaces dans lesquels vous identifiez d'abord les membres correspondants en masse, puis exportez leurs dossiers médicaux complets à l'aide de la ressource de groupe qui en résulte.

## Caractéristiques de performance
<a name="bulk-member-match-performance"></a>

L'`$bulk-member-match`opération est conçue pour le traitement de gros volumes et s'exécute de manière asynchrone :
+ **Simultanéité** : maximum de 5 opérations simultanées par magasin de données.
+ **Évolutivité** : gère jusqu'à 500 membres par demande (limite de charge utile de 5 Mo).
+ **Opérations parallèles** : compatible avec les opérations simultanées d'importation, d'exportation ou de suppression en bloc.

## Autorisation
<a name="bulk-member-match-authorization"></a>

L'API utilise le protocole d'autorisation SMART on FHIR avec les étendues requises suivantes :
+ `system/Patient.read`— Nécessaire pour rechercher et associer les ressources destinées aux patients.
+ `system/Coverage.read`— Nécessaire pour valider les informations de couverture.
+ `system/Group.write`— Nécessaire pour créer des ressources de groupe de résultats.
+ `system/Organization.read`— Conditionnel, obligatoire si la couverture fait référence à des organisations.
+ `system/Practitioner.read`— Conditionnel, obligatoire si la couverture fait référence à des praticiens.
+ `system/PractitionerRole.read`— Conditionnel, obligatoire si la couverture fait référence aux rôles des praticiens.
+ `system/Consent.write`— Conditionnel, obligatoire si des ressources de consentement sont fournies.

L'opération prend également en charge AWS l'autorisation IAM Signature Version 4 (SigV4) pour l'accès programmatique.

## Gestion des erreurs
<a name="bulk-member-match-errors"></a>

L'opération gère les conditions d'erreur suivantes :
+ **400 Mauvaise demande** : format de demande non valide, paramètres requis manquants ou charge utile supérieure aux limites de taille (500 membres ou 5 Mo).
+ **422 Entité intraitable** : erreurs de traitement lors de l'exécution de la tâche.
+ **Erreurs relatives à un membre individuel** : lorsqu'un membre en particulier échoue, l'opération se poursuit avec les membres restants et inclut les détails de l'erreur dans le NonMatchedMembers groupe avec les codes de motif appropriés. Par exemple, un `MemberBundle` Patient dont le `birthDate` paramètre est absent renverra le message d'erreur suivant :

  ```
  "errors": [
    {
      "memberIndex": 1,
      "jsonBlob": {
        "resourceType": "OperationOutcome",
        "issue": [
          {
            "severity": "error",
            "code": "invalid",
            "diagnostics": "MemberPatient.birthDate is required"
          }
        ],
        "statusCode": 400
      }
    }
  ]
  ```

Les détails de l'erreur sont disponibles via le point de terminaison du sondage d'état et incluent :
+ `numberOfMembersWithCustomerError`: Nombre de membres présentant des erreurs de validation ou de saisie.
+ `numberOfMembersWithServerError`: nombre de membres présentant des erreurs de traitement côté serveur.

## Opérations liées
<a name="bulk-member-match-related"></a>
+ [`$member-match`opération pour HealthLake](reference-fhir-operations-member-match.md)— Opération de mise en correspondance de membres individuels.
+ [Fonctionnement du FHIR R4 `$davinci-data-export` pour HealthLake](reference-fhir-operations-davinci-data-export.md)— Exportation de données en masse à l'aide des ressources du groupe.
+ [FHIR R4 pour `$operations` HealthLake](reference-fhir-operations.md)— Liste complète des opérations prises en charge.