Sample code for 30+ languages & platforms
PureBasic

IntakeQ: Send a Questionnaire

See more IntakeQ Examples

Send an intake package using the API.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkJsonObject.pb"

Procedure ChilkatExample()

    success.i = 0

    ; This example assumes the Chilkat API to have been previously unlocked.
    ; See Global Unlock Sample for sample code.

    http.i = CkHttp::ckCreate()
    If http.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Implements the following CURL command:

    ; curl -H "Content-Type: application/json" \
    ;      -H 'X-Auth-Key: xxxxxxxxxxxxxxxxxxxxxxxxx' \
    ;      -X POST \
    ;      -d '{     		
    ; 	"QuestionnaireId": "00000000-0000-0000-0000-000000000000",     		
    ; 	"ClientId": 123, 
    ; 	"ClientName": "Dexter Morgan",
    ; 	"ClientEmail": "dexter@email.com",
    ; 	"ClientPhone": "2222222222", 
    ; 	"PractitionerId": "00000000-0000-0000-0000-000000000000",
    ; }' https://intakeq.com/api/v1/intakes/send

    ; Use the following online tool to generate HTTP code from a CURL command
    ; Convert a cURL Command to HTTP Source Code

    ; Use this online tool to generate code from sample JSON:
    ; Generate Code to Create JSON

    ; The following JSON is sent in the request body.

    ; {
    ;   "QuestionnaireId": "00000000-0000-0000-0000-000000000000",
    ;   "ClientId": 123,
    ;   "ClientName": "Dexter Morgan",
    ;   "ClientEmail": "dexter@email.com",
    ;   "ClientPhone": "2222222222",
    ;   "PractitionerId": "00000000-0000-0000-0000-000000000000"
    ; }

    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckUpdateString(json,"QuestionnaireId","00000000-0000-0000-0000-000000000000")
    CkJsonObject::ckUpdateInt(json,"ClientId",123)
    CkJsonObject::ckUpdateString(json,"ClientName","Dexter Morgan")
    CkJsonObject::ckUpdateString(json,"ClientEmail","dexter@email.com")
    CkJsonObject::ckUpdateString(json,"ClientPhone","2222222222")
    CkJsonObject::ckUpdateString(json,"PractitionerId","00000000-0000-0000-0000-000000000000")

    CkHttp::ckSetRequestHeader(http,"Content-Type","application/json")
    CkHttp::ckSetRequestHeader(http,"X-Auth-Key","xxxxxxxxxxxxxxxxxxxxxxxxx")

    resp.i = CkHttpResponse::ckCreate()
    If resp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkHttp::ckHttpJson(http,"POST","https://intakeq.com/api/v1/intakes/send",json,"application/json",resp)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(json)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    sbResponseBody.i = CkStringBuilder::ckCreate()
    If sbResponseBody.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkHttpResponse::ckGetBodySb(resp,sbResponseBody)
    jResp.i = CkJsonObject::ckCreate()
    If jResp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckLoadSb(jResp,sbResponseBody)
    CkJsonObject::setCkEmitCompact(jResp, 0)

    Debug "Response Body:"
    Debug CkJsonObject::ckEmit(jResp)

    respStatusCode.i = CkHttpResponse::ckStatusCode(resp)
    Debug "Response Status Code = " + Str(respStatusCode)
    If respStatusCode >= 400
        Debug "Response Header:"
        Debug CkHttpResponse::ckHeader(resp)
        Debug "Failed."
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(json)
        CkHttpResponse::ckDispose(resp)
        CkStringBuilder::ckDispose(sbResponseBody)
        CkJsonObject::ckDispose(jResp)
        ProcedureReturn
    EndIf

    ; Sample JSON response:
    ; (Sample code for parsing the JSON response is shown below)

    ; {
    ;   "Id": "00000000-0000-0000-0000-000000000000",
    ;   "ClientName": "test",
    ;   "ClientEmail": "test@email.com",
    ;   "ClientId": 9999,
    ;   "Status": "Completed",
    ;   "DateCreated": 1458526480368,
    ;   "DateSubmitted": 1458526532654,
    ;   "QuestionnaireName": "test",
    ;   "Practitioner": "test@email.com",
    ;   "PractitionerName": "FirstName LastName",
    ;   "Questions": [
    ;     {
    ;       "Id": "xxxx-1",
    ;       "Text": "Full name",
    ;       "Answer": "Dexter Morgan",
    ;       "QuestionType": "OpenQuestion",
    ;       "Rows": [
    ;       ],
    ;       "ColumnNames": [
    ;       ],
    ;       "OfficeUse": false,
    ;       "OfficeNote": "aaa"
    ;     },
    ;     {
    ;       "Id": "xxxx-2",
    ;       "Text": "Full name",
    ;       "Answer": "Dexter Morgan",
    ;       "QuestionType": "OpenQuestion",
    ;       "Rows": [
    ;       ],
    ;       "ColumnNames": [
    ;       ],
    ;       "OfficeUse": false,
    ;       "OfficeNote": "aaa"
    ;     }
    ;   ],
    ;   "AppointmentId": "xxxxxxxx",
    ;   "ConsentForms": [
    ;     {
    ;       "Id": "00000000-0000-0000-0000-000000000000",
    ;       "Name": "HIPAA Release Form",
    ;       "DocumentType": "Html",
    ;       "Signed": true,
    ;       "DateSubmitted": 1458526532654
    ;     }
    ;   ]
    ; }

    ; Sample code for parsing the JSON response...
    ; Use the following online tool to generate parsing code from sample JSON:
    ; Generate Parsing Code from JSON

    Text.s
    Answer.s
    QuestionType.s
    OfficeUse.i
    OfficeNote.s
    j.i
    count_j.i
    Name.s
    DocumentType.s
    Signed.i

    Id.s = CkJsonObject::ckStringOf(jResp,"Id")
    ClientName.s = CkJsonObject::ckStringOf(jResp,"ClientName")
    ClientEmail.s = CkJsonObject::ckStringOf(jResp,"ClientEmail")
    ClientId.i = CkJsonObject::ckIntOf(jResp,"ClientId")
    Status.s = CkJsonObject::ckStringOf(jResp,"Status")
    DateCreated.i = CkJsonObject::ckIntOf(jResp,"DateCreated")
    DateSubmitted.i = CkJsonObject::ckIntOf(jResp,"DateSubmitted")
    QuestionnaireName.s = CkJsonObject::ckStringOf(jResp,"QuestionnaireName")
    Practitioner.s = CkJsonObject::ckStringOf(jResp,"Practitioner")
    PractitionerName.s = CkJsonObject::ckStringOf(jResp,"PractitionerName")
    AppointmentId.s = CkJsonObject::ckStringOf(jResp,"AppointmentId")
    i.i = 0
    count_i.i = CkJsonObject::ckSizeOfArray(jResp,"Questions")
    While i < count_i
        CkJsonObject::setCkI(jResp, i)
        Id = CkJsonObject::ckStringOf(jResp,"Questions[i].Id")
        Text = CkJsonObject::ckStringOf(jResp,"Questions[i].Text")
        Answer = CkJsonObject::ckStringOf(jResp,"Questions[i].Answer")
        QuestionType = CkJsonObject::ckStringOf(jResp,"Questions[i].QuestionType")
        OfficeUse = CkJsonObject::ckBoolOf(jResp,"Questions[i].OfficeUse")
        OfficeNote = CkJsonObject::ckStringOf(jResp,"Questions[i].OfficeNote")
        j = 0
        count_j = CkJsonObject::ckSizeOfArray(jResp,"Questions[i].Rows")
        While j < count_j
            CkJsonObject::setCkJ(jResp, j)
            j = j + 1
        Wend
        j = 0
        count_j = CkJsonObject::ckSizeOfArray(jResp,"Questions[i].ColumnNames")
        While j < count_j
            CkJsonObject::setCkJ(jResp, j)
            j = j + 1
        Wend
        i = i + 1
    Wend
    i = 0
    count_i = CkJsonObject::ckSizeOfArray(jResp,"ConsentForms")
    While i < count_i
        CkJsonObject::setCkI(jResp, i)
        Id = CkJsonObject::ckStringOf(jResp,"ConsentForms[i].Id")
        Name = CkJsonObject::ckStringOf(jResp,"ConsentForms[i].Name")
        DocumentType = CkJsonObject::ckStringOf(jResp,"ConsentForms[i].DocumentType")
        Signed = CkJsonObject::ckBoolOf(jResp,"ConsentForms[i].Signed")
        DateSubmitted = CkJsonObject::ckIntOf(jResp,"ConsentForms[i].DateSubmitted")
        i = i + 1
    Wend


    CkHttp::ckDispose(http)
    CkJsonObject::ckDispose(json)
    CkHttpResponse::ckDispose(resp)
    CkStringBuilder::ckDispose(sbResponseBody)
    CkJsonObject::ckDispose(jResp)


    ProcedureReturn
EndProcedure