Configura profili FHIR

Le guide e i profili all'implementazione FHIR assicurano che le risorse in un datastore FHIR siano conformi a specifici criteri definiti. Alcuni esempi di guide all'implementazione include la US Core Implementation Guide 4.0.0 e la Carin Blue Button Implementation Guide.

Questa pagina spiega come definire, configurare e utilizzare le guide all'implementazione e profili nei datastore FHIR R4 che usano la guida US Core Implementation Guide 4.0.0.

Panoramica

I profili FHIR sono una serie di regole aggiuntive definite sulla base della specifica FHIR che gestire le modalità di elaborazione delle risorse dei diversi sistemi sanitari. Puoi importare e abilitare FHIR profili in un datastore FHIR per garantire che tutte le risorse Il datastore FHIR soddisfa criteri specifici per la struttura delle risorse e le informazioni acquisite.

Definizioni della struttura e guide all'implementazione

Puoi importare i profili FHIR per il datastore FHIR inserendo uno o più definizioni di strutture raggruppate in una o più implementazioni guide. Utilizza una definizione della struttura per:

  • Definisci il vincolo per un campo in una risorsa FHIR.
  • Set di valori di riferimento che collegano i sistemi di codice e le risorse FHIR.

Puoi utilizzare una guida all'implementazione con le definizioni delle strutture per convalidare in modo che corrispondano al caso d'uso software di terze parti.

Ad esempio, supponiamo che il tuo software di terze parti debba rispettare i Center per Medicare e Interoperabilità dei servizi Medicaid (CMS) e accesso ai pazienti finali regola negli Stati Uniti. Il software di terze parti deve fornire un'API Patient Access conforme alle Profili CARIN Puoi importare e abilitare la guida all'implementazione di CARIN nel tuo datastore FHIR per per convalidare le risorse rispetto ai profili CARIN. Importazione e attivazione le guide all'implementazione sono descritte nelle sezioni successive di questa pagina.

Dopo aver importato la guida all'implementazione, puoi abilitarla nel tuo Datastore FHIR per la convalida delle risorse FHIR. Quando una risorsa FHIR viene aggiornata o aggiunta Google Cloud, l'API Cloud Healthcare verifica se corrisponde a una definizione di struttura guida all'implementazione. Se la risorsa FHIR non corrisponde, la risorsa FHIR viene aggiunta al datastore. Se La risorsa FHIR non è conforme alle definizioni della struttura nell'implementazione guida, viene restituito un messaggio di errore e la risorsa FHIR viene rifiutata.

Applicazione della convalida dei dati

L'API Cloud Healthcare applica la convalida dei dati quando si utilizzano i seguenti metodi:

Flusso di lavoro di convalida del profilo

Il seguente diagramma mostra il flusso di lavoro di convalida per l'aggiunta o l'aggiornamento Risorse FHIR:

profili-fhir

Definisci i tuoi profili FHIR

Le seguenti sezioni descrivono come scaricare le definizioni della struttura dal tuo software di terze parti e configurare una guida all'implementazione.

Scarica le risorse per la convalida del profilo

Per assicurarti che le definizioni della struttura corrispondano alla tua fonte autorevole, devi: per scaricare le risorse di convalida del profilo, come le definizioni della struttura, guide all'implementazione, o set di valori, da una sorgente esterna, come Registro della guida all'implementazione di FHIR.org. Le origini esterne forniscono un pacchetto contenente tutti gli insiemi di valori, i profili estensioni, un elenco di pagine e URL per ogni guida all'implementazione.

Ad esempio, se il sistema utilizza Stati Uniti di base profilo paziente, puoi scaricare le definizioni e l'implementazione della struttura guida utilizzata da US Core.

L'API Cloud Healthcare consente la convalida del seguente tipo di struttura regole di definizione:

  • slicing, con il sostegno dei seguenti discriminatori:
    • value
    • pattern
    • profile
  • min/max
  • type
  • fixed
  • pattern
  • minValue
  • maxValue
  • maxLength
  • binding, ad eccezione delle seguenti regole:
    • ValueSet.compose.include.filter
    • ValueSet.compose.exclude

Configura la guida all'implementazione

Dopo aver scaricato le definizioni della struttura, la guida all'implementazione e devi aggiungere i profili utilizzati nella guida all'implementazione per e convalidare le risorse FHIR.

Per configurare la guida all'implementazione, completa i seguenti passaggi:

  1. Apri il file della guida all'implementazione che hai scaricato dalla terza parte fornitore di software.

  2. Aggiungi la sezione seguente per includere le definizioni della struttura da convalidate dalla guida all'implementazione:

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

    Sostituisci quanto segue:

    • RESOURCE_TYPE: definisce il tipo di risorsa a cui sia applicabile la guida all'implementazione.
    • STRUCTURE_DEFINITION_URL: l'URL della sorgente del profilo della struttura, ad esempio US Core Patient Profile.
  3. Salva il file della guida all'implementazione.

    L'esempio seguente mostra i profili Paziente e Organizzazione abilitati per la guida all'implementazione di base per gli Stati Uniti:

    "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"
      },
      ...
    ]
    

Carica la guida all'implementazione in Cloud Storage

Dopo aver modificato la guida all'implementazione, devi caricare quanto segue in Cloud Storage:

  • La guida all'implementazione
  • Definizioni della struttura
  • Insiemi di valori

Dopo il caricamento, puoi utilizzare questi file per convalidare le risorse nel tuo FHIR .

Per caricare la guida all'implementazione in Cloud Storage, completa la seguenti passaggi:

  1. Elimina dalla guida all'implementazione tutti i file non utilizzati da FHIR profili nell'API Cloud Healthcare.

    Ad esempio, se implementi il modello base per gli Stati Uniti guida all'implementazione, puoi eliminare i seguenti file:

    • .DS_Store
    • ig-r4.json
    • openapi/.index.json
    • package.json
  2. Per aggiungere la guida all'implementazione, le definizioni della struttura e gli insiemi di valori a Cloud Storage, esegui questi comandi:

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

    Sostituisci quanto segue:

    • PATH_TO_IMPLEMENTATION_GUIDE: il percorso verso l'implementazione sul tuo computer
    • BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY: il bucket directory in cui archivi la guida all'implementazione in Cloud Storage

Importa la guida all'implementazione

Per utilizzare la guida all'implementazione per convalidare i profili nel datastore FHIR, importalo nel tuo datastore FHIR come risorsa FHIR.

I seguenti esempi mostrano come importare la guida all'implementazione in un FHIR negozio:

gcloud

Per aggiungere la guida all'implementazione come risorsa a un datastore FHIR, esegui il 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

Sostituisci quanto segue:

  • FHIR_STORE_ID: l'ID del datastore FHIR
  • DATASET_ID: l'ID del set di dati
  • BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY: posizione della guida all'implementazione in un bucket Cloud Storage

L'output è il seguente:

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

In questo output:

  • PROJECT_ID, LOCATION, DATASET_ID: i valori forniti nella chiamata al metodo
  • OPERATION_ID: un identificatore per l'operazione a lunga esecuzione fornita dall'API Cloud Healthcare

Per visualizzare ulteriori dettagli dell'operazione, esegui il comando gcloud healthcare operations describe , fornendo il valore OPERATION_ID dalla risposta:

gcloud healthcare operations describe OPERATION_ID \
  --dataset=DATASET_ID

L'output è il seguente. Se la risposta contiene done: true: l'operazione è terminata. In caso contrario, l'operazione è ancora in esecuzione. attendere qualche secondo ed eseguire di nuovo il 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"

Sostituisci quanto segue:

  • BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY: posizione della guida all'implementazione in un bucket Cloud Storage
  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • LOCATION: la posizione del set di dati
  • DATASET_ID: l'ID del set di dati
  • FHIR_STORE_ID: l'ID del datastore FHIR

La risposta è la seguente:

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

In questo output:

  • PROJECT_ID, LOCATION, DATASET_ID: i valori forniti nella chiamata al metodo
  • OPERATION_ID: un identificatore per l'operazione a lunga esecuzione fornita dall'API Cloud Healthcare

Per monitorare lo stato dell'operazione, utilizza la Metodo 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"

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • LOCATION: la posizione del set di dati
  • DATASET_ID: l'ID del set di dati
  • FHIR_STORE_ID: l'ID del datastore FHIR
  • OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione

L'output è il seguente. Se la risposta contiene "done": true: l'operazione è terminata. In caso contrario, l'operazione è ancora in esecuzione. Attendi qualche secondo, quindi richiama di nuovo il metodo 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

Sostituisci quanto segue:

  • BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY: posizione della guida all'implementazione in un bucket Cloud Storage
  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • LOCATION: la posizione del set di dati
  • DATASET_ID: l'ID del set di dati
  • FHIR_STORE_ID: l'ID del datastore FHIR

La risposta è la seguente:

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

In questo output:

  • PROJECT_ID, LOCATION, DATASET_ID: i valori forniti nella chiamata al metodo
  • OPERATION_ID: un identificatore per l'operazione a lunga esecuzione fornita dall'API Cloud Healthcare

Per monitorare lo stato dell'operazione, utilizza la Metodo 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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • LOCATION: la posizione del set di dati
  • DATASET_ID: l'ID del set di dati
  • FHIR_STORE_ID: l'ID del datastore FHIR
  • OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione

L'output è il seguente. Se la risposta contiene "done": true: l'operazione è terminata. In caso contrario, l'operazione è ancora in esecuzione. Attendi qualche secondo, quindi richiama di nuovo il metodo 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",
  }
}

Carica e importa le dipendenze dell'implementazione

Prima di poter attivare la guida all'implementazione, devi assicurarti che tutte le e le dipendenze della guida. Le dipendenze sono definite dal parametro dependsOn nella guida all'implementazione come segue:

"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"
  }
]

Per caricare e importare le dipendenze, segui le istruzioni in Carica la guida all'implementazione su Cloud Storage e Importa la guida all'implementazione, rispettivamente.

Attiva la guida all'implementazione

Per utilizzare una risorsa della guida all'implementazione per convalidare i profili, devi abilitare consulta la guida all'implementazione. Se attivi più di una guida all'implementazione, L'API Cloud Healthcare tenta di convalidare i profili rispetto a tutta l'implementazione guide. Una risorsa FHIR deve corrispondere a un solo profilo di qualsiasi abilitato guida all'implementazione.

L'API Cloud Healthcare convalida le guide all'implementazione solo quando ad attivarle. Se modifichi una guida all'implementazione e la attivi di nuovo, l'API Cloud Healthcare convalida la guida all'implementazione modificata.

Se rimuovi una guida all'implementazione dopo averla attivata, la guida all'implementazione non ha più effetto.

I seguenti esempi mostrano come attivare la guida all'implementazione per il profilo su un datastore FHIR esistente:

curl

Per attivare la guida all'implementazione , effettua una richiesta PATCH e specifica il le seguenti informazioni:

  • Il nome e la località del set di dati padre
  • Il nome del datastore FHIR
  • Il campo enabledImplementationGuides impostato sul percorso del tuo risorsa della guida all'implementazione

L'esempio seguente mostra una richiesta PATCH che utilizza 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"

Sostituisci quanto segue:

  • IMPLEMENTATION_GUIDE_URL: l'URL definito nella proprietà url della risorsa ImplementationGuide, ad esempio http://hl7.org/fhir/us/core/ImplementationGuide/hl7.fhir.us.core
  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • LOCATION: la posizione del set di dati
  • DATASET_ID: l'ID del set di dati
  • FHIR_STORE_ID: l'ID del datastore FHIR

La risposta è la seguente:

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

PowerShell

Per attivare la guida all'implementazione , effettua una richiesta PATCH e specifica il le seguenti informazioni:

  • Il nome e la località del set di dati padre
  • Il nome del datastore FHIR
  • Il campo enabledImplementationGuides impostato sul percorso del tuo risorsa della guida all'implementazione

L'esempio seguente mostra una richiesta PATCH mediante 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

Sostituisci quanto segue:

  • IMPLEMENTATION_GUIDE_URL: l'URL definito nella proprietà url della risorsa ImplementationGuide, ad esempio http://hl7.org/fhir/us/core/ImplementationGuide/hl7.fhir.us.core
  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • LOCATION: la posizione del set di dati
  • DATASET_ID: l'ID del set di dati
  • FHIR_STORE_ID: l'ID del datastore FHIR

La risposta è la seguente:

{
  "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

Utilizzare la console Google Cloud per abilitare le guide all'implementazione

Quando utilizzi la console Google Cloud per crea o modifica un datastore FHIR, puoi eseguire seguenti:

  • Seleziona le guide all'implementazione predefinite fornite API Cloud Healthcare
  • Importa una guida all'implementazione personalizzata da Cloud Storage nel tuo datastore FHIR

Per importare una guida all'implementazione personalizzata, completa i seguenti passaggi:

  1. Scarica le risorse per la convalida del profilo.

  2. (Facoltativo) Configura la guida all'implementazione.

    Questo passaggio è necessario per aggiungere l'array global alla guida all'implementazione manualmente la risorsa. Se scegli di saltare questo passaggio, devi aggiungere l'array global quando crei il bundle di transazioni FHIR nel passaggio successivo utilizzando un metodo diverso, ad esempio Bundler per le risorse di convalida del profilo FHIR con il flag generate_global_array.

  3. Crea un pacchetto di transazioni FHIR. delle risorse di convalida del profilo, che include la guida all'implementazione, le definizioni della struttura e gli insiemi di valori.

    Puoi creare il pacchetto di transazioni utilizzando il metodo Bundler per le risorse di convalida del profilo FHIR lo strumento a riga di comando gcloud.

  4. Carica il bundle di convalida del profilo FHIR in una località di Cloud Storage.

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

    Sostituisci quanto segue:

    • PATH_TO_PROFILE_VALIDATION_BUNDLE: il percorso del profilo di convalida sulla macchina locale
    • BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY: il valore Percorso di Cloud Storage in cui deve essere archiviato il bundle
  5. Importa la guida all'implementazione personalizzata dalla posizione di Cloud Storage quando crei o modifica per il datastore FHIR.

Convalida le risorse rispetto a profili specifici

Gli esempi riportati di seguito mostrano come convalidare una risorsa FHIR per uno specifico standard o per tutti i profili definiti per un datastore FHIR. Convalida della risorsa FHIR consente di determinare se la risorsa FHIR è conforme a un altro profilo.

Per convalidare una risorsa FHIR, utilizza 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'

Sostituisci quanto segue:

  • RESOURCE_FILE: la posizione di un file contenente la risorsa
  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • LOCATION: la posizione del set di dati
  • DATASET_ID: l'ID del set di dati
  • FHIR_STORE_ID: l'ID del datastore FHIR
  • PROFILE_URL: l'URL canonico del profilo FHIR, ad esempio http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient per una risorsa Paziente. Deve essere presente un Risorsa StructuredDefinition in FHIR_STORE_ID che ha questo URL. Se mediante la convalida della risorsa rispetto ai profili già abilitati nel , non fornire questo parametro di query.
  • RESOURCE_TYPE: il tipo di risorsa

Se una risorsa è conforme ai profili, viene visualizzata una risposta simile alla seguente: restituito:

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

Se una risorsa non è conforme a un profilo, viene restituito un errore con la dicitura simile alla seguente:

{
    "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

Sostituisci quanto segue:

  • RESOURCE_FILE: la posizione di un file contenente la risorsa
  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • LOCATION: la posizione del set di dati
  • DATASET_ID: l'ID del set di dati
  • FHIR_STORE_ID: l'ID del datastore FHIR
  • PROFILE_URL: l'URL canonico del profilo FHIR, ad esempio http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient per una risorsa Paziente. Deve essere presente un Risorsa StructuredDefinition in FHIR_STORE_ID che ha questo URL. Se mediante la convalida della risorsa rispetto ai profili già abilitati nel , non fornire questo parametro di query.
  • RESOURCE_TYPE: il tipo di risorsa

Se una risorsa viene convalidata per un profilo, viene visualizzata una risposta simile alla seguente: restituito:

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

Se una risorsa non viene convalidata per un profilo, viene restituito un errore con la dicitura simile alla seguente:

{
    "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