Follow the steps to integrate any algorithm with CARPL
Log in to CARPL with your registered email id and go to Algorithms section present on the left panel of the window
Click on ADD ALGORITHM on the right top corner of the window
Fill the details
Name: Name of the algorithm
Description: Description of the algorithm
Choose Modality: Modality of input data to the algorithm
Choose Body Part: Body part for which the algorithm is designed for
Check mark ‘Inferencing Available’ if the algorithm is ready for inferencing
API Details: A dictionary with API details to upload dataset and receive results
Algorithm Configuration: A dictionary with algorithm’s inferencing details
Click on submit
API details is a dictionary with the following keys:
Endpoint: API endpoint URL
Type: Type of Request- POST
Headers: Additional information to connect client and server. For e.g.- Bearer token for authorization
Endpoint: API URL to retrieve results with studyIUID
Type: type of request- GET
Headers: Additional information to connect client and server. For e.g.- Bearer token for authorization
Endpoint: API URL to fetch ROI json
Type: type of request- GET
Headers: Additional information to connect client and server. For e.g.- Bearer token for authorization
An example API Details dictionary is shown below
Algorithm Configuration is a dictionary with the following keys
UploadType: format of the files to be uploaded (DICOM/TAR.GZ)
EnforceSeriesDescription: dictionary to enforce Series description condition on the uploaded file. Following keys are used:
Status: true/false. If true, series description condition will be enforced
Keywords: list of keywords of series description to enforce. For eg- T1,T2(for MRI)
PostProcessing: true/false. If the algorithm is not manually integrated, put this value to false
AlgorithmOutputs: dictionary containing output type(s)
ROIs: true/false
ProcessingTime: Time(in seconds) after which the next processing request should be sent
MaxRetries: Max number of times a case should be rerun on the algorithm before giving it a FAIL status
An example is shown below
The output of the algorithm is expected to be in json format with list of dictionaries.
Each dictionary corresponds to only one finding and should contain the following
Type: (string) “rectangle” or “freehand”. Whether the ROI points in the “points” key are for rectangle or freehand.
Points: (list of list). If “type” is rectangle, then it should be a list of [x,y] points representing left top point and right bottom points. If “type” is freehand, then it should be a list of all [x,y] points.
StudyInstanceUID: (string) StudyInstanceUID of the case
SeriesInstanceUID: (string) SeriesInstanceUID of the case
SOPInstanceUID: (string) SOPInstanceUID of the case
Finding_name : (string) finding corresponding to the ROI