Récupérer des messages HL7v2 avec la récupération à un moment précis (PITR)

Cette page explique comment utiliser la récupération à un moment précis (PITR) pour récupérer les messages HL7v2 d'un magasin HL7v2 à un état datant des 21 derniers jours. Vous pouvez utiliser la récupération PITR pour récupérer des modifications indésirables, telles que la suppression accidentelle de messages HL7v2.

Avant de commencer

Les requêtes PITR sont classées comme des requêtes d'opérations avancées et sont facturées en conséquence. Avant d'utiliser la récupération PITR, consultez les tarifs des requêtes d'opérations avancées.

Workflow de récupération

Pour vous assurer qu'une récupération en production s'exécute comme prévu, effectuez d'abord un essai. L'exécution à blanc génère un ou plusieurs fichiers contenant les ID des messages HL7v2 à récupérer. Vérifiez l'exactitude des fichiers de sortie avant de relancer la récupération en production.

Pour récupérer des messages HL7v2 spécifiques ou des messages HL7v2 en fonction de critères de filtrage, spécifiez un filtre.

Effectuer une simulation

Avant de récupérer des messages HL7v2 en production, effectuez un test.

Les exemples suivants montrent comment effectuer un test à blanc à l'aide de la méthode hl7V2Stores.rollback.

REST

  1. Récupérez les messages HL7v2.

    Pour effectuer un dry run, assurez-vous que le champ force est défini sur false.

    Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements 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 store HL7v2
    • HL7V2_STORE_ID : ID du store HL7v2
    • RECOVERY_TIMESTAMP: point de récupération au cours des 21 derniers jours. Utilisez le format RFC 3339. Spécifiez l'heure à la seconde près et incluez un fuseau horaire, par exemple 2015-02-07T13:28:17.239+02:00 ou 2017-01-01T00:00:00Z.
    • CLOUD_STORAGE_BUCKET: URI complet vers un dossier ou un bucket Cloud Storage dans lequel les fichiers de sortie sont écrits

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    cat > request.json << 'EOF'
    {
      "rollbackTime": "RECOVERY_TIMESTAMP",
      "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET",
      "force": "false"
    }
    EOF

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:rollback"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    @'
    {
      "rollbackTime": "RECOVERY_TIMESTAMP",
      "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET",
      "force": "false"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:rollback" | Select-Object -Expand Content

    API Explorer

    Copiez le corps de la requête et ouvrez la page de référence de la méthode. Le panneau APIs Explorer s'ouvre dans la partie droite de la page. Vous pouvez interagir avec cet outil pour envoyer des requêtes. Collez le corps de la requête dans cet outil, renseignez tous les champs obligatoires, puis cliquez sur Execute (Exécuter).

    Le résultat est le suivant. La réponse contient un identifiant pour une opération de longue durée (LRO). Les opérations de longue durée sont renvoyées lorsque les appels de méthode peuvent prendre davantage de temps. Notez la valeur de OPERATION_ID. Vous en aurez besoin à l'étape suivante.

  2. Utilisez la méthode projects.locations.datasets.operations.get pour obtenir l'état de l'opération de longue durée.

    Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • DATASET_ID : ID de l'ensemble de données
    • LOCATION : emplacement de l'ensemble de données
    • OPERATION_ID : ID renvoyé par l'opération de longue durée

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Exécutez la commande suivante :

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    API Explorer

    Ouvrez la page de référence de la méthode. Le panneau APIs Explorer s'ouvre dans la partie droite de la page. Vous pouvez interagir avec cet outil pour envoyer des requêtes. Renseignez tous les champs obligatoires, puis cliquez sur Execute (Exécuter).

    Le résultat est le suivant. Lorsque la réponse contient "done": true, l'opération de longue durée est terminée.

Afficher les fichiers de sortie du dry run

Chaque simulation génère un ou plusieurs fichiers contenant les ID et les types des messages HL7v2 à récupérer. Les fichiers sont créés dans un sous-dossier du dossier rollback_messages du bucket Cloud Storage de destination. Le nom du sous-dossier correspond à l'ID de l'ordre de traitement de la demande renvoyé dans la réponse hl7V2Stores.rollback. Pour afficher les fichiers et vous assurer que la récupération fonctionne comme prévu, consultez la section Afficher les métadonnées d'objet.

Le nombre de fichiers est proportionnel au nombre de messages HL7v2 récupérés.

Les noms de fichiers suivent le format trial-NUMBER-of-TOTAL_NUMBER.txt, où NUMBER est le numéro de fichier et TOTAL_NUMBER le nombre total de fichiers.

Schéma du fichier de sortie du dry run

Les fichiers de sortie d'une récupération à blanc utilisent le schéma présenté dans le tableau suivant:

MESSAGE_ID TIMESTAMP
ID du message HL7v2. Heure à laquelle le message HL7v2 a été créé ou mis à jour dans le magasin HL7v2.

Récupération en production

Avant de récupérer en production, effectuez un essai et inspectez les fichiers de sortie de l'essai pour vous assurer que la récupération en production s'exécute comme prévu.

Les exemples suivants montrent comment restaurer des messages HL7v2 en production à l'aide de la méthode hl7V2Stores.rollback.

REST

  1. Récupérez les messages HL7v2.

    Assurez-vous que le champ force est true.

    Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements 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 store HL7v2
    • HL7V2_STORE_ID : ID du store HL7v2
    • RECOVERY_TIMESTAMP: point de récupération au cours des 21 derniers jours. Utilisez le format RFC 3339. Spécifiez l'heure à la seconde près et incluez un fuseau horaire, par exemple 2015-02-07T13:28:17.239+02:00 ou 2017-01-01T00:00:00Z.
    • CLOUD_STORAGE_BUCKET: URI complet vers un dossier ou un bucket Cloud Storage dans lequel les fichiers de sortie sont écrits

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    cat > request.json << 'EOF'
    {
      "rollbackTime": "RECOVERY_TIMESTAMP",
      "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET",
      "force": "true"
    }
    EOF

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:rollback"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    @'
    {
      "rollbackTime": "RECOVERY_TIMESTAMP",
      "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET",
      "force": "true"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:rollback" | Select-Object -Expand Content

    API Explorer

    Copiez le corps de la requête et ouvrez la page de référence de la méthode. Le panneau APIs Explorer s'ouvre dans la partie droite de la page. Vous pouvez interagir avec cet outil pour envoyer des requêtes. Collez le corps de la requête dans cet outil, renseignez tous les champs obligatoires, puis cliquez sur Execute (Exécuter).

    Le résultat est le suivant. La réponse contient un identifiant pour une opération de longue durée (LRO). Les opérations de longue durée sont renvoyées lorsque les appels de méthode peuvent prendre davantage de temps. Notez la valeur de OPERATION_ID. Vous en aurez besoin à l'étape suivante.

  2. Utilisez la méthode projects.locations.datasets.operations.get pour obtenir l'état de l'opération de longue durée.

    Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • DATASET_ID : ID de l'ensemble de données
    • LOCATION : emplacement de l'ensemble de données
    • OPERATION_ID : ID renvoyé par l'opération de longue durée

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Exécutez la commande suivante :

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    API Explorer

    Ouvrez la page de référence de la méthode. Le panneau APIs Explorer s'ouvre dans la partie droite de la page. Vous pouvez interagir avec cet outil pour envoyer des requêtes. Renseignez tous les champs obligatoires, puis cliquez sur Execute (Exécuter).

    Le résultat est le suivant. Lorsque la réponse contient "done": true, l'opération de longue durée est terminée.

Afficher les fichiers de sortie de la récupération de production

Une récupération de production génère les fichiers suivants. Les fichiers sont créés dans un sous-dossier du dossier rollback_messages du bucket Cloud Storage de destination. Le nom du sous-dossier correspond à l'ID de l'ordre de traitement de la demande renvoyé dans la réponse hl7V2Stores.rollback. Pour afficher les fichiers, consultez la section Afficher les métadonnées d'objets.

  • success-NUMBER-of-TOTAL_NUMBER.txt: contient les messages HL7v2 récupérés avec succès.
  • fail-NUMBER-of-TOTAL_NUMBER.txt: contient les messages HL7v2 qui n'ont pas pu être récupérés. Un fichier vide est généré même en l'absence d'échecs.

Dans les noms de fichiers, NUMBER correspond au numéro de fichier et TOTAL_NUMBER au nombre total de fichiers.

Schéma du fichier de sortie de production

Les fichiers de réussite et d'échec d'une récupération en production utilisent le schéma suivant. Les fichiers d'erreur contiennent une colonne ERROR_MESSAGE supplémentaire.

MESSAGE_ID ERROR_MESSAGE (Fichiers d'erreur uniquement)
ID du message HL7v2. Fichiers d'erreur uniquement. Indique pourquoi la récupération du message HL7v2 a échoué.

Utiliser des filtres pour restaurer un magasin HL7v2 à un état antérieur

Si un magasin HL7v2 a été modifié par une ou plusieurs opérations de longue durée (LRO), vous pouvez spécifier les ID de LRO dans un filtre pour restaurer le magasin HL7v2 à son état précédent. Par exemple, vous pouvez restaurer un magasin HL7v2 à son état précédent avant qu'une opération d'importation n'importe des messages HL7v2.

Vous spécifiez les ID de LRO dans l'objet RollbackHL7MessagesFilteringFields lorsque vous envoyez une requête hl7V2Stores.rollback.

Pour en savoir plus sur la liste et l'affichage des ID d'opérations de longue durée dans un ensemble de données de l'API Cloud Healthcare, consultez Liste des opérations de longue durée.