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.
Modification des ressources à l'aide de l'opération PATCH
AWS HealthLake prend en charge l'opération PATCH pour les ressources FHIR, vous permettant de modifier les ressources en ciblant des éléments spécifiques à ajouter, remplacer ou supprimer sans mettre à jour l'intégralité de la ressource. Cette opération est particulièrement utile lorsque vous devez :
-
Procéder à des mises à jour ciblées à des ressources importantes
-
Réduire l'utilisation de la bande passante du réseau
-
Effectuer des modifications atomiques sur des éléments de ressources spécifiques
-
Minimisez le risque de remplacer des modifications simultanées
-
Mettre à jour les ressources dans le cadre des flux de travail par lots et par transactions
Formats PATCH pris en charge
AWS HealthLake prend en charge deux formats PATCH standard :
Correctif JSON (RFC 6902)
Utilise la syntaxe du pointeur JSON pour cibler les éléments en fonction de leur position dans la structure des ressources.
Type de contenu : application/json-patch+json
FHIRPath Patch (spécification FHIR R4)
Utilise des FHIRPath expressions pour cibler les éléments en fonction de leur contenu et de leurs relations, offrant ainsi une approche native du FHIR pour l'application de correctifs.
Type de contenu : application/fhir+json
Usage
Opérations PATCH directes
L'opération PATCH peut être invoquée directement sur les ressources FHIR à l'aide de la méthode HTTP PATCH :
PATCH [base]/[resource-type]/[id]{?_format=[mime-type]}
PATCH en packs
Les opérations PATCH peuvent être incluses sous forme d'entrées dans des ensembles FHIR de type batch outransaction, ce qui vous permet de combiner des opérations de correctif avec d'autres interactions FHIR (création, lecture, mise à jour, suppression) dans une seule demande.
-
Packs de transactions : toutes les entrées réussissent ou échouent de manière atomique
-
Batch bundles : chaque entrée est traitée indépendamment
Format de correctif JSON
Opérations prises en charge
| Opération | Description |
|---|---|
add |
Ajouter une nouvelle valeur à la ressource |
remove |
Supprimer une valeur de la ressource |
replace |
Remplacer une valeur existante dans la ressource |
move |
Supprimer une valeur d'un emplacement et l'ajouter à un autre |
copy |
Copier une valeur d'un emplacement à un autre |
test |
Vérifiez qu'une valeur à l'emplacement cible est égale à une valeur spécifiée |
Syntaxe du chemin
Le patch JSON utilise la syntaxe du pointeur JSON (RFC 6901) :
| Exemple de chemin | Description |
|---|---|
/name/0/family |
Élément de famille du prénom |
/telecom/- |
Ajouter au réseau de télécommunications |
/active |
Élément actif au niveau de la racine |
/address/0/line/1 |
Deuxième ligne de la première adresse |
Exemples
Demande de correctif JSON directe avec plusieurs opérations
PATCH [base]/Patient/example
Content-Type: application/json-patch+json
If-Match: W/"1"
[
{
"op": "replace",
"path": "/name/0/family",
"value": "Smith"
},
{
"op": "add",
"path": "/telecom/-",
"value": {
"system": "phone",
"value": "555-555-5555",
"use": "home"
}
},
{
"op": "remove",
"path": "/address/0"
},
{
"op": "move",
"from": "/name/0/family",
"path": "/name/1/family"
},
{
"op": "test",
"path": "/gender",
"value": "male"
},
{
"op": "copy",
"from": "/name/0",
"path": "/name/1"
}
]
Demande de correctif JSON directe avec une seule opération
PATCH [base]/Patient/example
Content-Type: application/json-patch+json
[
{
"op": "replace",
"path": "/active",
"value": false
}
]
Patch JSON dans le bundle
Utilisez une ressource binaire contenant la charge utile du patch JSON codé en base64 :
{
"resourceType": "Bundle",
"type": "transaction",
"entry": [{
"resource": {
"resourceType": "Binary",
"contentType": "application/json-patch+json",
"data": "W3sib3AiOiJhZGQiLCJwYXRoIjoiL2JpcnRoRGF0ZSIsInZhbHVlIjoiMTk5MC0wMS0wMSJ9XQ=="
},
"request": {
"method": "PATCH",
"url": "Patient/123"
}
}]
}
FHIRPath Format du correctif
Opérations prises en charge
| Opération | Description |
|---|---|
add |
Ajouter un nouvel élément à une ressource |
insert |
Insérer un élément à un endroit précis dans une liste |
delete |
Supprimer un élément d'une ressource |
replace |
Remplacer la valeur d'un élément existant |
move |
Réorganiser les éléments d'une liste |
Syntaxe du chemin
FHIRPath Le correctif utilise des FHIRPath expressions prenant en charge :
-
Accès basé sur un index :
Patient.name[0] -
Filtrer avec
where():Patient.name.where(use = 'official') -
Logique booléenne :
Patient.telecom.where(system = 'phone' and use = 'work') -
Fonctions de sous-définition :
first(),last() -
Contrôles d'existence :
exists(),count() -
Navigation polymorphe :
Observation.value
Exemples
Demande de FHIRPath correctif directe
PATCH [base]/Patient/123
Content-Type: application/fhir+json
Authorization: ...
{
"resourceType": "Parameters",
"parameter": [{
"name": "operation",
"part": [
{ "name": "type", "valueCode": "add" },
{ "name": "path", "valueString": "Patient" },
{ "name": "name", "valueString": "birthDate" },
{ "name": "value", "valueDate": "1990-01-01" }
]
}]
}
FHIRPath Patch dans le bundle
Utilisez une ressource Parameters comme ressource d'entrée avec method: PATCH :
{
"resourceType": "Bundle",
"type": "transaction",
"entry": [{
"resource": {
"resourceType": "Parameters",
"parameter": [{
"name": "operation",
"part": [
{ "name": "type", "valueCode": "add" },
{ "name": "path", "valueString": "Patient" },
{ "name": "name", "valueString": "birthDate" },
{ "name": "value", "valueDate": "1990-01-01" }
]
}]
},
"request": {
"method": "PATCH",
"url": "Patient/123"
}
}]
}
En-têtes de demande
| En-tête | Obligatoire | Description |
|---|---|---|
Content-Type |
Oui | application/json-patch+jsonpour JSON Patch ou application/fhir+json pour FHIRPath Patch |
If-Match |
Non | Mise à jour conditionnelle spécifique à la version à l'aide de ETag |
Exemple de réponse
L'opération renvoie la ressource mise à jour avec les nouvelles informations de version :
HTTP/1.1 200 OK
Content-Type: application/fhir+json
ETag: W/"2"
Last-Modified: Mon, 05 May 2025 10:10:10 GMT
{
"resourceType": "Patient",
"id": "example",
"active": true,
"name": [
{
"family": "Smith",
"given": ["John"]
}
],
"telecom": [
{
"system": "phone",
"value": "555-555-5555",
"use": "home"
}
],
"meta": {
"versionId": "2",
"lastUpdated": "2025-05-05T10:10:10Z"
}
}
Comportement
L'opération PATCH :
-
Valide la syntaxe du correctif conformément à la spécification appropriée (RFC 6902 pour le correctif JSON, FHIR R4 pour le correctif) FHIRPath
-
Applique les opérations de manière atomique : toutes les opérations réussissent ou échouent
-
Met à jour l'ID de version de la ressource et crée une nouvelle entrée d'historique
-
Préserve la ressource d'origine dans l'historique avant d'appliquer les modifications
-
Valide les contraintes de ressources FHIR après l'application des correctifs
-
Supporte les mises à jour conditionnelles à l'aide de l'en-tête If-Match avec ETag
Gestion des erreurs
L'opération gère les conditions d'erreur suivantes :
-
400 Mauvaise demande : syntaxe de correctif non valide (demande non conforme ou document de correctif mal formé)
-
404 Introuvable : ressource introuvable (l'ID spécifié n'existe pas)
-
409 Conflit : conflit de version (mises à jour simultanées ou identifiant de version non actuel fourni)
-
422 Entité non traitable : les opérations de correctif ne peuvent pas être appliquées aux éléments de ressource spécifiés
Résumé des capacités
| Capacité | Correctif JSON | FHIRPath Patch |
|---|---|---|
| Type de contenu | application/json-patch+json |
application/fhir+json |
| Format du chemin | Pointeur JSON (RFC 6901) | FHIRPath expressions |
| API PATCH directe | Pris en charge | Pris en charge |
| Bundle Batch | Pris en charge (via le binaire) | Pris en charge (via les paramètres) |
| Transaction groupée | Pris en charge (via le binaire) | Pris en charge (via les paramètres) |
| Opérations | ajouter, supprimer, remplacer, déplacer, copier, tester | ajouter, insérer, supprimer, remplacer, déplacer |
Limitations
-
Les opérations PATCH conditionnelles utilisant des conditions de recherche ne sont pas prises en charge
-
Les patchs JSON intégrés aux bundles doivent utiliser des ressources binaires avec un contenu codé en base64
-
FHIRPath Les packs de patchs doivent utiliser les ressources de paramètres
Ressources supplémentaires
Pour plus d'informations sur les opérations PATCH, voir :