1. Overview
1.1. Authentication
The API supports a mixture of authenticated and unauthenticated calls.
A civilian will use the API unauthenticated where as the EMD will be required to authenticate.
Authentication is done using a bearer token.
These tokens can be obtained through our Authorization Server.
Via our Authorization Server an STS-token can be converted to an Oauth2 token.
It is advisable to always use an Oauth2 token when possible.
Based on the principals authorization, a different response with more details is returned.
The STS-token used to obtain an Oauth2 token should be requested with the correct SAML designators. The quality and nihii should be available.
<saml1:AttributeDesignator xmlns:saml1="urn:oasis:names:tc:SAML:1.0:assertion" AttributeName="urn:be:fgov:ehealth:1.0:certificateholder:person:ssin" AttributeNamespace="urn:be:fgov:identification-namespace"/>
<saml1:AttributeDesignator xmlns:saml1="urn:oasis:names:tc:SAML:1.0:assertion" AttributeName="urn:be:fgov:person:ssin" AttributeNamespace="urn:be:fgov:identification-namespace"/>
<saml1:AttributeDesignator xmlns:saml1="urn:oasis:names:tc:SAML:1.0:assertion" AttributeName="urn:be:fgov:person:ssin:ehealth:1.0:givenname" AttributeNamespace="urn:be:fgov:certified-namespace:ehealth"/>
<saml1:AttributeDesignator xmlns:saml1="urn:oasis:names:tc:SAML:1.0:assertion" AttributeName="urn:be:fgov:person:ssin:ehealth:1.0:surname" AttributeNamespace="urn:be:fgov:certified-namespace:ehealth"/>
<saml1:AttributeDesignator xmlns:saml1="urn:oasis:names:tc:SAML:1.0:assertion" AttributeName="urn:be:fgov:person:ssin:ehealth:1.0:doctor:nihii11" AttributeNamespace="urn:be:fgov:identification-namespace"/>
<saml1:AttributeDesignator xmlns:saml1="urn:oasis:names:tc:SAML:1.0:assertion" AttributeName="urn:be:fgov:person:ssin:doctor:boolean" AttributeNamespace="urn:be:fgov:certified-namespace:ehealth"/>
<saml1:AttributeDesignator xmlns:saml1="urn:oasis:names:tc:SAML:1.0:assertion" AttributeName="urn:be:fgov:ehealth:1.0:certificateholder:person:ssin" AttributeNamespace="urn:be:fgov:identification-namespace"/>
<saml1:AttributeDesignator xmlns:saml1="urn:oasis:names:tc:SAML:1.0:assertion" AttributeName="urn:be:fgov:person:ssin" AttributeNamespace="urn:be:fgov:identification-namespace"/>
<saml1:AttributeDesignator xmlns:saml1="urn:oasis:names:tc:SAML:1.0:assertion" AttributeName="urn:be:fgov:person:ssin:ehealth:1.0:givenname" AttributeNamespace="urn:be:fgov:certified-namespace:ehealth"/>
<saml1:AttributeDesignator xmlns:saml1="urn:oasis:names:tc:SAML:1.0:assertion" AttributeName="urn:be:fgov:person:ssin:ehealth:1.0:surname" AttributeNamespace="urn:be:fgov:certified-namespace:ehealth"/>
<saml1:AttributeDesignator xmlns:saml1="urn:oasis:names:tc:SAML:1.0:assertion" AttributeName="urn:be:fgov:person:ssin:ehealth:1.0:professional:dentist:boolean" AttributeNamespace="urn:be:fgov:certified-namespace:ehealth"/>
<saml1:AttributeDesignator xmlns:saml1="urn:oasis:names:tc:SAML:1.0:assertion" AttributeName="urn:be:fgov:person:ssin:ehealth:1.0:nihii:dentist:nihii11" AttributeNamespace="urn:be:fgov:identification-namespace"/>
1.2. REST
Our API is (all debates aside) a restful API.
The HTTP verbs GET, POST, PUT and DELETE are used to implement ‘CRUD’ operations on our resource endpoints.
Unless otherwise indicated, our API will always return JSON and only JSON.
The biggest exception is the export endpoints that will return XML, PDF, etc.
1.3. Response codes
To indicate the outcome of a request, we use the HTTP status codes.
1.3.1. Success
Successful requests return or a 200 OK
, a 201 Created
or a 204 No Content
.
There are no asynchronous requests.
If the requests returns, the operation has been executed.
1.3.2. Errors
As for the error codes, we follow the standard categories of 4xx Client errors and 5xx Server errors.
A response with a 4xx or 5xx code will always contain a response body following a fixed template.
code |
A unique code giving some more details |
Required |
message |
A message that will contain some more details about the origins and cause of the error. |
Required |
description |
A more detailed description of the problem and what can be done to solve it. |
Optional |
uniqueId |
Depending on the environment, we will do more extensive logging. |
Optional |
stacktrace |
Depending on the environment and availability, we will return a stacktrace. |
Optional |
{
"code":"internal_server_error",
"message":"An unknown error has occurred.",
"description":"The reason and origin of this error cannot be processed automatically. Contact support to further investigate this problem. Do not forget to pass the unique id returned in the response.",
"uniqueId":"d84d49e2fb5548a8956540f778b79f50",
"stacktrace":"..."
}
There are three groups of errors: validation errors, client errors and server errors.
Validation errors
This kind of error is always returned with the HTTP status code 422 Unprocessable Entity
.
Besides the usual fields, this kind of error contains an extra field validationErrors
.
The object assigned to that field contains three extra field being:
-
The field that contains the validation error
-
The error message indicating the problem
-
The value that triggered the validation violation
{
"code":"input_validation_error",
"message":"The input contains validation errors.",
"description":"Check the error messages contained in this response to correct your input and try again. This error is entirely related to your input. Do not retry without changing the input.",
"uniqueId":"a6399b01e8294162be4f4f914b353a4b",
"validationErrors":[
{
"field":"name",
"value":null,
"message":"Request is missing fields. Consult the documentation for details on how to build the request."
},
{
"field":"identifier",
"value":null,
"message":"may not be null"
},
{
"field":"lastName",
"value":null,
"message":"Request is missing fields. Consult the documentation for details on how to build the request."
},
{
"field":"firstName",
"value":null,
"message":"Request is missing fields. Consult the documentation for details on how to build the request."
}
]
}
Client errors
All errors in the 4xx range are client errors.
We use the following non-exhaustive list of status codes: 400 Bad Request
, 401 Unauthorized
, 403 Forbidden
, 404 Not Found
, 415 Unsupported Media Type
, 422 Unprocessable Entity
, etc.
Server errors
A server error is returned as either a 500 Internal Server Error
or a 503 Service Unavailable
.
1.4. Pagination
Some of our endpoints support pagination.
This is implemented using a combination of query parameters and headers.
Every resource endpoint that supports paging, accepts a page
parameter and a per_page
parameter.
http://acc-services.e-forms.be/catalogue/api/v1/form-definitions?page=1&per_page=10
In the response for that request, the link header is populated with first, next, prev and last links.
Link: <http://acc-services.e-forms.be/catalogue/api/v1/form-definitions?page=1&per_page=10>; rel="first", <http://acc-services.e-forms.be/catalogue/api/v1/form-definitions?page=2&per_page=10>; rel=“last"
If the parameters are omitted, 1 is the default page
value and 25 is the default per_page
value.
1.5. Locale
Every request requires a locale.
This locale must be set via the Accept-language
header.
Acceptable values are en-BE
, fr-BE
and nl-BE
.
The results returned by our services are based on and oriented towards the given locale.
For instance labels and descriptions will be set accordingly.
2. Migration from 1.X
If you already have an integration on eForms 1.X standalone, this part will guide you through all the necessary steps to switch to the cloud version.
2.1. Endpoint changes
The cloud version is installed on our central architecture, so the following endpoint changes are required :
-
Form API calls to : http://acc-services.e-forms.be/cloud/api/v1/
-
Catalogue API calls to : http://acc-services.e-forms.be/catalogue/api/v1/
2.2. SAML Authentication Oauth2.0
The standalone version required no additional security on API calls.
Obviously, API calls to the cloud will require strong authentication and authorisation.A valid OAuth token can be requested by providing a valid STS SAML to the IAM OAuth provider.
Please see Authentication for more information.
2.3. Api Changes
The standalone version required one call to create a form with the associated data-set:
/private/form/{formType}/nl
In the cloud version the creation and data population are split up in multiple calls.
The following calls are needed:
-
Create the form: Create a form instance
-
Upload a dataset: Upload a data set
-
Merge the dataset: Merge a data set
-
Lock release on the forms : Release the form lock
Other API changes only include method signature changes and are not discussed here.
3. Tutorials
3.1. Form flow tutorial
This tutorial walks you through the process of querying the e-form catalogue, creating a specific e-form, and sending it to the required recipient.
Each form is configured to allow or disallow certain calls.
This means that depending on the form type your create, some calls will not be necessary or even possible.
Throughout this tutorial, we assume that the integrator is properly authenticated and given standard priviliges.
3.1.1. Form Lifecyle
Before we proceed, it’s very important to understand the lifecycle of a form.
Basically there are three phases in the life of a form.
-
Init Phase: create the form and upload data-sets
-
Edit Phase: edit form-data
-
Final Phase: export and send the form
Init Phase
During the init phase the form is created at server side and all necessary data to populate the form is provided by the integrator.
This phase allows the following actions:
-
Upload and merge data-sets
-
Attachment operations
-
Recipient and sender operations
During this phase the form can be visualized but is not editable.
So basically, the user cannot edit the form-data.
Edit Phase
The edit phase is where the user interacts with the form and inputs all his data.
Typically the form is now visualised in an integrated webview component.
This phase allows the folling actions:
-
Edit the form
-
Attachment operation
-
Recipient and sender operations
Final Phase
During the final phase the user wants to export the form for sending or printing.
Typically this is when the users clicks on the 'send form' button.
During this phase the form is not editable.
This phase support the following actions:
-
Export operations
3.1.2. Authentication
All clients are authenticated using an Oauth2 token.
We provide an Oauth2 provider.
To call it, you must encode your STS-Token using a base64 string that is URL safe encoded.
The basic authentication header contains your credentials.
Every integrator must request a username and password.
We provide a set for our acceptance and production environment.
Request
POST /iamWeb/oauth/token HTTP/1.1
Accept-Language: nl-BE
Authorization: Basic aGVsbG86d29ybGQ=
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=ISO-8859-1
Host: acc.healthconnect.be
sts-token=PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48QXNzZXJ0aW9uIHhtbG5zPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjA6YXNzZXJ0aW9uIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIEFzc2VydGlvbklEPSJfYjI5NjcxZD...&grant_type=sts_token&integratorVersion=2.3.7&postalCode=1000
Response
HTTP/1.1 200 OK
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Access-Control-Allow-Headers: x-requested-with, Content-Type, Accept-language, Authorization, identification, contactId, criteria, uuid, applicationId
Access-Control-Max-Age: 3600
Access-Control-Allow-Origin: *
X-Frame-Options: DENY
Content-Type: application/json;charset=UTF-8
Access-Control-Allow-Methods: POST, GET, PUT, OPTIONS, DELETE
Content-Security-Policy: default-src https: 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https:; style-src https: 'unsafe-inline'; img-src https: 'self' data:;
Keep-Alive: timeout=5, max=100
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2ZDBmZGExNS1iYzgzLTRkOTYtODhhNi0yNzFlNDE2MDJmYTMiLCJpc3MiOiJoZWFsdGhjb25uZWN0IiwiZXhwIjoxNTAwMjg2Mjk2LCJzdWIiOiJmYTY0OWYyNGFkZDhjZjkwNGVk...",
"token_type": "bearer",
"refresh_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIxZThjNTMzNy01NzY3LTQyNWYtYjVlYy1mOTY5MjVlY2Y1MzkiLCJpc3MiOiJoZWFsdGhjb25uZWN0IiwiZXhwIjoxNTAyODcxMDk2LCJhdGkiOiI2ZDBmZGExNS1iYzgzLTRkOTY...",
"sub": "fa649f24add8cf904ed50c9bd9236145"
}
3.1.3. Receive form definitions
Attached to the nodes of the taxonomy tree, we have form definitions.
A form definition is a blueprint for a form.
It contains information on how a form is constructed and how it will behave.
Throughout this tutorial, the term form and form definition will be used as synonyms unless the difference is essential.
In that case a clear distinction will be made explicitly.
The form definition answers questions such as:
-
Can we configure the sender?
-
Can we configure the receivers?
-
Can we add attachments?
-
Can we edit this form?
-
What page formats are supported by the PDF format?
All integrators must interpret this response correctly and construct a user interface based on the form definition.
The id is unique and must be passed along when creating a new instance of this form type.
The label is the user friendly name of the form.
The description explains in more detail what the form is used for.
It can contain newline characters.
Both the label and the description of the form are returned in the requested language indicated by the Accept-language header in the request.
Besides those fields, we have some other objects containing more details about the form.
- Functional configuration
-
Information meant for the integrator.
What actions are available and what kind of form are we dealing with. - Fixed recipient
-
This object is optional.
If it is present, it is meant to be able to show the end user where the form is going to be send to.
If this object is included in the response, thefunctionalConfiguration.containsRecipients
flag is automatically set totrue
and thefunctionalConfiguration.canModifyRecipients
flag almost always tofalse
.
ThefunctionalConfiguration.containsRecipients
flag can also be set totrue
if the form contains a dropdown box with recipients.
In this case the form will handle setting the recipients. - Export configuration
-
Details which formats are supported and what the recommended default format is.
Request
GET /catalogue/api/v1/form-definitions?page=1&per_page=10 HTTP/1.1
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NzE5MDAy...
Host: e-forms.be
Parameter | Description |
---|---|
|
The page to retrieve |
|
Records per page |
Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Correlation-Id: 61bc5389-4ba4-4ac5-9ba7-cc455d371b67
Link: <http://localhost:36421/catalogue/api/v1/form-definitions?page=1&per_page=10&latest_version_only=true>; rel="first",<http://localhost:36421/catalogue/api/v1/form-definitions?page=1&per_page=10&latest_version_only=true>; rel="last"
X-total-count: 7
Content-Type: application/json;charset=UTF-8
Keep-Alive: timeout=60
[ {
"id" : {
"name" : "CAPABILITY",
"version" : "6.1.26"
},
"label" : "Geschiktheidsattest",
"description" : "Geschiktheidsattest",
"functionalConfiguration" : {
"documentType" : "LETTER",
"lifespan" : "SEND_ONE_TIME",
"canModifySender" : true,
"canModifyRecipients" : false,
"canModifyAttachments" : false,
"containsRecipients" : false,
"supportsDataSet" : false,
"supportsExport" : true,
"supportedDataSets" : [ "application/vnd.healthconnect.eforms.kmehr.integrator.v1+xml" ],
"authenticData" : [ ],
"targetAttachmentsSize" : 9437184,
"maxAttachmentsCount" : 10,
"minAttachmentsCount" : 0
},
"exportConfiguration" : {
"documentFormats" : [ "DL", "A4", "A5" ],
"defaultDocumentFormat" : "DL",
"availableFormats" : [ "transcript", "pdf", "form-data", "raw", "kmehr", "adr" ]
}
}, {
"id" : {
"name" : "CONSULT",
"version" : "7.0.405"
},
"label" : "Consultatiebewijs",
"description" : "Consultatiebewijs",
"functionalConfiguration" : {
"documentType" : "PRESCRIPTION",
"lifespan" : "SEND_ONE_TIME",
"canModifySender" : true,
"canModifyRecipients" : true,
"canModifyAttachments" : false,
"containsRecipients" : false,
"supportsDataSet" : false,
"supportsExport" : true,
"supportedDataSets" : [ "application/vnd.healthconnect.eforms.kmehr.integrator.v1+xml" ],
"authenticData" : [ ],
"targetAttachmentsSize" : 9437184,
"maxAttachmentsCount" : 10,
"minAttachmentsCount" : 0
},
"exportConfiguration" : {
"documentFormats" : [ "DL", "A4", "A5" ],
"defaultDocumentFormat" : "DL",
"availableFormats" : [ "transcript", "pdf", "form-data", "raw", "kmehr", "adr" ]
}
} ]
Form definition fields
Path | Type | Description |
---|---|---|
|
|
The form definition id |
|
|
The name of the form-definition. |
|
|
The version of the form-definition. |
|
|
A human readable name for the form |
|
|
A full description of the form |
|
|
The functional configuration for this form |
|
|
Indicates the default printing format for this form. Can be LETTER or PRESCRIPTION |
|
|
For internal use only. |
|
|
Indicate if the sender can be modified. The sender should always be set to the current active user. |
|
|
Indicate if the recipients can be modified. |
|
|
Indicate if attachments can be added to the form. |
|
|
Informative variable that specifies if the form contains one or more recipients. Could be in the form of a hard coded addressee in the metadata or a contact-select-box on the form. |
|
|
Indicate if a history data-set can be generated for this form. |
|
|
Indicate if this form can be exported to recreate the exact same instance later on. |
|
|
A list of supported data sets. |
|
|
The target size of the combined list of attachments |
|
|
The maximum number of attachments allowed |
|
|
The minimum number of attachments that need to be provided. |
|
|
For internal use only. |
|
|
The recipient of the form. |
|
|
The recipient’s identifier. |
|
|
The recipient’s quality. |
|
|
The recipient’s name. |
|
|
Details on how this form can be exported |
|
|
The available PDF document formats |
|
|
A list of all available export formats |
|
|
The document format chosen for the PDF generation when the integrator doesn’t specify one |
3.1.4. Create a form instance
The creation of a new form is a simple call.
The integrator must pass the id as found in the form definitions response, as well as the PDF format.
The integrator object is meant to identify the integrator of the E-forms application.
We do not require the integrator to submit their identification details to our organisation before making use of this object.
The purpose of the integration object is to help solve any issues that occur.
Acceptable values are the application’s name - for instance CareConnect.
Keep it consistent over all requests in time.
The version should always reflect the application’s version number.
Request
POST /cloud/api/v1/forms/ HTTP/1.1
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NzE5MDAy...
Content-Type: application/json;charset=UTF-8
Host: e-forms.be
Content-Length: 233
{
"id" : {
"name" : "MEDICAL-IMAGING-DENTAL",
"version" : "2.19.1"
},
"format" : "A4",
"integrator" : {
"name" : "CareConnect",
"version" : "2.6"
},
"headless" : false,
"formManagesAttachments" : false
}
Path | Type | Description |
---|---|---|
|
|
The name of the form-definition. |
|
|
The version of the form-definition. |
|
|
The desired print format. |
|
|
The name of the integrator. |
|
|
The current version-number of the integrator. |
|
|
True if we want to be able to run this form in a headless mode. |
|
|
True if the attachments should be managed by the form. This will be ignored when the form does not support attachments. |
Response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Correlation-Id: e942c2f7-5f6e-423b-9975-623937868f10
Location: http://localhost:36421/catalogue/api/v1/forms/TZPXG
Content-Type: application/json;charset=UTF-8
Keep-Alive: timeout=60
{
"formId" : "TZPXG",
"clientUrl" : "http://localhost:36421/catalogue/resource-provider/form-definitions/MEDICAL-IMAGING-DENTAL/2.19.1/index.html#!/TZPXG?baseUrl=http://localhost:36421/&access_token=eyJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJlUVNQalV4LVE3QkxuR3pXM3AtdkVnIiwiaXNzIjoiaGVhbHRoY29ubmVjdCIsImV4cCI6MTczMDk3NTg5Miwic3ViIjoiMTY2MmU5ZmJlYWZhNmJjZmZlMTFjMzRkZWY4YzcxYjgiLCJhdGkiOiI5MDcyMDA1NS01ZTk3LTRlNTItYWU5MC00NTVkNWY1Nzg5MWEiLCJmb3JtSWQiOiJUWlBYRyIsImludGVncmF0b3IiOnsiaWQiOiJlZm9ybXNfY2xvdWQiLCJ2ZXJzaW9uIjoidW5rbm93biJ9LCJzY29wZSI6WyJST0xFX0VGQ19ERVJJVkVEX1RPS0VOIl19.Q0E4uT8H8ocPzzFgUlsTWhQHNAfl86-ySsjNpPojjuF36r_juOHObSPbEBOwYh-iJ9Q1BklVLREP41XBv33gYg9l5ZOVzxx_G2k-nvuFG3hX4d7iPTHXmNBqJgTPlLsyvIMZypnJK-wEWGX3BmxntA5Ni0D1BSRhee_cgxgBR5FcARAL_W0QwQg7vzMsw_iVf6BmijhBzEKUQSrS-FhUBaEx7SeQcPkf7yP3Z0v0ja2wvOzxX_pdGwrMKC5zlKNQ18i7mK3rpJtPy0VgHEsYyGj30ezVAKUaM0LKdoGBzy8zty-uIdUZZ70cuzJ1Up_9kkAuA2HqoJ0ib_oaRx7htA"
}
Path | Type | Description |
---|---|---|
|
|
The form’s instance identifier. |
|
|
The URL to open for the user to show the form. |
Once a new form is created, the data-sets should be loaded into the form.
This is a two step process.
In the first step, the integrator should upload the data-set.
Once uploaded, a separate call will merge the data set into the form.
3.1.5. Upload a data set
E-forms can be exported, this is an important concept to grasp.
When creating an e-form, data is entered via data-sets.
One of the data-sets can be the previous version of this form.
This makes it essentially an export-import function.
Every data set has a type and a name as well as content of course.
DataSet - content - type - name
The content is given at creation the time.
The name is generated by our services and returned in the response.
This type is represented by a vendor specific content type.
Currently we support the following data set types.
Data type | Description |
---|---|
application/vnd.healthconnect.eforms.kmehr.integrator.v1+xml |
This data type is used for the initial data set |
application/vnd.healthconnect.eforms.kmehr.history.v1+xml |
This data type is used for the previously exported data set. |
To know exactly which data sets are supported for a given form, consult the supportedDataSets
field in the form definition JSON response.
When uploading a new data set that is not supported by the form, an error will be returned.
Example flow
create form_instance_1 ... // many operations performed on this form form_instance_1 --> export to data_set_1 create form_instance_2 feed data_set_1 to form_instance_2 (only possible if the form is editable)
When uploading a data set, the service will return a unique id.
This id must be used in the next step.
Request
POST /cloud/api/v1/forms/TZPXG/data-set HTTP/1.1
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept-Language: nl-BE
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NzE5MDAy...
Accept: text/plain
Content-Type: application/vnd.healthconnect.eforms.kmehr.integrator.v1+xml;charset=UTF-8
Host: e-forms.be
Content-Length: 2337
<kmehrmessage xmlns="http://e-forms.be/standards/kmehr/schema/v1">
<header>
<standard>
<cd S="CD-STANDARD" SV="1.5">20121001</cd>
</standard>
<id S="ID-KMEHR" SV="1.0">a9b2646e-1bed-4abb-92d5-b24672b06077</id>
<date>2016-06-21</date>
<time>17:57:35</time>
<sender>
<hcparty>
<id S="ID-HCPARTY" SV="1.0">41161652401</id>
<id S="INSS" SV="1.0">79070436460</id>
<cd S="CD-HCPARTY" SV="1.6">persphysician</cd>
<firstname>Mickey</firstname>
<familyname>Met Alle Rechten</familyname>
<address>
<cd S="CD-ADDRESS" SV="1.0">work</cd>
<country>
<cd S="CD-FED-COUNTRY" SV="1.0">be</cd>
</country>
<zip>2000</zip>
<city>Antwerpen</city>
<street>Groenplaats</street>
<housenumber>3</housenumber>
<postboxnumber>4a</postboxnumber>
</address>
<telecom>
<cd S="CD-ADDRESS" SV="1.0">work</cd>
<cd S="CD-TELECOM" SV="1.0">phone</cd>
<telecomnumber>+13790882</telecomnumber>
</telecom>
<telecom>
<cd S="CD-ADDRESS" SV="1.0">work</cd>
<cd S="CD-TELECOM" SV="1.0">mobile</cd>
<telecomnumber>0488219319</telecomnumber>
</telecom>
<telecom>
<cd S="CD-ADDRESS" SV="1.0">work</cd>
<cd S="CD-TELECOM" SV="1.0">fax</cd>
<telecomnumber>+13790881</telecomnumber>
</telecom>
<telecom>
<cd S="CD-ADDRESS" SV="1.0">work</cd>
<cd S="CD-TELECOM" SV="1.0">email</cd>
<telecomnumber>stephane.paulus@healthconnect.be</telecomnumber>
</telecom>
</hcparty>
<hcparty>
<id S="LOCAL" SV="2.6">CareConnect</id>
<cd S="CD-HCPARTY" SV="1.0">application</cd>
<name>CareConnect</name>
</hcparty>
</sender>
<recipient>
<hcparty>
...
Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Correlation-Id: 1e83cf08-1abc-497f-b8c5-fd4061c3607b
Content-Type: text/plain;charset=ISO-8859-1
Keep-Alive: timeout=60
3F37AMTO2RHL
3.1.6. Merge a data set
Once a new data set has been uploaded in the system, a new call is made to merge this data set into the current form instance.
Next to the id of the data set, you need to specify the merge strategy that we want to apply.
We can choose between extend and overwrite.
Extend will copy a value from the data set to the form if the value does not yet exist in the form.
Overwrite will copy the value regardless of the state of the form.
This operation is irreversible!
Request
POST /cloud/api/v1/forms/TZPXG/merge HTTP/1.1
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NzE5MDAy...
Content-Type: application/json;charset=UTF-8
Host: e-forms.be
Content-Length: 64
{
"dataSetId" : "3F37AMTO2RHL",
"mergeStrategy" : "extend"
}
Path | Type | Description |
---|---|---|
|
|
The id of the data set to merge |
|
|
Do we want to extend our data set or overwrite it |
Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Correlation-Id: 4f252a46-daa7-4e7a-bd4b-5fb935fe5844
Keep-Alive: timeout=60
3.1.7. Release the form lock
When a form is created a lock is placed on the form to prevent user editing.
First all data should be uploaded and merged to populate the form.
Once the form is ready, the lock should be deleted to make the form editable.
In fact this means : the form is ready, you can now edit it.
Request
DELETE /cloud/api/v1/forms/TZPXG/lock HTTP/1.1
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NzE5MDAy...
Host: e-forms.be
Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Correlation-Id: ddb63105-5b12-4c10-bc65-f87581d85aa6
Keep-Alive: timeout=60
3.1.8. Set a sender
Every form has one sender which can be set by the integrator.
If you set a sender a second time, you overwrite the previous sender.
Since there is only one sender, it does not have an ID assigned to it.
If the functionalConfiguration.canModifySender
flag is set to false
, the call will fail with an error response.
Request
PUT /cloud/api/v1/forms/TZPXG/sender HTTP/1.1
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NzE5MDAy...
Content-Type: application/json;charset=UTF-8
Host: e-forms.be
Content-Length: 122
{
"firstName": "Mad",
"lastName": "Max",
"identifier": {
"identifier": "14032237",
"quality": "DOCTOR"
}
}
Response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Correlation-Id: 469df95e-be59-46c1-b6e7-813b5deef6e3
Location: http://localhost:36421/catalogue/api/v1/forms/TZPXG/sender
Content-Type: application/json;charset=UTF-8
Keep-Alive: timeout=60
{
"firstName" : "Mad",
"lastName" : "Max",
"identifier" : {
"identifier" : "14032237",
"quality" : "DOCTOR"
}
}
Sender fields
Path | Type | Description |
---|---|---|
|
|
The contact’s first name. Either this field is filled together with the last name, or the name field is filled. |
|
|
The contact’s last name. |
|
|
The identifier to contact e-health. |
|
|
The contact’s e-health quality. |
3.1.9. Set one or more recipients
A recipient has the same properties as the sender, the only additional field is an id as we support several recipients on the same form.
If a fixed recipient is configured for this form, a GET
on the recipients endpoint will include that recipient in the response.
If the form provides a component to let the end user select one or more recipients, that same GET
call will reflect the current selection made by the end user.
If the functionalConfiguration.canModifyRecipients
flag is set to false
, the call will fail with an error response.
Request
PUT /cloud/api/v1/forms/TZPXG/recipients/ca71bf42fa9138c063bcb59f46a04a0ec68e926384084ddcbcec53dbf2292a440ced83385812347733ad8e7b7d948abf39d46ba89221cc7d45076c613fb3405e HTTP/1.1
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NzE5MDAy...
Content-Type: application/json;charset=UTF-8
Host: e-forms.be
Response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Correlation-Id: d74c241c-9b32-441e-a410-13c43dacc393
Location: http://localhost:36421/catalogue/api/v1/forms/TZPXG/recipients/ca71bf42fa9138c063bcb59f46a04a0ec68e926384084ddcbcec53dbf2292a440ced83385812347733ad8e7b7d948abf39d46ba89221cc7d45076c613fb3405e
Content-Type: application/json;charset=UTF-8
Keep-Alive: timeout=60
{
"id" : "ca71bf42fa9138c063bcb59f46a04a0ec68e926384084ddcbcec53dbf2292a440ced83385812347733ad8e7b7d948abf39d46ba89221cc7d45076c613fb3405e",
"firstName" : "Andries",
"lastName" : "Demont",
"identifier" : {
"identifier" : "10050881001",
"quality" : "DOCTOR"
}
}
Recipient fields
Path | Type | Description |
---|---|---|
|
|
Unique contact id. Set by the server side when returning a contact instance. If set by the client side, this field must be null. |
|
|
The contact’s first name. Either this field is filled together with the last name, or the name field is filled. |
|
|
The contact’s last name. |
|
|
The identifier to contact e-health. |
|
|
The contact’s e-health quality. |
Unlike the sender, recipients have an id.
This way they can be removed from the list.
Request
DELETE /cloud/api/v1/forms/TZPXG/recipients/ca71bf42fa9138c063bcb59f46a04a0ec68e926384084ddcbcec53dbf2292a440ced83385812347733ad8e7b7d948abf39d46ba89221cc7d45076c613fb3405e HTTP/1.1
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NzE5MDAy...
Host: e-forms.be
Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Correlation-Id: 706d1b52-b11d-4bcb-8938-a02b278ebee9
Keep-Alive: timeout=60
Depending on the type of contact, either a first name and last name or just a name is given.
Request
PUT /cloud/api/v1/forms/TZPXG/recipients/e828899d98c9e4355297295a19315a11f8d842f22fb8f71b377424850e304daf904b00e26700de7e32ca9f0e223fa9e072f33cafd026e40d96c60283d560cdc5 HTTP/1.1
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NzE5MDAy...
Content-Type: application/json;charset=UTF-8
Host: e-forms.be
Response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Correlation-Id: bd4754f6-24b7-4f14-b731-c4b29141442f
Location: http://localhost:36421/catalogue/api/v1/forms/TZPXG/recipients/2b45fbd6111002ccbca5042592e30abce763630318ac17253bf1b9c19db380dd18989f1ddf4cb4f8d1d692e43cd65ae09817c87d020d66028e69610770a0a7d7
Content-Type: application/json;charset=UTF-8
Keep-Alive: timeout=60
{
"id" : "2b45fbd6111002ccbca5042592e30abce763630318ac17253bf1b9c19db380dd18989f1ddf4cb4f8d1d692e43cd65ae09817c87d020d66028e69610770a0a7d7",
"name" : "HealthConnect",
"identifier" : {
"identifier" : "71030130",
"quality" : "HOSPITAL"
}
}
3.1.10. Add an attachment
The form can contain attachments with a combined maximum size of 9MB or a maximum total count of 10! Once a single condition is exceeded a proper error code will be returned.
Every attachment has a technical id assigned by the system.
This id is included in the response.
The content type of the attachment must be set when uploading a new attachment and it will be included in the final response.
The filename must be be unique.
If a name collision is detected, the system will add a sequence number to make it unique.
The final name assigned to the attachment can be found in the response.
The request is a multipart request, where the name if the part has to be attachment
.
The filename has to be specified.
If either of these is not the case, the call will fail.
Request
POST /cloud/api/v1/forms/TZPXG/attachments HTTP/1.1
Accept-Language: nl-BE
Accept: */*
Content-Type: multipart/mixed; boundary="FJ_q-BfRc-x-Df5menYwHTiu42yOdCXx8pq"; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NzE5MDAy...
Host: e-forms.be
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=attachment; filename=exampleAttachment.txt
Content-Type: text/plain
hello world
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
Response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Correlation-Id: f65a9ae4-c106-4df6-9eee-c7c4bf508ff4
Location: http://localhost:36421/catalogue/api/v1/forms/TZPXG/attachments/JHQWAXRQB77U
Content-Type: application/json;charset=UTF-8
Keep-Alive: timeout=60
{
"id" : "JHQWAXRQB77U",
"fileName" : "exampleAttachment.txt",
"mimeType" : "text/plain",
"size" : 11,
"originalSize" : 11,
"sizes" : { },
"creationDateTime" : "2024-11-07T10:08:12.941932"
}
3.1.11. Send the form
Sending a e-form is done by exporting the form to the ADR format (XML).
The ADR should be delivered to your communication software (e.g. Hector) or manually converted to an eHealthbox message.
Request
GET /cloud/api/v1/forms/TZPXG/adr HTTP/1.1
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NzE5MDAy...
Host: e-forms.be
Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Correlation-Id: e14dad2f-f8a5-4ee3-9fd3-479c47a43c17
Content-Disposition: filename="adr_TZPXG.xml"
Content-Type: application/xml
Keep-Alive: timeout=60
<ADR xmlns="urn:be:healthconnect:adr:1_0">
<Sender>
<Quality>DOCTOR</Quality>
<Identifier>14032237</Identifier>
<FirstName>Mad</FirstName>
<LastName>Max</LastName>
</Sender>
<Addressee>
<Quality>HOSPITAL</Quality>
<Identifier>71030130</Identifier>
<Name>HealthConnect</Name>
</Addressee>
<Subject>Aanvraag medische beeldvorming (bijlage 82)</Subject>
<Patient>
<INSS>79070429037</INSS>
</Patient>
<Attachment>
<Content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48a21laHJtZXNzYWdlIHhtbG5zPSJodHRwOi8vd3d3LmVoZWFsdGguZmdvdi5iZS9zdGFuZGFyZHMva21laHIvc2NoZW1hL3YxIi8+</Content>
<Name>TZPXG-20241107100813.xml</Name>
<MimeType>application/xml</MimeType>
<FunctionalType>EFORMS</FunctionalType>
</Attachment>
<Attachment>
<Content>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6CH5YcWEzkTzI9tHxyZ9Jy8/Xvh4/EnWk5mnxT8r/1z7zOTZd794/DIwFTs1/lz0/NOvm1+ov9j/0u5l73TY9P1XGa9mXpe8UX9z4C3rbf+7mHcTM7nvse8rP5h+6PkY9PHup4xPn34D94Tz+wplbmRzdHJlYW0KZW5kb2JqCjYgMCBvYmoKWy9JQ0NCYXNlZCA1IDAgUl0KZW5kb2JqCjcgMCBvYmoKPDwKICAvVHlwZSAvTWV0YWRhdGEKICAvU3VidHlwZSAvWE1MCiAgL0xlbmd0aCAxMyAwIFIKPj4Kc3RyZWFtCjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+PHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6UkRGIHhtbG5zOnBkZj0iaHR0cDovL25zLmFkb2JlLmNvbS9wZGYvMS4zLyIgcmRmOmFib3V0PSIiPgogICAgICAgICA8cGRmOlByb2R1Y2VyPkFwYWNoZSBGT1AgVmVyc2lvbiAxLjA8L3BkZjpQcm9kdWNlcj4KICAgICAgICAgPHBkZjpQREZWZXJzaW9uPjEuNDwvcGRmOlBERlZlcnNpb24+CiAgICAgIDwvcmRmOlJERj4KICAgICAgPHJkZjpSREYgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiByZGY6YWJvdXQ9IiI+CiAgICAgICAgIDxkYzpkYXRlPjIwMjQtMTEtMDdUMTA6MDg6MTMrMDE6MDA8L2RjOmRhdGU+CiAgICAgIDwvcmRmOlJERj4KICAgICAgPHJkZjpSREYgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiByZGY6YWJvdXQ9IiI+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+QXBhY2hlIEZPUCBWZXJzaW9uIDEuMDwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDI0LTEx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dHJlYW0KZW5kb2JqCjggMCBvYmoKPDwKICAvUmVzb3VyY2VzIDMgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA1OTUuMjc1IDg0MS44ODldCiAgL0Nyb3BCb3ggWzAgMCA1OTUuMjc1IDg0MS44ODldCiAgL0JsZWVkQm94IFswIDAgNTk1LjI3NSA4NDEuODg5XQogIC9UcmltQm94IFswIDAgNTk1LjI3NSA4NDEuODg5XQogIC9QYXJlbnQgMSAwIFIKICAvQ29udGVudHMgMjAgMCBSCj4+CgplbmRvYmoKMjEgMCBvYmoKMTE1NgplbmRvYmoKMjIgMCBvYmoKPDwKICAvVHlwZSAvRm9udAogIC9TdWJ0eXBlIC9UeXBlMQogIC9CYXNlRm9udCAvSGVsdmV0aWNhCiAgL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKPj4KCmVuZG9iagoyMyAwIG9iago8PAogIC9UeXBlIC9Gb250CiAgL1N1YnR5cGUgL1R5cGUxCiAgL0Jhc2VGb250IC9IZWx2ZXRpY2EtQm9sZAogIC9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nCj4+CgplbmRvYmoKMSAwIG9iago8PCAvVHlwZSAvUGFnZXMKL0NvdW50IDEKL0tpZHMgWzggMCBSIF0gPj4KZW5kb2JqCjIgMCBvYmoKPDwKICAvVHlwZSAvQ2F0YWxvZwogIC9QYWdlcyAxIDAgUgogIC9NZXRhZGF0YSA3IDAgUgogIC9QYWdlTGFiZWxzIDkgMCBSCj4+CgplbmRvYmoKMyAwIG9iago8PAovRm9udCA8PAogIC9GMSAyMiAwIFIKICAvRjMgMjMgMCBSCj4+Ci9Qcm9jU2V0IFsgL1BERiAvSW1hZ2VCIC9JbWFnZUMgL1RleHQgXQovWE9iamVjdCA8PAogIC9JbTIgMTEgMCBSCiAgL0ltMyAxNiAwIFIKICAvSW0xIDEwIDAgUgogIC9JbTQgMTggMCBSCj4+Ci9Db2xvclNwYWNlIDw8CiAgL0RlZmF1bHRSR0IgNiAwIFIKPj4KPj4KZW5kb2JqCjkgMCBvYmoKPDwgL051bXMgWzAgPDwgL1AgKDEpID4+Cl0gPj4KCmVuZG9iagp4cmVmCjAgMjQKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDA5NDc3IDAwMDAwIG4gCjAwMDAwMDk1MzUgMDAwMDAgbiAKMDAwMDAwOTYyNyAwMDAwMCBuIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDAxNDUgMDAwMDAgbiAKMDAwMDAwMjgyNyAwMDAwMCBuIAowMDAwMDAyODYwIDAwMDAwIG4gCjAwMDAwMDkwMTMgMDAwMDAgbiAKMDAwMDAwOTgzNSAwMDAwMCBuIAowMDAwMDAzNzg4IDAwMDAwIG4gCjAwMDAwMDU1MzYgMDAwMDAgbiAKMDAwMDAwNjM3MiAwMDAwMCBuIAowMDAwMDA2MzkzIDAwMDAwIG4gCjAwMDAwMDY0MTMgMDAwMDAgbiAKMDAwMDAwNjQzNCAwMDAwMCBuIAowMDAwMDA2NDU0IDAwMDAwIG4gCjAwMDAwMDc1MTUgMDAwMDAgbiAKMDAwMDAwNzUzNSAwMDAwMCBuIAowMDAwMDA3NzYyIDAwMDAwIG4gCjAwMDAwMDc3ODEgMDAwMDAgbiAKMDAwMDAwOTIzNyAwMDAwMCBuIAowMDAwMDA5MjU4IDAwMDAwIG4gCjAwMDAwMDkzNjUgMDAwMDAgbiAKdHJhaWxlcgo8PAovU2l6ZSAyNAovUm9vdCAyIDAgUgovSW5mbyA0IDAgUgovSUQgWzxGQ0QzMkE2MjhFMTRERDVERTkxNENDNUFGRTAyRkM4NT4gPEZDRDMyQTYyOEUxNERENURFOTE0Q0M1QUZFMDJGQzg1Pl0KPj4Kc3RhcnR4cmVmCjk4ODEKJSVFT0YK</Content>
<Name>TZPXG-20241107100813.pdf</Name>
<MimeType>application/pdf</MimeType>
<FunctionalType>EFORMS-ATTACHMENT</FunctionalType>
</Attachment>
<Attachment>
<Content>aGVsbG8gd29ybGQ=</Content>
<Name>exampleAttachment.txt</Name>
<MimeType>text/plain</MimeType>
<FunctionalType>EFORMS-ATTACHMENT</FunctionalType>
</Attachment>
<MetaData>
<Key>EFORMS_GENERATED_KMEHR</Key>
<Value>TZPXG-20241107100813.xml</Value>
</MetaData>
<MetaData>
<Key>EFORMS_GENERATED_PDF</Key>
<Value>TZPXG-20241107100813.pdf</Value>
</MetaData>
<MetaData>
<Key>HC_MESSAGE</Key>
<Value>HC_EFORMS</Value>
</MetaData>
<MetaData>
<Key>EFORMS_TYPE</Key>
<Value>MEDICAL-IMAGING-DENTAL</Value>
</MetaData>
</ADR>
...
3.1.12. Remove the form
After 60 minutes of inactivity, the form is automatically deleted.
This clock will reset every time an API call made by the integrator, or an interaction made by the end user via the web view.
If the integrator can determine that he no longer needs the form instance - all exports are made - we strongly advise actively deleting the form instance.
Once removed, all data related to the form instance is permanently lost.
Request
DELETE /cloud/api/v1/forms/TZPXG HTTP/1.1
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NzE5MDAy...
Host: e-forms.be
Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Correlation-Id: 7473e011-7e1a-4329-be3f-0bd0c2e473e1
Keep-Alive: timeout=60
3.2. Advanced tutorials
3.2.1. Exporting the form to other formats
A form supports a number of different export formats.
The list of supported formats can be queried as followed.
Request
GET /cloud/api/v1/forms/TZPXG/formats HTTP/1.1
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NzE5MDAy...
Host: e-forms.be
Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Correlation-Id: be2321ba-b6e7-47fc-9f62-ad93fb2b521c
Content-Type: application/json;charset=UTF-8
Keep-Alive: timeout=60
[ "transcript", "form-data", "pdf", "adr", "kmehr", "raw" ]
Once a format is selected, the real export can be requested.
export format |
description |
adr |
the adr.xml sending envelope. |
kmehr |
the KMEHR representation of the form which contains all medical and form specific values. |
pdf representation of the form. |
|
form-data |
internal form representation, not to be used by integrators. |
An export of a supported export format can be requested as follows:
Request
GET /cloud/api/v1/forms/TZPXG/adr HTTP/1.1
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NzE5MDAy...
Host: e-forms.be
3.2.2. Save and restore a form instance
Form instance exist for a short period of time in our servers.
We try to minimize the time that the instance exist as well as the amount of data attached to it.
It is possible to serialize a form instance to restore it at a later time.
There is no limit on the amount of time that a form can remain serialized.
Request
GET /cloud/api/v1/forms/TZPXG/export HTTP/1.1
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NzE5MDAy...
Host: e-forms.be
Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Correlation-Id: 3815391d-9028-4111-b007-e2fad0ada677
Content-Disposition: filename="raw_TZPXG.raw"
Content-Type: application/vnd.healthconnect.eforms.raw.export.v1+txt
Keep-Alive: timeout=60
o+b+Ac/A7EM4YDE0XVA8duL3yHRqpTVJ6QlKUC1VkCJUGXJs1R8IBhz3UTHz7vNaJl1TohJuH0GyCsxAFGCK9Y7TQr16A7Jzdnknemm4gg9NYvZEh2G03bD3qCuz5...
The returned string and content type need to be stored locally.
When the user wants to continue with the form instance, it can be restored easily by executing the following call:
Request
POST /cloud/api/v1/forms/ HTTP/1.1
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NzE5MDAy...
Content-Type: application/vnd.healthconnect.eforms.raw.export.v1+txt; charset=ISO-8859-1
Host: e-forms.be
Content-Length: 128
o+b+Ac/A7EM4YDE0XVA8duL3yHRqpTVJ6QlKUC1VkCJUGXJs1R8IBhz3UTHz7vNaJl1TohJuH0GyCsxAFGCK9Y7TQr16A7Jzdnknemm4gg9NYvZEh2G03bD3qCuz5...
Response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Correlation-Id: 5a5f135b-44e7-4f20-a885-a94589adfb31
Location: http://localhost:36421/catalogue/api/v1/forms/TUYU3
Content-Type: application/json;charset=UTF-8
Keep-Alive: timeout=60
{
"formId" : "TUYU3",
"clientUrl" : "http://localhost:36421/catalogue/resource-provider/form-definitions/MEDICAL-IMAGING-DENTAL/2.19.1/index.html#!/TUYU3?baseUrl=http://localhost:36421/&access_token=eyJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJadVlTR3BBYWFqRVFYN1EyblA4WVB3IiwiaXNzIjoiaGVhbHRoY29ubmVjdCIsImV4cCI6MTczMDk3NTg5Mywic3ViIjoiMTY2MmU5ZmJlYWZhNmJjZmZlMTFjMzRkZWY4YzcxYjgiLCJhdGkiOiI5MDcyMDA1NS01ZTk3LTRlNTItYWU5MC00NTVkNWY1Nzg5MWEiLCJmb3JtSWQiOiJUVVlVMyIsImludGVncmF0b3IiOnsiaWQiOiJlZm9ybXNfY2xvdWQiLCJ2ZXJzaW9uIjoidW5rbm93biJ9LCJzY29wZSI6WyJST0xFX0VGQ19ERVJJVkVEX1RPS0VOIl19.C6pgrW_aUlSUH8wt-fiCDSSvzpq7N45RZ1jD0gFXyEPolQXPZHG4_uX5_JNJJJ2smds1rV_tROQN5QdCyY38Rwa15WsLkvKlXKFHmPsougLpKsMjLt69QBpTYbhP6YTg915DVysSYJLHgHGykNU86r_lNoDkiUnO6LEU0AMdAgqs69glkan1hk31SNau-axZp00EtiSNW6BGvXD6-bS1V7BKn5hQ_J5J75zv5Eazbbx0gMz5ybi8ziUqUYu0Y69F290xKY46GCAMrRohZfHjjJUMXTxy6YzNcNBXcMbedKNdJ4U6Q2J8jxKfOhCXUUE5iv_6a8O8IsdoygzWIzk78w"
}
3.2.3. Fetch a single form definition
It is possible to fetch a single form definition.
This is usually done to retrieve the current version number of the form definition.
Request
GET /catalogue/api/v1/form-definitions/MEDICAL-IMAGING-DENTAL HTTP/1.1
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept-Language: nl-BE
Accept: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NzE5MDAy...
Host: e-forms.be
Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Correlation-Id: a6749a0c-9135-437a-8714-f83cf968ef70
Content-Type: application/json;charset=UTF-8
Keep-Alive: timeout=60
[ {
"id" : {
"name" : "MEDICAL-IMAGING-DENTAL",
"version" : "2.19.1"
},
"label" : "Aanvraag medische beeldvorming (bijlage 82)",
"description" : "Aanvraag medische beeldvorming (bijlage 82)",
"functionalConfiguration" : {
"documentType" : "LETTER",
"lifespan" : "SEND_ONE_TIME",
"canModifySender" : true,
"canModifyRecipients" : false,
"canModifyAttachments" : true,
"containsRecipients" : true,
"supportsDataSet" : false,
"supportsExport" : true,
"supportedDataSets" : [ "application/vnd.healthconnect.eforms.kmehr.integrator.v1+xml" ],
"authenticData" : [ ],
"targetAttachmentsSize" : 9437184,
"maxAttachmentsCount" : 10,
"minAttachmentsCount" : 0
},
"exportConfiguration" : {
"documentFormats" : [ "A4" ],
"defaultDocumentFormat" : "A4",
"availableFormats" : [ "transcript", "pdf", "form-data", "raw", "kmehr", "adr" ]
}
} ]
3.2.4. Searching for recipients
The recipient of an e-form can be any caregiver with a valid ETK.
However, a service is provided to allow searching for caregivers :
-
Production Contact Search: https://services.healthconnect.be/reporting-ws/spring-rs/contact/
-
Acceptation Contact Search: https://acc.healthconnect.be/reporting-ws/spring-rs/contact/
Request
GET https://acc.healthconnect.be/reporting-ws/spring-rs/contact/search HTTP/1.1 Accept-Encoding: gzip,deflate criteria: john maxResults: 5 Host: acc.healthconnect.be
Field | Description |
---|---|
criteria |
the string to search for in the caregiverlist. |
maxResults |
the maximum results to return in the searchresult |
Response
[ { "uuid": "d45df7ae-010c-4224-b862-f89731b12122", "firstName": "John", "lastName": "Doe", "name": null, "isPerson": true, "address": { "addressType": "PRACTICE", "id": 516, "email": "my.email@gmail.com", "city": "Vilvoorde", "street": "Luchthavenlaan", "postalcode": "1800", "streetbox": "B", "streetnumber": "25", "country": "België", "fax": null, "phone": "0544445456" }, "parents": [], "displayName": "John Doe (Dentist - 39015378)", "profile": { "internalId": 1083, "identifier": "39015378", "type": "EHEALTH", "quality": "DENTIST", "eHealthConfiguration": { "etkEnabled": true, "applicationId": "", "eHealthCertificateExpirationDate": 1502373000000, "etkIdentifierType": "NIHII", "ehBoxIdentifierType": "NIHII" }, "mexiConfiguration": null, "translations": [ { "locale": "nl", "value": "Tandarts" }, { "locale": "fr", "value": "Dentiste" }, { "locale": "en", "value": "Dentist" } ] } ...
Response Field | Description | Contact Mapping |
---|---|---|
firstName |
The firstname of the contact |
firstName |
lastName |
The lastname of the caregiver |
lastName |
name |
The name of the contact, only organisations or departments have a name |
name |
profile.quality |
The quality of the contact |
identifier.quality |
profile.identifier |
The ehealthbox identifier of the contact |
identifier.identifier |
So the above response results in the following
POST /cloud/api/v1/forms/AtHXc/recipients HTTP/1.1 Accept-Language: nl-BE Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NzE5MDAy... Accept: application/json;charset=UTF-8 Content-Type: application/json;charset=UTF-8
{ "firstName": "John", "lastName": "Doe", "identifier": { "identifier": "14032237", "quality": "DOCTOR" } }