This is an automated email from the ASF dual-hosted git repository.
yhu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git
The following commit(s) were added to refs/heads/master by this push:
new 3915c85b842 [Document]: `HealthcareApiClient` methods. (#28482)
3915c85b842 is described below
commit 3915c85b84207f5f2c1e9dc4dd441769f3c586a5
Author: Svetak Sundhar <[email protected]>
AuthorDate: Tue Sep 19 17:47:57 2023 +0000
[Document]: `HealthcareApiClient` methods. (#28482)
* Create HealthcareUtils file with shared resources
* revert
* Document methods in HealthcareApiClient
* fix spotless
* caps
---
.../sdk/io/gcp/healthcare/HealthcareApiClient.java | 242 +++++++++++++++------
1 file changed, 178 insertions(+), 64 deletions(-)
diff --git
a/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/healthcare/HealthcareApiClient.java
b/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/healthcare/HealthcareApiClient.java
index a72b55bd720..39c30b94942 100644
---
a/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/healthcare/HealthcareApiClient.java
+++
b/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/healthcare/HealthcareApiClient.java
@@ -36,60 +36,68 @@ import
org.apache.beam.sdk.io.gcp.healthcare.HttpHealthcareApiClient.HealthcareH
import org.checkerframework.checker.nullness.qual.Nullable;
import org.joda.time.Instant;
-/** Defines a client that talks to the Cloud Healthcare API (version v1). */
+/** Defines a client to communicate with the GCP HCLS API (version v1). */
public interface HealthcareApiClient {
/**
- * Fetches an Hl7v2 message by its name from a Hl7v2 store.
+ * Gets a Hl7v2 message by its name from a Hl7v2 store.
*
- * @param msgName the msg name
- * @return HL7v2 message
- * @throws IOException the io exception
- * @throws ParseException the parse exception
+ * @param msgName The message name to be retrieved.
+ * @return The HL7v2 message.
+ * @throws IOException The IO Exception.
+ * @throws ParseException The Parse Exception.
*/
Message getHL7v2Message(String msgName) throws IOException, ParseException;
/**
- * Delete hl 7 v 2 message empty.
+ * Deletes an HL7v2 message.
*
- * @param msgName the msg name
- * @return the empty
- * @throws IOException the io exception
+ * @param msgName The message name to be deleted.
+ * @return Empty.
+ * @throws IOException The IO Exception.
*/
Empty deleteHL7v2Message(String msgName) throws IOException;
/**
- * Gets HL7v2 store.
+ * Gets an HL7v2 store.
*
- * @param storeName the store name
- * @return the HL7v2 store
- * @throws IOException the io exception
+ * @param storeName The store name to be retrieved.
+ * @return The HL7v2 store.
+ * @throws IOException The IO Exception.
*/
Hl7V2Store getHL7v2Store(String storeName) throws IOException;
/**
- * Gets earliest hl 7 v 2 send time.
+ * Gets the earliest HL7v2 send time.
*
- * @param hl7v2Store the hl 7 v 2 store
- * @param filter the filter
- * @return the earliest hl 7 v 2 send time
- * @throws IOException the io exception
+ * @param hl7v2Store The HL7v2 store.
+ * @param filter the filter to be matched on.
+ * @return The earliest HL7v2 send time.
+ * @throws IOException The IO Exception.
*/
Instant getEarliestHL7v2SendTime(String hl7v2Store, @Nullable String filter)
throws IOException;
+ /**
+ * Gets the latest HL7v2 send time.
+ *
+ * @param hl7v2Store The HL7v2 store.
+ * @param filter The filter to be matched on.
+ * @return The latest HL7v2 send time.
+ * @throws IOException The IO Exception.
+ */
Instant getLatestHL7v2SendTime(String hl7v2Store, @Nullable String filter)
throws IOException;
/**
- * Make send time bound hl 7 v 2 list request.
+ * Time Bound HL7v2 list request.
*
- * @param hl7v2Store the hl 7 v 2 store
- * @param start the start
- * @param end the end
- * @param otherFilter the other filter
- * @param orderBy the order by
- * @param pageToken the page token
- * @return the list messages response
- * @throws IOException the io exception
+ * @param hl7v2Store The HL7v2 store.
+ * @param start Start time.
+ * @param end End time.
+ * @param otherFilter The filter outside of the sendTime.
+ * @param orderBy Order by.
+ * @param pageToken The page token.
+ * @return HTTP List response.
+ * @throws IOException The IO Exception.
*/
ListMessagesResponse makeSendTimeBoundHL7v2ListRequest(
String hl7v2Store,
@@ -103,12 +111,12 @@ public interface HealthcareApiClient {
/**
* Make hl 7 v 2 list request list messages response.
*
- * @param hl7v2Store the hl 7 v 2 store
- * @param filter the filter
- * @param orderBy the order by
- * @param pageToken the page token
- * @return the list messages response
- * @throws IOException the io exception
+ * @param hl7v2Store The HL7v2 Store.
+ * @param filter The Filter.
+ * @param orderBy Order by.
+ * @param pageToken The Page Token.
+ * @return HTTP List response.
+ * @throws IOException The IO Exception.
*/
ListMessagesResponse makeHL7v2ListRequest(
String hl7v2Store,
@@ -118,38 +126,89 @@ public interface HealthcareApiClient {
throws IOException;
/**
- * Ingest hl 7 v 2 message ingest message response.
+ * Ingest an HL7v2 message.
*
- * @param hl7v2Store the hl 7 v 2 store
- * @param msg the msg
- * @return the ingest message response
- * @throws IOException the io exception
+ * @param hl7v2Store The HL7v2 store of the message.
+ * @param msg The message.
+ * @return Empty.
+ * @throws IOException The IO Exception.
*/
IngestMessageResponse ingestHL7v2Message(String hl7v2Store, Message msg)
throws IOException;
/**
- * Create hl 7 v 2 message message.
+ * Creates an HL7v2 message.
*
- * @param hl7v2Store the hl 7 v 2 store
- * @param msg the msg
- * @return the message
- * @throws IOException the io exception
+ * @param hl7v2Store The HL7v2 store to create a message in.
+ * @param msg The message to create.
+ * @return Empty.
+ * @throws IOException The IO Exception.
*/
Message createHL7v2Message(String hl7v2Store, Message msg) throws
IOException;
+ /**
+ * Deletes an HL7v2 store.
+ *
+ * @param store The HL7v2 store to be deleted.
+ * @return Empty.
+ * @throws IOException The IO Exception.
+ */
+ Empty deleteHL7v2Store(String store) throws IOException;
+
+ /**
+ * Importing a FHIR resource from GCS.
+ *
+ * @param fhirStore the FhirStore to import into.
+ * @param gcsSourcePath the GCS Path of resource.
+ * @param contentStructure The content structure.
+ * @return Empty.
+ * @throws IOException the io exception
+ */
Operation importFhirResource(
String fhirStore, String gcsSourcePath, @Nullable String
contentStructure) throws IOException;
+ /**
+ * Export a FHIR Resource to GCS.
+ *
+ * @param fhirStore the FhirStore of the resource.
+ * @param gcsDestinationPrefix GCS Destination Prefix to export to.
+ * @return Empty.
+ * @throws IOException The IO Exception.
+ */
Operation exportFhirResourceToGcs(String fhirStore, String
gcsDestinationPrefix)
throws IOException;
+ /**
+ * Export a FHIR Resource to BigQuery.
+ *
+ * @param fhirStore the FhirStore of the resource.
+ * @param bigQueryDatasetUri The BQ Dataset URI to export to.
+ * @return Empty.
+ * @throws IOException The IO Exception.
+ */
Operation exportFhirResourceToBigQuery(String fhirStore, String
bigQueryDatasetUri)
throws IOException;
+ /**
+ * Deidentify a GCP FHIR Store and write the result into a new FHIR Store.
+ *
+ * @param sourceFhirStore the FhirStore to be deidentified.
+ * @param destinationFhirStore the FhirStore that the deidentified data will
be written to.
+ * @param deidConfig the deidCongig specifying form of deidentification.
+ * @return Empty.
+ * @throws IOException The IO Exception.
+ */
Operation deidentifyFhirStore(
String sourceFhirStore, String destinationFhirStore, DeidentifyConfig
deidConfig)
throws IOException;
+ /**
+ * Poll operation.
+ *
+ * @param operation to be polled.
+ * @param sleepMs length of time to wait between requests.
+ * @return HTTP Request (that returns status of operation).
+ * @throws IOException The IO Exception.
+ */
Operation pollOperation(Operation operation, Long sleepMs)
throws InterruptedException, IOException;
@@ -159,7 +218,7 @@ public interface HealthcareApiClient {
* @param fhirStore the fhir store
* @param bundle the bundle
* @return the http body
- * @throws IOException the io exception
+ * @throws IOException The IO Exception.
*/
HttpBody executeFhirBundle(String fhirStore, String bundle)
throws IOException, HealthcareHttpException;
@@ -170,7 +229,7 @@ public interface HealthcareApiClient {
* @param resourceName the resource name, in format
*
projects/{p}/locations/{l}/datasets/{d}/fhirStores/{f}/fhir/{resourceType}/{id}
* @return the http body
- * @throws IOException the io exception
+ * @throws IOException The IO Exception.
*/
HttpBody readFhirResource(String resourceName) throws IOException;
@@ -179,9 +238,9 @@ public interface HealthcareApiClient {
*
* @param fhirStore the fhir store
* @param resourceType the resource type
- * @param parameters the parameters
+ * @param parameters The parameters (in the form of key-value pairs).
* @return the http body
- * @throws IOException
+ * @throws IOException The IO Exception.
*/
HttpBody searchFhirResource(
String fhirStore,
@@ -195,9 +254,9 @@ public interface HealthcareApiClient {
*
* @param resourceName the resource name, in format
*
projects/{p}/locations/{l}/datasets/{d}/fhirStores/{f}/fhir/{resourceType}/{id}
- * @param filters optional request filters
+ * @param filters optional request filters (in key value pairs).
* @return the http body
- * @throws IOException
+ * @throws IOException The IO Exception.
*/
HttpBody getPatientEverything(
String resourceName, @Nullable Map<String, Object> filters, String
pageToken)
@@ -206,46 +265,101 @@ public interface HealthcareApiClient {
/**
* Create hl 7 v 2 store hl 7 v 2 store.
*
- * @param dataset the dataset
- * @param name the name
- * @return the hl 7 v 2 store
- * @throws IOException the io exception
+ * @param dataset The dataset to create the HL7v2 store in.
+ * @param name The name of the store to be created.
+ * @return Empty.
+ * @throws IOException The IO Exception.
*/
Hl7V2Store createHL7v2Store(String dataset, String name) throws IOException;
+ /**
+ * Create FHIR Store with a PubSub topic listener.
+ *
+ * @param dataset The name of Dataset for the FHIR store to be created in.
+ * @param name The name of the FHIR store.
+ * @param version The version of the FHIR store (DSTU2, STU3, R4).
+ * @param pubsubTopic The pubsub topic listening to the FHIR store.
+ * @throws IOException The IO Exception.
+ */
FhirStore createFhirStore(String dataset, String name, String version,
String pubsubTopic)
throws IOException;
-
+ /**
+ * Create FHIR Store.
+ *
+ * @param dataset The name of the Dataset for the FHIR store to be created
in.
+ * @param name The name of the FHIR store.
+ * @param version The version of the FHIR store (DSTU2, STU3, R4).
+ * @throws IOException The IO Exception.
+ */
FhirStore createFhirStore(String dataset, String name, String version)
throws IOException;
/**
* List all FHIR stores in a dataset.
*
- * @param dataset the dataset, in the format:
+ * @param dataset The dataset, in the format:
* projects/project_id/locations/location_id/datasets/dataset_id
- * @return a list of FhirStore
- * @throws IOException
+ * @return A list of all FHIR stores in the dataset.
+ * @throws IOException The IO Exception.
*/
List<FhirStore> listAllFhirStores(String dataset) throws IOException;
/**
- * Delete hl 7 v 2 store empty.
+ * Delete Fhir store.
*
- * @param store the store
- * @return the empty
- * @throws IOException the io exception
+ * @param store The FHIR store to be deleted.
+ * @return Empty.
+ * @throws IOException The IO Exception.
*/
- Empty deleteHL7v2Store(String store) throws IOException;
-
Empty deleteFhirStore(String store) throws IOException;
+ /**
+ * Retrieve DicomStudyMetadata.
+ *
+ * @param dicomWebPath The Dicom Web Path to retrieve the metadata from.
+ * @return The study metadata.
+ * @throws IOException The IO Exception.
+ */
String retrieveDicomStudyMetadata(String dicomWebPath) throws IOException;
+ /**
+ * Create a DicomStore.
+ *
+ * @param dataset The dataset that the Dicom Store should be in, in the
format:
+ * projects/project_id/locations/location_id/datasets/dataset_id.
+ * @param name The name of the Dicom Store to be created.
+ * @return Empty.
+ * @throws IOException The IO Exception.
+ */
DicomStore createDicomStore(String dataset, String name) throws IOException;
+ /**
+ * Create a DicomStore with a PubSub listener.
+ *
+ * @param dataset The dataset that the Dicom Store should be in, in the
format:
+ * projects/project_id/locations/location_id/datasets/dataset_id
+ * @param name The name of the Dicom Store to be created.
+ * @param pubsubTopic Name of PubSub topic connected with the Dicom store.
+ * @return Empty.
+ * @throws IOException The IO Exception.
+ */
DicomStore createDicomStore(String dataset, String name, String pubsubTopic)
throws IOException;
+ /**
+ * Delete a Dicom Store.
+ *
+ * @param name The name of the Dicom Store to be deleted.
+ * @return Empty.
+ * @throws IOException The IO Exception.
+ */
Empty deleteDicomStore(String name) throws IOException;
+ /**
+ * Upload to a Dicom Store.
+ *
+ * @param webPath String format of webPath to upload into.
+ * @param filePath filePath of file to upload.
+ * @return Empty.
+ * @throws IOException The IO Exception.
+ */
Empty uploadToDicomStore(String webPath, String filePath) throws
IOException, URISyntaxException;
}