Mengonfigurasi profil FHIR

Panduan dan profil penerapan FHIR memastikan bahwa resource dalam penyimpanan FHIR sesuai dengan kriteria tertentu yang ditentukan. Beberapa contoh panduan penerapan mencakup Panduan Penerapan Inti AS 4.0.0 dan Panduan Penerapan Tombol Biru Carin.

Halaman ini menjelaskan cara menentukan, mengonfigurasi, dan menggunakan panduan serta profil implementasi di penyimpanan FHIR R4 menggunakan US Core Implementation Guide 4.0.0.

Ringkasan

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

Definisi struktur dan panduan penerapan

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

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

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

Misalnya, software pihak ketiga Anda harus mematuhi interoperabilitas Center for Medicare & Medicaid Services (CMS) dan aturan akhir Akses Pasien di AS. 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. Cara mengimpor dan mengaktifkan panduan penerapan dijelaskan di bagian selanjutnya pada halaman ini.

Setelah mengimpor panduan penerapan, Anda dapat mengaktifkannya di penyimpanan FHIR untuk validasi resource FHIR. Saat resource FHIR diperbarui atau ditambahkan ke toko, Cloud Healthcare API akan memverifikasi apakah resource tersebut cocok dengan definisi struktur dalam panduan implementasi. 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 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

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

Download aset validasi profil Anda

Untuk memastikan definisi struktur cocok dengan sumber otoritatif, Anda harus mendownload resource validasi profil, seperti definisi struktur, panduan implementasi, atau set nilai, dari sumber eksternal, seperti registry panduan implementasi 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 implementasi 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, dengan pengecualian aturan berikut:
    • ValueSet.compose.include.filter
    • ValueSet.compose.exclude

Mengonfigurasi panduan penerapan

Setelah mendownload definisi struktur, panduan implementasi, dan kumpulan nilai, Anda harus menambahkan profil yang digunakan dalam panduan implementasi 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 implementasi 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"
      },
      ...
    ]
    

Upload panduan penerapan Anda 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 Anda ke Cloud Storage, selesaikan langkah-langkah berikut:

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

    Misalnya, jika Anda menerapkan panduan penerapan inti AS, 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:

    gsutil cp -r \
       PATH_TO_IMPLEMENTATION_GUIDE \
       gs://BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY

    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 implementasi di Cloud Storage

Mengimpor panduan penerapan

Untuk menggunakan panduan penerapan guna memvalidasi profil di penyimpanan FHIR, impor profil 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 toko FHIR
  • DATASET_ID: ID set data
  • BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY: lokasi panduan penerapan di bucket Cloud Storage

Output-nya 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 di 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 menyediakan OPERATION_ID dari respons:

gcloud healthcare operations describe OPERATION_ID \
  --dataset=DATASET_ID

Outputnya adalah sebagai berikut. Jika respons berisi done: true, berarti operasi selesai. Jika tidak, operasi masih berjalan; tunggu beberapa detik, lalu jalankan perintah gcloud healthcare operations describe lagi.

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 toko FHIR

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 di 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 toko FHIR
  • OPERATION_ID: ID yang ditampilkan dari operasi yang berjalan lama

Outputnya adalah sebagai berikut. Jika respons berisi "done": true, berarti operasi selesai. Jika tidak, operasi masih berjalan; tunggu beberapa detik, lalu panggil metode operations.get lagi.

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

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 di 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 toko FHIR
  • OPERATION_ID: ID yang ditampilkan dari operasi yang berjalan lama

Outputnya adalah sebagai berikut. Jika respons berisi "done": true, berarti operasi selesai. Jika tidak, operasi masih berjalan; tunggu beberapa detik, lalu panggil metode operations.get lagi.

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

Sebelum dapat mengaktifkan panduan penerapan, Anda harus memastikan bahwa semua dependensi panduan diupload dan diimpor. Dependensi ditetapkan oleh parameter dependsOn dalam panduan implementasi 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 dalam Mengupload panduan penerapan ke Cloud Storage dan Mengimpor panduan penerapan.

Aktifkan panduan penerapan

Untuk menggunakan resource 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 berdasarkan semua panduan penerapan. Resource FHIR hanya perlu cocok dengan satu profil dari panduan implementasi yang diaktifkan.

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

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

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 toko FHIR
  • Kolom enabledImplementationGuides yang 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 pada 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 toko FHIR

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 toko FHIR
  • Kolom enabledImplementationGuides yang 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 pada 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 toko FHIR

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 implementasi

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

  • Pilih panduan implementasi default yang disediakan oleh Cloud Healthcare API
  • Mengimpor panduan implementasi 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: Konfigurasi panduan penerapan Anda.

    Langkah ini diperlukan untuk menambahkan array global ke resource panduan penerapan Anda secara manual. Jika memilih untuk melewati langkah ini, Anda harus menambahkan array global saat membuat paket transaksi FHIR pada langkah berikutnya menggunakan metode yang berbeda, seperti alat Bundler untuk resource validasi profil FHIR 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.

    gsutil cp -r \
       PATH_TO_PROFILE_VALIDATION_BUNDLE \
       gs://BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY

    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 Anda.

Memvalidasi resource terhadap profil tertentu

Contoh berikut menunjukkan cara memvalidasi resource FHIR untuk profil tertentu atau untuk semua profil yang ditentukan untuk penyimpanan FHIR. Memvalidasi resource FHIR memungkinkan Anda menentukan apakah resource FHIR Anda sesuai dengan satu profil lainnya.

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 ke file yang berisi resource
  • PROJECT_ID: ID project Google Cloud Anda
  • LOCATION: lokasi set data
  • DATASET_ID: ID set data
  • FHIR_STORE_ID: ID toko FHIR
  • 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 Anda aktifkan di store, jangan berikan parameter kueri ini.
  • RESOURCE_TYPE: jenis resource

Jika resource sesuai dengan profil, respons yang serupa dengan hal 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 ke file yang berisi resource
  • PROJECT_ID: ID project Google Cloud Anda
  • LOCATION: lokasi set data
  • DATASET_ID: ID set data
  • FHIR_STORE_ID: ID toko FHIR
  • 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 Anda aktifkan di store, jangan berikan parameter kueri ini.
  • RESOURCE_TYPE: jenis resource

Jika resource divalidasi untuk profil, respons yang serupa 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 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"
}

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