Sample code for 30+ languages & platforms
Visual Basic 6.0

Belgium eHealth Platform - AddressBook - Search for Professionals

See more Belgian eHealth Platform Examples

Demonstrates how to search for professionals using the AddressBook API.

Chilkat Visual Basic 6.0 Downloads

Visual Basic 6.0
Dim success As Long
success = 0

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

' --------------------------------------------------------------------------------
' Also see Chilkat's Online WSDL Code Generator
' to generate code and SOAP Request and Response XML for each operation in a WSDL.
' --------------------------------------------------------------------------------

' Provide a certificate + private key.
' Note: If your certificate + private key is located on a hardware token or smartcard, you can call a different function to load from smartcard..
Dim cert As New ChilkatCert
success = cert.LoadPfxFile("SSIN=12345678.acc.p12","p12_password")
If (success = 0) Then
    Debug.Print cert.LastErrorText
    Exit Sub
End If

' Let's get the SAML Security Token obtained from https://services-acpt.ehealth.fgov.be/IAM/SecurityTokenService/v1/RequestSecurityToken
' a very short time ago..

' See this example for how we got the SAML security token: eHealth Belgium Request Security Token
Dim bdSecToken As New ChilkatBinData
success = bdSecToken.LoadFile("qa_data/tokens/ehealth-fgov-be-sectoken.xml")
If (success = 0) Then
    Debug.Print "Failed to load SAML security token"
    Exit Sub
End If

' The SAML security token is just the part from <Assertion ..> ... </Assertion>
' So let's get just that part..
Dim startIdx As Long
startIdx = bdSecToken.FindString("<Assertion",0,"utf-8")
If (startIdx < 0) Then
    Debug.Print "Did not find the start of the SAML assertion."
    Exit Sub
End If

Dim endIdx As Long
endIdx = bdSecToken.FindString("</Assertion>",0,"utf-8")
If (endIdx < 0) Then
    Debug.Print "Did not find the end of the SAML assertion."
    Exit Sub
End If

' Adjust the index to the 1st byte after "</Assertion>"
endIdx = endIdx + 12
Dim base64_saml_token As String
base64_saml_token = bdSecToken.GetEncodedChunk(startIdx,endIdx - startIdx,"base64")

Debug.Print base64_saml_token

' Our SOAP request will look like this:

' The SOAP request to search for professionals looks like this:

' <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:add="urn:be:fgov:ehealth:addressbook:protocol:v1">
'     <soapenv:Header>
' 	      <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
' 	         <wsse:BinarySecurityToken
' 	            ValueType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.0#SAMLAssertionID"
' 	            EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">BASE64_SAML_TOKEN</wsse:BinarySecurityToken>
' 	      </wsse:Security>
'     </soapenv:Header>
'     <soapenv:Body>
'         <add:SearchProfessionalsRequest Id="bdc38ae62-3e7f-4f80-80f7-c3e745500fa3" IssueInstant="2016-03-23T18:49:26.968+01:00" Offset="0" MaxElements="100">
'             <add:SSIN>74062423769</add:SSIN>
'         </add:SearchProfessionalsRequest>
'     </soapenv:Body>
' </soapenv:Envelope>

Dim xml As New ChilkatXml
xml.Tag = "soapenv:Envelope"
success = xml.UpdateAttrAt("soapenv:Header|wsse:Security",1,"xmlns:wsse","http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd")
success = xml.UpdateAttrAt("soapenv:Header|wsse:Security|wsse:BinarySecurityToken",1,"ValueType","http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.0#SAMLAssertionID")
success = xml.UpdateAttrAt("soapenv:Header|wsse:Security|wsse:BinarySecurityToken",1,"EncodingType","http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary")

xml.UpdateChildContent "soapenv:Header|wsse:Security|wsse:BinarySecurityToken",base64_saml_token

success = xml.UpdateAttrAt("soapenv:Body|add:SearchProfessionalsRequest",1,"Id","bdc38ae62-3e7f-4f80-80f7-c3e745500fa3")

Dim dt As New CkDateTime
success = dt.SetFromCurrentSystemTime()
success = xml.UpdateAttrAt("soapenv:Body|add:SearchProfessionalsRequest",1,"IssueInstant",dt.GetAsTimestamp(1))

success = xml.UpdateAttrAt("soapenv:Body|add:SearchProfessionalsRequest",1,"Offset","0")
success = xml.UpdateAttrAt("soapenv:Body|add:SearchProfessionalsRequest",1,"MaxElements","100")
xml.UpdateChildContent "soapenv:Body|add:SearchProfessionalsRequest|urn:SSIN","74062423769"

Debug.Print xml.GetXml()

Dim http As New ChilkatHttp

success = http.SetSslClientCert(cert)
If (success = 0) Then
    Debug.Print http.LastErrorText
    Exit Sub
End If

http.SetRequestHeader "Content-Type","text/xml"
http.SetRequestHeader "SOAPAction","urn:be:fgov:ehealth:addressbook:protocol:v1:searchProfessionals"

Dim xmlStr As String
xmlStr = xml.GetXml()
Dim resp As New ChilkatHttpResponse
success = http.HttpStr("POST","https://services.ehealth.fgov.be/AddressBook/v1",xmlStr,"utf-8","application/xml",resp)
If (success = 0) Then
    Debug.Print http.LastErrorText
    Exit Sub
End If

Debug.Print resp.BodyStr
Debug.Print "response status code = " & resp.StatusCode