Modifica delle risorse con l'operazione PATCH - AWS HealthLake

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 secondo RFC 6902:

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 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:

  1. Convalida la sintassi della patch JSON secondo RFC 6902 e RFC 6901

  2. Applica le operazioni in modo atomico: tutte le operazioni hanno esito positivo o negativo

  3. Aggiorna l'ID della versione della risorsa e crea una nuova voce della cronologia

  4. Conserva la risorsa originale nella cronologia prima di applicare le modifiche

  5. Convalida i vincoli delle risorse FHIR dopo l'applicazione delle patch

  6. 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+json di contenuto

  • Le operazioni PATCH condizionali che utilizzano condizioni di ricerca non sono supportate

Per ulteriori informazioni sulle operazioni PATCH, consultate la documentazione FHIR R4 PATCH.