Cette page explique comment effectuer les tâches suivantes :
- Configurez des en-têtes HTTP personnalisés dans les requêtes adressées à l'API Cloud Healthcare.
Utilisez Cloud Audit Logging pour rechercher des requêtes et leurs en-têtes HTTP personnalisés correspondants afin de :
- Découvrez qui a envoyé une demande et quand.
- Simplifiez le déploiement et le débogage en identifiant la requête à l'origine d'une erreur spécifique.
Pour en savoir plus sur l'utilisation de Cloud Audit Logs dans l'API Cloud Healthcare, consultez la section Afficher les journaux d'audit Cloud.
Méthodes configurables
Vous pouvez configurer des en-têtes HTTP personnalisés pour les méthodes de l'API Cloud Healthcare dans les ressources REST suivantes:
projects.locations
projects.locations.datasets
projects.locations.dicomStores
projects.locations.dicomStores.studies
projects.locations.dicomStores.studies.series
projects.locations.dicomStores.studies.series.instances
projects.locations.dicomStores.studies.series.instances.frames
projects.locations.datasets.fhirStores
projects.locations.datasets.fhirStores.fhir
projects.locations.datasets.hl7V2Stores
projects.locations.datasets.hl7V2Stores.messages
projects.locations.datasets.operations
Configurer des en-têtes HTTP personnalisés
Vous pouvez spécifier deux types d'en-têtes HTTP personnalisés dans les requêtes de l'API Cloud Healthcare et les afficher dans les journaux d'audit. Vous pouvez utiliser chaque type exclusivement ou les combiner.
Journalisation des ID personnalisés Vous pouvez spécifier l'en-tête HTTP personnalisé
X-Request-Id
attribuer un ID personnalisé à chaque requête, puis effectuer une recherche dans les journaux d'audit pour une requête contenant cet ID. Pour fournir un ID personnalisé, spécifiez l'en-tête HTTP personnalisé au format suivant :X-Request-Id: REQUEST_ID
Spécifiez une valeur unique pour REQUEST_ID dans chaque requête.
La plupart des langages de programmation permettent de générer des ID aléatoires que vous pouvez utiliser pour créer l'ID de requête. Par exemple, le fichier Le module
uuid
comporte unuuid.uuid4()
que vous pouvez utiliser pour générer automatiquement des ID pour chaque requête. L'API Cloud Healthcare ne génère pas d'ID de requête.Journalisation des métadonnées. Vous pouvez inclure des informations de métadonnées supplémentaires dans le protocole HTTP personnalisé. à l'aide de
X-Goog-Healthcare-Audit-IDENTIFIER
en-tête. L'en-tête identifie de manière unique le type d'informations de métadonnées.Les métadonnées sont stockées dans le journal d'audit de chaque requête. Pour fournir des informations sur les métadonnées, spécifiez un ou plusieurs en-têtes HTTP personnalisés au format suivant :
X-Goog-Healthcare-Audit-IDENTIFIER: VALUE
Remplacez IDENTIFIER par un identifiant lisible. Remplacez VALUE par une valeur pour les métadonnées. Vous pouvez spécifier plusieurs valeurs dans une liste d'éléments séparés par une virgule à l'aide de la syntaxe suivante :
X-Goog-Healthcare-Audit-IDENTIFIER: VALUE_1, VALUE_2, VALUE_n ...
Exemple :
X-Goog-Healthcare-Audit-MyIdentifier: Value1, Value2, Value3
Vous pouvez également spécifier plusieurs en-têtes HTTP personnalisés avec leurs propres valeurs uniques :
X-Goog-Healthcare-Audit-MyIdentifier1: Value1, Value2 X-Goog-Healthcare-Audit-MyIdentifier2: Value3
Afficher les journaux d'audit dans Cloud Audit Logs
Consultez Afficher les journaux.
Exemple
L'exemple suivant montre un scénario dans lequel vous spécifiez des en-têtes HTTP personnalisés dans une requête fhir.create
.
Supposons que vous réalisiez une étude et que vous ayez une application mobile
pour les patients nommés PatientApp
. Les patients de l'étude sont divisés en
deux cohortes: Cohort1
et Cohort2
. Identifier chaque demande
à partir de Cohort1
par un identifiant unique et le nom de l'application mobile ;
spécifiez les en-têtes HTTP personnalisés suivants dans chaque requête:
X-Request-Id: REQUEST_ID X-Goog-Healthcare-Audit-AppName: PatientApp X-Goog-Healthcare-Audit-CohortName: Cohort1
Les en-têtes HTTP personnalisés s'affichent dans le champ metadata
du journal d'audit de chaque requête dans les journaux d'audit Cloud.
L'exemple suivant montre comment utiliser curl
pour créer une ressource Patient dans un datastore FHIR. La requête contient les en-têtes HTTP personnalisés suivants:
X-Request-Id: 123
X-Goog-Healthcare-Audit-AppName: PatientApp
X-Goog-Healthcare-Audit-CohortName: Cohort1
Avant d'envoyer la demande, remplacez les éléments suivants:
- PROJECT_ID : ID de votre projet Google Cloud
- LOCATION : emplacement de l'ensemble de données
- DATASET_ID : ensemble de données parent du magasin FHIR.
- FHIR_STORE_ID : ID du magasin FHIR.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -H "X-Request-Id: 123" \ -H "X-Goog-Healthcare-Audit-AppName: PatientApp" \ -H "X-Goog-Healthcare-Audit-CohortName: Cohort1" \ --data '{ "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient" }' "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"
Le résultat est le suivant :
{ "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" }
Si vous recherchez la requête dans Cloud Audit Logs, le journal d'audit se présente comme suit :
{ logName: "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_write" protoPayload: { @type: "type.googleapis.com/google.cloud.audit.AuditLog" metadata: { X-Request-Id: [123] X-Goog-Healthcare-Audit-AppName: ["PatientApp"] X-Goog-Healthcare-Audit-CohortName: ["Cohort1"] } ... } ... }