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à.
Modifica delle risorse con l'operazione PATCH
AWS HealthLake ora supporta l'operazione PATCH per le risorse FHIR, che consente di modificare le risorse prendendo di mira elementi specifici da aggiungere, sostituire o eliminare senza aggiornare l'intera risorsa. Questa operazione è particolarmente utile per i client remoti o per quelli con larghezza di banda limitata che desiderano ridurre l'utilizzo della rete. Questa operazione è particolarmente utile quando è necessario:
-
Effettuare aggiornamenti mirati a risorse di grandi dimensioni
-
Riduci l'utilizzo della larghezza di banda di rete
-
Esegui modifiche atomiche su elementi di risorse specifici
-
Riduci al minimo il rischio di sovrascrivere le modifiche simultanee
Utilizzo
L'operazione PATCH può essere richiamata sulle risorse FHIR utilizzando il metodo HTTP PATCH:
Operazioni supportate
PATCH [base]/[resource-type]/[id]{?_format=[mime-type]}
Operazioni PATCH supportate
HealthLake supporta le seguenti operazioni di patch JSON
| Operazione | Descrizione |
|---|---|
add |
Aggiungi un nuovo valore alla risorsa |
remove |
Rimuove un valore dalla risorsa |
replace |
Sostituisci un valore esistente nella risorsa |
move |
Identico dal punto di vista funzionale a un'operazione di «rimozione» sulla posizione «da», seguita immediatamente da un'operazione di «aggiunta» nella posizione di destinazione con il valore appena rimosso |
copy |
Copia il valore in una posizione specificata nella posizione di destinazione |
test |
Verifica che un valore nella posizione di destinazione sia uguale a un valore specificato |
Intestazioni di richiesta
| Header | Richiesto | Descrizione |
|---|---|---|
Content-Type |
Sì | Deve essere application/json-patch+json |
If-Match |
No | Aggiornamento condizionale specifico della versione utilizzando ETag |
Esempi
Richiesta PATCH con più operazioni
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": "************",
"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"
}
]
Richiesta PATCH con singola operazione
PATCH [base]/Patient/example
Content-Type: application/json-patch+json
[
{
"op": "replace",
"path": "/active",
"value": false
}
]
Risposta di esempio
L'operazione restituisce la risorsa aggiornata con le informazioni sulla nuova versione:
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": "************",
"use": "home"
}
],
"meta": {
"versionId": "2",
"lastUpdated": "2025-05-05T10:10:10Z"
}
}
Sintassi JSON Patch Path
Il parametro path utilizza la sintassi JSON Pointer (RFC 6901):
| Esempio di percorso | Descrizione |
|---|---|
/name/0/family |
Elemento della famiglia del nome |
/telecom/- |
Aggiungi all'array di telecomunicazioni |
/active |
Elemento attivo a livello di root |
/address/0/line/1 |
Seconda riga del primo indirizzo |
Comportamento
L'operazione PATCH:
-
Convalida la sintassi della patch JSON secondo RFC 6902 e RFC 6901
-
Applica le operazioni in modo atomico: tutte le operazioni hanno esito positivo o negativo
-
Aggiorna l'ID della versione della risorsa e crea una nuova voce della cronologia
-
Conserva la risorsa originale nella cronologia prima di applicare le modifiche
-
Convalida i vincoli delle risorse FHIR dopo l'applicazione delle patch
-
Supporta gli aggiornamenti condizionali utilizzando l'intestazione If-Match con ETag
Gestione errori
L'operazione gestisce le seguenti condizioni di errore:
-
400 Bad Request: sintassi della patch non valida (richiesta non conforme o patch JSON non valida)
-
404 Not Found: risorsa non trovata (l'ID specificato non esiste)
-
409 Conflitto: conflitto di versione (vengono forniti aggiornamenti simultanei o ID di versione non corrente)
-
422 Entità non processabile: le operazioni di patch non possono essere applicate agli elementi di risorsa specificati
Avvertenze
-
È supportato solo il tipo
application/json-patch+jsondi contenuto -
Le operazioni PATCH condizionali che utilizzano condizioni di ricerca non sono supportate
Per ulteriori informazioni sulle operazioni PATCH, consultate la documentazione FHIR R4