Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
4fd76ef
feat(sources/healthcare): add a new healthcare source
Quarz0 Oct 8, 2025
f15be3e
Apply suggestions from code review#1
Quarz0 Oct 9, 2025
fc0a1de
feat(tools/healthcare): Add healthcare dataset tools
Quarz0 Oct 9, 2025
3b453a4
feat(tools/healthcare): Add healthcare fhir tools
Quarz0 Oct 18, 2025
520e0f3
feat(tools/healthcare): Add healthcare dataset tools (#1671)
Quarz0 Oct 20, 2025
e3ff2be
Revert "feat(tools/healthcare): Add healthcare dataset tools" (#1742)
Yuan325 Oct 20, 2025
a617079
feat(sources/healthcare): add a new healthcare source (#1656)
Quarz0 Oct 21, 2025
96ad4be
address comments about integration tests-1
Quarz0 Oct 22, 2025
053c340
Merge branch 'healthcare' of https://github.com/googleapis/genai-tool…
Quarz0 Oct 22, 2025
fc10b8d
Merge branch 'healthcare_dataset' into healthcare_fhir
Quarz0 Oct 22, 2025
96a706b
feat(tools/healthcare): add healthcare dicom tools
Quarz0 Oct 24, 2025
b2698d0
Merge branch 'healthcare' of https://github.com/googleapis/genai-tool…
Quarz0 Oct 24, 2025
f016bb9
Merge branch 'healthcare_dataset' into healthcare_fhir
Quarz0 Oct 24, 2025
04c3269
Merge branch 'healthcare_fhir' into healthcare_dicom
Quarz0 Oct 26, 2025
b12e33f
Merge branch 'healthcare' of https://github.com/googleapis/genai-tool…
Quarz0 Oct 28, 2025
436caf3
Merge branch 'healthcare' of https://github.com/googleapis/genai-tool…
Quarz0 Oct 28, 2025
175e326
Merge branch 'healthcare' into healthcare_fhir
Quarz0 Oct 28, 2025
1d79336
Merge branch 'healthcare_fhir' into healthcare_dicom
Quarz0 Oct 28, 2025
f5e0d8d
Merge branch 'healthcare' of https://github.com/googleapis/genai-tool…
Quarz0 Oct 28, 2025
535d03c
Merge branch 'healthcare' into healthcare_dicom
Quarz0 Oct 28, 2025
10ef147
fix lint errors
Quarz0 Oct 28, 2025
1547001
move parsing of dicom params to a common util function
Quarz0 Oct 29, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .ci/integration.cloudbuild.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,7 @@ steps:
- "SERVICE_ACCOUNT_EMAIL=$SERVICE_ACCOUNT_EMAIL"
- "HEALTHCARE_REGION=$_REGION"
- "HEALTHCARE_DATASET=$_HEALTHCARE_DATASET"
- "HEALTHCARE_PREPOPULATED_DICOM_STORE=$_HEALTHCARE_PREPOPULATED_DICOM_STORE"
secretEnv: ["CLIENT_ID"]
volumes:
- name: "go"
Expand Down Expand Up @@ -881,6 +882,7 @@ substitutions:
_ALLOYDB_AI_NL_INSTANCE: "alloydb-ai-nl-testing-instance"
_BIGTABLE_INSTANCE: "bigtable-testing-instance"
_HEALTHCARE_DATASET: "test-dataset"
_HEALTHCARE_PREPOPULATED_DICOM_STORE: "prepopulated-test-dicom-store"
_POSTGRES_HOST: 127.0.0.1
_POSTGRES_PORT: "5432"
_SPANNER_INSTANCE: "spanner-testing"
Expand Down
6 changes: 6 additions & 0 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,12 +99,18 @@ import (
_ "github.com/googleapis/genai-toolbox/internal/tools/healthcare/fhirfetchpage"
_ "github.com/googleapis/genai-toolbox/internal/tools/healthcare/fhirpatienteverything"
_ "github.com/googleapis/genai-toolbox/internal/tools/healthcare/fhirpatientsearch"
_ "github.com/googleapis/genai-toolbox/internal/tools/healthcare/getdicomstore"
_ "github.com/googleapis/genai-toolbox/internal/tools/healthcare/getdicomstoremetrics"
_ "github.com/googleapis/genai-toolbox/internal/tools/healthcare/getfhirresource"
_ "github.com/googleapis/genai-toolbox/internal/tools/healthcare/getfhirstore"
_ "github.com/googleapis/genai-toolbox/internal/tools/healthcare/getfhirstoremetrics"
_ "github.com/googleapis/genai-toolbox/internal/tools/healthcare/gethealthcaredataset"
_ "github.com/googleapis/genai-toolbox/internal/tools/healthcare/listdicomstores"
_ "github.com/googleapis/genai-toolbox/internal/tools/healthcare/listfhirstores"
_ "github.com/googleapis/genai-toolbox/internal/tools/healthcare/retrieverendereddicominstance"
_ "github.com/googleapis/genai-toolbox/internal/tools/healthcare/searchdicominstances"
_ "github.com/googleapis/genai-toolbox/internal/tools/healthcare/searchdicomseries"
_ "github.com/googleapis/genai-toolbox/internal/tools/healthcare/searchdicomstudies"
_ "github.com/googleapis/genai-toolbox/internal/tools/http"
_ "github.com/googleapis/genai-toolbox/internal/tools/looker/lookeradddashboardelement"
_ "github.com/googleapis/genai-toolbox/internal/tools/looker/lookerconversationalanalytics"
Expand Down
18 changes: 18 additions & 0 deletions docs/en/resources/sources/healthcare.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,24 @@ If you are new to the Healthcare API, you can try to
- [`fhir-fetch-page`](../tools/healthcare/fhir-fetch-page.md)
Fetches a page of FHIR resources from a given URL.

- [`get-dicom-store`](../tools/healthcare/get-dicom-store.md)
Retrieves information about a DICOM store.

- [`get-dicom-store-metrics`](../tools/healthcare/get-dicom-store-metrics.md)
Retrieves metrics for a DICOM store.

- [`search-dicom-studies`](../tools/healthcare/search-dicom-studies.md)
Searches for DICOM studies in a DICOM store.

- [`search-dicom-series`](../tools/healthcare/search-dicom-series.md)
Searches for DICOM series in a DICOM store.

- [`search-dicom-instances`](../tools/healthcare/search-dicom-instances.md)
Searches for DICOM instances in a DICOM store.

- [`retrieve-rendered-dicom-instance`](../tools/healthcare/retrieve-rendered-dicom-instance.md)
Retrieves a rendered DICOM instance from a DICOM store.

## Requirements

### IAM Permissions
Expand Down
45 changes: 45 additions & 0 deletions docs/en/resources/tools/healthcare/get-dicom-store-metrics.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
title: "get-dicom-store-metrics"
linkTitle: "get-dicom-store-metrics"
type: docs
weight: 1
description: >
A "get-dicom-store-metrics" tool retrieves metrics for a DICOM store.
aliases:
- /resources/tools/healthcare-get-dicom-store-metrics
---

## About

A `get-dicom-store-metrics` tool retrieves metrics for a DICOM store. It's
compatible with the following sources:

- [healthcare](../../sources/healthcare.md)

`get-dicom-store-metrics` returns the metrics of a DICOM store.

## Example

```yaml
tools:
get_dicom_store_metrics:
kind: get-dicom-store-metrics
source: my-healthcare-source
description: Use this tool to get metrics for a DICOM store.
```

## Reference

| **field** | **type** | **required** | **description** |
|-------------|:------------------------------------------:|:------------:|----------------------------------------------------|
| kind | string | true | Must be "get-dicom-store-metrics". |
| source | string | true | Name of the healthcare source. |
| description | string | true | Description of the tool that is passed to the LLM. |

### Parameters

| **field** | **type** | **required** | **description** |
|-----------|:----------:|:------------:|----------------------------------------|
| storeID | string | true* | The DICOM store ID to get metrics for. |

*If the `allowedDICOMStores` in the source has length 1, then the `storeID` parameter is not needed.
45 changes: 45 additions & 0 deletions docs/en/resources/tools/healthcare/get-dicom-store.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
title: "get-dicom-store"
linkTitle: "get-dicom-store"
type: docs
weight: 1
description: >
A "get-dicom-store" tool retrieves information about a DICOM store.
aliases:
- /resources/tools/healthcare-get-dicom-store
---

## About

A `get-dicom-store` tool retrieves information about a DICOM store. It's
compatible with the following sources:

- [healthcare](../../sources/healthcare.md)

`get-dicom-store` returns the details of a DICOM store.

## Example

```yaml
tools:
get_dicom_store:
kind: get-dicom-store
source: my-healthcare-source
description: Use this tool to get information about a DICOM store.
```

## Reference

| **field** | **type** | **required** | **description** |
|-------------|:------------------------------------------:|:------------:|----------------------------------------------------|
| kind | string | true | Must be "get-dicom-store". |
| source | string | true | Name of the healthcare source. |
| description | string | true | Description of the tool that is passed to the LLM. |

### Parameters

| **field** | **type** | **required** | **description** |
|-----------|:----------:|:------------:|----------------------------------------|
| storeID | string | true* | The DICOM store ID to get details for. |

*If the `allowedDICOMStores` in the source has length 1, then the `storeID` parameter is not needed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
---
title: "retrieve-rendered-dicom-instance"
linkTitle: "retrieve-rendered-dicom-instance"
type: docs
weight: 1
description: >
A "retrieve-rendered-dicom-instance" tool retrieves a rendered DICOM instance from a DICOM store.
aliases:
- /resources/tools/healthcare-retrieve-rendered-dicom-instance
---

## About

A `retrieve-rendered-dicom-instance` tool retrieves a rendered DICOM instance from a DICOM store.
It's compatible with the following sources:

- [healthcare](../../sources/healthcare.md)

`retrieve-rendered-dicom-instance` returns a base64 encoded string of the image in JPEG format.

## Example

```yaml
tools:
retrieve_rendered_dicom_instance:
kind: retrieve-rendered-dicom-instance
source: my-healthcare-source
description: Use this tool to retrieve a rendered DICOM instance from the DICOM store.
```

## Reference

| **field** | **type** | **required** | **description** |
|-------------|:------------------------------------------:|:------------:|----------------------------------------------------|
| kind | string | true | Must be "retrieve-rendered-dicom-instance". |
| source | string | true | Name of the healthcare source. |
| description | string | true | Description of the tool that is passed to the LLM. |

### Parameters

| **field** | **type** | **required** | **description** |
|-------------------|:----------:|:------------:|-----------------------------------------------------------------------------------------------------|
| StudyInstanceUID | string | true | The UID of the DICOM study. |
| SeriesInstanceUID | string | true | The UID of the DICOM series. |
| SOPInstanceUID | string | true | The UID of the SOP instance. |
| FrameNumber | integer | false | The frame number to retrieve (1-based). Only applicable to multi-frame instances. Defaults to 1. |
| storeID | string | true* | The DICOM store ID to retrieve from. |

*If the `allowedDICOMStores` in the source has length 1, then the `storeID` parameter is not needed.
56 changes: 56 additions & 0 deletions docs/en/resources/tools/healthcare/search-dicom-instances.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
title: "search-dicom-instances"
linkTitle: "search-dicom-instances"
type: docs
weight: 1
description: >
A "search-dicom-instances" tool searches for DICOM instances in a DICOM store.
aliases:
- /resources/tools/healthcare-search-dicom-instances
---

## About

A `search-dicom-instances` tool searches for DICOM instances in a DICOM store based on a
set of criteria. It's compatible with the following sources:

- [healthcare](../../sources/healthcare.md)

`search-dicom-instances` returns a list of DICOM instances that match the given criteria.

## Example

```yaml
tools:
search_dicom_instances:
kind: search-dicom-instances
source: my-healthcare-source
description: Use this tool to search for DICOM instances in the DICOM store.
```

## Reference

| **field** | **type** | **required** | **description** |
|-------------|:------------------------------------------:|:------------:|----------------------------------------------------|
| kind | string | true | Must be "search-dicom-instances". |
| source | string | true | Name of the healthcare source. |
| description | string | true | Description of the tool that is passed to the LLM. |

### Parameters

| **field** | **type** | **required** | **description** |
|--------------------------|:----------:|:------------:|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| StudyInstanceUID | string | false | The UID of the DICOM study. |
| PatientName | string | false | The name of the patient. |
| PatientID | string | false | The ID of the patient. |
| AccessionNumber | string | false | The accession number of the study. |
| ReferringPhysicianName | string | false | The name of the referring physician. |
| StudyDate | string | false | The date of the study in the format `YYYYMMDD`. You can also specify a date range in the format `YYYYMMDD-YYYYMMDD`. |
| SeriesInstanceUID | string | false | The UID of the DICOM series. |
| Modality | string | false | The modality of the series. |
| SOPInstanceUID | string | false | The UID of the SOP instance. |
| fuzzymatching | boolean | false | Whether to enable fuzzy matching for patient names. Fuzzy matching will perform tokenization and normalization of both the value of PatientName in the query and the stored value. It will match if any search token is a prefix of any stored token. For example, if PatientName is "John^Doe", then "jo", "Do" and "John Doe" will all match. However "ohn" will not match. |
| includefield | []string | false | List of attributeIDs to include in the output, such as DICOM tag IDs or keywords. Set to `["all"]` to return all available tags. |
| storeID | string | true* | The DICOM store ID to search in. |

*If the `allowedDICOMStores` in the source has length 1, then the `storeID` parameter is not needed.
Loading
Loading