Guide de démarrage rapide avec curl ou Windows PowerShell

Cette page explique comment utiliser l'API Cloud Healthcare avec curl et Windows PowerShell pour effectuer les tâches suivantes:

  1. Créez un ensemble de données pour l'API Cloud Healthcare.
  2. Créer un magasin DICOM, FHIR ou HL7v2 dans l'ensemble de données.
  3. Stockez et inspectez un type particulier de données médicales dans le magasin DICOM, FHIR ou HL7v2.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

  4. Activez Cloud Healthcare API.

    Activer l'API

  5. Installez et initialisez le SDK Cloud.
  6. Testez votre environnement d'authentification à l'aide de l'outil de ligne de commande gcloud. Vérifiez que la commande suivante génère une chaîne de texte sans erreur:
    gcloud auth application-default print-access-token

Conseil : Vous avez besoin d'une invite de commande ? Vous pouvez utiliser Google Cloud Shell. C'est un environnement de ligne de commande qui inclut le SDK Google Cloud. Vous n'avez donc pas besoin de l'installer. (Le SDK Google Cloud est également pré-installé sur les machines virtuelles Google Compute Engine.)

Créer un ensemble de données

Les ensembles de données sont les conteneurs de base dans lesquels sont stockées les données médicales dans Google Cloud. Pour utiliser l'API Cloud Healthcare, vous devez créer au moins un ensemble de données.

curl

Pour créer un ensemble de données, envoyez une requête POST et indiquez un nom et un emplacement pour l'ensemble de données. L'exemple suivant montre une requête POST utilisant curl.

Lorsque vous définissez la variable LOCATION, utilisez us-central1, us-west2, us-east4, europe-west2, europe-west4, europe-west6, northamerica-northeast1. , southamerica-east1, asia-east2, asia-northeast1, asia-southeast1, australia-southeast1 ou us.

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

Si la requête aboutit, le serveur renvoie la réponse au format JSON. La réponse contient un identifiant pour une opération de longue durée. Les opérations de longue durée sont renvoyées lorsque les appels de méthode peuvent prendre un temps considérable.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
}

La réponse contient un nom d'opération. Pour suivre l'état de l'opération, vous pouvez utiliser la méthode get :

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

Si la requête aboutit, le serveur renvoie une réponse avec l'état de l'opération au format JSON : Vous pouvez indiquer que l'opération est terminée lorsque la réponse contient "done": true.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.CreateDataset",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.dataset.Dataset",
    "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID"
  }
}

PowerShell

Pour créer un ensemble de données, envoyez une requête POST et indiquez un nom et un emplacement pour l'ensemble de données. L'exemple suivant montre une requête POST utilisant Windows PowerShell.

Lorsque vous définissez la variable LOCATION, utilisez us-central1, us-west2, us-east4, europe-west2, europe-west4, europe-west6, northamerica-northeast1. , southamerica-east1, asia-east2, asia-northeast1, asia-southeast1, australia-southeast1 ou us.

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

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

Si la requête aboutit, le serveur renvoie la réponse au format JSON. La réponse contient un identifiant pour une opération de longue durée. Les opérations de longue durée sont renvoyées lorsque les appels de méthode peuvent prendre un temps considérable.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
}

La réponse contient un nom d'opération. Pour suivre l'état de l'opération, vous pouvez utiliser la méthode get :

$cred = gcloud auth application-default 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

Si la requête aboutit, le serveur renvoie une réponse avec l'état de l'opération au format JSON. Vous pouvez indiquer que l'opération est terminée lorsque la réponse contient "done": true.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.CreateDataset",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.dataset.Dataset",
    "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID"
  }
}

Stocker et afficher des données DICOM, FHIR et HL7v2

Pour suivre ce guide de démarrage rapide, choisissez l'une des sections suivantes:

Stocker et afficher des instances DICOM

Cette section explique comment effectuer les tâches suivantes:

  1. Créer un magasin DICOM.
  2. Stocker une instance DICOM dans le magasin DICOM.
  3. Afficher les métadonnées de l'instance DICOM

L'API Cloud Healthcare met en œuvre la norme DICOMweb pour stocker des données d'imagerie médicale et y accéder.

  1. Les magasins DICOM existent dans des ensembles de données et contiennent des instances DICOM. Vous créez un magasin DICOM à l'aide de la méthode projects.locations.datasets.dicomStores.create.

    curl

    Pour créer un datastore DICOM, envoyez une requête POST et spécifiez les informations suivantes :

    • Nom et emplacement de l'ensemble de données parent
    • Le nom du magasin DICOM. L'ID du magasin DICOM doit être unique dans son ensemble de données parent. Il peut s'agir d'une chaîne Unicode de 1 à 256 caractères composée de chiffres, de lettres, de traits de soulignement, de tirets et de points.

    L'exemple suivant montre une requête POST utilisant curl :

    curl -X POST \
        --data "" \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores?dicomStoreId=DICOM_STORE_ID"
    

    Si la requête aboutit, le serveur affiche la réponse suivante au format JSON :

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID"
    }
    

    PowerShell

    Pour créer un datastore DICOM, envoyez une requête POST et spécifiez les informations suivantes :

    • Nom et emplacement de l'ensemble de données parent
    • Le nom du magasin DICOM. L'ID du magasin DICOM doit être unique dans son ensemble de données parent. Il peut s'agir d'une chaîne Unicode de 1 à 256 caractères composée de chiffres, de lettres, de traits de soulignement, de tirets et de points.

    L'exemple suivant montre une requête POST utilisant Windows PowerShell :

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores?dicomStoreId=DICOM_STORE_ID" | Select-Object -Expand Content
    

    Si la requête aboutit, le serveur affiche une réponse semblable à l'exemple suivant au format JSON :

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID"
    }
    

  2. Téléchargez l'exemple de fichier d'instance DICOM sur votre ordinateur. Le fichier contient une radiographie X.

  3. Exécutez la commande suivante pour stocker l'instance DICOM dans le magasin DICOM que vous avez créé:

    curl

    Pour stocker l'instance DICOM, envoyez une requête POST et spécifiez les informations suivantes:

    • Nom et emplacement de l'ensemble de données parent
    • Le nom du magasin DICOM
    • Nom du fichier et emplacement du fichier d'instance DICOM sur votre machine

    L'exemple suivant montre une requête POST utilisant curl :

    curl -X POST \
        -H "Content-Type: application/dicom" \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        --data-binary @dicom_00000001_000.dcm \
        https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies
    

    Si la requête aboutit, le serveur affiche la réponse suivante au format XML:

    <NativeDicomModel>
      <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL">
        <Value number="1">https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.111396399361969898205364400549799252857604</Value>
      </DicomAttribute>
      <DicomAttribute tag="00081199" vr="SQ" keyword="ReferencedSOPSequence">
        <Item number="1">
          <DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID">
            <Value number="1">1.2.840.10008.5.1.4.1.1.7</Value>
          </DicomAttribute>
          <DicomAttribute tag="00081155" vr="UI" keyword="ReferencedSOPInstanceUID">
            <Value number="1">1.3.6.1.4.1.11129.5.5.153751009835107614666834563294684339746480</Value>
          </DicomAttribute>
          <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL">
            <Value number="1">https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.111396399361969898205364400549799252857604/series/1.3.6.1.4.1.11129.5.5.195628213694300498946760767481291263511724/instances/1.3.6.1.4.1.11129.5.5.153751009835107614666834563294684339746480</Value>
          </DicomAttribute>
        </Item>
      </DicomAttribute>
    </NativeDicomModel>
    

    PowerShell

    Pour stocker l'instance DICOM, envoyez une requête POST et spécifiez les informations suivantes:

    • Nom et emplacement de l'ensemble de données parent
    • Le nom du magasin DICOM
    • Nom du fichier et emplacement du fichier d'instance DICOM sur votre machine

    L'exemple suivant montre une requête POST utilisant Windows PowerShell :

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/dicom" `
      -InFile dicom_00000001_000.dcm `
      -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies" | Select-Object -Expand Content
    

    Si la requête aboutit, le serveur affiche la réponse suivante au format XML:

    <NativeDicomModel>
      <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL">
        <Value number="1">https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.111396399361969898205364400549799252857604</Value>
      </DicomAttribute>
      <DicomAttribute tag="00081199" vr="SQ" keyword="ReferencedSOPSequence">
        <Item number="1">
          <DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID">
            <Value number="1">1.2.840.10008.5.1.4.1.1.7</Value>
          </DicomAttribute>
          <DicomAttribute tag="00081155" vr="UI" keyword="ReferencedSOPInstanceUID">
            <Value number="1">1.3.6.1.4.1.11129.5.5.153751009835107614666834563294684339746480</Value>
          </DicomAttribute>
          <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL">
            <Value number="1">https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.111396399361969898205364400549799252857604/series/1.3.6.1.4.1.11129.5.5.195628213694300498946760767481291263511724/instances/1.3.6.1.4.1.11129.5.5.153751009835107614666834563294684339746480</Value>
          </DicomAttribute>
        </Item>
      </DicomAttribute>
    </NativeDicomModel>
    

  4. Recherchez des instances dans le magasin DICOM pour afficher les métadonnées de l'instance que vous avez stockée:

    curl

    Pour afficher les métadonnées de l'instance DICOM que vous avez stockées, envoyez une requête GET et spécifiez les informations suivantes:

    • Nom et emplacement de l'ensemble de données parent
    • Le nom du magasin DICOM

    L'exemple suivant montre une requête GET utilisant curl pour rechercher des instances dans le magasin DICOM:

    curl -X GET \
         -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
         "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/instances"
    

    Si la requête aboutit, le serveur renvoie la réponse au format JSON :

    [
      {
        "00080016": {
          "vr": "UI",
          "Value": [
            "1.2.840.10008.5.1.4.1.1.7"
          ]
        },
        "00080018": {
          "vr": "UI",
          "Value": [
            "1.3.6.1.4.1.11129.5.5.153751009835107614666834563294684339746480"
          ]
        },
        "00080060": {
          "vr": "CS",
          "Value": [
            "DX"
          ]
        },
        "00100020": {
          "vr": "LO",
          "Value": [
            "1"
          ]
        },
        "00100040": {
          "vr": "CS",
          "Value": [
            "M"
          ]
        },
        "0020000D": {
          "vr": "UI",
          "Value": [
            "1.3.6.1.4.1.11129.5.5.111396399361969898205364400549799252857604"
          ]
        },
        "0020000E": {
          "vr": "UI",
          "Value": [
            "1.3.6.1.4.1.11129.5.5.195628213694300498946760767481291263511724"
          ]
        },
        "00280010": {
          "vr": "US",
          "Value": [
            1024
          ]
        },
        "00280011": {
          "vr": "US",
          "Value": [
            1024
          ]
        },
        "00280100": {
          "vr": "US",
          "Value": [
            8
          ]
        }
      }
    ]
    
    

    PowerShell

    Pour afficher les métadonnées de l'instance DICOM que vous avez stockées, envoyez une requête GET et spécifiez les informations suivantes:

    • Nom et emplacement de l'ensemble de données parent
    • Le nom du magasin DICOM

    L'exemple suivant montre une requête GET utilisant Windows PowerShell pour rechercher des instances dans le magasin DICOM:

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-RestMethod `
      -Method Get `
      -Headers $headers `
      -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/instances"
    

    Si la requête aboutit, le serveur renvoie la réponse au format JSON :

    [
      {
        "00080016": {
          "vr": "UI",
          "Value": [
            "1.2.840.10008.5.1.4.1.1.7"
          ]
        },
        "00080018": {
          "vr": "UI",
          "Value": [
            "1.3.6.1.4.1.11129.5.5.153751009835107614666834563294684339746480"
          ]
        },
        "00080060": {
          "vr": "CS",
          "Value": [
            "DX"
          ]
        },
        "00100020": {
          "vr": "LO",
          "Value": [
            "1"
          ]
        },
        "00100040": {
          "vr": "CS",
          "Value": [
            "M"
          ]
        },
        "0020000D": {
          "vr": "UI",
          "Value": [
            "1.3.6.1.4.1.11129.5.5.111396399361969898205364400549799252857604"
          ]
        },
        "0020000E": {
          "vr": "UI",
          "Value": [
            "1.3.6.1.4.1.11129.5.5.195628213694300498946760767481291263511724"
          ]
        },
        "00280010": {
          "vr": "US",
          "Value": [
            1024
          ]
        },
        "00280011": {
          "vr": "US",
          "Value": [
            1024
          ]
        },
        "00280100": {
          "vr": "US",
          "Value": [
            8
          ]
        }
      }
    ]
    

Maintenant que vous avez stocké et affiché une instance DICOM dans l'API Cloud Healthcare, passez à la section Étapes suivantes pour plus d'informations sur les étapes suivantes.

Stockage et affichage de ressources FHIR

Cette section explique comment effectuer les tâches suivantes:

  1. Créez un magasin FHIR.
  2. Stockez une ressource FHIR dans le magasin FHIR.
  3. Affichez les données de la ressource FHIR.

L'API Cloud Healthcare met en œuvre la spécification FHIR pour stocker des données FHIR et y accéder.

  1. Les magasins FHIR existent dans des ensembles de données et contiennent des ressources FHIR. Vous créez un magasin FHIR à l'aide de la méthode projects.locations.datasets.fhirStores.create:

    curl

    Pour créer un magasin FHIR, exécutez une requête POST et spécifiez les informations suivantes :

    • Nom et emplacement de l'ensemble de données parent
    • Le nom du datastore FHIR. L'ID de magasin FHIR doit être unique dans son ensemble de données parent. Il peut s'agir d'une chaîne Unicode de 1 à 256 caractères composée de chiffres, de lettres, de traits de soulignement, de tirets et de points.
    • Version FHIR du magasin FHIR. Les options disponibles sont DSTU2, STU3 ou R4. Pour ce guide de démarrage rapide, utilisez R4.

    L'exemple suivant montre une requête POST utilisant curl :

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        --data "{
          'version': 'R4'
        }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=FHIR_STORE_ID"
    

    Si la requête aboutit, le serveur affiche la réponse suivante au format JSON :

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID",
      "version": "R4"
    }
    

    PowerShell

    Pour créer un magasin FHIR, exécutez une requête POST et spécifiez les informations suivantes :

    • Nom et emplacement de l'ensemble de données parent
    • Le nom du datastore FHIR. L'ID de magasin FHIR doit être unique dans son ensemble de données parent. Il peut s'agir d'une chaîne Unicode de 1 à 256 caractères composée de chiffres, de lettres, de traits de soulignement, de tirets et de points.
    • La version FHIR du datastore FHIR : DSTU2, STU3 ou R4

    L'exemple suivant montre une requête POST utilisant Windows PowerShell :

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -Body "{
          'version': 'R4'
      }" `
      -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=FHIR_STORE_ID" | Select-Object -Expand Content
    

    Si la requête aboutit, le serveur renvoie la réponse au format JSON :

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID",
      "version": "R4"
    }
    

  2. Enregistrez l'exemple de fichier de ressource FHIR JSON. Le fichier contient les données de base d'une ressource Patient.

  3. Exécutez la commande suivante pour stocker la ressource Patient dans le magasin FHIR que vous avez créé:

    curl

    Pour créer la ressource Patient à partir de l'exemple de fichier, envoyez une requête POST et spécifiez les informations suivantes:

    • Nom et emplacement de l'ensemble de données parent
    • Le nom du magasin FHIR
    • Nom du fichier et emplacement du fichier de ressources FHIR sur votre ordinateur

    L'exemple suivant montre comment envoyer une requête POST à l'aide de curl pour créer la ressource Patient:

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/fhir+json; charset=utf-8" \
        --data @Patient.json \
        "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"
    

    Si la requête aboutit, le serveur affiche la réponse suivante:

    {
      "birthDate": "1970-01-01",
      "gender": "female",
      "id": "PATIENT_ID",
      "meta": {
        "lastUpdated": "LAST_UPDATED",
        "versionId": "VERSION_ID"
      },
      "name": [
        {
          "family": "Smith",
          "given": [
            "Darcy"
          ],
          "use": "official"
        }
      ],
      "resourceType": "Patient"
    }
    

    PowerShell

    Pour créer la ressource Patient à partir de l'exemple de fichier, envoyez une requête POST et spécifiez les informations suivantes:

    • Nom et emplacement de l'ensemble de données parent
    • Le nom du magasin FHIR
    • Nom du fichier et emplacement du fichier de ressources FHIR sur votre ordinateur

    L'exemple suivant montre comment envoyer une requête POST à l'aide de Windows PowerShell pour créer la ressource Patient:

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/dicom" `
      -InFile Patient.json `
      -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content
    

    Si la requête aboutit, le serveur affiche la réponse suivante:

    {
      "birthDate": "1970-01-01",
      "gender": "female",
      "id": "PATIENT_ID",
      "meta": {
        "lastUpdated": "LAST_UPDATED",
        "versionId": "VERSION_ID"
      },
      "name": [
        {
          "family": "Smith",
          "given": [
            "Darcy"
          ],
          "use": "official"
        }
      ],
      "resourceType": "Patient"
    }
    

  4. Recherchez la ressource dans votre magasin FHIR pour afficher des informations sur le patient:

    curl

    Pour rechercher la ressource Patient et afficher ses détails, envoyez une requête GET et spécifiez les informations suivantes:

    • Nom et emplacement de l'ensemble de données parent
    • Le nom du magasin FHIR
    • Chaîne de requête contenant les informations que vous recherchez. Dans cet exemple, vous recherchez le nom de famille du patient.

    L'exemple suivant montre une requête GET utilisant curl pour rechercher tous les patients portant le nom de famille "Smith".

    curl -X GET \
         -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
         "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?family:exact=Smith"
    

    Si la requête aboutit, le serveur renvoie la réponse en tant que Bundle FHIR au format JSON. Le Bundle.type est searchset et les résultats de recherche sont des entrées du tableau Bundle.entry. Dans cet exemple, la requête renvoie une seule ressource "Patient" incluant les données qu'elle contient :

    {
      "entry": [
        {
          "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID",
          "resource": {
            "birthDate": "1970-01-01",
            "gender": "female",
            "id": "PATIENT_ID",
            "meta": {
              "lastUpdated": "LAST_UPDATED",
              "versionId": "VERSION_ID"
            },
            "name": [
              {
                "family": "Smith",
                "given": [
                  "Darcy"
                ],
                "use": "official"
              }
            ],
            "resourceType": "Patient"
          },
          "search": {
            "mode": "match"
          }
        }
      ],
      "link": [
        {
          "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?family%3Aexact=Smith"
        }
      ],
      "resourceType": "Bundle",
      "total": 1,
      "type": "searchset"
    }
    

    PowerShell

    Pour rechercher la ressource Patient et afficher ses détails, envoyez une requête GET et spécifiez les informations suivantes:

    • Nom et emplacement de l'ensemble de données parent
    • Le nom du magasin FHIR
    • Chaîne de requête contenant les informations que vous recherchez. Dans cet exemple, vous recherchez le nom de famille du patient.

    L'exemple suivant montre une requête GET utilisant Windows PowerShell pour rechercher tous les patients portant le nom de famille "Smith".

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-RestMethod `
      -Method Get `
      -Headers $headers `
      -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE?family:exact=Smith" | ConvertTo-Json
    

    Si la requête aboutit, le serveur renvoie la réponse en tant que Bundle FHIR au format JSON. Le Bundle.type est searchset et les résultats de recherche sont des entrées du tableau Bundle.entry. Dans cet exemple, la requête renvoie une seule ressource "Patient" incluant les données qu'elle contient :

    {
      "entry": [
        {
          "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID",
          "resource": {
            "birthDate": "1970-01-01",
            "gender": "female",
            "id": "PATIENT_ID",
            "meta": {
              "lastUpdated": "LAST_UPDATED",
              "versionId": "VERSION_ID"
            },
            "name": [
              {
                "family": "Smith",
                "given": [
                  "Darcy"
                ],
                "use": "official"
              }
            ],
            "resourceType": "Patient"
          },
          "search": {
            "mode": "match"
          }
        }
      ],
      "link": [
        {
          "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?family%3Aexact=Smith"
        }
      ],
      "resourceType": "Bundle",
      "total": 1,
      "type": "searchset"
    }
    

Maintenant que vous avez stocké et affiché une ressource FHIR dans l'API Cloud Healthcare, passez à la section Étapes suivantes pour plus d'informations sur les étapes suivantes.

Stocker et afficher des messages HL7v2

Cette section explique comment effectuer les tâches suivantes:

  1. Créer un magasin HL7v2.
  2. Stockez un message HL7v2 dans le magasin HL7v2.
  3. Affichez les données du message HL7v2.

La mise en œuvre de HL7v2 dans l'API Cloud Healthcare est conforme à la norme HL7v2.

  1. Les magasins HL7v2 existent dans des ensembles de données et contiennent des messages HL7v2. Vous créez un magasin HL7v2 à l'aide de la méthode projects.locations.datasets.hl7V2Stores.create.

    curl

    Pour créer un magasin HL7v2, envoyez une requête POST, et spécifiez les informations suivantes :

    • Nom et emplacement de l'ensemble de données parent
    • Nom pour le magasin HL7v2. L'ID de magasin HL7v2 doit être unique dans son ensemble de données parent. Il peut s'agir d'une chaîne Unicode de 1 à 256 caractères composée de chiffres, de lettres, de traits de soulignement, de tirets et de points.

    L'exemple suivant montre une requête POST utilisant curl :

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

    Si la requête aboutit, le serveur affiche la réponse suivante au format JSON :

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID"
    }
    

    PowerShell

    Pour créer un magasin HL7v2, envoyez une requête POST, et spécifiez les informations suivantes :

    • Nom et emplacement de l'ensemble de données parent
    • Nom pour le magasin HL7v2. L'ID de magasin HL7v2 doit être unique dans son ensemble de données parent. Il peut s'agir d'une chaîne Unicode de 1 à 256 caractères composée de chiffres, de lettres, de traits de soulignement, de tirets et de points.

    L'exemple suivant montre une requête POST utilisant Windows PowerShell :

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores?hl7V2StoreId=HL7V2_STORE_ID" | Select-Object -Expand Content
    

    Si la requête aboutit, le serveur affiche une réponse semblable à l'exemple suivant au format JSON :

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID"
    }
    

  2. Téléchargez l'exemple de fichier de message HL7v2 sur votre ordinateur. Le message contient les informations de base suivantes, où elles sont encodées en base64 dans le champ data de l'exemple de fichier:

    MSH|^~\&|A|SEND_FACILITY|A|A|20180101000000||TYPE^A|20180101000000|T|0.0|||AA||00|ASCII
    EVN|A00|20180101040000
    PID||14^111^^^^MRN|11111111^^^^MRN~1111111111^^^^ORGNMBR
    
  3. Il existe deux méthodes pour stocker un message HL7v2: la création et l'ingestion. Pour en savoir plus, consultez la présentation de la création et de l'ingestion de messages HL7v2. Dans cet exemple, vous stockez le message HL7v2 à l'aide de la méthode "create", car la méthode d'ingestion consomme généralement un message HL7v2 provenant d'un centre de soins.

    Exécutez la commande suivante pour stocker le message HL7v2 dans le magasin HL7v2 que vous avez créé:

    curl

    Pour stocker le message HL7v2, envoyez une requête POST et spécifiez les informations suivantes:

    • Nom et emplacement de l'ensemble de données parent
    • Le nom du magasin HL7v2
    • Nom et emplacement du fichier de messages HL7v2 sur votre machine

    L'exemple suivant montre une requête POST utilisant curl :

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

    Si la requête aboutit, le serveur affiche la réponse suivante au format JSON:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID",
      "data": "TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZfEF8QXwyMDE4MDEwMTAwMDAwMHx8VFlQRV5BfDIwMTgwMTAxMDAwMDAwfFR8MC4wfHx8QUF8fDAwfEFTQ0lJDUVWTnxBMDB8MjAxODAxMDEwNDAwMDANUElEfHwxNAExMTFeXl5eTVJOfDExMTExMTExXl5eXk1STn4xMTExMTExMTExXl5eXk9SR05NQlI=",
      "sendFacility": "SEND_FACILITY",
      "sendTime": "2018-01-01T00:00:00Z",
      "messageType": "TYPE",
      "createTime": "CREATE_TIME",
      "patientIds": [
        {
          "value": "14\u0001111",
          "type": "MRN"
        },
        {
          "value": "11111111",
          "type": "MRN"
        },
        {
          "value": "1111111111",
          "type": "ORGNMBR"
        }
      ]
    }
    

    PowerShell

    Pour stocker le message HL7v2, envoyez une requête POST et spécifiez les informations suivantes:

    • Nom et emplacement de l'ensemble de données parent
    • Le nom du magasin HL7v2
    • Nom et emplacement du fichier de messages HL7v2 sur votre machine

    L'exemple suivant montre une requête POST utilisant Windows PowerShell :

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -InFile hl7v2-sample.json `
      -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages" | Select-Object -Expand Content
    

    Si la requête aboutit, le serveur affiche la réponse suivante au format JSON:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID",
      "data": "TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZfEF8QXwyMDE4MDEwMTAwMDAwMHx8VFlQRV5BfDIwMTgwMTAxMDAwMDAwfFR8MC4wfHx8QUF8fDAwfEFTQ0lJDUVWTnxBMDB8MjAxODAxMDEwNDAwMDANUElEfHwxNAExMTFeXl5eTVJOfDExMTExMTExXl5eXk1STn4xMTExMTExMTExXl5eXk9SR05NQlI=",
      "sendFacility": "SEND_FACILITY",
      "sendTime": "2018-01-01T00:00:00Z",
      "messageType": "TYPE",
      "createTime": "CREATE_TIME",
      "patientIds": [
        {
          "value": "14\u0001111",
          "type": "MRN"
        },
        {
          "value": "11111111",
          "type": "MRN"
        },
        {
          "value": "1111111111",
          "type": "ORGNMBR"
        }
      ]
    }
    

  4. À l'aide de la valeur MESSAGE_ID de la réponse reçue lors de la création du message, exécutez la commande suivante pour afficher les détails:

    curl

    Pour obtenir le contenu du message HL7v2, envoyez une requête GET et spécifiez les informations suivantes:

    • Nom et emplacement de l'ensemble de données parent
    • Le nom du magasin HL7v2
    • L'ID du message

    L'exemple suivant montre une requête GET utilisant curl :

    curl -X GET \
         -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
         "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID"
    

    Si la requête aboutit, le serveur renvoie la réponse au format JSON :

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID",
      "data": "TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZfEF8QXwyMDE4MDEwMTAwMDAwMHx8VFlQRV5BfDIwMTgwMTAxMDAwMDAwfFR8MC4wfHx8QUF8fDAwfEFTQ0lJDUVWTnxBMDB8MjAxODAxMDEwNDAwMDANUElEfHwxNAExMTFeXl5eTVJOfDExMTExMTExXl5eXk1STn4xMTExMTExMTExXl5eXk9SR05NQlI=",
      "sendFacility": "SEND_FACILITY",
      "sendTime": "2018-01-01T00:00:00Z",
      "messageType": "TYPE",
      "createTime": "CREATE_TIME",
      "patientIds": [
        {
          "value": "14\u0001111",
          "type": "MRN"
        },
        {
          "value": "11111111",
          "type": "MRN"
        },
        {
          "value": "1111111111",
          "type": "ORGNMBR"
        }
      ],
      "parsedData": {
        "segments": [
          {
            "segmentId": "MSH",
            "fields": {
              "5": "A",
              "8.1": "TYPE",
              "6": "20180101000000",
              "8.2": "A",
              "3": "SEND_FACILITY",
              "4": "A",
              "11": "0.0",
              "10": "T",
              "1": "^~\\&",
              "17": "ASCII",
              "2": "A",
              "0": "MSH",
              "14": "AA",
              "9": "20180101000000",
              "16": "00"
            }
          },
          {
            "segmentId": "EVN",
            "fields": {
              "2": "20180101040000",
              "0": "EVN",
              "1": "A00"
            }
          },
          {
            "segmentId": "PID",
            "fields": {
              "3[0].5": "MRN",
              "3[1].1": "1111111111",
              "3[1].5": "ORGNMBR",
              "0": "PID",
              "2.1": "14\u0001111",
              "2.5": "MRN",
              "3[0].1": "11111111"
            }
          }
        ]
      }
    }
    

    PowerShell

    Pour obtenir le contenu du message HL7v2, envoyez une requête GET et spécifiez les informations suivantes:

    • Nom et emplacement de l'ensemble de données parent
    • Le nom du magasin HL7v2
    • L'ID du message

    L'exemple suivant montre une requête GET utilisant Windows PowerShell :

    $cred = gcloud auth application-default 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/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID" | Select-Object -Expand Content
    

    Si la requête aboutit, le serveur renvoie la réponse au format JSON :

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID",
      "data": "TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZfEF8QXwyMDE4MDEwMTAwMDAwMHx8VFlQRV5BfDIwMTgwMTAxMDAwMDAwfFR8MC4wfHx8QUF8fDAwfEFTQ0lJDUVWTnxBMDB8MjAxODAxMDEwNDAwMDANUElEfHwxNAExMTFeXl5eTVJOfDExMTExMTExXl5eXk1STn4xMTExMTExMTExXl5eXk9SR05NQlI=",
      "sendFacility": "SEND_FACILITY",
      "sendTime": "2018-01-01T00:00:00Z",
      "messageType": "TYPE",
      "createTime": "CREATE_TIME",
      "patientIds": [
        {
          "value": "14\u0001111",
          "type": "MRN"
        },
        {
          "value": "11111111",
          "type": "MRN"
        },
        {
          "value": "1111111111",
          "type": "ORGNMBR"
        }
      ],
      "parsedData": {
        "segments": [
          {
            "segmentId": "MSH",
            "fields": {
              "5": "A",
              "8.1": "TYPE",
              "6": "20180101000000",
              "8.2": "A",
              "3": "SEND_FACILITY",
              "4": "A",
              "11": "0.0",
              "10": "T",
              "1": "^~\\&",
              "17": "ASCII",
              "2": "A",
              "0": "MSH",
              "14": "AA",
              "9": "20180101000000",
              "16": "00"
            }
          },
          {
            "segmentId": "EVN",
            "fields": {
              "2": "20180101040000",
              "0": "EVN",
              "1": "A00"
            }
          },
          {
            "segmentId": "PID",
            "fields": {
              "3[0].5": "MRN",
              "3[1].1": "1111111111",
              "3[1].5": "ORGNMBR",
              "0": "PID",
              "2.1": "14\u0001111",
              "2.5": "MRN",
              "3[0].1": "11111111"
            }
          }
        ]
      }
    }
    

Maintenant que vous avez stocké et affiché un message HL7v2 dans l'API Cloud Healthcare, passez à la section Étapes suivantes pour plus d'informations sur les étapes suivantes.

Nettoyer

Pour éviter que les ressources utilisées dans ce tutoriel soient facturées sur votre compte Google Cloud, vous pouvez nettoyer les ressources créées sur Google Cloud. Si vous avez créé un projet pour ce tutoriel, suivez les étapes décrites dans la section Supprimer le projet. Sinon, suivez la procédure décrite dans la section Supprimer l'ensemble de données.

Supprimer le projet

  1. Dans Cloud Console, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Supprimer l'ensemble de données

Si vous n'avez plus besoin de l'ensemble de données créé dans ce guide de démarrage rapide, vous pouvez le supprimer. La suppression d'un ensemble de données entraîne la suppression définitive de l'ensemble de données et des datastores FHIR, HL7v2 ou DICOM qu'il contient.

curl

Pour supprimer un ensemble de données, envoyez une requête DELETE en indiquant le nom et l'emplacement. L'exemple suivant montre une requête DELETE utilisant curl:

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

Si la requête aboutit, le serveur renvoie la réponse au format JSON :

{}

PowerShell

Pour supprimer un ensemble de données, envoyez une requête DELETE en indiquant le nom et l'emplacement de l'ensemble de données. L'exemple suivant montre une requête DELETE utilisant Windows PowerShell:

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

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

Si la requête aboutit, le serveur renvoie la réponse au format JSON :

{}

Comment ça s'est passé ?

Étape suivante

Consultez les sections suivantes pour obtenir des informations générales sur l'API Cloud Healthcare et sur l'outil de ligne de commande gcloud pour effectuer des tâches:

DICOM

Consultez le guide DICOM pour passer en revue les sujets suivants:

Consultez la instruction de conformité DICOM pour en savoir plus sur la manière dont l'API Cloud Healthcare met en œuvre la norme DICOMweb.

FHIR

Consultez le guide FHIR pour passer en revue les sujets tels que:

Consultez la Déclaration de conformité FHIR pour en savoir plus sur la manière dont l'API Cloud Healthcare met en œuvre la norme FHIR.

HL7v2

Consultez le guide HL7v2 pour passer en revue les sujets suivants: