Mengonfigurasi profil FHIR

Panduan dan profil penerapan FHIR memastikan bahwa resource di FHIR store sesuai dengan kriteria tertentu yang ditentukan. Beberapa contoh panduan penerapan meliputi Panduan Penerapan Core AS 4.0.0 dan Panduan Penerapan Tombol Biru Carin.

Halaman ini menjelaskan cara menentukan, mengonfigurasi, dan menggunakan panduan dan profil penerapan di penyimpanan FHIR R4 menggunakan Panduan Penerapan Inti AS 4.0.0.

Ringkasan

Profil FHIR adalah serangkaian aturan tambahan yang ditentukan di atas spesifikasi FHIR dasar yang menangani cara berbagai sistem layanan kesehatan memproses resource. Anda dapat mengimpor dan mengaktifkan profil FHIR di penyimpanan FHIR untuk memastikan bahwa semua resource di penyimpanan FHIR memenuhi kriteria tertentu untuk struktur resource dan informasi yang diambil.

Panduan penerapan dan definisi struktur

Anda dapat mengimpor profil FHIR untuk penyimpanan FHIR dengan menyisipkan satu atau beberapa definisi struktur yang dikelompokkan ke dalam satu atau beberapa panduan penerapan. Gunakan definisi struktur untuk melakukan hal berikut:

  • Menentukan batasan untuk kolom dalam resource FHIR.
  • Kumpulan nilai referensi yang menautkan sistem kode dan resource FHIR.

Anda menggunakan panduan penerapan dengan definisi struktur untuk memvalidasi resource agar cocok dengan kasus penggunaan software pihak ketiga Anda.

Misalnya, software pihak ketiga Anda harus mematuhi aturan akhir Interoperabilitas dan Akses Pasien Pusat Layanan Medicare & Medicaid (CMS) di Amerika Serikat. Software pihak ketiga Anda harus menyediakan Patient Access API yang mematuhi profil CARIN. Anda dapat mengimpor dan mengaktifkan panduan penerapan CARIN di penyimpanan FHIR untuk memvalidasi resource terhadap profil CARIN. Mengimpor dan mengaktifkan panduan penerapan dijelaskan di bagian berikutnya di halaman ini.

Setelah mengimpor panduan penerapan, Anda dapat mengaktifkannya di toko FHIR untuk validasi resource FHIR. Saat resource FHIR diperbarui atau ditambahkan ke penyimpanan, Cloud Healthcare API akan memverifikasi apakah resource tersebut cocok dengan definisi struktur dalam panduan penerapan. Jika resource FHIR cocok, resource FHIR akan ditambahkan ke penyimpanan. Jika resource FHIR tidak sesuai dengan definisi struktur dalam panduan penerapan, pesan error akan ditampilkan dan resource FHIR akan ditolak.

Penerapan validasi data

Cloud Healthcare API menerapkan validasi data saat menggunakan metode berikut:

Alur kerja validasi profil

Diagram berikut menunjukkan alur kerja validasi untuk menambahkan atau memperbarui resource FHIR:

fhir-profiles

Menentukan profil FHIR Anda

Bagian berikut menjelaskan cara mendownload definisi struktur dari software pihak ketiga dan mengonfigurasi panduan penerapan.

Mendownload referensi validasi profil

Untuk memastikan definisi struktur cocok dengan sumber resmi, Anda perlu mendownload resource validasi profil, seperti definisi struktur, panduan penerapan, atau kumpulan nilai, dari sumber eksternal, seperti registry panduan penerapan FHIR.org. Sumber eksternal menyediakan paket yang berisi semua kumpulan nilai, profil, ekstensi, daftar halaman, dan URL untuk setiap panduan penerapan.

Misalnya, jika sistem Anda menggunakan profil pasien US Core, Anda dapat mendownload definisi struktur dan panduan penerapan yang digunakan oleh US Core.

Cloud Healthcare API memungkinkan validasi untuk jenis aturan definisi struktur berikut:

  • slicing, dengan dukungan untuk diskriminator berikut:
    • value
    • pattern
    • profile
  • min/max
  • type
  • fixed
  • pattern
  • minValue
  • maxValue
  • maxLength
  • binding, kecuali aturan berikut:
    • ValueSet.compose.include.filter
    • ValueSet.compose.exclude

Mengonfigurasi panduan penerapan

Setelah mendownload definisi struktur, panduan penerapan, dan kumpulan nilai, Anda harus menambahkan profil yang digunakan panduan penerapan untuk memvalidasi resource FHIR.

Untuk mengonfigurasi panduan penerapan, selesaikan langkah-langkah berikut:

  1. Buka file panduan penerapan yang Anda download dari penyedia software pihak ketiga.

  2. Tambahkan bagian berikut untuk menyertakan definisi struktur yang akan divalidasi oleh panduan penerapan Anda:

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

    Ganti kode berikut:

    • RESOURCE_TYPE: menentukan jenis resource tempat panduan penerapan berlaku.
    • STRUCTURE_DEFINITION_URL: URL ke definisi struktur sumber profil, misalnya, Profil Pasien Inti AS.
  3. Simpan file panduan penerapan.

    Contoh berikut menunjukkan profil Pasien dan Organisasi yang diaktifkan untuk panduan penerapan Core AS:

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

Mengupload panduan penerapan ke Cloud Storage

Setelah mengedit panduan penerapan, Anda harus mengupload file berikut ke Cloud Storage:

  • Panduan penerapan
  • Definisi struktur
  • Kumpulan nilai

Setelah mengupload, Anda dapat menggunakan file ini untuk memvalidasi resource di penyimpanan FHIR.

Untuk mengupload panduan penerapan ke Cloud Storage, selesaikan langkah-langkah berikut:

  1. Hapus semua file dari panduan penerapan yang tidak digunakan oleh profil FHIR di Cloud Healthcare API.

    Misalnya, jika Anda menerapkan panduan penerapan inti Amerika Serikat, Anda dapat menghapus file berikut:

    • .DS_Store
    • ig-r4.json
    • openapi/.index.json
    • package.json
  2. Untuk menambahkan panduan penerapan, definisi struktur, dan kumpulan nilai ke Cloud Storage, jalankan perintah berikut:

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

    Ganti kode berikut:

    • PATH_TO_IMPLEMENTATION_GUIDE: jalur ke panduan penerapan di komputer lokal Anda
    • BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY: bucket dan direktori tempat Anda menyimpan panduan penerapan di Cloud Storage

Mengimpor panduan penerapan

Untuk menggunakan panduan penerapan guna memvalidasi profil di penyimpanan FHIR, impor panduan tersebut ke penyimpanan FHIR sebagai resource FHIR.

Contoh berikut menunjukkan cara mengimpor panduan penerapan ke penyimpanan FHIR:

gcloud

Untuk menambahkan panduan penerapan sebagai resource ke penyimpanan FHIR, jalankan perintah 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

Ganti kode berikut:

  • FHIR_STORE_ID: ID FHIR store
  • DATASET_ID: ID set data
  • BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY: lokasi panduan penerapan di bucket Cloud Storage

Outputnya adalah sebagai berikut:

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

Dalam output ini:

  • PROJECT_ID, LOCATION, DATASET_ID: nilai yang Anda berikan dalam panggilan metode
  • OPERATION_ID: ID untuk operasi yang berjalan lama yang disediakan oleh Cloud Healthcare API

Untuk melihat detail operasi selengkapnya, jalankan perintah gcloud healthcare operations describe, yang memberikan OPERATION_ID dari respons:

gcloud healthcare operations describe OPERATION_ID \
  --dataset=DATASET_ID

Output-nya adalah sebagai berikut. Jika respons berisi done: true, operasi akan selesai. Jika tidak, operasi masih berjalan; tunggu beberapa detik, lalu jalankan kembali perintah 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"

Ganti kode berikut:

  • BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY: lokasi panduan penerapan di bucket Cloud Storage
  • PROJECT_ID: ID project Google Cloud Anda
  • LOCATION: lokasi set data
  • DATASET_ID: ID set data
  • FHIR_STORE_ID: ID FHIR store

Responsnya adalah sebagai berikut:

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

Dalam output ini:

  • PROJECT_ID, LOCATION, DATASET_ID: nilai yang Anda berikan dalam panggilan metode
  • OPERATION_ID: ID untuk operasi yang berjalan lama yang disediakan oleh Cloud Healthcare API

Untuk melacak status operasi, gunakan metode 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"

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud Anda
  • LOCATION: lokasi set data
  • DATASET_ID: ID set data
  • FHIR_STORE_ID: ID FHIR store
  • OPERATION_ID: ID yang ditampilkan dari operasi yang berjalan lama

Output-nya adalah sebagai berikut. Jika respons berisi "done": true, operasi akan selesai. Jika tidak, operasi masih berjalan; tunggu beberapa detik, lalu panggil kembali metode 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

Ganti kode berikut:

  • BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY: lokasi panduan penerapan di bucket Cloud Storage
  • PROJECT_ID: ID project Google Cloud Anda
  • LOCATION: lokasi set data
  • DATASET_ID: ID set data
  • FHIR_STORE_ID: ID FHIR store

Responsnya adalah sebagai berikut:

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

Dalam output ini:

  • PROJECT_ID, LOCATION, DATASET_ID: nilai yang Anda berikan dalam panggilan metode
  • OPERATION_ID: ID untuk operasi yang berjalan lama yang disediakan oleh Cloud Healthcare API

Untuk melacak status operasi, gunakan metode 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

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud Anda
  • LOCATION: lokasi set data
  • DATASET_ID: ID set data
  • FHIR_STORE_ID: ID FHIR store
  • OPERATION_ID: ID yang ditampilkan dari operasi yang berjalan lama

Output-nya adalah sebagai berikut. Jika respons berisi "done": true, operasi akan selesai. Jika tidak, operasi masih berjalan; tunggu beberapa detik, lalu panggil kembali metode 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",
  }
}

Mengupload dan mengimpor dependensi implementasi Anda

Sebelum dapat mengaktifkan panduan penerapan, Anda harus memastikan bahwa semua dependensi panduan diupload dan diimpor. Dependensi ditentukan oleh parameter dependsOn dalam panduan penerapan Anda sebagai berikut:

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

Untuk mengupload dan mengimpor dependensi, ikuti petunjuk di artikel Mengupload panduan penerapan ke Cloud Storage dan Mengimpor panduan penerapan.

Mengaktifkan panduan penerapan

Untuk menggunakan referensi panduan penerapan guna memvalidasi profil, Anda harus mengaktifkan panduan penerapan. Jika Anda mengaktifkan lebih dari satu panduan penerapan, Cloud Healthcare API akan mencoba memvalidasi profil terhadap semua panduan penerapan. Resource FHIR hanya perlu cocok dengan satu profil dari panduan implementasi yang diaktifkan.

Cloud Healthcare API hanya memvalidasi panduan penerapan saat Anda mengaktifkannya. Jika Anda mengubah panduan penerapan dan mengaktifkannya lagi, Cloud Healthcare API akan memvalidasi panduan penerapan yang diubah.

Jika Anda menghapus panduan penerapan setelah mengaktifkannya, panduan penerapan akan berhenti berlaku.

Contoh berikut menunjukkan cara mengaktifkan panduan penerapan untuk validasi profil di penyimpanan FHIR yang ada:

curl

Untuk mengaktifkan panduan penerapan , buat permintaan PATCH dan tentukan informasi berikut:

  • Nama dan lokasi set data induk
  • Nama penyimpanan FHIR
  • Kolom enabledImplementationGuides ditetapkan ke jalur ke resource panduan penerapan Anda

Contoh berikut menunjukkan permintaan PATCH yang menggunakan 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"

Ganti kode berikut:

  • IMPLEMENTATION_GUIDE_URL: URL yang ditentukan dalam properti url resource ImplementationGuide, misalnya, http://hl7.org/fhir/us/core/ImplementationGuide/hl7.fhir.us.core
  • PROJECT_ID: ID project Google Cloud Anda
  • LOCATION: lokasi set data
  • DATASET_ID: ID set data
  • FHIR_STORE_ID: ID FHIR store

Responsnya adalah sebagai berikut:

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

PowerShell

Untuk mengaktifkan panduan penerapan , buat permintaan PATCH dan tentukan informasi berikut:

  • Nama dan lokasi set data induk
  • Nama penyimpanan FHIR
  • Kolom enabledImplementationGuides ditetapkan ke jalur ke resource panduan penerapan Anda

Contoh berikut menunjukkan permintaan PATCH menggunakan 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

Ganti kode berikut:

  • IMPLEMENTATION_GUIDE_URL: URL yang ditentukan dalam properti url resource ImplementationGuide, misalnya, http://hl7.org/fhir/us/core/ImplementationGuide/hl7.fhir.us.core
  • PROJECT_ID: ID project Google Cloud Anda
  • LOCATION: lokasi set data
  • DATASET_ID: ID set data
  • FHIR_STORE_ID: ID FHIR store

Responsnya adalah sebagai berikut:

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

Menggunakan konsol Google Cloud untuk mengaktifkan panduan penerapan

Saat menggunakan konsol Google Cloud untuk membuat atau mengedit penyimpanan FHIR, Anda dapat melakukan hal berikut:

  • Pilih panduan penerapan default yang disediakan oleh Cloud Healthcare API
  • Mengimpor panduan penerapan kustom dari Cloud Storage ke penyimpanan FHIR Anda

Untuk mengimpor panduan penerapan kustom, selesaikan langkah-langkah berikut:

  1. Download referensi validasi profil Anda.

  2. Opsional: Konfigurasikan panduan penerapan Anda.

    Langkah ini diperlukan untuk menambahkan array global ke resource panduan penerapan secara manual. Jika memilih untuk melewati langkah ini, Anda harus menambahkan array global saat membuat paket transaksi FHIR di langkah berikutnya menggunakan metode yang berbeda, seperti alat Bundler for FHIR profile validation resources dengan tanda generate_global_array.

  3. Buat paket transaksi FHIR dari resource validasi profil Anda, yang mencakup panduan penerapan, definisi struktur, dan kumpulan nilai.

    Anda dapat membuat paket transaksi menggunakan alat Bundler untuk resource validasi profil FHIR.

  4. Upload paket validasi profil FHIR ke lokasi Cloud Storage.

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

    Ganti kode berikut:

    • PATH_TO_PROFILE_VALIDATION_BUNDLE: jalur ke paket validasi profil di komputer lokal Anda
    • BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY: lokasi Cloud Storage tempat paket harus disimpan
  5. Impor panduan penerapan kustom dari lokasi Cloud Storage saat Anda membuat atau mengedit penyimpanan FHIR.

Memvalidasi resource berdasarkan profil tertentu

Contoh berikut menunjukkan cara memvalidasi resource FHIR untuk profil tertentu atau untuk semua profil yang ditentukan untuk penyimpanan FHIR. Dengan memvalidasi resource FHIR, Anda dapat menentukan apakah resource FHIR Anda sesuai dengan satu profil lagi.

Untuk memvalidasi resource FHIR, gunakan metode 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'

Ganti kode berikut:

  • RESOURCE_FILE: lokasi file yang berisi resource
  • PROJECT_ID: ID project Google Cloud Anda
  • LOCATION: lokasi set data
  • DATASET_ID: ID set data
  • FHIR_STORE_ID: ID FHIR store
  • PROFILE_URL: URL kanonis profil FHIR, misalnya http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient untuk resource Pasien. Harus ada resource StructureDefinition di FHIR_STORE_ID yang memiliki URL ini. Jika Anda memvalidasi resource terhadap profil yang telah diaktifkan di toko, jangan berikan parameter kueri ini.
  • RESOURCE_TYPE: jenis resource

Jika resource sesuai dengan profil, respons yang mirip dengan berikut akan ditampilkan:

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

Jika resource tidak sesuai dengan profil, error akan ditampilkan dengan respons yang mirip dengan berikut ini:

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

Ganti kode berikut:

  • RESOURCE_FILE: lokasi file yang berisi resource
  • PROJECT_ID: ID project Google Cloud Anda
  • LOCATION: lokasi set data
  • DATASET_ID: ID set data
  • FHIR_STORE_ID: ID FHIR store
  • PROFILE_URL: URL kanonis profil FHIR, misalnya http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient untuk resource Pasien. Harus ada resource StructureDefinition di FHIR_STORE_ID yang memiliki URL ini. Jika Anda memvalidasi resource terhadap profil yang telah diaktifkan di toko, jangan berikan parameter kueri ini.
  • RESOURCE_TYPE: jenis resource

Jika resource divalidasi untuk profil, respons yang mirip dengan berikut akan ditampilkan:

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

Jika resource tidak divalidasi untuk profil, error akan ditampilkan dengan respons yang mirip dengan berikut:

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