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.
Regroupement des ressources FHIR
Un FHIR Bundle est un conteneur contenant une collection de ressources FHIR. AWS HealthLake AWS HealthLake prend en charge deux types de bundles avec des comportements différents : batchtransaction
-
Pour un bundle « batch », chaque ressource FHIR contenue dans le bundle est traitée et enregistrée individuellement. Chaque opération sur les ressources est traitée indépendamment des autres ressources.
-
Pour un bundle « transactionnel », toutes les ressources FHIR contenues dans le bundle sont traitées comme une opération atomique. Toutes les ressources de l'opération doivent réussir, sinon aucune mise à jour des ressources du bundle n'est validée et stockée.
Vous pouvez regrouper des ressources FHIR de types identiques ou différents, et elles peuvent inclure une combinaison d'autres interactions FHIR définies dans ce chapitre (par exemplecreate,, read updatedelete, etsearch). Pour plus d'informations, consultez le pack de ressources
Principales différences entre les bundles de type Batch et Transaction :
- Batch
-
-
Des opérations indépendantes qui peuvent réussir ou échouer individuellement
-
Le traitement continue même si certaines opérations échouent
-
Ordre d'exécution non garanti
-
Idéal pour les opérations en vrac où un succès partiel est acceptable
-
- Transaction
-
-
Atomicité garantie : tous réussissent ou échouent
-
Maintient l'intégrité référentielle pour les ressources référencées localement (au sein du bundle)
-
Opérations traitées dans l'ordre indiqué
-
Échoue complètement en cas d'échec d'une opération
-
Exemples de cas d'utilisation :
-
Batch : téléchargement de plusieurs dossiers de patients non liés
-
Transaction : créer un patient avec des observations et des conditions connexes où tous doivent réussir ensemble
Note
Les deux utilisent le type de ressource Bundle mais diffèrent dans le champ « type » :
{ "resourceType": "Bundle", "type": "transaction", "entry": [ { "fullUrl": "urn:uuid:4f6a30fb-cd3c-4ab6-8757-532101f72065", "resource": { "resourceType": "Patient", "id": "new-patient", "active": true, "name": [ { "family": "Johnson", "given": [ "Sarah" ] } ], "gender": "female", "birthDate": "1985-08-12", "telecom": [ { "system": "phone", "value": "555-123-4567", "use": "home" } ] }, "request": { "method": "POST", "url": "Patient" } }, { "fullUrl": "urn:uuid:7f83f473-d8cc-4a8d-86d3-9d9876a3248b", "resource": { "resourceType": "Observation", "id": "blood-pressure", "status": "final", "code": { "coding": [ { "system": "http://loinc.org", "code": "85354-9", "display": "Blood pressure panel" } ], "text": "Blood pressure panel" }, "subject": { "reference": "urn:uuid:4f6a30fb-cd3c-4ab6-8757-532101f72065" }, "effectiveDateTime": "2023-10-15T09:30:00Z", "component": [ { "code": { "coding": [ { "system": "http://loinc.org", "code": "8480-6", "display": "Systolic blood pressure" } ] }, "valueQuantity": { "value": 120, "unit": "mmHg", "system": "http://unitsofmeasure.org", "code": "mm[Hg]" } }, { "code": { "coding": [ { "system": "http://loinc.org", "code": "8462-4", "display": "Diastolic blood pressure" } ] }, "valueQuantity": { "value": 80, "unit": "mmHg", "system": "http://unitsofmeasure.org", "code": "mm[Hg]" } } ] }, "request": { "method": "POST", "url": "Observation" } }, { "resource": { "resourceType": "Appointment", "id": "appointment-123", "status": "booked", "description": "Annual physical examination", "start": "2023-11-15T09:00:00Z", "end": "2023-11-15T09:30:00Z", "participant": [ { "actor": { "reference": "urn:uuid:4f6a30fb-cd3c-4ab6-8757-532101f72065" }, "status": "accepted" } ] }, "request": { "method": "PUT", "url": "Appointment/appointment-123" } }, { "request": { "method": "DELETE", "url": "MedicationRequest/med-request-456" } } ] }
Regrouper les ressources du FHIR en tant qu'entités indépendantes
Regrouper les ressources FHIR en tant qu'entités indépendantes
-
Collectez HealthLake
regionetdatastoreIdvalorisez. Pour de plus amples informations, veuillez consulter Obtenir les propriétés du magasin de données. -
Créez une URL pour la demande en utilisant les valeurs collectées pour HealthLake
regionetdatastoreId. Ne spécifiez pas de type de ressource FHIR dans l'URL. Pour afficher le chemin complet de l'URL dans l'exemple suivant, faites défiler le curseur sur le bouton Copier.POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/ -
Construisez un corps JSON pour la demande, en spécifiant chaque verbe HTTP comme faisant partie des
methodéléments. L'exemple suivant utilise une interactionbatchde type avec laBundleressource pour créer de nouvellesMedicationressourcesPatientet. Toutes les sections requises sont commentées en conséquence. Dans le cadre de cette procédure, enregistrez le fichier sousbatch-independent.json.{ "resourceType": "Bundle", "id": "bundle-batch", "meta": { "lastUpdated": "2014-08-18T01:43:30Z" }, "type": "batch", "entry": [ { "resource": { "resourceType": "Patient", "meta": { "lastUpdated": "2022-06-03T17:53:36.724Z" }, "text": { "status": "generated", "div": "Some narrative" }, "active": true, "name": [ { "use": "official", "family": "Jackson", "given": [ "Mateo", "James" ] } ], "gender": "male", "birthDate": "1974-12-25" }, "request": { "method": "POST", "url": "Patient" } }, { "resource": { "resourceType": "Medication", "id": "med0310", "contained": [ { "resourceType": "Substance", "id": "sub03", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "55452001", "display": "Oxycodone (substance)" } ] } } ], "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "430127000", "display": "Oral Form Oxycodone (product)" } ] }, "form": { "coding": [ { "system": "http://snomed.info/sct", "code": "385055001", "display": "Tablet dose form (qualifier value)" } ] }, "ingredient": [ { "itemReference": { "reference": "#sub03" }, "strength": { "numerator": { "value": 5, "system": "http://unitsofmeasure.org", "code": "mg" }, "denominator": { "value": 1, "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } } } ] }, "request": { "method": "POST", "url": "Medication" } } ] } -
Envoyez la demande . Le type de
Bundlelot FHIR utilise unePOSTdemande avec AWS signature version 4 ou SMART sur autorisation FHIR. L'exemple de code suivant utilise l'outil de ligne decurlcommande à des fins de démonstration.Le serveur renvoie une réponse indiquant les
MedicationressourcesPatientet créées à la suite de la demande de type deBundlelot.
Conditionnel PUTs dans les lots
AWS HealthLake prend en charge les mises à jour conditionnelles au sein des bundles à l'aide des paramètres de requête suivants :
-
_id(autonome) -
_iden combinaison avec l'un des éléments suivants :-
_tag -
_createdAt -
_lastUpdated
-
Sur la base des résultats de la mise en correspondance des conditions fournies à la ressource existante, les codes de résultat associés indiquant l'action entreprise se produiront comme suit :
Lors de la création ou de la mise à jour des ressources FHIR, le système gère différents scénarios en fonction de la fourniture de l'identifiant des ressources et des correspondances existantes :
-
Les ressources sans ressources IDs sont toujours créées (201).
-
Des ressources contenant de nouvelles IDs sont créées (201).
-
Les ressources existantes IDs mettent à jour la ressource correspondante (200) ou renvoient des erreurs en cas de conflit (409) ou d'incompatibilité d'ID (400).
-
Plusieurs ressources correspondantes déclenchent une défaillance de la condition préalable (419).
Dans l'exemple Bundle avec mise à jour conditionnelle, la ressource Patient avec un identifiant FHIR ne 456 sera mise à jour que si la condition _lastUpdated=lt2025-04-20 est remplie.
{ "resourceType": "Bundle", "id": "bundle-batch", "meta": { "lastUpdated": "2014-08-18T01:43:30Z" }, "type": "batch", "entry": [ { "resource": { "resourceType": "Patient", "id": "476", "meta": { "lastUpdated": "2022-06-03T17:53:36.724Z" }, "active": true, "name": [ { "use": "official", "family": "Jackson", "given": [ "Mateo", "James" ] } ], "gender": "male", "birthDate": "1974-12-25" }, "request": { "method": "PUT", "url": "Patient?_id=476&_lastUpdated=lt2025-04-20" } }, { "resource": { "resourceType": "Medication", "id": "med0310", "contained": [ { "resourceType": "Substance", "id": "sub03", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "55452001", "display": "Oxycodone (substance)" } ] } } ], "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "430127000", "display": "Oral Form Oxycodone (product)" } ] }, "form": { "coding": [ { "system": "http://snomed.info/sct", "code": "385055001", "display": "Tablet dose form (qualifier value)" } ] }, "ingredient": [ { "itemReference": { "reference": "#sub03" }, "strength": { "numerator": { "value": 5, "system": "http://unitsofmeasure.org", "code": "mg" }, "denominator": { "value": 1, "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } } } ] }, "request": { "method": "POST", "url": "Medication" } } ] }
Regroupement des ressources FHIR en une seule entité
Pour regrouper les ressources FHIR en une seule entité
-
Collectez HealthLake
regionetdatastoreIdvalorisez. Pour de plus amples informations, veuillez consulter Obtenir les propriétés du magasin de données. -
Créez une URL pour la demande en utilisant les valeurs collectées pour HealthLake
regionetdatastoreId. Incluez le typeBundlede ressource FHIR dans l'URL. Pour afficher le chemin complet de l'URL dans l'exemple suivant, faites défiler le curseur sur le bouton Copier.POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Bundle -
Construisez un corps JSON pour la demande, en spécifiant les ressources FHIR à regrouper. L'exemple suivant regroupe deux
Patientressources dans HealthLake. Dans le cadre de cette procédure, enregistrez le fichier sousbatch-single.json.{ "resourceType": "Bundle", "id": "bundle-minimal", "language": "en-US", "identifier": { "system": "urn:oid:1.2.3.4.5", "value": "28b95815-76ce-457b-b7ae-a972e527db4f" }, "type": "document", "timestamp": "2020-12-11T14:30:00+01:00", "entry": [ { "fullUrl": "urn:uuid:f40b07e3-37e8-48c3-bf1c-ae70fe12dabf", "resource": { "resourceType": "Composition", "id": "f40b07e3-37e8-48c3-bf1c-ae70fe12dabf", "status": "final", "type": { "coding": [ { "system": "http://loinc.org", "code": "60591-5", "display": "Patient summary Document" } ] }, "date": "2020-12-11T14:30:00+01:00", "author": [ { "reference": "urn:uuid:45271f7f-63ab-4946-970f-3daaaa0663ff" } ], "title": "Patient Summary as of December 7, 2020 14:30" } }, { "fullUrl": "urn:uuid:45271f7f-63ab-4946-970f-3daaaa0663ff", "resource": { "resourceType": "Practitioner", "id": "45271f7f-63ab-4946-970f-3daaaa0663ff", "active": true, "name": [ { "family": "Doe", "given": [ "John" ] } ] } } ] } -
Envoyez la demande . Le type de
Bundledocument FHIR utilise unePOSTdemande avec le protocole de AWS signature Signature Version 4. L'exemple de code suivant utilise l'outil de ligne decurlcommande à des fins de démonstration.Le serveur renvoie une réponse indiquant deux
Patientressources créées à la suite de la demande de type deBundledocument.
Configuration du niveau de validation pour les bundles
Lorsque vous regroupez des ressources FHIR, vous pouvez éventuellement spécifier un en-tête x-amzn-healthlake-fhir-validation-level HTTP pour configurer un niveau de validation pour la ressource. Ce niveau de validation sera défini pour toutes les demandes de création et de mise à jour du bundle. AWS HealthLake prend actuellement en charge les niveaux de validation suivants :
-
strict: Les ressources sont validées en fonction de l'élément de profil de la ressource ou de la spécification R4 si aucun profil n'est présent. Il s'agit du niveau de validation par défaut pour AWS HealthLake. -
structure-only: Les ressources sont validées par rapport à R4, en ignorant les profils référencés. -
minimal: Les ressources sont validées de manière minimale, sans tenir compte de certaines règles R4. Les ressources qui échouent aux vérifications de structure requises search/analytics seront mises à jour pour inclure un avertissement d'audit.
Les ressources regroupées avec le niveau de validation minimal peuvent être ingérées dans une banque de données malgré l'échec de la validation requise pour l'indexation des recherches. Dans ce cas, les ressources seront mises à jour pour inclure une extension spécifique à Healthlake afin de documenter ces échecs, et les entrées de la réponse du bundle incluront les OperationOutcome ressources suivantes :
{ "resourceType": "Bundle", "type": "batch-response", "timestamp": "2025-08-25T22:58:48.846287342Z", "entry": [ { "response": { "status": "201", "location": "Patient/195abc49-ba8e-4c8b-95c2-abc88fef7544/_history/1", "etag": "W/\"1\"", "lastModified": "2025-08-25T22:58:48.801245445Z", "outcome": { "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "processing", "details": { "text": "FHIR resource in payload failed FHIR validation rules." }, "diagnostics": "FHIR resource in payload failed FHIR validation rules." } ] } } } ] }
En outre, l'en-tête de réponse HTTP suivant sera inclus avec la valeur « true » :
x-amzn-healthlake-validation-issues : true
Note
Notez que les données ingérées qui sont mal formées conformément à la spécification R4 peuvent ne pas être consultables comme prévu si ces erreurs sont présentes.