Using Inbound Subject API in Siebel Clinical

• This API can be used for the following multiple purposes:

Create and Schedule Subject in Siebel Clinical

This API can be used to create and schedule the Subject in Siebel Clinical. "Integration Id" is required to be sent and it should be the unique identifier of the Subject in a study. If the same Integration Id is used, the corresponding Subject data will be updated. If the same Integration Id is used with a different Site, then the Subject will be transferred to the new site, which is an existing functionality. It is required to send the subject status information while creating the subject, otherwise an error will be thrown. A single instance of Subject and Visit is allowed in a payload with multiple instances of activities.

Encounter Date, Screening Number, Site Number and Protocol Number are the required fields for Clinical Subject.

Status and Status Date are the required fields for Clinical Subject Status.

Screening Number refers to the Subject ID in Siebel Clinical.

Integration Id is the Unique Identifier of a Subject in a Study.

The following request will create and schedule Subject in Siebel Clinical:

  • URI: https://ServerName:port/siebel/v1.0/workflow/LS Clinical Subject Inbound-Subject
  • HTTP Method: POST
  • Content-Type: application/json
  • Authorization: Basic
  • Request body:
    {
        "OutputIntObjectName": {
            "MessageId": "",
            "MessageType": "Integration Object",
            "IntObjectName": "LS Clinical Subject Internal",
            "IntObjectFormat": "Siebel Hierarchical",
            "ListOfLS Clinical Subject Internal": {
                "Clinical Subject": [
                    {
                        "Encounter Date": "01/01/2023",
                        "Protocol Number": "PT_Protocol_001",
                        "Screening Number": "Test_SVT_01",
                        "Screen Date": "01/01/2023",
                        "Site Number": "PT_Site_001",
                	   "Cohort": "10",
                        "Integration Id": "Int_Test_SVT_01",
                        "Enrollment Date": "01/01/2023",                    
                        "ListOfClinical Subject Status": {
                            "Clinical Subject Status": [
                                {
                                    "Status Date": "01/01/2023",
                                    "Status": "Screened",
                                    "Comments": "test",
                                    "Visit Type": "Screening"
                                }
                            ]
                        },
                        "ListOfClinical Subject_Informed Consent": {
                            "Clinical Subject_Informed Consent": [
                                {
                                    "Informed Consent Signed Date": "01/01/2023"
                                }
                            ]
                        }
                    }
                ]
            }
        }
    }

As a result of a successful call of this API:

  • It creates a Subject with given details.
  • It also Schedules the Subject if there is a valid SVT is attached to the Site.

    If no SVT is attached to the site (where subject is going to create), this API will return the “UNDEFINED_SITE_TEMPLATE” error message.

Here are the response details for a successful request:

  • HTTP Code: 200
  • Content-Type: application/json
  • Response body:
    {
        "#value": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><SiebelMessage\n MessageId=\"\"\n IntObjectName=\"LS Clinical Subject Internal\"\n MessageType=\"Integration Object\"\n IntObjectFormat=\"Siebel Hierarchical\"\n><ListOfClinicalSubjectInternal\n><ClinicalSubject\n><Cohort\n>10</Cohort\n><DateofBirth\n>01/01/2023</DateofBirth\n><EnrollmentDate\n>01/01/2023</EnrollmentDate\n><IntegrationId\n>Int_Test_SVT_01</IntegrationId\n><ProtocolNumber\n>PT_Protocol_001</ProtocolNumber\n><ProtocolSiteId\n>88-2WGGP</ProtocolSiteId\n><ScreenDate\n>01/01/2023</ScreenDate\n><SiteNumber\n>PT_Site_001</SiteNumber\n><SubjectInitials\n>Test_SVT_01</SubjectInitials\n><ListOfClinicalSubjectStatus\n><ClinicalSubjectStatus\n><Status\n>Screened</Status\n><StatusDate\n>01/01/2023</StatusDate\n><Comments2\n>test</Comments2\n><VisitType\n>Screening</VisitType\n></ClinicalSubjectStatus\n></ListOfClinicalSubjectStatus\n><ListOfClinicalSubject_InformedConsent\n><ClinicalSubject_InformedConsent\n><InformedConsentSignedDate\n>01/01/2023</InformedConsentSignedDate\n></ClinicalSubject_InformedConsent\n></ListOfClinicalSubject_InformedConsent\n></ClinicalSubject\n></ListOfClinicalSubjectInternal\n></SiebelMessage\n>",
        "Error Code": "",
        "Siebel Operation Object Id": "88-34YFFX",
        "Process Instance Id": "88-34YFFV",
        "Integration Id": "Int_Test_SVT_01",
        "Error Message": ""
    }
    

Complete Subject Visits and Activities

This API can also be used to complete Subject visits and activities in Siebel Clinical. The API supports completion of one visit with multiple activities at a time.

Protocol Number and Integration Id uniquely Identifies a Subject.

Clinical Item and Repeating Number uniquely Identifies a Visit.

The following sample request will complete Subject Visits and Activities in Siebel Clinical:

  • URI: https://ServerName:port/siebel/v1.0/workflow/LS Clinical Subject Inbound-Subject
  • HTTP Method: POST
  • Content-Type: application/json
  • Authorization: Basic
  • Request body:

    The following sample payload will update the completed date for Clinical Item : "Re-screening Visit" and Repeat Number = 0

    {
        "OutputIntObjectName": {
            "MessageId": "",
            "MessageType": "Integration Object",
            "IntObjectName": "LS Clinical Subject Internal",
            "IntObjectFormat": "Siebel Hierarchical",
            "ListOfLS Clinical Subject Internal": {
                "Clinical Subject": [
                    {
                        "Protocol Number": "PT_Protocol_001",
                        "Site Number": "SVT_001",
                        "Integration Id": "Int_SVT_001",
                        "ListOfVisit Plan": {
                            "Visit Plan": [
                                {
                                    "Clinical Item": "Re-screening Visit",
                                    "Completed Date": "11/22/2022",
                                    "Name": "Re-screening Visit",
                                    "ListOfVisit Plan Action": {
                                        "Visit Plan Action": [
                                            {
                                                "Clinical Item": "Re-screening Visit – act",
                                                "Done": "11/22/2022",
                                                "Form Id": "ReScreeningAct01",
                                                "Repeating Number": "0"
                                            },
                                            {
                                                "Clinical Item": "Re-screening Visit – act",
                                                "Done": "11/22/2022",
                                                "Form Id": "ReScreeningAct02",
                                                "Repeating Number": "0"
                                            }
                                        ]
                                    }
                                }
                                
                            ]
                        }
                    }
                ]
            }
        }
    }

Here are the response details for a successful request:

  • HTTP Code: 200
  • Content-Type: application/json
  • Response body:
    {
        "#value": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><SiebelMessage\n MessageId=\"\"\n IntObjectName=\"LS Clinical Subject Internal\"\n MessageType=\"Integration Object\"\n IntObjectFormat=\"Siebel Hierarchical\"\n><ListOfClinicalSubjectInternal\n><ClinicalSubject\n><IntegrationId\n>Int_Test_SVT_02</IntegrationId\n><ProtocolNumber\n>PT_Protocol_001</ProtocolNumber\n><ProtocolSiteId\n>88-2WGGP</ProtocolSiteId\n><SiteNumber\n>PT_Site_001</SiteNumber\n><ListOfVisitPlan\n><VisitPlan\n><ClinicalItem\n>Screening Visit</ClinicalItem\n><CompletedDate\n>1/11/2023</CompletedDate\n><Name\n>Screening Visit</Name\n><ListOfVisitPlanAction\n><VisitPlanAction\n><ClinicalItem\n>Screening Visit – act02</ClinicalItem\n><Done\n>1/11/2023</Done\n><FormId\n>ScreeningAct01</FormId\n><RepeatingNumber\n>0</RepeatingNumber\n></VisitPlanAction\n><VisitPlanAction\n><ClinicalItem\n>Screening Visit – act01</ClinicalItem\n><Done\n>1/11/2023</Done\n><FormId\n>ScreeningAct02</FormId\n><RepeatingNumber\n>2</RepeatingNumber\n></VisitPlanAction\n></ListOfVisitPlanAction\n></VisitPlan\n></ListOfVisitPlan\n></ClinicalSubject\n></ListOfClinicalSubjectInternal\n></SiebelMessage\n>",
        "Error Code": "",
        "Siebel Operation Object Id": "",
        "Process Instance Id": "88-34YFJX",
        "Integration Id": "Int_Test_SVT_02",
        "Error Message": ""
    }

Create and Complete on-the-fly Visits and Activities

This API can also be used to create on-the-fly dynamic Visits and Activities by providing incremental repeating number. A dynamic visit is a subject visit which is created on-the-fly with Repeat Number other than 0 when the actual visit has happened.

Example Dynamic Visit names: Screening Visit(1), Rescreening Visit(1) etc.

The number included inside parentheses is called Repeat Number. When Siebel receives these kind of visit names, they will be treated as dynamic visits. The dynamic visits will be created under the given subject with visit name as “Screening Visit” and Repeat Number as 1 for example.

Protocol Number and Integration Id uniquely Identifies a Subject.

Clinical Item and Repeating Number uniquely Identifies a Visit.

The following request will create on-the-fly Subject Visits and Activities in Siebel Clinical:

  • URI: https://ServerName:port/siebel/v1.0/workflow/LS Clinical Subject Inbound-Subject
  • HTTP Method: POST
  • Content-Type: application/json
  • Authorization: Basic

Request body:

The following sample payload will create and complete a new visit with Clinical Item : UnScheduleableVisit and Repeat Number = 1. This is called as Dynamic Visit. Observe the visit name in the following sample payload. It is UnScheduleableVisit(1). When the visit name comes to Siebel Clinical with some number enclosed inside parenthesis, system treats it as a dynamic visit, and the same will be created as a new visit in Siebel Clinical with Name as UnScheduleableVisit and Repeat Number as “1”. In this way, dynamic schedulable visits can be created on-the-fly, and dynamic unschedulable visits also can be created on-the-fly.

{
    "OutputIntObjectName": {
        "MessageId": "",
        "MessageType": "Integration Object",
        "IntObjectName": "LS Clinical Subject Internal",
        "IntObjectFormat": "Siebel Hierarchical",
        "ListOfLS Clinical Subject Internal": {
            "Clinical Subject": [
                {
                    "Protocol Number": "PT_Protocol_001",
                    "Site Number": "SVT_001",
                    "Integration Id": "Int_SVT_001",
                    "ListOfVisit Plan": {
                        "Visit Plan": [
                            {
                                "Clinical Item": "UnScheduleableVisit",
                                "Completed Date": "11/20/2022",
                                "Name": "UnScheduleableVisit(1)",
                                "ListOfVisit Plan Action": {
                                    "Visit Plan Action": [
                                        {
                                            "Clinical Item": "UnScheduleableAct",
                                            "Done": "11/20/2022",
                                            "Form Id": "UnScheduleableAct01",
                                            "Repeating Number": "2"
                                        },
                                        {
                                            "Clinical Item": "UnScheduleableAct",
                                            "Done": "11/20/2022",
                                            "Form Id": "UnScheduleableAct02",
                                            "Repeating Number": "2"
                                        }
                                    ]
                                }
                            }
                        ]
                    }
                }
            ]
        }
    }
}

If you need to create further Dynamic/On-the-fly Visit for Repeat Number =2, you can provide Name in the above sample as "Name": "UnScheduleableVisit(2)"

Here are the response details for a successful request:

  • HTTP Code: 200
  • Content-Type: application/json
  • Response body:
    {
        "#value": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><SiebelMessage\n MessageId=\"\"\n IntObjectName=\"LS Clinical Subject Internal\"\n MessageType=\"Integration Object\"\n IntObjectFormat=\"Siebel Hierarchical\"\n><ListOfClinicalSubjectInternal\n><ClinicalSubject\n><IntegrationId\n>Int_Test_SVT_02</IntegrationId\n><ProtocolNumber\n>PT_Protocol_001</ProtocolNumber\n><ProtocolSiteId\n>88-2WGGP</ProtocolSiteId\n><SiteNumber\n>PT_Site_001</SiteNumber\n><ListOfVisitPlan\n><VisitPlan\n><ClinicalItem\n>UnScheduleableVisit</ClinicalItem\n><CompletedDate\n>1/10/2023</CompletedDate\n><Name\n>UnScheduleableVisit(1)</Name\n><ListOfVisitPlanAction\n><VisitPlanAction\n><ClinicalItem\n>UnScheduleableAct02</ClinicalItem\n><Done\n>1/10/2023</Done\n><FormId\n>UnScheduleableAct02</FormId\n><RepeatingNumber\n>0</RepeatingNumber\n></VisitPlanAction\n><VisitPlanAction\n><ClinicalItem\n>UnScheduleableAct02</ClinicalItem\n><Done\n>1/11/2023</Done\n><FormId\n>UnScheduleableAct02</FormId\n><RepeatingNumber\n>1</RepeatingNumber\n></VisitPlanAction\n></ListOfVisitPlanAction\n></VisitPlan\n></ListOfVisitPlan\n></ClinicalSubject\n></ListOfClinicalSubjectInternal\n></SiebelMessage\n>",
        "Error Code": "",
        "Siebel Operation Object Id": "",
        "Process Instance Id": "88-34YFKD",
        "Integration Id": "Int_Test_SVT_02",
        "Error Message": ""
    }

Undo Completed Subject Visit Activities

This API is also used to mark a subject visit activity as Incomplete (where the activity was previously completed) if there is No Payment Associated to it. If the activity has payment associated to it, it will not be marked as Incomplete.

The following request will undo Completed Activities in Siebel Clinical:

  • URI: https://ServerName:port/siebel/v1.0/workflow/LS Clinical Subject Inbound-Subject
  • HTTP Method: POST
  • Content-Type: application/json
  • Authorization: Basic
  • Request body:
    {
        "OutputIntObjectName": {
            "MessageId": "",
            "MessageType": "Integration Object",
            "IntObjectName": "LS Clinical Subject Internal",
            "IntObjectFormat": "Siebel Hierarchical",
            "ListOfLS Clinical Subject Internal": {
                "Clinical Subject": [
                    {
                        "Protocol Number": "PT_Protocol_001",
                        "Site Number": "SVT_001",
                        "Integration Id": "Int_SVT_001",
                        "ListOfVisit Plan": {
                            "Visit Plan": [
                                {
                                    "Clinical Item": "Screening Visit",
                                    "Completed Date": "12/02/2022",
                                    "Name": "Screening Visit",
                                    "ListOfVisit Plan Action": {
                                        "Visit Plan Action": [
                                            {
                                                "Clinical Item": "Screening Visit – act2",
                                                "Done": "",
                                                "Form Id": "ScreeningAct01"
                                            },
                                            {
                                                "Clinical Item": "Screening Visit – act1",
                                                "Done": "",
                                                "Form Id": "ScreeningAct02"
                                            }
                                        ]
                                    }
                                }
                            ]
                        }
                    }
                ]
            }
        }
    }

The above sample payload will undo the "Screening Visit – act2", "Screening Visit – act1" activities in the "Screening Visit" visit with Repeat Number=0, if there is no payment associated with these activities. If there is any payment amount associated with these activities, then no updates are done to these activities and an email is sent.

If the user wants to undo the activities of a dynamic visit, then the user should pass the visit name including the repeat number in parentheses.

Example Visit name: Screening Visit(1)

The user can also enable email notification in case of failed Undo of Activities, by following the instructions provided in the “Setting Up Integration Between CTMS and Oracle Clinical One” chapter of Siebel Clinical Trial Management System Guide.

Here are the response details for a successful request:

  • HTTP Code: 200
  • Content-Type: application/json
  • Response body:
    {
        "#value": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><SiebelMessage\n MessageId=\"\"\n IntObjectName=\"LS Clinical Subject Internal\"\n MessageType=\"Integration Object\"\n IntObjectFormat=\"Siebel Hierarchical\"\n><ListOfClinicalSubjectInternal\n><ClinicalSubject\n><IntegrationId\n>Int_Test_SVT_02</IntegrationId\n><ProtocolNumber\n>PT_Protocol_001</ProtocolNumber\n><ProtocolSiteId\n>88-2WGGP</ProtocolSiteId\n><SiteNumber\n>PT_Site_001</SiteNumber\n><ListOfVisitPlan\n><VisitPlan\n><ClinicalItem\n>Screening Visit</ClinicalItem\n><CompletedDate\n>1/11/2023</CompletedDate\n><Name\n>Screening Visit</Name\n><ListOfVisitPlanAction\n><VisitPlanAction\n><ClinicalItem\n>Screening Visit – act02</ClinicalItem\n><Done\n></Done\n><FormId\n>ScreeningAct01</FormId\n></VisitPlanAction\n><VisitPlanAction\n><ClinicalItem\n>Screening Visit – act01</ClinicalItem\n><Done\n></Done\n><FormId\n>ScreeningAct02</FormId\n></VisitPlanAction\n></ListOfVisitPlanAction\n></VisitPlan\n></ListOfVisitPlan\n></ClinicalSubject\n></ListOfClinicalSubjectInternal\n></SiebelMessage\n>",
        "Error Code": "",
        "Siebel Operation Object Id": "",
        "Process Instance Id": "88-34YFLH",
        "Integration Id": "Int_Test_SVT_02",
        "Error Message": ""
    }