Introduction
Welcome to the Actimi Open API. It is used to access the endpoints of the HL7 FHIR repository.
Actimi is a flexible, secure and standards based telemonitoring platform. It supports storage and processing of various vital sign monitoring devices, streaming devices and configurable questionnaires.
AUTHORIZATION Bearer Token
Token
POST Auth/token
USAGE
var client = new RestClient("/Auth/token");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
var body = @"{" + "\n" +
@" ""apiKey"": ""{{apiKey}}""" + "\n" +
@"}";
request.AddParameter("text/plain", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
var axios = require("axios");
var data = '{\n "apiKey": "{{apiKey}}"\n}';
var config = {
method: "post",
url: "/Auth/token",
headers: {},
data: data,
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
BODY
{
"apiKey": "{{apiKey}}"
}
https://v1.actimi.health/partner/Auth/token
Use /Auth/token for exchanging your API key with an access token.
HEADERS
| Content-Type | application/json |
GET Observation
USAGE
var client = new RestClient("/Observation?afterDateTime=2021-12-17T08:33:33.670Z");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <access_token>");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
var axios = require("axios");
var config = {
method: "get",
url: "/Observation?afterDateTime=2021-12-17T08:33:33.670Z",
headers: {
Authorization: "Bearer <access_token>",
},
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
BODY
[
{
"resourceType": "Observation",
"id": "<id>",
"meta": {
"lastUpdated": "2021-12-17T08:33:33.670947Z",
"createdAt": "2021-11-11T01:10:41.669260Z",
"versionId": "914502"
},
"effective": {
"dateTime": "2021-07-10T07:59:00.000Z"
},
"value": {
"Quantity": {
"code": "8310-5",
"unit": "°C",
"value": 37.1
}
},
"status": "registered",
"hasMember": [],
"code": {
"text": "Body Temperature",
"coding": [
{
"code": "8310-5",
"display": "Body Temperature"
}
]
},
"device": {
"id": "8",
"resourceType": "Device"
},
"subject": {
"id": "<id>",
"resourceType": "Patient"
}
}
]
https://v1.actimi.health/partner/Observation?afterDateTime=2022-04-29T12:21:26.721Z
Get /Observation for fetching all Observation resources.
- Has optional query parameter
afterDateTime. When this parameter provided, it returns Observations that are created or updated after specified datetime only. - Has optional parameter
codeused for filtering returned observations by their code. Can be single (eg.code=8885-6) or comma seperated (eg.code=8885-6,8310-5). All usable codes given in the table below with their description. - Has optional parameter
code:notused for excluding observations by their code. Can be single (eg.code:not=8885-6) or comma seperated (eg.code:not=8885-6,8310-5). All usable codes given in the table below with their description.
| Code | Description |
|---|---|
| 131328 | ECG sequence data |
| 29463-7 | Body Weight |
| 8302-2 | Body Height |
| 45853-9 | Actimi Heart Failure QR Score (Generated from symptoms Questionnaire via SDC) |
| 8462-4 | Diastolic Blood Pressure |
| 8480-6 | Systolic Blood Pressure |
| 8886-4 | Heart Rate (via ECG measurement) |
| 8885-6 | Heart Rate (via Blood Pressure measurement) |
| 8867-4 | Heart Rate (manual entry) |
| 2340-8 | Glucose, Blood |
| 8885-6 | Ketones, Urine |
| 12183-0 | Cholesterol, Body fluid |
| 2571-8 | Triglyceride, Blood |
| 8310-5 | Body Temperature |
| 2708-6 | Oxygen saturation, Blood (SaO2%) |
| 9279-1 | Respiratory rate |
| 80404-7 | Heart rate variability |
| 52497-5 | Mood |
| 41950-7 | Number of steps in 24 hour Measured |
| 25548-9 | Urate, Body fluid |
| 32693-4 | Lactate, Blood |
| 94085-8 | Pain |
| 41981-2 | Calories burned |
| 94086-3 | Muscle Soreness |
| 91262-6 | In the past 7 days - I felt thankful |
Authorization header is required for this endpoint.
AUTHORIZATION
This request is using Bearer Token from collection Actimi.API
PARAMS
| afterDateTime | 2022-04-29T12:21:26.721Z |
GET Patient
USAGE
var client = new RestClient("/Patient?afterDateTime=2022-04-29T10:01:32.558480");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <access_token>");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
var axios = require("axios");
var config = {
method: "get",
url: "/Patient?afterDateTime=2022-04-29T10:01:32.558480",
headers: {
Authorization: "Bearer <access_token>",
},
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
BODY
[
{
"address": [
{
"city": "Berlin",
"line": ["Berlin, Germany"],
"country": "DE",
"postalCode": "10115"
}
],
"meta": {
"lastUpdated": "2022-04-29T11:34:32.274500Z",
"createdAt": "2022-04-29T10:01:32.558480Z",
"versionId": "1542669"
},
"managingOrganization": {
"id": "<id>",
"resourceType": "Organization"
},
"name": [
{
"given": ["John"],
"family": "Doe"
}
],
"birthDate": "1963-06-06",
"resourceType": "Patient",
"id": "<id>",
"telecom": [
{
"value": "fthp5@actimi.com",
"system": "email"
},
{
"use": "mobile",
"value": "1113376543",
"system": "phone"
},
{
"use": "mobile",
"value": "1246877873",
"system": "phone"
}
],
"generalPractitioner": [
{
"id": "<id>",
"resourceType": "Practitioner"
}
],
"gender": "male",
"contact": [
{
"id": "<id>",
"name": {
"given": ["Noroe"],
"family": "Fiona"
},
"telecom": [
{
"use": "mobile",
"value": "42302812395",
"system": "phone"
}
],
"relationship": [
{
"coding": [
{
"code": "C",
"system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode"
}
]
}
]
}
]
}
]
https://v1.actimi.health/partner/Patient?afterDateTime=2021-11-22T03:35:26.721Z
Get/Patient for fetching all Patient resources.
Has optional query parameter afterDateTime. When this parameter provided, it returns Patients that
are created or updated after specified datetime only.
AUTHORIZATION
This request is using Bearer Token from collection Actimi.API
PARAMS
| afterDateTime | 2022-04-29T12:21:26.721Z |
GET Questionnaire
USAGE
var client = new RestClient("/Questionnaire?title=symptom&language=en&afterDateTime=2022-04-12T08:44:40.035385Z");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <access_token>");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
var axios = require('axios');
var config = {
method: 'get',
url: '/Questionnaire?title=symptom&language=en&afterDateTime=2022-04-12T08:44:40.035385Z',
headers: {
'Authorization': 'Bearer <access_token>'
}
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
BODY
[
{
"date": "1632733309550",
"item": [
{
"id": "1",
"text": "Have you been shorter in breath during the last night than in the nights before?",
"type": "choice",
"linkId": "/breathshorteness.1",
"definition": "breathshorteness",
"answerOption": [
{
"value": {
"string": "yes"
}
},
{
"value": {
"string": "no"
}
}
]
},
{
"id": "2",
"text": "Do you need more pillow under your head to sleep?",
"type": "choice",
"linkId": "/breathshorteness.2",
"definition": "breathshorteness",
"answerOption": [
{
"value": {
"string": "yes"
}
},
{
"value": {
"string": "no"
}
}
]
},
{
"id": "3",
"text": "Are your legs thicker than yesterday?",
"type": "choice",
"linkId": "/swollen.1",
"definition": "swollen",
"answerOption": [
{
"value": {
"string": "yes"
}
},
{
"value": {
"string": "no"
}
}
]
},
{
"id": "4",
"text": "Do you have more cough through the night than yesterday?",
"type": "choice",
"linkId": "/cough.1",
"definition": "cough",
"answerOption": [
{
"value": {
"string": "yes"
}
},
{
"value": {
"string": "no"
}
}
]
},
{
"id": "5",
"text": "Are you feeling weaker than yesterday?",
"type": "choice",
"linkId": "/weakness.1",
"definition": "weakness",
"answerOption": [
{
"value": {
"string": "yes"
}
},
{
"value": {
"string": "no"
}
}
]
},
{
"id": "6",
"text": "Did you needed to stand up more often during the night to go to the toilet to urinate then last night?",
"type": "choice",
"linkId": "/frequent-urination.1",
"definition": "frequent-urination",
"answerOption": [
{
"value": {
"string": "yes"
}
},
{
"value": {
"string": "no"
}
}
]
},
{
"text": "symptoms-result",
"type": "integer",
"linkId": "/symptoms-result",
"extension": [
{
"url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-calculatedExpression",
"valueExpression": {
"language": "text/fhirpath",
"expression": "QuestionnaireResponse.item.where((answer.value.string = 'yes') or (answer.valueString = 'yes')).count()"
}
},
{
"url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-observationExtract",
"valueBoolean": true
},
{
"url": "http://hl7.org/fhir/StructureDefinition/questionnaire-hidden",
"valueBoolean": true
},
{
"url": "http://hl7.org/fhir/StructureDefinition/questionnaire-unit",
"valueCoding": {
"code": "45853-9",
"system": "http://loinc.org",
"display": "Actimi Heart Failure QR Score"
}
}
]
}
],
"title": "symptom",
"status": "active",
"language": "en",
"id": "e3a80fe8-13b9-423a-914f-682ba0447b7d",
"resourceType": "Questionnaire",
"meta": {
"lastUpdated": "2022-04-12T08:44:40.045385Z",
"createdAt": "2021-09-27T09:14:41.477437Z",
"versionId": "1260324"
}
}
]
https://v1.actimi.health/partner/Questionnaire
Get /Questionnaire for fetching all Questionnaire resources with either given query
parameters title or id.
| Parameter | Description |
|---|---|
id (Optional) |
Corresponding id of the Questionnaire resource. |
title (Required if id is not provided) |
Corresponding title field of the Questionnaire resource. (eg. symptom) |
Has optional query parameters afterDateTime and language.
- When
afterDateTimeparameter provided, it returns resources that are created or updated after specified datetime only. - When
languageparameter provided (eg.en,de,tr), it returns resources that are having corresponding language field.
Authorization header is required for this endpoint.
PARAMS
| afterDateTime | 2022-04-29T12:21:26.721Z |
| language | en |
| id | e3a80fe8-13b9-423a-914f-682ba0447b7d |
| title | symptom |
GET QuestionnaireResponse
USAGE
var client = new RestClient("/QuestionnaireResponse?afterDateTime=2021-12-17T08:33:33.670Z");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <access_token>");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
var axios = require('axios');
var config = {
method: 'get',
url: '/QuestionnaireResponse?afterDateTime=2021-12-17T08:33:33.670Z',
headers: {
'Authorization': 'Bearer <access_token>'
}
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
BODY
[
{
"questionnaire": "Questionnaire/<id>",
"meta": {
"lastUpdated": "2022-05-12T12:07:38.479805Z",
"createdAt": "2022-05-12T12:07:38.479805Z",
"versionId": "1644697"
},
"item": [
{
"text": "Haben Sie in der letzten Nacht unter Kurzatmigkeit gelitten?",
"answer": [
{
"value": {
"string": "ja"
}
}
],
"linkId": "/breathshorteness.1"
},
{
"text": "Benötigen Sie mehr Kopfkissen um zu schlafen?",
"answer": [
{
"value": {
"string": "nein"
}
}
],
"linkId": "/breathshorteness.2"
},
{
"text": "Sind Ihre Beine dicker als gestern?",
"answer": [
{
"value": {
"string": "nein"
}
}
],
"linkId": "/swollen.1"
},
{
"text": "Mussten Sie in der letzten Nacht häufiger husten?",
"answer": [
{
"value": {
"string": "ja"
}
}
],
"linkId": "/cough.1"
},
{
"text": "Fühlen Sie sich schwächer als in der Nacht zuvor?",
"answer": [
{
"value": {
"string": "nein"
}
}
],
"linkId": "/weakness.1"
},
{
"text": "Mussten Sie in der Nacht häufiger aufstehen, um auf die Toilette zu gehen und zu urinieren als letzte Nacht?",
"answer": [
{
"value": {
"string": "nein"
}
}
],
"linkId": "/frequent-urination.1"
},
{
"text": "symptoms-result",
"answer": [
{
"value": {
"integer": 2
}
}
],
"linkId": "/symptoms-result"
}
],
"resourceType": "QuestionnaireResponse",
"author": {
"id": "<id>",
"resourceType": "Patient"
},
"status": "completed",
"language": "de",
"id": "<id>",
"authored": "2022-05-12T12:07:26.836Z",
"subject": {
"id": "<id>",
"resourceType": "Patient"
}
}
]
https://v1.actimi.health/partner/QuestionnaireResponse?afterDateTime=2022-05-12T12:07:38.479805Z
Get /QuestionnaireResponse for fetching all QuestionnaireResponse resources.
Has optional query parameter afterDateTime. When this parameter provided, it returns resources
that are created or updated after specified datetime only.
Also id could be provided as optional parameter to retrieve specific resource.
Authorization header is required for this endpoint.
PARAMS
| afterDateTime | 2021-12-17T08:33:33.670Z |
GET MedicationRequest
USAGE
var client = new RestClient("https://api.actimi.health/partner/MedicationRequest?subject=682830c9-204d-4a13-b6f3-5c78789affcf&afterDateTime=2022-04-26T19:48:31.785714Z");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
var axios = require('axios');
var config = {
method: 'get',
url: 'https://api.actimi.health/partner/MedicationRequest?subject=682830c9-204d-4a13-b6f3-5c78789affcf&afterDateTime=2022-04-26T19:48:31.785714Z',
headers: { }
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
BODY
[
{
"meta": {
"lastUpdated": "2022-04-27T08:17:01.538992Z",
"createdAt": "2022-04-27T08:17:01.538992Z",
"versionId": "1460094"
},
"authoredOn": "2022-04-27T08:17:01.456Z",
"resourceType": "MedicationRequest",
"note": [
{
"text": "1-0-0-0"
},
{
"text": "Jeden Tag"
},
{
"text": "Has an end date"
},
{
"text": "false"
},
{
"text": "mon,tue,wed,thu,fri,sat,sun"
},
{
"text": "Every 2 days"
}
],
"status": "active",
"id": "<id>",
"dosageInstruction": [
{
"timing": {
"repeat": {
"bounds": {
"Period": {
"end": "2022-04-27T08:16:51.255Z",
"start": "2022-04-27T08:16:51.255Z"
}
}
}
},
"maxDosePerPeriod": {
"numerator": {},
"denominator": {
"unit": "day",
"value": 1
}
},
"maxDosePerAdministration": {}
}
],
"intent": "plan",
"subject": {
"id": "<patient-id>",
"resourceType": "Patient"
},
"performer": {
"id": "<practitioner-id>",
"resourceType": "Practitioner"
},
"medication": {
"Reference": {
"id": "3250751",
"display": "Losartan + Hidroclorotiazida Aurovitas 50 mg + 12.5 mg Comprimido revestido por película",
"resourceType": "Medication"
}
}
}
]
Get /MedicationRequest for fetching all MedicationRequest resources. This corresponds to
prescription record of a patient.
Has optional query parameter afterDateTime. When this parameter provided, it returns Patients that
are created or updated after specified datetime only.
Has optional query parameter subject can be used when MedicationRequests of a specific patient.
Provide patient id to filter the prescriptions that are prescribed to a patient.
Authorization header is required for this endpoint.
PARAMS
| afterDateTime | 2021-12-17T08:33:33.670Z |
| subject | 682830c9-204d-4a13-b6f3-5c78789affcf |