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 de traitement différents.
Batch
Transaction
| Fonctionnalité | Par lots | Transaction |
|---|---|---|
| Modèle de traitement | Chaque opération réussit ou échoue indépendamment. | Toutes les opérations réussissent ou échouent en tant qu'unité atomique unique. |
| Gestion des défaillances | Le traitement se poursuit même en cas d'échec des opérations individuelles. | L'ensemble échoue en cas d'échec d'une seule opération. |
| Ordre d'exécution | L'ordre d'exécution n'est pas garanti. | Les opérations sont traitées dans l'ordre indiqué. |
| Intégrité référentielle | Non appliqué dans toutes les opérations. | Appliqué pour les ressources référencées localement au sein du bundle. |
| Utiliser en priorité pour | Opérations groupées pour lesquelles un succès partiel est acceptable. | Ressources connexes qui doivent être créées ou mises à jour ensemble. |
Vous pouvez regrouper des ressources FHIR de types identiques ou différents, et elles peuvent inclure une combinaison d'opérations FHIR, telles quecreate,, read updatedelete, et. patch Pour plus d'informations, consultez le pack de ressources
Voici des exemples de cas d'utilisation pour chaque type de bundle.
- Packs Batch
-
-
Téléchargez plusieurs dossiers de patients indépendants provenant de différents établissements lors de la synchronisation nocturne des données.
-
Téléchargez en masse l'historique des médicaments lorsque certains dossiers peuvent présenter des problèmes de validation.
-
Chargez des données de référence, telles que les organisations et les professionnels, où les défaillances individuelles n'affectent pas les autres entrées.
-
- Packs de transactions
-
-
Créez un patient présentant des observations et des affections connexes lors d'une admission au service des urgences, où toutes les données doivent être enregistrées ensemble.
-
Mettez à jour la liste des médicaments d'un patient et les informations connexes sur les allergies qui doivent rester cohérentes.
-
Enregistrez une rencontre complète avec le patient, les observations, les procédures et les informations de facturation dans une seule unité atomique.
-
Important
Les ensembles de lots et de transactions utilisent la même structure de Bundle ressources. La seule différence réside dans la valeur du type champ.
L'exemple suivant montre un ensemble de transactions comprenant plusieurs types de ressources et opérations.
{ "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 en 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
-
Lorsque vous utilisez le conditionnel PUTs dans les bundles, vous AWS HealthLake évaluez les paramètres de requête par rapport aux ressources existantes et prenez des mesures en fonction des résultats du match.
| Scénario | Statut HTTP | Mesures prises |
|---|---|---|
| Ressource sans identifiant fourni | 201 créés | Crée toujours une nouvelle ressource. |
| Ressource avec un nouvel identifiant (aucune correspondance) | 201 créés | Crée une nouvelle ressource avec l'ID spécifié. |
| Ressource avec identifiant existant (correspondance unique) | 200 OK | Met à jour la ressource correspondante. |
| Ressource avec identifiant existant (conflit détecté) | 409 – Conflit | Renvoie une erreur. Aucune modification n'est apportée. |
| Ressource avec ID existant (ID non concordant) | 400 Requête erronée | Renvoie une erreur. Aucune modification n'est apportée. |
| Plusieurs ressources correspondent aux conditions | 412 – Échec de condition préalable | Renvoie une erreur. Aucune modification n'est apportée. |
Dans l'exemple de bundle suivant avec une mise à jour conditionnelle, la Patient ressource avec un identifiant FHIR est mise 476 à jour uniquement 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é
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 suite à 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 groupé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.
Support limité pour le type « message » de type Bundle
HealthLake fournit un support limité pour le type de bundle FHIR message par le biais d'un processus de conversion interne. Cette prise en charge est conçue pour les scénarios dans lesquels les ensembles de messages ne peuvent pas être reformatés à la source, tels que l'ingestion de flux ADT (admission, sortie, transfert) provenant des anciens systèmes hospitaliers.
Avertissement
Cette fonctionnalité nécessite une liste explicite des AWS comptes autorisés et n'applique pas la sémantique des messages FHIR R4 ni l'intégrité référentielle. Contactez AWS le Support pour demander l'activation de votre compte avant d'utiliser des ensembles de messages.
Principales différences par rapport au traitement standard des messages
-
Ensembles de messages (spécification FHIR) : La première entrée doit être une
MessageHeaderqui fait référence à d'autres ressources. Les ressources ne disposent pasrequestd'objets individuels, et l' MessageHeader événement détermine les actions de traitement. -
HealthLake Traitement : convertit les ensembles de messages en ensembles par lots en affectant automatiquement des opérations PUT à chaque entrée de ressource. Les ressources sont traitées indépendamment sans appliquer la sémantique des messages ou l'intégrité référentielle.
Limitations importantes
-
FHIR R4 Les règles de traitement spécifiques aux messages ne sont pas appliquées
-
Aucune intégrité transactionnelle entre les ressources
-
Les références inter-ressources ne sont pas validées
-
Nécessite une liste explicite des comptes autorisés
Exemple de structure de bundle de messages
{ "resourceType": "Bundle", "type": "message", "entry": [ { "resource": { "resourceType": "MessageHeader", "eventCoding": { "system": "http://hl7.org/fhir/us/davinci-alerts/CodeSystem/notification-event", "code": "notification-admit" }, "focus": [{"reference": "Encounter/example-id"}] } }, { "resource": {"resourceType": "Patient", "id": "example-id"} }, { "resource": {"resourceType": "Encounter", "id": "example-id"} } ] }
Note
Chaque ressource est stockée indépendamment, comme si elle était soumise via des opérations PUT individuelles. Si une sémantique complète de la messagerie FHIR ou une validation de l'intégrité référentielle sont requises, prétraitez les ensembles de messages ou implémentez une validation au niveau de l'application avant de les soumettre.
Transactions groupées asynchrones
AWS HealthLake prend en charge le Bundle type asynchrone transaction qui vous permet de soumettre des transactions avec un maximum de 500 ressources. Lorsque vous soumettez une transaction asynchrone, mettez-la en HealthLake file d'attente pour traitement et renvoyez immédiatement une URL d'interrogation. Vous pouvez utiliser cette URL pour vérifier le statut et récupérer la réponse. Cela suit le modèle de bundle asynchrone FHIR
Quand utiliser les transactions asynchrones
-
Vous devez soumettre plus de 100 ressources (limite synchrone) en une seule transaction.
-
Vous voulez éviter de bloquer votre application en attendant la fin du traitement de la transaction.
-
Vous devez traiter de gros volumes de ressources connexes avec un meilleur débit.
Important
Les résultats du sondage sont disponibles pendant 90 jours après la fin de la transaction. Après cette période de 90 jours, l'URL du sondage ne renvoie plus de résultats. Concevez votre intégration pour récupérer et stocker les résultats dans cette fenêtre.
Note
transactionLe Bundle type synchrone continue de prendre en charge jusqu'à 100 ressources et constitue le mode de traitement par défaut. Si vous soumettez un Bundle type transaction contenant plus de 100 ressources sans Prefer: respond-async en-tête, HealthLake renvoie une 422 Unprocessable Entity erreur. Les ensembles avec type ne batch sont pas pris en charge pour le traitement asynchrone : seul le Bundle type transaction peut être soumis de manière asynchrone (avec un maximum de 500 opérations).
Soumission d'une transaction asynchrone
Pour soumettre une transaction asynchrone, envoyez une POST demande au point de terminaison du magasin de données avec l'Prefer: respond-asyncen-tête. Le bundle doit avoir un typetransaction. Les ensembles avec type ne batch sont pas pris en charge pour le traitement asynchrone des ensembles.
HealthLake effectue les validations initiales du bundle au moment de la soumission. Si la validation aboutit, HealthLake renvoie HTTP 202 Accepted avec un en-tête de content-location réponse contenant l'URL d'interrogation.
Pour soumettre un type asynchrone Bundle transaction
-
Envoyez une
POSTdemande au point de terminaison du magasin de HealthLake données.POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/ -
Construisez un corps JSON pour la demande avec le type de bundle
transaction. Dans le cadre de cette procédure, enregistrez le fichier sousasync-transaction.json.{ "resourceType": "Bundle", "type": "transaction", "entry": [ { "resource": { "resourceType": "Patient", "active": true, "name": [ { "use": "official", "family": "Smith", "given": ["Jane"] } ], "gender": "female", "birthDate": "1990-01-15" }, "request": { "method": "POST", "url": "Patient" } }, { "resource": { "resourceType": "Observation", "status": "final", "code": { "coding": [ { "system": "http://loinc.org", "code": "85354-9", "display": "Blood pressure panel" } ] }, "subject": { "reference": "urn:uuid:example-patient-id" } }, "request": { "method": "POST", "url": "Observation" } } ] } -
Envoyez la demande avec l'
Prefer: respond-asyncen-tête. Le type deBundletransaction FHIR utilise unePOSTdemande avec AWS signature version 4 ou une autorisation SMART on FHIR. L'exemple de code suivant utilise l'outil de ligne decurlcommande à des fins de démonstration. -
En cas de soumission réussie, le serveur renvoie HTTP 202 Accepted. L'en-tête de
content-locationréponse contient l'URL du sondage. L'organisme de réponse est uneOperationOutcomeressource.HTTP/1.1 202 Accepted content-location: https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Transaction/transactionId{ "resourceType": "OperationOutcome", "issue": [ { "severity": "information", "code": "informational", "diagnostics": "Submitted Asynchronous Bundle Transaction", "location": [ "https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Transaction/transactionId" ] } ] }
Sondage de l'état de la transaction
Après avoir soumis une transaction asynchrone, utilisez l'URL de sondage figurant dans l'en-tête de content-location réponse pour vérifier le statut de la transaction. Envoyez une GET demande à l'URL du sondage.
Note
Pour les magasins de données compatibles SMART sur FHIR, le jeton d'autorisation doit inclure read des autorisations sur le type de Transaction ressource pour demander l'état de la transaction. Pour plus d'informations sur SMART sur les oscilloscopes FHIR, consultez. SMART sur les oscilloscopes FHIR OAuth 2.0 pris en charge par HealthLake
Envoyez une GET demande à l'URL du sondage. L'exemple suivant utilise l'outil de ligne de curl commande.
Le tableau suivant décrit les réponses possibles.
| Statut HTTP | Signification | Corps de la réponse |
|---|---|---|
| 202 Accepté | La transaction est en file d'attente | OperationOutcomeavec diagnostic « SOUMIS » |
| 202 Accepté | La transaction est en cours de traitement | OperationOutcomeavec diagnostic « IN_PROGRESS » |
| 200 OK | Transaction terminée avec succès | Bundleavec type transaction-response |
| 4xx/5xx | Échec de la transaction | OperationOutcomeavec les détails de l'erreur |
Les exemples suivants montrent chaque type de réponse.
Transaction en file d'attente (202)
{ "resourceType": "OperationOutcome", "id": "transactionId", "issue": [ { "severity": "information", "code": "informational", "diagnostics": "SUBMITTED" } ] }
Traitement des transactions (202)
{ "resourceType": "OperationOutcome", "id": "transactionId", "issue": [ { "severity": "information", "code": "informational", "diagnostics": "IN_PROGRESS" } ] }
Transaction terminée (200)
{ "resourceType": "Bundle", "type": "transaction-response", "entry": [ { "response": { "status": "201", "location": "Patient/example-id/_history/1", "etag": "W/\"1\"", "lastModified": "2024-01-15T10:30:00.000Z" } }, { "response": { "status": "201", "location": "Observation/example-id/_history/1", "etag": "W/\"1\"", "lastModified": "2024-01-15T10:30:00.000Z" } } ] }
Échec de la transaction (4xx/5xx)
{ "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "exception", "diagnostics": "Transaction failed: conflict detected on resource Patient/example-id" } ] }
Commande en cours
Les ensembles de type asynchrone sont mis en file d'attente mais ne transaction sont pas traités dans un ordre de soumission strict. HealthLake optimise le traitement en fonction de la capacité disponible et de la charge du système.
Important
Ne vous fiez pas au traitement des transactions dans l'ordre dans lequel elles ont été soumises. Par exemple, si vous soumettez la transaction A à 10 h 00 et la transaction B à 10 h 01, la transaction B peut être terminée avant la transaction A. Concevez votre application pour :
-
Terminez out-of-order la manipulation.
-
Utilisez l'URL du sondage pour suivre chaque transaction indépendamment.
-
Mettez en œuvre le séquençage au niveau de l'application si la commande est importante pour votre cas d'utilisation.
Quotas et régulation
Les quotas et limites de taux suivants s'appliquent aux transactions asynchrones.
| Quota | Value | Ajustable |
|---|---|---|
| Nombre maximum d'opérations par transaction asynchrone | 500 | Non |
| Nombre maximum de transactions en attente par magasin de données | 500 | Oui |
-
Les transactions asynchrones partagent les mêmes limites de débit d'API définies ci-dessous. Quotas de service
-
L'interrogation du statut des transactions partage les mêmes limites de débit d'API que les opérations read (
GET) sur les ressources FHIR. -
Si la limite de transactions en attente est atteinte, les soumissions suivantes renvoient une erreur jusqu'à ce que les transactions existantes soient terminées.
Gestion des erreurs
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 opération du bundle n'est traitée.
Les erreurs se répartissent en deux catégories : les erreurs de soumission HealthLake renvoyées de manière synchrone et les erreurs de traitement que vous détectez par le biais d'un sondage.
Erreurs de soumission
HealthLake valide le bundle au moment de l'envoi et renvoie les erreurs de manière synchrone avant que la transaction ne soit mise en file d'attente. Les erreurs de soumission incluent des erreurs de validation des ressources FHIR non valides, des types de ressources non pris en charge, le dépassement de la limite de 500 opérations et l'utilisation de l'Prefer: respond-asyncen-tête avec des ensembles de lots. Si la limite de transactions en attente pour le magasin de données a été atteinte, HealthLake renvoie ThrottlingException a. Lorsqu'une erreur de soumission se produit, la transaction ne sera pas mise en file d'attente.
Erreurs de traitement
Des erreurs de traitement se produisent une fois que la transaction a été mise en file d'attente et sont renvoyées via l'URL d'interrogation. Il s'agit notamment des conflits de transactions, lorsqu'une autre opération a modifié une ressource faisant partie de la transaction, et des erreurs de serveur pendant le traitement. Lorsqu'une erreur de traitement se produit, aucune mutation de ressource n'est effectuée pour les ressources de la transaction. L'URL du sondage renverra un OperationOutcome contenant les détails de l'erreur.