Configure perfis FHIR

Os guias de implementação e os perfis da FHIR garantem que os recursos numa loja FHIR estão em conformidade com critérios definidos específicos. Alguns exemplos de guias de implementação incluem o US Core Implementation Guide 4.0.0 e o Carin Blue Button Implementation Guide.

Esta página explica como definir, configurar e usar guias de implementação e perfis em lojas FHIR R4 através do guia de implementação US Core 4.0.0.

Vista geral

Os perfis FHIR são um conjunto de regras adicionais definidas com base na especificação FHIR base que processam a forma como os diferentes sistemas de cuidados de saúde processam os recursos. Pode importar e ativar perfis FHIR numa loja FHIR para garantir que todos os recursos numa loja FHIR cumprem critérios específicos para a estrutura de recursos e as informações captadas.

Definições de estrutura e guias de implementação

Pode importar perfis FHIR para a sua loja FHIR inserindo uma ou mais definições de estrutura agrupadas num ou mais guias de implementação. Use uma definição de estrutura para fazer o seguinte:

  • Defina a restrição para um campo num recurso FHIR.
  • Conjuntos de valores de referência que associam sistemas de códigos e recursos FHIR.

Usa um guia de implementação com definições de estrutura para validar recursos de modo que correspondam ao exemplo de utilização do seu software de terceiros.

Por exemplo, suponhamos que o seu software de terceiros tem de estar em conformidade com os Centros de Serviços Medicare e Medicaid (CMS) nos EUA. O seu software de terceiros tem de fornecer uma API Patient Access que esteja em conformidade com os perfis CARIN. Pode importar e ativar o guia de implementação da CARIN na sua loja FHIR para validar os recursos em relação aos perfis da CARIN. A importação e a ativação dos guias de implementação são descritas nas secções seguintes desta página.

Depois de importar o guia de implementação, pode ativá-lo na sua loja FHIR para a validação de recursos FHIR. Quando um recurso FHIR é atualizado ou adicionado ao repositório, a Cloud Healthcare API verifica se corresponde a uma definição de estrutura no guia de implementação. Se o recurso FHIR corresponder, o recurso FHIR é adicionado ao armazenamento. Se o recurso FHIR não estiver em conformidade com as definições de estrutura no guia de implementação, é devolvida uma mensagem de erro e o recurso FHIR é rejeitado.

Aplicação da validação de dados

A Cloud Healthcare API aplica a validação de dados quando usa os seguintes métodos:

Fluxo de trabalho de validação do perfil

O diagrama seguinte mostra o fluxo de trabalho de validação para adicionar ou atualizar recursos FHIR:

fhir-profiles

Defina os seus perfis FHIR

As secções seguintes descrevem como transferir definições de estrutura do seu software de terceiros e configurar um guia de implementação.

Transfira os recursos de validação do perfil

Para garantir que as definições da estrutura correspondem à sua fonte autorizada, tem de transferir os recursos de validação do perfil, como definições da estrutura, guias de implementação ou conjuntos de valores, a partir de uma fonte externa, como o registo do guia de implementação da FHIR.org. As origens externas fornecem um pacote que contém todos os conjuntos de valores, perfis, extensões, uma lista de páginas e URLs para cada guia de implementação.

Por exemplo, se o seu sistema usar o perfil de paciente US Core, pode transferir as definições de estrutura e o guia de implementação usados pelo US Core.

A API Cloud Healthcare permite a validação para o seguinte tipo de regras de definição de estrutura:

  • slicing, com suporte para os seguintes discriminadores:
    • value
    • pattern
    • profile
  • min/max
  • type
  • fixed
  • pattern
  • minValue
  • maxValue
  • maxLength
  • binding, com exceção das seguintes regras:
    • ValueSet.compose.include.filter
    • ValueSet.compose.exclude

Configure o guia de implementação

Depois de transferir as definições da estrutura, o guia de implementação e o conjunto de valores, tem de adicionar os perfis que o guia de implementação usa para validar os recursos FHIR.

Para configurar o guia de implementação, conclua os seguintes passos:

  1. Abra o ficheiro do guia de implementação que transferiu do fornecedor de software externo.

  2. Adicione a secção seguinte para incluir as definições de estrutura a validar pelo seu guia de implementação:

    {
        "resourceType": "ImplementationGuide",
        ...
        "global": [
            {
            "type": "RESOURCE_TYPE",
            "profile": "STRUCTURE_DEFINITION_URL"
            }
        ]
        ...
    }

    Substitua o seguinte:

    • RESOURCE_TYPE: define o tipo de recurso ao qual o guia de implementação é aplicável.
    • STRUCTURE_DEFINITION_URL: o URL para a definição da estrutura de origem do perfil, por exemplo, o US Core Patient Profile.
  3. Guarde o ficheiro do guia de implementação.

    O exemplo seguinte mostra os perfis de paciente e organização ativados para o guia de implementação do US Core:

    "global":[
      {
        "type":"Patient",
        "profile":"https://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
      },
      {
        "type":"Organization",
        "profile":"https://hl7.org/fhir/us/core/StructureDefinition/us-core-organization"
      },
      ...
    ]
    

Carregue o seu guia de implementação para o Cloud Storage

Depois de editar o guia de implementação, tem de carregar os seguintes ficheiros para o Cloud Storage:

  • O guia de implementação
  • Definições de estruturas
  • Conjuntos de valores

Após o carregamento, pode usar estes ficheiros para validar recursos na sua FHIR store.

Para carregar o guia de implementação para o Cloud Storage, conclua os passos seguintes:

  1. Elimine todos os ficheiros do seu guia de implementação que não sejam usados por perfis FHIR na Cloud Healthcare API.

    Por exemplo, se estiver a implementar o guia de implementação principal dos EUA, pode eliminar os seguintes ficheiros:

    • .DS_Store
    • ig-r4.json
    • openapi/.index.json
    • package.json
  2. Para adicionar o guia de implementação, as definições de estrutura e os conjuntos de valores ao Cloud Storage, execute os seguintes comandos:

    gcloud storage cp \
       PATH_TO_IMPLEMENTATION_GUIDE \
       gs://BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY \
       --recursive

    Substitua o seguinte:

    • PATH_TO_IMPLEMENTATION_GUIDE: o caminho para o guia de implementação na sua máquina local
    • BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY: o contentor e o diretório onde armazena o guia de implementação no Cloud Storage

Importe o seu guia de implementação

Para usar o guia de implementação para validar perfis na sua loja FHIR, importe-o para a sua loja FHIR como um recurso FHIR.

Os exemplos seguintes mostram como importar o seu guia de implementação para um FHIR store:

gcloud

Para adicionar o seu guia de implementação como um recurso a uma loja FHIR, execute o comando gcloud healthcare fhir-stores import gcs:

gcloud healthcare fhir-stores import gcs FHIR_STORE_ID \
  --dataset=DATASET_ID \
  --gcs-uri='gs://BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY/*' \
  --content-structure=resource-pretty

Substitua o seguinte:

  • FHIR_STORE_ID: o ID da loja FHIR
  • DATASET_ID: o ID do conjunto de dados
  • BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY: a localização do guia de implementação num contentor do Cloud Storage

O resultado é o seguinte:

Request issued for: [FHIR_STORE_ID]
Waiting for operation [OPERATION_ID] to complete...done.
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID

Neste resultado:

  • PROJECT_ID, LOCATION, DATASET_ID: os valores que forneceu na chamada do método
  • OPERATION_ID: um identificador para a operação de longa duração fornecida pela Cloud Healthcare API

Para ver mais detalhes da operação, execute o comando gcloud healthcare operations describe e indique o OPERATION_ID da resposta:

gcloud healthcare operations describe OPERATION_ID \
  --dataset=DATASET_ID

O resultado é o seguinte. Se a resposta contiver done: true, a operação está concluída. Se não for o caso, a operação ainda está em execução; aguarde alguns segundos e, em seguida, execute novamente o comando gcloud healthcare operations describe.

done: true
metadata:
  '@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata
  apiMethodName: google.cloud.healthcare.v1.fhir.FhirService.ImportResources
  createTime: 'CREATE_TIME'
  endTime: 'END_TIME'
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID
response:
  '@type': type.googleapis.com/google.cloud.healthcare.v1.fhir.rest.ImportResourcesResponse
  fhirStore: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID

API

curl

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data '{
      "contentStructure": "RESOURCE_PRETTY",
      "gcsSource": {
        "uri": "gs://BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY/*"
      }
    }' "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:import"

Substitua o seguinte:

  • BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY: a localização do guia de implementação num contentor do Cloud Storage
  • PROJECT_ID: o ID do seu Google Cloud projeto
  • LOCATION: a localização do conjunto de dados
  • DATASET_ID: o ID do conjunto de dados
  • FHIR_STORE_ID: o ID da loja FHIR

A resposta é a seguinte:

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

Neste resultado:

  • PROJECT_ID, LOCATION, DATASET_ID: os valores que forneceu na chamada do método
  • OPERATION_ID: um identificador para a operação de longa duração fornecida pela Cloud Healthcare API

Para acompanhar o estado da operação, use o método operations.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"

Substitua o seguinte:

  • PROJECT_ID: o ID do seu Google Cloud projeto
  • LOCATION: a localização do conjunto de dados
  • DATASET_ID: o ID do conjunto de dados
  • FHIR_STORE_ID: o ID da loja FHIR
  • OPERATION_ID: o ID devolvido pela operação de longa duração

O resultado é o seguinte. Se a resposta contiver "done": true, a operação está concluída. Se não aparecer, a operação ainda está em execução; aguarde alguns segundos e, em seguida, chame novamente o método operations.get.

{
  "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.fhir.FhirService.ImportResources",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
    "counter": {
      "success": "SUCCESS_COUNT"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.fhir.rest.ImportResourcesResponse",
  }
}

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 '{
    "contentStructure": "RESOURCE_PRETTY",
    "gcsSource": {
      "uri": "gs://BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY/*"
    }
  }' `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:import" | Select-Object -Expand Content

Substitua o seguinte:

  • BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY: a localização do guia de implementação num contentor do Cloud Storage
  • PROJECT_ID: o ID do seu Google Cloud projeto
  • LOCATION: a localização do conjunto de dados
  • DATASET_ID: o ID do conjunto de dados
  • FHIR_STORE_ID: o ID da loja FHIR

A resposta é a seguinte:

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

Neste resultado:

  • PROJECT_ID, LOCATION, DATASET_ID: os valores que forneceu na chamada do método
  • OPERATION_ID: um identificador para a operação de longa duração fornecida pela Cloud Healthcare API

Para acompanhar o estado da operação, use o método operations.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

Substitua o seguinte:

  • PROJECT_ID: o ID do seu Google Cloud projeto
  • LOCATION: a localização do conjunto de dados
  • DATASET_ID: o ID do conjunto de dados
  • FHIR_STORE_ID: o ID da loja FHIR
  • OPERATION_ID: o ID devolvido pela operação de longa duração

O resultado é o seguinte. Se a resposta contiver "done": true, a operação está concluída. Se não aparecer, a operação ainda está em execução; aguarde alguns segundos e, em seguida, chame novamente o método operations.get.

{
  "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.fhir.FhirService.ImportResources",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
    "counter": {
      "success": "SUCCESS_COUNT"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.fhir.rest.ImportResourcesResponse",
  }
}

Carregue e importe as dependências da sua implementação

Antes de poder ativar o guia de implementação, tem de garantir que todas as dependências do guia são carregadas e importadas. As dependências são definidas pelo parâmetro dependsOn no seu guia de implementação da seguinte forma:

"dependsOn":[
  {
    "id":"hl7_fhir_uv_bulkdata",
    "uri":"http://hl7.org/fhir/uv/bulkdata/ImplementationGuide/hl7.fhir.uv.bulkdata",
    "packageId":"hl7.fhir.uv.bulkdata",
    "version":"1.0.1"
  },
  {
    "id":"vsac",
    "uri":"http://fhir.org/packages/us.nlm.vsac/ImplementationGuide/us.nlm.vsac",
    "packageId":"us.nlm.vsac",
    "version":"0.3.0"
  }
]

Para carregar e importar dependências, siga as instruções em Carregue o seu guia de implementação para o Cloud Storage e Importe o seu guia de implementação, respetivamente.

Ative o guia de implementação

Para usar um recurso do guia de implementação para validar perfis, tem de ativar o guia de implementação. Se ativar mais do que um guia de implementação, a API Cloud Healthcare tenta validar os perfis em relação a todos os guias de implementação. Um recurso FHIR só precisa de corresponder a um perfil de qualquer guia de implementação ativado.

A Cloud Healthcare API só valida os guias de implementação quando os ativa. Se modificar um guia de implementação e o ativar novamente, a Cloud Healthcare API valida o guia de implementação modificado.

Se remover um guia de implementação depois de o ativar, o guia de implementação deixa de ter efeito.

Os exemplos seguintes mostram como ativar o guia de implementação para a validação de perfis numa loja FHIR existente:

curl

Para ativar o guia de implementação , faça um pedido PATCH e especifique as seguintes informações:

  • O nome e a localização do conjunto de dados principal
  • O nome do FHIR store
  • O campo enabledImplementationGuides definido para o caminho para o recurso do guia de implementação

O exemplo seguinte mostra um pedido PATCH através de curl.

curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/fhir+json; charset=utf-8" \
    --data '{
      "validationConfig": {
          "enabledImplementationGuides": ["IMPLEMENTATION_GUIDE_URL"],
          "disableProfileValidation": false
      }
    }' "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID?updateMask=validationConfig"

Substitua o seguinte:

  • IMPLEMENTATION_GUIDE_URL: o URL definido na propriedade url do recurso ImplementationGuide, por exemplo, http://hl7.org/fhir/us/core/ImplementationGuide/hl7.fhir.us.core
  • PROJECT_ID: o ID do seu Google Cloud projeto
  • LOCATION: a localização do conjunto de dados
  • DATASET_ID: o ID do conjunto de dados
  • FHIR_STORE_ID: o ID da loja FHIR

A resposta é a seguinte:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID",
  "validationConfig": {
    "enabledImplementationGuides": ["IMPLEMENTATION_GUIDE_URL"]
  }
}

PowerShell

Para ativar o guia de implementação , faça um pedido PATCH e especifique as seguintes informações:

  • O nome e a localização do conjunto de dados principal
  • O nome do FHIR store
  • O campo enabledImplementationGuides definido para o caminho para o recurso do guia de implementação

O exemplo seguinte mostra um pedido PATCH através do Windows PowerShell.

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

Invoke-WebRequest `
  -Method Patch `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body '{
      "validationConfig": {
          "enabledImplementationGuides": ["IMPLEMENTATION_GUIDE_URL"]
      }
  }' `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID?updateMask=validationConfig" | Select-Object -Expand Content

Substitua o seguinte:

  • IMPLEMENTATION_GUIDE_URL: o URL definido na propriedade url do recurso ImplementationGuide, por exemplo, http://hl7.org/fhir/us/core/ImplementationGuide/hl7.fhir.us.core
  • PROJECT_ID: o ID do seu Google Cloud projeto
  • LOCATION: a localização do conjunto de dados
  • DATASET_ID: o ID do conjunto de dados
  • FHIR_STORE_ID: o ID da loja FHIR

A resposta é a seguinte:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID",
  "validationConfig": {
    "enabledImplementationGuides": ["IMPLEMENTATION_GUIDE_URL"],
  },
}

Python

def enable_implementation_guide(
    project_id,
    location,
    dataset_id,
    fhir_store_id,
    implementation_guide_url,
):
    """
    Patches an existing FHIR store to enable an ImplementationGuide resource
    that exists in the FHIR store.

    See https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/healthcare/api-client/v1/fhir
    before running the sample."""
    # Imports the Google API Discovery Service.
    from googleapiclient import discovery

    api_version = "v1"
    service_name = "healthcare"
    # Instantiates an authorized API client by discovering the Healthcare API
    # and using GOOGLE_APPLICATION_CREDENTIALS environment variable.
    client = discovery.build(service_name, api_version)

    # TODO(developer): Uncomment these lines and replace with your values.
    # project_id = 'my-project'  # replace with your GCP project ID
    # location = 'us-central1'  # replace with the dataset's location
    # dataset_id = 'my-dataset'  # replace with your dataset ID
    # fhir_store_id = 'my-fhir-store'  # replace with the FHIR store's ID
    # implementation_guide_url =
    # 'http://hl7.org/fhir/us/core/ImplementationGuide/hl7.fhir.us.core'  #
    # replace with the 'url' property in the ImplementationGuide resource
    fhir_store_parent = "projects/{}/locations/{}/datasets/{}".format(
        project_id, location, dataset_id
    )
    fhir_store_name = f"{fhir_store_parent}/fhirStores/{fhir_store_id}"

    validation_config = {
        "validationConfig": {"enabledImplementationGuides": [implementation_guide_url]}
    }

    request = (
        client.projects()
        .locations()
        .datasets()
        .fhirStores()
        .patch(
            name=fhir_store_name, updateMask="validationConfig", body=validation_config
        )
    )

    response = request.execute()
    print(
        "Enabled ImplementationGuide with URL {} on FHIR store {}".format(
            implementation_guide_url, fhir_store_id
        )
    )

    return response

Use a Google Cloud consola para ativar os guias de implementação

Quando usa a Google Cloud consola para criar ou editar uma loja FHIR, pode fazer o seguinte:

  • Selecione os guias de implementação predefinidos fornecidos pela API Cloud Healthcare
  • Importe um guia de implementação personalizado do Cloud Storage para a sua loja FHIR

Para importar um guia de implementação personalizado, conclua os seguintes passos:

  1. Transfira os recursos de validação do perfil.

  2. Opcional: configure o guia de implementação.

    Este passo é necessário para adicionar manualmente a matriz global ao recurso do guia de implementação. Se optar por ignorar este passo, tem de adicionar a matriz global quando criar o pacote de transações FHIR no passo seguinte através de um método diferente, como a ferramenta Bundler for FHIR profile validation resources com a flag generate_global_array.

  3. Crie um pacote de transações FHIR dos recursos de validação do seu perfil, que inclui o guia de implementação, as definições de estrutura e os conjuntos de valores.

    Pode criar o pacote de transações através da ferramenta Bundler for FHIR profile validation resources.

  4. Carregue o pacote de validação do perfil FHIR para uma localização do Cloud Storage.

    gcloud storage cp \
       PATH_TO_PROFILE_VALIDATION_BUNDLE \
       gs://BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY \
       --recursive

    Substitua o seguinte:

    • PATH_TO_PROFILE_VALIDATION_BUNDLE: o caminho para o pacote de validação do perfil no seu computador local
    • BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY: a localização do Cloud Storage onde o pacote tem de ser armazenado
  5. Importe o seu guia de implementação personalizado da localização do Cloud Storage quando criar ou editar a sua loja FHIR.

Valide recursos em relação a perfis específicos

Os exemplos seguintes mostram como validar um recurso FHIR para um perfil específico ou para todos os perfis definidos para um arquivo FHIR. A validação do recurso FHIR permite-lhe determinar se o seu recurso FHIR está em conformidade com um ou mais perfis.

Para validar um recurso FHIR, use o método fhir.Resource-validate.

curl

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

Substitua o seguinte:

  • RESOURCE_FILE: a localização de um ficheiro que contém o recurso
  • PROJECT_ID: o ID do seu Google Cloud projeto
  • LOCATION: a localização do conjunto de dados
  • DATASET_ID: o ID do conjunto de dados
  • FHIR_STORE_ID: o ID da loja FHIR
  • PROFILE_URL: o URL canónico do perfil FHIR, por exemplo, http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient para um recurso de paciente. Tem de existir um recurso StructureDefinition em FHIR_STORE_ID com este URL. Se estiver a validar o recurso em relação aos perfis que já ativou na loja, não faculte este parâmetro de consulta.
  • RESOURCE_TYPE: o tipo de recurso

Se um recurso estiver em conformidade com os perfis, é devolvida uma resposta semelhante à seguinte:

{
  "issue": [
    {
      "code": "informational",
      "details": {
        "text": "success"
      },
      "diagnostics": "success",
      "severity": "information"
    }
  ],
  "resourceType": "OperationOutcome"
}

Se um recurso não estiver em conformidade com um perfil, é devolvido um erro com uma resposta semelhante à seguinte:

{
    "issue": [
        {
            "code": "processing",
            "diagnostics": "Profile http://hl7.org/fhir/StructureDefinition/AuditEvent, Element 'AuditEvent.agent.requestor': minimum required = 1, but only found 0",
            "location": [
                "AuditEvent.agent"
            ],
            "severity": "error"
        }
    ],
    "resourceType": "OperationOutcome"
}

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 '@RESOURCE_FILE' `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE/$validate?profile=PROFILE_URL" | Select-Object -Expand Content

Substitua o seguinte:

  • RESOURCE_FILE: a localização de um ficheiro que contém o recurso
  • PROJECT_ID: o ID do seu Google Cloud projeto
  • LOCATION: a localização do conjunto de dados
  • DATASET_ID: o ID do conjunto de dados
  • FHIR_STORE_ID: o ID da loja FHIR
  • PROFILE_URL: o URL canónico do perfil FHIR, por exemplo, http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient para um recurso de paciente. Tem de existir um recurso StructureDefinition em FHIR_STORE_ID com este URL. Se estiver a validar o recurso em relação aos perfis que já ativou na loja, não faculte este parâmetro de consulta.
  • RESOURCE_TYPE: o tipo de recurso

Se um recurso for validado para um perfil, é devolvida uma resposta semelhante à seguinte:

{
  "issue": [
    {
      "code": "informational",
      "details": {
        "text": "success"
      },
      "diagnostics": "success",
      "severity": "information"
    }
  ],
  "resourceType": "OperationOutcome"
}

Se um recurso não for validado para um perfil, é devolvido um erro com uma resposta semelhante à seguinte:

{
    "issue": [
        {
            "code": "processing",
            "diagnostics": "Profile http://hl7.org/fhir/StructureDefinition/AuditEvent, Element 'AuditEvent.agent.requestor': minimum required = 1, but only found 0",
            "location": [
                "AuditEvent.agent"
            ],
            "severity": "error"
        }
    ],
    "resourceType": "OperationOutcome"
}

Python

def validate_resource_profile_url(
    project_id, location, dataset_id, fhir_store_id, resource_type, profile_url
):
    """Validates an input FHIR resource's conformance to a profile URL. The
    profile StructureDefinition resource must exist in the FHIR store before
    performing validation against the URL.

    See https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/healthcare/api-client/v1/fhir
    before running the sample."""
    # Imports Python's built-in "os" module
    import os

    # Imports the google.auth.transport.requests transport
    from google.auth.transport import requests

    # Imports a module to allow authentication using a service account
    from google.oauth2 import service_account

    # Gets credentials from the environment.
    credentials = service_account.Credentials.from_service_account_file(
        os.environ["GOOGLE_APPLICATION_CREDENTIALS"]
    )
    scoped_credentials = credentials.with_scopes(
        ["https://www.googleapis.com/auth/cloud-platform"]
    )
    # Creates a requests Session object with the credentials.
    session = requests.AuthorizedSession(scoped_credentials)

    # URL to the Cloud Healthcare API endpoint and version
    base_url = "https://healthcare.googleapis.com/v1"

    # TODO(developer): Uncomment these lines and replace with your values.
    # project_id = 'my-project'  # replace with your GCP project ID
    # location = 'us-central1'  # replace with the parent dataset's location
    # dataset_id = 'my-dataset'  # replace with the parent dataset's ID
    # fhir_store_id = 'my-fhir-store' # replace with the FHIR store ID
    # resource_type = 'Patient'  # replace with the FHIR resource type
    # profile_url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient'  # replace with the profile URL
    url = f"{base_url}/projects/{project_id}/locations/{location}"

    resource_path = "{}/datasets/{}/fhirStores/{}/fhir/{}".format(
        url, dataset_id, fhir_store_id, resource_type
    )

    resource_path += "/$validate"
    params = {"profile": profile_url}

    # The body shown works with a Patient resource and is not guaranteed
    # to work with other types of FHIR resources. If necessary,
    # supply a new body with data that corresponds to the resource you
    # are validating and supply a new resource_type.
    body = {
        "name": [{"use": "official", "family": "Smith", "given": ["Darcy"]}],
        "gender": "female",
        "birthDate": "1970-01-01",
        "resourceType": "Patient",
    }

    # Sets required application/fhir+json header on the request
    headers = {"Content-Type": "application/fhir+json;charset=utf-8"}

    response = session.post(resource_path, headers=headers, json=body, params=params)
    response.raise_for_status()

    resource = response.json()

    print(json.dumps(resource))

    return resource