healthcare/api-client/v1/fhir/fhir_resources.py (942 lines of code) (raw):

# Copyright 2018 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import json import os # [START healthcare_create_resource_from_file] # Imports the types Dict and Any for runtime type hints. from typing import Any, Dict # noqa: E402 # [END healthcare_create_resource_from_file] # [START healthcare_create_resource_from_file] def create_resource_from_file( project_id: str, location: str, dataset_id: str, fhir_store_id: str, resource_type: str, resource_file: str, ) -> Dict[str, Any]: """Creates a new FHIR resource in a FHIR store from a JSON resource file. See https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/healthcare/api-client/v1/fhir before running the sample. See https://googleapis.github.io/google-api-python-client/docs/dyn/healthcare_v1.projects.locations.datasets.fhirStores.fhir.html#create for the Python API reference. Args: project_id: The project ID or project number of the Cloud project you want to use. location: The name of the parent dataset's location. dataset_id: The name of the parent dataset. fhir_store_id: The name of the FHIR store. resource_type: A valid FHIR resource type. See https://www.hl7.org/fhir/resourcelist.html. resource_file: The path to a JSON file containing a FHIR resource. Returns: A dict representing the created FHIR resource. """ # Imports the Google API Discovery Service. from googleapiclient import discovery api_version = "v1" service_name = "healthcare" # Returns 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' # location = 'us-central1' # dataset_id = 'my-dataset' # fhir_store_id = 'my-fhir-store' fhir_store_parent = ( f"projects/{project_id}/locations/{location}/datasets/{dataset_id}" ) fhir_store_name = f"{fhir_store_parent}/fhirStores/{fhir_store_id}" # Load the local FHIR resource JSON file. with open(resource_file) as resource: resource_body = json.load(resource) request = ( client.projects() .locations() .datasets() .fhirStores() .fhir() .create(parent=fhir_store_name, type=resource_type, body=resource_body) ) # Sets required application/fhir+json header on the googleapiclient.http.HttpRequest. request.headers["content-type"] = "application/fhir+json;charset=utf-8" response = request.execute() print(f"Created {resource_type} resource with ID {response['id']}") return response # [END healthcare_create_resource_from_file] # [START healthcare_create_resource] # Imports the types Dict and Any for runtime type hints. from typing import Any, Dict # noqa: E402 # [END healthcare_create_resource] # [START healthcare_create_resource] def create_patient( project_id: str, location: str, dataset_id: str, fhir_store_id: str, ) -> Dict[str, Any]: """Creates a new Patient resource in a FHIR store. See https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/healthcare/api-client/v1/fhir before running the sample. See https://googleapis.github.io/google-api-python-client/docs/dyn/healthcare_v1.projects.locations.datasets.fhirStores.fhir.html#create for the Python API reference. Args: project_id: The project ID or project number of the Cloud project you want to use. location: The name of the parent dataset's location. dataset_id: The name of the parent dataset. fhir_store_id: The name of the FHIR store that holds the Patient resource. Returns: A dict representing the created Patient resource. """ # Imports the Google API Discovery Service. from googleapiclient import discovery api_version = "v1" service_name = "healthcare" # Returns 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' # location = 'us-central1' # dataset_id = 'my-dataset' # fhir_store_id = 'my-fhir-store' fhir_store_parent = ( f"projects/{project_id}/locations/{location}/datasets/{dataset_id}" ) fhir_store_name = f"{fhir_store_parent}/fhirStores/{fhir_store_id}" patient_body = { "name": [{"use": "official", "family": "Smith", "given": ["Darcy"]}], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient", } request = ( client.projects() .locations() .datasets() .fhirStores() .fhir() .create(parent=fhir_store_name, type="Patient", body=patient_body) ) # Sets required application/fhir+json header on the googleapiclient.http.HttpRequest. request.headers["content-type"] = "application/fhir+json;charset=utf-8" response = request.execute() print(f"Created Patient resource with ID {response['id']}") return response # [END healthcare_create_resource] # [START healthcare_create_encounter] # Imports the types Dict and Any for runtime type hints. from typing import Any, Dict # noqa: E402 # [END healthcare_create_encounter] # [START healthcare_create_encounter] def create_encounter( project_id: str, location: str, dataset_id: str, fhir_store_id: str, patient_id: str, ) -> Dict[str, Any]: """Creates a new Encounter resource in a FHIR store that references a Patient resource. See https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/healthcare/api-client/v1/fhir before running the sample. See https://googleapis.github.io/google-api-python-client/docs/dyn/healthcare_v1.projects.locations.datasets.fhirStores.fhir.html#create for the Python API reference. Args: project_id: The project ID or project number of the Cloud project you want to use. location: The name of the parent dataset's location. dataset_id: The name of the parent dataset. fhir_store_id: The name of the FHIR store. patient_id: The "logical id" of the referenced Patient resource. The ID is assigned by the server. Returns: A dict representing the created Encounter resource. """ # Imports the Google API Discovery Service. from googleapiclient import discovery api_version = "v1" service_name = "healthcare" # Returns 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' # location = 'us-central1' # dataset_id = 'my-dataset' # fhir_store_id = 'my-fhir-store' # patient_id = 'b682d-0e-4843-a4a9-78c9ac64' # replace with the associated Patient resource's ID fhir_store_parent = ( f"projects/{project_id}/locations/{location}/datasets/{dataset_id}" ) fhir_store_name = f"{fhir_store_parent}/fhirStores/{fhir_store_id}" encounter_body = { "status": "finished", "class": { "system": "http://hl7.org/fhir/v3/ActCode", "code": "IMP", "display": "inpatient encounter", }, "reason": [ { "text": ( "The patient had an abnormal heart rate. She was" " concerned about this." ) } ], "subject": {"reference": f"Patient/{patient_id}"}, "resourceType": "Encounter", } request = ( client.projects() .locations() .datasets() .fhirStores() .fhir() .create(parent=fhir_store_name, type="Encounter", body=encounter_body) ) # Sets required application/fhir+json header on the googleapiclient.http.HttpRequest. request.headers["content-type"] = "application/fhir+json;charset=utf-8" response = request.execute() print(f"Created Encounter resource with ID {response['id']}") return response # [END healthcare_create_encounter] # [START healthcare_create_observation] # Imports the types Dict and Any for runtime type hints. from typing import Any, Dict # noqa: E402 # [END healthcare_create_observation] # [START healthcare_create_observation] def create_observation( project_id: str, location: str, dataset_id: str, fhir_store_id: str, patient_id: str, encounter_id: str, ) -> Dict[str, Any]: """Creates a new Observation resource in a FHIR store that references an Encounter and Patient resource. See https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/healthcare/api-client/v1/fhir before running the sample. See https://googleapis.github.io/google-api-python-client/docs/dyn/healthcare_v1.projects.locations.datasets.fhirStores.fhir.html#create for the Python API reference. Args: project_id: The project ID or project number of the Cloud project you want to use. location: The name of the parent dataset's location. dataset_id: The name of the parent dataset. fhir_store_id: The name of the FHIR store. patient_id: The "logical id" of the referenced Patient resource. The ID is assigned by the server. encounter_id: The "logical id" of the referenced Encounter resource. The ID is assigned by the server. Returns: A dict representing the created Observation resource. """ # Imports the Google API Discovery Service. from googleapiclient import discovery api_version = "v1" service_name = "healthcare" # Returns 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' # location = 'us-central1' # dataset_id = 'my-dataset' # fhir_store_id = 'my-fhir-store' # patient_id = 'b682d-0e-4843-a4a9-78c9ac64' # replace with the associated Patient resource's ID # encounter_id = 'a7602f-ffba-470a-a5c1-103f993c6 # replace with the associated Encounter resource's ID fhir_store_parent = ( f"projects/{project_id}/locations/{location}/datasets/{dataset_id}" ) fhir_observation_path = ( f"{fhir_store_parent}/fhirStores/{fhir_store_id}/fhir/Observation" ) observation_body = { "resourceType": "Observation", "code": { "coding": [ { "system": "http://loinc.org", "code": "8867-4", "display": "Heart rate", } ] }, "status": "final", "subject": {"reference": f"Patient/{patient_id}"}, "effectiveDateTime": "2019-01-01T00:00:00+00:00", "valueQuantity": {"value": 80, "unit": "bpm"}, "context": {"reference": f"Encounter/{encounter_id}"}, } request = ( client.projects() .locations() .datasets() .fhirStores() .fhir() .create( parent=fhir_observation_path, type="Observation", body=observation_body, ) ) # Sets required application/fhir+json header on the googleapiclient.http.HttpRequest. request.headers["content-type"] = "application/fhir+json;charset=utf-8" response = request.execute() print(f"Created Observation resource with ID {response['id']}") return response # [END healthcare_create_observation] # [START healthcare_delete_resource] def delete_resource( project_id: str, location: str, dataset_id: str, fhir_store_id: str, resource_type: str, resource_id: str, ) -> dict: """Deletes a FHIR resource. Regardless of whether the operation succeeds or fails, the server returns a 200 OK HTTP status code. To check that the resource was successfully deleted, search for or get the resource and see if it exists. See https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/healthcare/api-client/v1/fhir before running the sample. See https://googleapis.github.io/google-api-python-client/docs/dyn/healthcare_v1.projects.locations.datasets.fhirStores.fhir.html#delete for the Python API reference. Args: project_id: The project ID or project number of the Cloud project you want to use. location: The name of the parent dataset's location. dataset_id: The name of the parent dataset. fhir_store_id: The name of the FHIR store. resource_type: The type of the FHIR resource. resource_id: The "logical id" of the FHIR resource you want to delete. The ID is assigned by the server. Returns: An empty dict. """ # Imports the Google API Discovery Service. from googleapiclient import discovery api_version = "v1" service_name = "healthcare" # Returns 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' # location = 'us-central1' # dataset_id = 'my-dataset' # fhir_store_id = 'my-fhir-store' # resource_type = 'Patient' # resource_id = 'b682d-0e-4843-a4a9-78c9ac64' fhir_store_parent = ( f"projects/{project_id}/locations/{location}/datasets/{dataset_id}" ) fhir_resource_path = f"{fhir_store_parent}/fhirStores/{fhir_store_id}/fhir/{resource_type}/{resource_id}" request = ( client.projects() .locations() .datasets() .fhirStores() .fhir() .delete(name=fhir_resource_path) ) response = request.execute() print(f"Deleted {resource_type} resource with ID {resource_id}.") return response # [END healthcare_delete_resource] # [START healthcare_get_resource] # Imports the types Dict and Any for runtime type hints. from typing import Any, Dict # noqa: E402 # [END healthcare_get_resource] # [START healthcare_get_resource] def get_resource( project_id: str, location: str, dataset_id: str, fhir_store_id: str, resource_type: str, resource_id: str, ) -> Dict[str, Any]: """Gets the contents of a FHIR resource. See https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/healthcare/api-client/v1/fhir before running the sample. See https://googleapis.github.io/google-api-python-client/docs/dyn/healthcare_v1.projects.locations.datasets.fhirStores.fhir.html#read for the Python API reference. Args: project_id: The project ID or project number of the Cloud project you want to use. location: The name of the parent dataset's location. dataset_id: The name of the parent dataset. fhir_store_id: The name of the FHIR store. resource_type: The type of FHIR resource. resource_id: The "logical id" of the resource you want to get the contents of. The ID is assigned by the server. Returns: A dict representing the FHIR resource. """ # Imports the Google API Discovery Service. from googleapiclient import discovery api_version = "v1" service_name = "healthcare" # Returns 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' # location = 'us-central1' # dataset_id = 'my-dataset' # fhir_store_id = 'my-fhir-store' # resource_type = 'Patient' # resource_id = 'b682d-0e-4843-a4a9-78c9ac64' fhir_store_parent = ( f"projects/{project_id}/locations/{location}/datasets/{dataset_id}" ) fhir_resource_path = f"{fhir_store_parent}/fhirStores/{fhir_store_id}/fhir/{resource_type}/{resource_id}" request = ( client.projects() .locations() .datasets() .fhirStores() .fhir() .read(name=fhir_resource_path) ) response = request.execute() print( f"Got contents of {resource_type} resource with ID {resource_id}:\n", json.dumps(response, indent=2), ) return response # [END healthcare_get_resource] # [START healthcare_list_resource_history] # Imports the types Dict and Any for runtime type hints. from typing import Any, Dict # noqa: E402 # [END healthcare_list_resource_history] # [START healthcare_list_resource_history] def list_resource_history( project_id: str, location: str, dataset_id: str, fhir_store_id: str, resource_type: str, resource_id: str, ) -> Dict[str, Any]: """Gets the history of a resource. See https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/healthcare/api-client/v1/fhir before running the sample. See https://googleapis.github.io/google-api-python-client/docs/dyn/healthcare_v1.projects.locations.datasets.fhirStores.fhir.html#history for the Python API reference. Args: project_id: The project ID or project number of the Cloud project you want to use. location: The name of the parent dataset's location. dataset_id: The name of the parent dataset. fhir_store_id: The name of the FHIR store. resource_type: The type of FHIR resource. resource_id: The "logical id" of the resource whose history you want to list. The ID is assigned by the server. Returns: A dict representing the FHIR resource. """ # Imports the Google API Discovery Service. from googleapiclient import discovery api_version = "v1" service_name = "healthcare" # Returns 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' # location = 'us-central1' # dataset_id = 'my-dataset' # fhir_store_id = 'my-fhir-store' # resource_type = 'Patient' # resource_id = 'b682d-0e-4843-a4a9-78c9ac64' fhir_store_parent = ( f"projects/{project_id}/locations/{location}/datasets/{dataset_id}" ) fhir_resource_path = f"{fhir_store_parent}/fhirStores/{fhir_store_id}/fhir/{resource_type}/{resource_id}" request = ( client.projects() .locations() .datasets() .fhirStores() .fhir() .history(name=fhir_resource_path) ) response = request.execute() print( f"History for {resource_type} resource with ID {resource_id}:\n" f" {json.dumps(response, indent=2)}" ) return response # [END healthcare_list_resource_history] # [START healthcare_get_resource_history] # Imports the types Dict and Any for runtime type hints. from typing import Any, Dict # noqa: E402 # [END healthcare_get_resource_history] # [START healthcare_get_resource_history] def get_resource_history( project_id: str, location: str, dataset_id: str, fhir_store_id: str, resource_type: str, resource_id: str, version_id: str, ) -> Dict[str, Any]: """Gets the contents of a version (current or historical) of a FHIR resource by version ID. See https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/healthcare/api-client/v1/fhir before running the sample. See https://googleapis.github.io/google-api-python-client/docs/dyn/healthcare_v1.projects.locations.datasets.fhirStores.fhir.html#vread for the Python API reference. Args: project_id: The project ID or project number of the Cloud project you want to use. location: The name of the parent dataset's location. dataset_id: The name of the parent dataset. fhir_store_id: The name of the FHIR store. resource_type: The type of FHIR resource. resource_id: The "logical id" of the resource whose details you want to view at a particular version. The ID is assigned by the server. version_id: The ID of the version. Changes whenever the FHIR resource is modified. Returns: A dict representing the FHIR resource at the specified version. """ # Imports the Google API Discovery Service. from googleapiclient import discovery api_version = "v1" service_name = "healthcare" # Returns 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' # location = 'us-central1' # dataset_id = 'my-dataset' # fhir_store_id = 'my-fhir-store' # resource_type = 'Patient' # resource_id = 'b682d-0e-4843-a4a9-78c9ac64' # version_id = 'MTY4NDQ1MDc3MDU2ODgyNzAwMA' fhir_store_parent = ( f"projects/{project_id}/locations/{location}/datasets/{dataset_id}" ) fhir_resource_path = f"{fhir_store_parent}/fhirStores/{fhir_store_id}/fhir/{resource_type}/{resource_id}/_history/{version_id}" request = ( client.projects() .locations() .datasets() .fhirStores() .fhir() .vread(name=fhir_resource_path) ) response = request.execute() print( f"Got contents of {resource_type} resource with ID {resource_id} at" f" version {version_id}:\n {json.dumps(response, indent=2)}" ) return response # [END healthcare_get_resource_history] # [START healthcare_delete_resource_purge] def delete_resource_purge( project_id: str, location: str, dataset_id: str, fhir_store_id: str, resource_type: str, resource_id: str, ) -> dict: """Deletes all versions of a FHIR resource (excluding the current version). See https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/healthcare/api-client/v1/fhir before running the sample. See https://googleapis.github.io/google-api-python-client/docs/dyn/healthcare_v1.projects.locations.datasets.fhirStores.fhir.html#Resource_purge for the Python API reference. Args: project_id: The project ID or project number of the Cloud project you want to use. location: The name of the parent dataset's location. dataset_id: The name of the parent dataset. fhir_store_id: The name of the FHIR store. resource_type: The type of the FHIR resource. resource_id: The "logical id" of the resource. The ID is assigned by the server. Returns: An empty dict. """ # Imports the Google API Discovery Service. from googleapiclient import discovery api_version = "v1" service_name = "healthcare" # Returns 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' # location = 'us-central1' # dataset_id = 'my-dataset' # fhir_store_id = 'my-fhir-store' # resource_type = 'Patient' # resource_id = 'b682d-0e-4843-a4a9-78c9ac64' fhir_store_parent = ( f"projects/{project_id}/locations/{location}/datasets/{dataset_id}" ) fhir_resource_path = f"{fhir_store_parent}/fhirStores/{fhir_store_id}/fhir/{resource_type}/{resource_id}" request = ( client.projects() .locations() .datasets() .fhirStores() .fhir() .Resource_purge(name=fhir_resource_path) ) response = request.execute() print( f"Deleted all versions of {resource_type} resource with ID" f" {resource_id} (excluding current version)." ) return response # [END healthcare_delete_resource_purge] # [START healthcare_update_resource] # Imports the types Dict and Any for runtime type hints. from typing import Any, Dict # noqa: E402 # [END healthcare_update_resource] # [START healthcare_update_resource] def update_resource( project_id: str, location: str, dataset_id: str, fhir_store_id: str, resource_type: str, resource_id: str, ) -> Dict[str, Any]: """Updates the entire contents of a FHIR resource. Creates a new current version if the resource already exists, or creates a new resource with an initial version if no resource already exists with the provided ID. See https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/healthcare/api-client/v1/fhir before running the sample. See https://googleapis.github.io/google-api-python-client/docs/dyn/healthcare_v1.projects.locations.datasets.fhirStores.fhir.html#update for the Python API reference. Args: project_id: The project ID or project number of the Cloud project you want to use. location: The name of the parent dataset's location. dataset_id: The name of the parent dataset. fhir_store_id: The name of the FHIR store. resource_type: The type of the FHIR resource. resource_id: The "logical id" of the resource. The ID is assigned by the server. Returns: A dict representing the updated FHIR resource. """ # Imports the Google API Discovery Service. from googleapiclient import discovery api_version = "v1" service_name = "healthcare" # Returns 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' # location = 'us-central1' # dataset_id = 'my-dataset' # fhir_store_id = 'my-fhir-store' # resource_type = 'Patient' # resource_id = 'b682d-0e-4843-a4a9-78c9ac64' fhir_store_parent = ( f"projects/{project_id}/locations/{location}/datasets/{dataset_id}" ) fhir_resource_path = f"{fhir_store_parent}/fhirStores/{fhir_store_id}/fhir/{resource_type}/{resource_id}" # The following sample body works with a Patient resource and isn't guaranteed # to work with other types of FHIR resources. If necessary, # supply a new body with data that corresponds to the resource you # are updating. patient_body = { "resourceType": resource_type, "active": True, "id": resource_id, } request = ( client.projects() .locations() .datasets() .fhirStores() .fhir() .update(name=fhir_resource_path, body=patient_body) ) # Sets required application/fhir+json header on the googleapiclient.http.HttpRequest. request.headers["content-type"] = "application/fhir+json;charset=utf-8" response = request.execute() print( f"Updated {resource_type} resource with ID {resource_id}:\n" f" {json.dumps(response, indent=2)}" ) return response # [END healthcare_update_resource] # [START healthcare_patch_resource] # Imports the types Dict and Any for runtime type hints. from typing import Any, Dict # noqa: E402 # [END healthcare_patch_resource] # [START healthcare_patch_resource] def patch_resource( project_id: str, location: str, dataset_id: str, fhir_store_id: str, resource_type: str, resource_id: str, ) -> Dict[str, Any]: """Updates part of an existing FHIR resource by applying the operations specified in a [JSON Patch](http://jsonpatch.com/) document. See https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/healthcare/api-client/v1/fhir before running the sample. See https://googleapis.github.io/google-api-python-client/docs/dyn/healthcare_v1.projects.locations.datasets.fhirStores.fhir.html#patch for the Python API reference. Args: project_id: The project ID or project number of the Cloud project you want to use. location: The name of the parent dataset's location. dataset_id: The name of the parent dataset. fhir_store_id: The name of the FHIR store. resource_type: The type of the FHIR resource. resource_id: The "logical id" of the resource. The ID is assigned by the server. Returns: A dict representing the patched FHIR resource. """ # Imports the Google API Discovery Service. from googleapiclient import discovery api_version = "v1" service_name = "healthcare" # Returns 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' # location = 'us-central1' # dataset_id = 'my-dataset' # fhir_store_id = 'my-fhir-store' # resource_type = 'Patient' # resource_id = 'b682d-0e-4843-a4a9-78c9ac64' fhir_store_parent = ( f"projects/{project_id}/locations/{location}/datasets/{dataset_id}" ) fhir_resource_path = f"{fhir_store_parent}/fhirStores/{fhir_store_id}/fhir/{resource_type}/{resource_id}" # The following sample body works with a Patient resource and isn't guaranteed # to work with other types of FHIR resources. If necessary, # supply a new body with data that corresponds to the resource you # are updating. patient_body = [{"op": "replace", "path": "/active", "value": False}] request = ( client.projects() .locations() .datasets() .fhirStores() .fhir() .patch(name=fhir_resource_path, body=patient_body) ) # Sets required application/json-patch+json header. # See https://tools.ietf.org/html/rfc6902 for more information. request.headers["content-type"] = "application/json-patch+json" response = request.execute() print( f"Patched {resource_type} resource with ID {resource_id}:\n" f" {json.dumps(response, indent=2)}" ) return response # [END healthcare_patch_resource] # [START healthcare_search_resources_get] def search_resources_get( project_id, location, dataset_id, fhir_store_id, resource_type, ): """ Uses the searchResources GET method to search for resources in the given FHIR store. 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 url = f"{base_url}/projects/{project_id}/locations/{location}" resource_path = "{}/datasets/{}/fhirStores/{}/fhir/{}".format( url, dataset_id, fhir_store_id, resource_type ) response = session.get(resource_path) response.raise_for_status() resources = response.json() print( "Using GET request, found a total of {} {} resources:".format( resources["total"], resource_type ) ) print(json.dumps(resources, indent=2)) return resources # [END healthcare_search_resources_get] # [START healthcare_search_resources_post] def search_resources_post(project_id, location, dataset_id, fhir_store_id): """ Searches for resources in the given FHIR store. Uses the _search POST method and a query string containing the information to search for. In this sample, the search criteria is 'family:exact=Smith' on a Patient resource. 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 url = f"{base_url}/projects/{project_id}/locations/{location}" fhir_store_path = "{}/datasets/{}/fhirStores/{}/fhir".format( url, dataset_id, fhir_store_id ) resource_path = f"{fhir_store_path}/Patient/_search?family:exact=Smith" # 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) response.raise_for_status() resources = response.json() print( "Using POST request, found a total of {} Patient resources:".format( resources["total"] ) ) print(json.dumps(resources, indent=2)) return resources # [END healthcare_search_resources_post] # [START healthcare_get_patient_everything] def get_patient_everything( project_id, location, dataset_id, fhir_store_id, resource_id, ): """Gets all the resources in the patient compartment. 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_id = 'b682d-0e-4843-a4a9-78c9ac64' # replace with the Patient resource's ID url = f"{base_url}/projects/{project_id}/locations/{location}" resource_path = "{}/datasets/{}/fhirStores/{}/fhir/{}/{}".format( url, dataset_id, fhir_store_id, "Patient", resource_id ) resource_path += "/$everything" # Sets required application/fhir+json header on the request headers = {"Content-Type": "application/fhir+json;charset=utf-8"} response = session.get(resource_path, headers=headers) response.raise_for_status() resource = response.json() print(json.dumps(resource, indent=2)) return resource # [END healthcare_get_patient_everything] # [START healthcare_fhir_execute_bundle] def execute_bundle( project_id, location, dataset_id, fhir_store_id, bundle, ): """Executes the operations in the given bundle. 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 # bundle = 'bundle.json' # replace with the bundle file url = f"{base_url}/projects/{project_id}/locations/{location}" resource_path = "{}/datasets/{}/fhirStores/{}/fhir".format( url, dataset_id, fhir_store_id ) headers = {"Content-Type": "application/fhir+json;charset=utf-8"} with open(bundle) as bundle_file: bundle_file_content = bundle_file.read() response = session.post(resource_path, headers=headers, data=bundle_file_content) response.raise_for_status() resource = response.json() print(f"Executed bundle from file: {bundle}") print(json.dumps(resource, indent=2)) return resource # [END healthcare_fhir_execute_bundle] # [START healthcare_create_implementation_guide] def create_implementation_guide( project_id, location, dataset_id, fhir_store_id, implementation_guide_file ): """ Creates a new ImplementationGuide resource in a FHIR store from an ImplementationGuide JSON file. 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 # implementation_guide_definition_file = 'ImplementationGuide-hl7.fhir.us.core.json' # replace with the ImplementationGuide resource file url = f"{base_url}/projects/{project_id}/locations/{location}" fhir_store_path = "{}/datasets/{}/fhirStores/{}/fhir/ImplementationGuide".format( url, dataset_id, fhir_store_id ) # Sets required application/fhir+json header on the request headers = {"Content-Type": "application/fhir+json;charset=utf-8"} with open(implementation_guide_file) as implementation_guide: implementation_guide_content = json.load(implementation_guide) response = session.post( fhir_store_path, headers=headers, json=implementation_guide_content ) response.raise_for_status() resource = response.json() print("Created ImplementationGuide resource with ID {}".format(resource["id"])) return response # [END healthcare_create_implementation_guide] # [START healthcare_enable_implementation_guide] 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 # [END healthcare_enable_implementation_guide] # [START healthcare_create_structure_definition] def create_structure_definition( project_id, location, dataset_id, fhir_store_id, structure_definition_file ): """ Creates a new StructureDefinition resource in a FHIR store from a StructureDefinition JSON file. 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 # structure_definition_file = 'StructureDefinition-us-core-patient.json' # replace with the StructureDefinition resource file url = f"{base_url}/projects/{project_id}/locations/{location}" fhir_store_path = "{}/datasets/{}/fhirStores/{}/fhir/StructureDefinition".format( url, dataset_id, fhir_store_id ) # Sets required application/fhir+json header on the request headers = {"Content-Type": "application/fhir+json;charset=utf-8"} with open(structure_definition_file) as structure_definition: structure_definition_content = json.load(structure_definition) response = session.post( fhir_store_path, headers=headers, json=structure_definition_content ) response.raise_for_status() resource = response.json() print("Created StructureDefinition resource with ID {}".format(resource["id"])) return response # [END healthcare_create_structure_definition] # [START healthcare_resource_validate] def validate_resource( project_id, location, dataset_id, fhir_store_id, resource_type, ): """Validates an input FHIR resource's conformance to the base profile configured on the FHIR store. 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 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" # 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. 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) response.raise_for_status() resource = response.json() print(json.dumps(resource)) return resource # [END healthcare_resource_validate] # [START healthcare_resource_validate_profile_url] 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 # [END healthcare_resource_validate_profile_url] def parse_command_line_args(): """Parses command line arguments.""" parser = argparse.ArgumentParser( description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter ) parser.add_argument( "--project_id", default=os.environ.get("GOOGLE_CLOUD_PROJECT"), help="GCP project name", ) parser.add_argument("--location", default="us-central1", help="GCP location") parser.add_argument("--dataset_id", default=None, help="Name of dataset") parser.add_argument("--fhir_store_id", default=None, help="Name of FHIR store") parser.add_argument( "--resource_file", default=None, help="A JSON file containing the contents of a FHIR resource to create", ) parser.add_argument( "--resource_type", default=None, help="The type of resource. First letter must be capitalized", ) parser.add_argument( "--resource_id", default=None, help="Identifier for a FHIR resource" ) parser.add_argument( "--patient_id", default=None, help="Identifier for a Patient resource. Can be used as a reference " "for an Encounter/Observation", ) parser.add_argument( "--encounter_id", default=None, help="Identifier for an Encounter resource. Can be used as a " "reference for an Observation", ) parser.add_argument( "--bundle", default=None, help="Name of file containing bundle of operations to execute", ) parser.add_argument( "--uri_prefix", default=None, help="Prefix of gs:// URIs for import and export" ) parser.add_argument("--version_id", default=None, help="Version of a FHIR resource") parser.add_argument( "--structure_definition_file", default=None, help="A StructureDefinition resource JSON file", ) parser.add_argument( "--profile_url", default=None, help="The canonical URL of the FHIR profile to validate against", ) parser.add_argument( "--implementation_guide_file", default=None, help="An ImplementationGuide resource JSON file", ) parser.add_argument( "--implementation_guide_url", default=None, help="the URL defined in the 'url' property of the ImplementationGuide resource", ) command = parser.add_subparsers(dest="command") command.add_parser( "create-resource-from-file", help=create_resource_from_file.__doc__ ) command.add_parser("create-patient", help=create_patient.__doc__) command.add_parser("create-encounter", help=create_encounter.__doc__) command.add_parser("create-observation", help=create_observation.__doc__) command.add_parser("delete-resource", help=delete_resource.__doc__) command.add_parser("get-resource", help=get_resource.__doc__) command.add_parser("list-resource-history", help=list_resource_history.__doc__) command.add_parser("execute-bundle", help=execute_bundle.__doc__) command.add_parser("get-resource-history", help=get_resource_history.__doc__) command.add_parser("delete-resource-purge", help=delete_resource_purge.__doc__) command.add_parser("update-resource", help=update_resource.__doc__) command.add_parser("patch-resource", help=patch_resource.__doc__) command.add_parser("search-resources-get", help=search_resources_get.__doc__) command.add_parser("search-resources-post", help=search_resources_get.__doc__) command.add_parser("get-patient-everything", help=get_patient_everything.__doc__) command.add_parser( "create-structure-definition", help=create_structure_definition.__doc__ ) command.add_parser( "create-implementation-guide", help=create_implementation_guide.__doc__ ) command.add_parser( "enable-implementation-guide", help=enable_implementation_guide.__doc__ ) command.add_parser("validate-resource", help=validate_resource.__doc__) command.add_parser( "validate-resource-profile-url", help=validate_resource_profile_url.__doc__ ) return parser.parse_args() # Comment noqa because otherwise flake8 returns "C901 'run_command' is too # complex" error def run_command(args): # noqa """Calls the program using the specified command.""" if args.project_id is None: print( "You must specify a project ID or set the " '"GOOGLE_CLOUD_PROJECT" environment variable.' ) return elif args.command == "create-resource-from-file": create_resource_from_file( args.project_id, args.location, args.dataset_id, args.fhir_store_id, args.resource_type, args.resource_file, ) elif args.command == "create-patient": create_patient( args.project_id, args.location, args.dataset_id, args.fhir_store_id, ) elif args.command == "create-encounter": create_encounter( args.project_id, args.location, args.dataset_id, args.fhir_store_id, args.patient_id, ) elif args.command == "create-observation": create_observation( args.project_id, args.location, args.dataset_id, args.fhir_store_id, args.patient_id, args.encounter_id, ) elif args.command == "get-resource": get_resource( args.project_id, args.location, args.dataset_id, args.fhir_store_id, args.resource_type, args.resource_id, ) elif args.command == "execute-bundle": execute_bundle( args.project_id, args.location, args.dataset_id, args.fhir_store_id, args.bundle, ) elif args.command == "list-resource-history": list_resource_history( args.project_id, args.location, args.dataset_id, args.fhir_store_id, args.resource_type, args.resource_id, ) elif args.command == "get-resource-history": get_resource_history( args.project_id, args.location, args.dataset_id, args.fhir_store_id, args.resource_type, args.resource_id, args.version_id, ) elif args.command == "delete-resource-purge": delete_resource_purge( args.project_id, args.location, args.dataset_id, args.fhir_store_id, args.resource_type, args.resource_id, ) elif args.command == "update-resource": update_resource( args.project_id, args.location, args.dataset_id, args.fhir_store_id, args.resource_type, args.resource_id, ) elif args.command == "patch-resource": patch_resource( args.project_id, args.location, args.dataset_id, args.fhir_store_id, args.resource_type, args.resource_id, ) elif args.command == "delete-resource": delete_resource( args.project_id, args.location, args.dataset_id, args.fhir_store_id, args.resource_type, args.resource_id, ) elif args.command == "search-resources-get": search_resources_get( args.project_id, args.location, args.dataset_id, args.fhir_store_id, args.resource_type, ) elif args.command == "search-resources-post": search_resources_post( args.project_id, args.location, args.dataset_id, args.fhir_store_id, ) elif args.command == "get-patient-everything": get_patient_everything( args.project_id, args.location, args.dataset_id, args.fhir_store_id, args.resource_id, ) elif args.command == "create-implementation-guide": create_implementation_guide( args.project_id, args.location, args.dataset_id, args.fhir_store_id, args.implementation_guide_file, ) elif args.command == "enable-implementation-guide": enable_implementation_guide( args.project_id, args.location, args.dataset_id, args.fhir_store_id, args.implementation_guide_url, ) elif args.command == "create-structure-definition": create_structure_definition( args.project_id, args.location, args.dataset_id, args.fhir_store_id, args.structure_definition_file, ) elif args.command == "validate-resource": validate_resource( args.project_id, args.location, args.dataset_id, args.fhir_store_id, args.resource_type, ) elif args.command == "validate-resource-profile-url": validate_resource_profile_url( args.project_id, args.location, args.dataset_id, args.fhir_store_id, args.resource_type, args.profile_url, ) def main(): args = parse_command_line_args() run_command(args) if __name__ == "__main__": main()