Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Document]: HealthcareApiClient methods. #28482

Merged
merged 8 commits into from
Sep 19, 2023
Merged
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -36,60 +36,68 @@
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,
Expand All @@ -103,12 +111,12 @@ ListMessagesResponse makeSendTimeBoundHL7v2ListRequest(
/**
* 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,
Expand All @@ -118,38 +126,89 @@ ListMessagesResponse makeHL7v2ListRequest(
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;

Expand All @@ -159,7 +218,7 @@ Operation pollOperation(Operation operation, Long sleepMs)
* @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;
Expand All @@ -170,7 +229,7 @@ HttpBody executeFhirBundle(String fhirStore, String bundle)
* @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;

Expand All @@ -179,9 +238,9 @@ HttpBody executeFhirBundle(String fhirStore, String bundle)
*
* @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,
Expand All @@ -195,9 +254,9 @@ HttpBody searchFhirResource(
*
* @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)
Expand All @@ -206,46 +265,101 @@ HttpBody getPatientEverything(
/**
* 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;
}
Loading