Package com.ibm.fhir.bulkdata.common
Class BulkDataUtils
- java.lang.Object
 - 
- com.ibm.fhir.bulkdata.common.BulkDataUtils
 
 
- 
public class BulkDataUtils extends Object
Utility functions for IBM COS. 
- 
- 
Field Summary
Fields Modifier and Type Field Description static intIMPORT_RETRY_TIMES 
- 
Constructor Summary
Constructors Constructor Description BulkDataUtils() 
- 
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static voidcleanupTransientUserData(ImportTransientUserData transientUserData, boolean isAbort)static voidfinishMultiPartUpload(com.ibm.cloud.objectstorage.services.s3.AmazonS3 cosClient, String bucketName, String itemName, String uploadID, List<com.ibm.cloud.objectstorage.services.s3.model.PartETag> dataPacks)static longgetCosFileSize(com.ibm.cloud.objectstorage.services.s3.AmazonS3 cosClient, String bucketName, String itemName)static jakarta.json.JsonArraygetDataSourcesFromJobInput(String dataSourcesInfo)static Map<Class<? extends Resource>,List<Map<String,List<String>>>>getSearchParametersFromTypeFilters(String typeFilters)converts the type filter into a series of search parameters which are used to filter the bulk data export results.static com.ibm.cloud.objectstorage.services.s3.model.PartETagmultiPartUpload(com.ibm.cloud.objectstorage.services.s3.AmazonS3 cosClient, String bucketName, String itemName, String uploadID, InputStream dataStream, int partSize, int partNum)Use the passed cosClient to upload part of a multi-part objectstatic intreadFhirResourceFromHttps(String dataUrl, int numOfLinesToSkip, List<Resource> fhirResources, ImportTransientUserData transientUserData)static intreadFhirResourceFromLocalFile(String filePath, int numOfLinesToSkip, List<Resource> fhirResources, ImportTransientUserData transientUserData)static intreadFhirResourceFromObjectStore(com.ibm.cloud.objectstorage.services.s3.AmazonS3 cosClient, String bucketName, String itemName, int numOfLinesToSkip, List<Resource> fhirResources, ImportTransientUserData transientUserData)static StringstartPartUpload(com.ibm.cloud.objectstorage.services.s3.AmazonS3 cosClient, String bucketName, String itemName)static voidupdateSummary(String fhirResourceType, ExportTransientUserData chunkData)Update the chunkData with the stats from the newly finished upload.static List<OperationOutcome.Issue>validateInput(Resource resource)Validate the input resource and throw if there are validation errors 
 - 
 
- 
- 
Field Detail
- 
IMPORT_RETRY_TIMES
public static final int IMPORT_RETRY_TIMES
- See Also:
 - Constant Field Values
 
 
 - 
 
- 
Method Detail
- 
startPartUpload
public static String startPartUpload(com.ibm.cloud.objectstorage.services.s3.AmazonS3 cosClient, String bucketName, String itemName) throws Exception
- Throws:
 Exception
 
- 
multiPartUpload
public static com.ibm.cloud.objectstorage.services.s3.model.PartETag multiPartUpload(com.ibm.cloud.objectstorage.services.s3.AmazonS3 cosClient, String bucketName, String itemName, String uploadID, InputStream dataStream, int partSize, int partNum) throws ExceptionUse the passed cosClient to upload part of a multi-part object- Parameters:
 cosClient-bucketName-itemName-uploadID-dataStream-partSize-partNum-- Returns:
 - Throws:
 Exception
 
- 
finishMultiPartUpload
public static void finishMultiPartUpload(com.ibm.cloud.objectstorage.services.s3.AmazonS3 cosClient, String bucketName, String itemName, String uploadID, List<com.ibm.cloud.objectstorage.services.s3.model.PartETag> dataPacks) throws Exception- Throws:
 Exception
 
- 
cleanupTransientUserData
public static void cleanupTransientUserData(ImportTransientUserData transientUserData, boolean isAbort) throws Exception
- Throws:
 Exception
 
- 
readFhirResourceFromObjectStore
public static int readFhirResourceFromObjectStore(com.ibm.cloud.objectstorage.services.s3.AmazonS3 cosClient, String bucketName, String itemName, int numOfLinesToSkip, List<Resource> fhirResources, ImportTransientUserData transientUserData) throws Exception- Parameters:
 cosClient- - COS/S3 client.bucketName- - COS/S3 bucket name to read from.itemName- - COS/S3 object name to read from.numOfLinesToSkip- - number of lines to skip before read.fhirResources- - List holds the FHIR resources.transientUserData- - transient user data for the chunk.- Returns:
 - - number of parsing failures.
 - Throws:
 Exception
 
- 
getCosFileSize
public static long getCosFileSize(com.ibm.cloud.objectstorage.services.s3.AmazonS3 cosClient, String bucketName, String itemName) throws Exception- Throws:
 Exception
 
- 
readFhirResourceFromLocalFile
public static int readFhirResourceFromLocalFile(String filePath, int numOfLinesToSkip, List<Resource> fhirResources, ImportTransientUserData transientUserData) throws Exception
- Parameters:
 filePath- - file path to the ndjson file.numOfLinesToSkip- - number of lines to skip before read.fhirResources- - List holds the FHIR resources.transientUserData- - transient user data for the chunk.- Returns:
 - - number of parsing failures.
 - Throws:
 Exception
 
- 
readFhirResourceFromHttps
public static int readFhirResourceFromHttps(String dataUrl, int numOfLinesToSkip, List<Resource> fhirResources, ImportTransientUserData transientUserData) throws Exception
- Parameters:
 dataUrl- - URL to the ndjson file.numOfLinesToSkip- - number of lines to skip before read.fhirResources- - List holds the FHIR resources.transientUserData- - transient user data for the chunk.- Returns:
 - - number of parsing failures.
 - Throws:
 Exception
 
- 
validateInput
public static List<OperationOutcome.Issue> validateInput(Resource resource) throws FHIRValidationException, FHIROperationException
Validate the input resource and throw if there are validation errors- Parameters:
 resource-- Throws:
 FHIRValidationExceptionFHIROperationException
 
- 
getSearchParametersFromTypeFilters
public static Map<Class<? extends Resource>,List<Map<String,List<String>>>> getSearchParametersFromTypeFilters(String typeFilters) throws UnsupportedEncodingException, URISyntaxException
converts the type filter into a series of search parameters which are used to filter the bulk data export results.- Parameters:
 typeFilters-- Returns:
 - Throws:
 UnsupportedEncodingExceptionURISyntaxException
 
- 
getDataSourcesFromJobInput
public static jakarta.json.JsonArray getDataSourcesFromJobInput(String dataSourcesInfo)
 
- 
updateSummary
public static void updateSummary(String fhirResourceType, ExportTransientUserData chunkData)
Update the chunkData with the stats from the newly finished upload. The data is added to the summary from the chunkData's currentUploadResourceNum.- Parameters:
 fhirResourceType-chunkData-
 
 - 
 
 -