API
Vena har et eksternt API der kan bruges ved integration af 3. parter. Dette kan eksempelvis være egenbyggede bookingforløb, spørgeskemaer eller 3. parts værktøjer til patient-onboarding.
Det er af sikkerhedsmæsige årsager ikke muligt at trække personhenførbar data ud via API'et.
For at få adgang til API'et skal du kontakte vores kundeservice.
Eksempel på integrationsflow
- Hent token via
/external/v1/auth - Slå patient op via
/external/v1/cprLookup - Hvis ikke fundet: opret patient via
/external/v1/patients - Upload fil via
/external/v1/files - Opret journalnotat via
/external/v1/patients/<PATIENT_ID>/journalEntries
Endpoints
Login
Bruges til at hente en adgangstoken til efterfølgende kald.
Request
POST /external/v1/auth HTTP/1.1
Host: <API_HOST>
Content-Type: application/json; charset=utf-8
{
"clientID": "<CLIENT_ID>",
"clientSecret": "<CLIENT_SECRET>"
}
Response
Returnerer en token, som skal bruges i senere requests.
Eksempel:
{
"data": {
"accessToken": "eyJhbGciOi[...]yFKUIW39LVlKPUXJhQz4"
}
}
Vigtigt: Token skal sendes råt i Authorization headeren (uden Bearer prefix).
Eksempel:
Authorization: <TOKEN>
Find patient ud fra CPR
Finder patient ud fra CPR-nummer. Patient ID returneres.
Request
GET /external/v1/cprLookup?cprNumber=<CPR_NUMBER> HTTP/1.1
Host: <API_HOST>
Authorization: <TOKEN>
Response
404 Not Foundhvis patienten ikke findes200 OKmed JSON, der indeholderpatientID, hvis patienten findes:
{
"data": {
"patientID": "01938c43-d9f9-7791-9eba-9681b8c8bec5"
}
}
Opret patient
Opretter en patient, hvis CPR lookup ikke finder en eksisterende patient.
Felter:
| Felt | Type | Påkrævet | Noter |
|---|---|---|---|
nationalID | string | Ja | |
nationalIDType | string | Ja | Value: "CPR" |
address1 | string | Nej | |
address2 | string | Nej | |
birthDate | string <date> | Nej | ISO8601, fx 2020-01-30 |
city | string | Nej | |
country | string | Nej | Default: "DK". ISO-3166-1 alpha-2 country code. |
email | string | Nej | |
gender | string | Nej | Enum: "Male", "Female" |
givenName | string | Nej | |
middleName | string | Nej | |
phoneNumber | string | Nej | |
postCode | string | Nej | |
surName | string | Nej |
Request
POST /external/v1/patients HTTP/1.1
Host: <API_HOST>
Authorization: <TOKEN>
Content-Type: application/json; charset=utf-8
{
"nationalID": "<CPR_NUMBER>", // cpr nummer uden bindestreger
"nationalIDType": "CPR" // "CPR" | "ECPR"
}
Response
Såfremt patienten oprettes successfuldt, returneres HTTP 200 OK:
{
"data": {
"patientID": "<PATIENT_ID>" // ID på den oprettede patient
}
}
Vena indsætter automatisk navn m.m. fra CPR-registeret på patienten.
Hvis der allerede findes en patient med det angivne CPR/eCPR nummer, returneres HTTP 409 Conflict, og et ID på den allerede eksisterende patient:
{
"data": {
"patientID": "<PATIENT ID>" // id på allerede eksisterende patient
}
}
Response
200 OK med JSON, der indeholder et fileID.
Opret journalnotat
Opretter et journalnotat på patienten, eventuelt med vedhæftede filer.
Journalnotat-tekster i Vena er altid HTML. Følgende tags kan anvendes: <p>, <ul>, <ol>, <strong>, <u>, <i>.
Journalnotatet oprettes som systemnotat med forfatteren "system".
Request
POST /external/v1/patients/<PATIENT_ID>/journalEntries HTTP/1.1
Host: <API_HOST>
Authorization: <TOKEN>
Content-Type: application/json; charset=utf-8
{
"entry": "<p>Journaltekst</p>",
"fileIDs": [
"<FILE_ID>"
]
}
Response
Journalnotatet oprettes med den vedhæftede fil.
Upload fil
Uploader en fil, som efterfølgende kan vedhæftes et journalnotat.
Filens indhold indsættes i data-attributten base64 encoded.
| Felt | Type | Påkrævet | Noter |
|---|---|---|---|
patientID | string | Ja | |
mimetype | string | Ja | |
data | string | Ja | Eksempel: "text/plain" eller "application/pdf" |
filename | string | Ja | Navn på filen. |
Request
POST /external/v1/files HTTP/1.1
Host: <API_HOST>
Authorization: <TOKEN>
Content-Type: application/json; charset=utf-8
{
"mimetype": "text/plain",
"data": "<BASE64_FILE_CONTENT>",
"filename": "<FILENAME>",
"patientID": "<PATIENT_ID>"
}