API крайни точки
Пълна справка за всички крайни точки на Kantesti Blood Test API с примери за код на множество езици.
https://app.aibloodtestinterpret.com
Дневник на промените
Проследявайте API версии, актуализации и информация за миграция. Използвайте препоръчителните крайни точки за нови интеграции.
Текущи стабилни крайни точки
Тези крайни точки се препоръчват за производствено използване и нови интеграции.
| API | Крайна точка | Статус |
|---|---|---|
| Анализ на кръвни тестове v11 | /api/v11/01-06-2025/analyze |
Препоръчано |
| Анализ на кръвни тестове (здравен резултат) v11 | /api/v11/health-score/analyze |
Препоръчано |
| AI за хранителен режим v1 | /api/v1/nutrition/diet-plan/analyze |
Стабилен |
| AI сравнение на кръвни тестове v1 | /api/v1/bloodtest/comparison/analyze |
Стабилен |
| Оценка на семейния здравен риск v1 | /api/v1/family-health/analyze |
Издаден 23.03.2026 |
| ICR - Интелигентно разпознаване на символи v1 | /api/icr/v1/extract |
Издаден 14.02.2026 |
| ICR Kan - Извличане на кръвен тест v1 | /api/icr/v1/kan |
Издаден 14.02.2026 |
| Анализ на тенденции v1 | /api/v1/analytics/trends/analyze |
Стабилен |
История на версиите
| Дата | Версия | Промени |
|---|---|---|
| март 2026 | Семейно здраве v1 | Пуснат API за оценка на семейния здравен риск — AI анализ на наследствен риск, поддръжка на 100+ езика, анализ на семейно дърво, времева линия на превантивна грижа, препоръки за генетичен скрининг, sandbox режим |
| февруари 2026 | ICR v1 | Пуснат API за ICR (Интелигентно разпознаване на символи) — 79% по-бърз от OCR, структуриран JSON изход, откриване на типа документ, извличане на таблици, интеграция с Kan за кръвни тестове |
| декември 2025 | Най-нов | Подобрено обработване на грешки, 98,7% точност, поддръжка на 100 езика |
| юни 2025 | v11 | v11 Анализ на кръвни тестове, крайна точка за здравен резултат, поддръжка на множество файлове |
| април 2025 | v9 | Модел api_parameters_v9, подобрено извличане на параметри |
| март 2025 | v8 | Поддръжка на качване на множество файлове, пакетна обработка |
Стари крайни точки
Тези крайни точки се поддържат за обратна съвместимост, но не се препоръчват за нови интеграции.
| Версия | Крайна точка | Статус |
|---|---|---|
| v10 | /api/v10/health-score/analyze |
Стар |
| v9 | /api/v9/14-04-2025/analyze |
Стар |
| v8 | /api/v8/31-03-2025/analyze |
Стар |
| v6 | /api/v6-1/21-11-2024/analyze |
Стар |
| v3 | /api/v3/10-10-2024/analyze |
Стар |
Старите крайни точки се поддържат за обратна съвместимост, но не се препоръчват за нови интеграции. Моля, мигрирайте към текущите стабилни крайни точки за по-добра производителност и поддръжка.
Справка за поддържаните езици
Kantesti API поддържа 100 езика за локализация на отговори. Използвайте параметъра language с всеки ISO 639-1 код, изброен по-долу. Ако не е указан, отговорите са по подразбиране на английски (en).
Ако не е предоставен параметър language, API връща отговори на английски (en).
Основни световни езици
| Код | Език | Родно име |
|---|---|---|
en | Английски | Английски |
zh | Китайски | 中文 |
es | Испански | Español |
ar | Арабски | العربية |
hi | Хинди | हिन्दी |
pt | Португалски | Português |
ru | Руски | Русский |
ja | Японски | 日本語 |
fr | Френски | Français |
de | Немски | Deutsch |
ko | Корейски | 한국어 |
tr | Турски | Türkçe |
Европейски езици
| Код | Език | Родно име |
|---|---|---|
it | Италиански | Italiano |
nl | Нидерландски | Nederlands |
pl | Полски | Polski |
el | Гръцки | Ελληνικά |
sv | Шведски | Svenska |
no | Норвежки | Norsk |
da | Датски | Dansk |
fi | Финландски | Suomi |
cs | Чешки | Čeština |
uk | Украински | Українська |
ro | Румънски | Română |
hu | Унгарски | Magyar |
bg | Български | Български |
hr | Хърватски | Hrvatski |
sk | Словашки | Slovenčina |
sl | Словенски | Slovenščina |
sr | Сръбски | Српски |
lt | Литовски | Lietuvių |
lv | Латвийски | Latviešu |
et | Естонски | Eesti |
ca | Каталонски | Català |
eu | Баски | Euskara |
gl | Галисийски | Galego |
cy | Уелски | Cymraeg |
ga | Ирландски | Gaeilge |
is | Исландски | Íslenska |
mt | Малтийски | Malti |
sq | Албански | Shqip |
mk | Македонски | Македонски |
bs | Босненски | Bosanski |
lb | Люксембургски | Lëtzebuergesch |
be | Беларуски | Беларуская |
Близкоизточни и централноазиатски езици
| Код | Език | Родно име |
|---|---|---|
he | Иврит | עברית |
fa | Персийски | فارسی |
az | Азербайджански | Azərbaycan |
ka | Грузински | ქართული |
hy | Арменски | Հայերdelays |
kk | Казахски | Қазақша |
uz | Узбекски | Oʻzbek |
tg | Таджикски | Тоҷикӣ |
ky | Киргизки | Кыргызча |
tk | Туркменски | Türkmen |
mn | Монголски | Монгол |
ps | Пущу | پښتو |
ku | Кюрдски | Kurdî |
Южноазиатски езици
| Код | Език | Родно име |
|---|---|---|
bn | Бенгалски | বাংলা |
ta | Тамилски | தமிழ் |
te | Телугу | తెలుగు |
mr | Марати | मराठी |
gu | Гуджарати | ગુજરાતી |
kn | Каннада | ಕನ್ನಡ |
ml | Малаялам | മലയാളം |
pa | Пенджаби | ਪੰਜਾਬੀ |
ur | Урду | اردو |
ne | Непалски | नेपाली |
si | Синхалски | සිංහල |
sd | Синдхи | سنڌي |
as | Асамски | অসমীয়া |
or | Одия | ଓଡ଼ିଆ |
Югоизточни азиатски езици
| Код | Език | Родно име |
|---|---|---|
id | Индонезийски | Bahasa Indonesia |
th | Тайски | ไทย |
vi | Виетнамски | Tiếng Việt |
ms | Малайски | Bahasa Melayu |
my | Мианмарски (Бирмански) | မြန်မာ |
km | Кхмерски | ភាសាខ្មែរ |
lo | Лаоски | ລາວ |
fil | Филипински | Filipino |
tl | Тагалог | Tagalog |
jv | Явански | Basa Jawa |
su | Сундански | Basa Sunda |
Африкански езици
| Код | Език | Родно име |
|---|---|---|
af | Африкаанс | Африкаанс |
sw | Суахили | Kiswahili |
am | Амхарски | አማርኛ |
ha | Хауса | Hausa |
yo | Йоруба | Yorùbá |
ig | Игбо | Igbo |
zu | Зулу | isiZulu |
xh | Кхоса | isiXhosa |
so | Сомалийски | Soomaali |
mg | Малгашки | Malagasy |
Други езици
| Код | Език | Родно име |
|---|---|---|
la | Латински | Latina |
eo | Есперанто | Есперанто |
yi | Идиш | ייִדיש |
ht | Хаитянски креолски | Kreyòl Ayisyen |
mi | Маорски | Te Reo Māori |
sm | Самоански | Gagana Samoa |
to | Тонгански | Lea Faka-Tonga |
haw | Хавайски | ʻŌlelo Hawaiʻi |
API за анализ на кръвни тестове
Анализирайте изображения на кръвни тестове или PDF-и с помощта на AI, за да извлечете параметри и да генерирате изчерпателни медицински интерпретации.
Производствена крайна точка за анализ на кръвни тестове. Консумира 1 кредит на заявка.
Параметри на заявката
| Параметър | Тип | Задължителен | Описание |
|---|---|---|---|
username | string | Да | Вашето API потребителско име |
password | string | Да | Вашата API парола |
file | file | Да | Изображение на кръвен тест (PNG, JPG, WEBP) или PDF. Макс 20MB. |
language | string | Не | Код на езика за отговор (по подразбиране: en). Вижте поддържаните езици. |
cURL пример
curl -X POST "https://app.aibloodtestinterpret.com/api/v11/01-06-2025/analyze" \
-F "username=YOUR_USERNAME" \
-F "password=YOUR_PASSWORD" \
-F "language=en" \
-F "file=@blood_test.pdf"
Python пример
import requests
def analyze_blood_test(file_path: str, username: str, password: str, language: str = "en"):
"""
Analyze a blood test file using Kantesti API.
Args:
file_path: Path to the blood test PDF or image
username: API username
password: API password
language: Response language code (default: en)
Returns:
dict: API response with analysis results
"""
url = "https://app.aibloodtestinterpret.com/api/v11/01-06-2025/analyze"
with open(file_path, "rb") as f:
files = {"file": (file_path, f, "application/pdf")}
data = {
"username": username,
"password": password,
"language": language
}
response = requests.post(url, files=files, data=data, timeout=120)
response.raise_for_status()
return response.json()
# Example usage
if __name__ == "__main__":
result = analyze_blood_test(
file_path="blood_test.pdf",
username="your_username",
password="your_password",
language="en"
)
print(f"Status: {result['status']}")
print(f"Parameters found: {len(result['data']['parameters'])}")
C++ пример (libcurl)
#include <iostream>
#include <string>
#include <curl/curl.h>
size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* userp) {
userp->append((char*)contents, size * nmemb);
return size * nmemb;
}
std::string analyzeBloodTest(const std::string& filePath,
const std::string& username,
const std::string& password,
const std::string& language = "en") {
CURL* curl = curl_easy_init();
std::string response;
if (curl) {
curl_mime* form = curl_mime_init(curl);
curl_mimepart* field;
// Add username
field = curl_mime_addpart(form);
curl_mime_name(field, "username");
curl_mime_data(field, username.c_str(), CURL_ZERO_TERMINATED);
// Add password
field = curl_mime_addpart(form);
curl_mime_name(field, "password");
curl_mime_data(field, password.c_str(), CURL_ZERO_TERMINATED);
// Add language
field = curl_mime_addpart(form);
curl_mime_name(field, "language");
curl_mime_data(field, language.c_str(), CURL_ZERO_TERMINATED);
// Add file
field = curl_mime_addpart(form);
curl_mime_name(field, "file");
curl_mime_filedata(field, filePath.c_str());
curl_easy_setopt(curl, CURLOPT_URL,
"https://app.aibloodtestinterpret.com/api/v11/01-06-2025/analyze");
curl_easy_setopt(curl, CURLOPT_MIMEPOST, form);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 120L);
CURLcode res = curl_easy_perform(curl);
curl_mime_free(form);
curl_easy_cleanup(curl);
}
return response;
}
int main() {
std::string result = analyzeBloodTest("blood_test.pdf", "username", "password");
std::cout << result << std::endl;
return 0;
}
Postman конфигурация
{
"info": {
"name": "Kantesti Blood Test API",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"item": [
{
"name": "Analyze Blood Test",
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "formdata",
"formdata": [
{"key": "username", "value": "{{api_username}}", "type": "text"},
{"key": "password", "value": "{{api_password}}", "type": "text"},
{"key": "language", "value": "en", "type": "text"},
{"key": "file", "type": "file", "src": "/path/to/blood_test.pdf"}
]
},
"url": {
"raw": "https://app.aibloodtestinterpret.com/api/v11/01-06-2025/analyze",
"protocol": "https",
"host": ["app", "aibloodtestinterpret", "com"],
"path": ["api", "v11", "01-06-2025", "analyze"]
}
}
}
]
}
Примерен отговор
{
"status": "success",
"data": {
"metadata": {
"patient_name": "Jan Novák",
"lab_name": "BioLAB Medical Center",
"lab_city": "Prague",
"lab_country": "Czech Republic",
"lab_date": "2025-05-11",
"patient_age": "45",
"patient_sex": "Male"
},
"parameters": [
{
"short_name": "WBC",
"long_name": "White Blood Cell Count",
"category": "Complete Blood Count",
"result": 7.2,
"unit": "10^9/L",
"evaluation": "normal",
"range_min": 2.0,
"range_max": 12.0,
"range_normal_min": 4.0,
"range_normal_max": 10.0,
"short_description": "Measures the total white blood cells in blood.",
"long_description": "White blood cells (leukocytes) are essential for immune function..."
},
{
"short_name": "HGB",
"long_name": "Hemoglobin",
"category": "Complete Blood Count",
"result": 14.5,
"unit": "g/dL",
"evaluation": "normal",
"range_min": 10.0,
"range_max": 18.0,
"range_normal_min": 13.5,
"range_normal_max": 17.5,
"short_description": "Protein in red blood cells that carries oxygen.",
"long_description": "Hemoglobin is the iron-containing protein responsible for oxygen transport..."
}
],
"interpretation": [
{
"title": "Overall Health Assessment",
"shortcode": "overall_health_assessment",
"subsections": [
{
"subtitle": "Comprehensive Overview",
"shortcode": "overall_health_assessment_overview",
"items": [
{"item": "The patient demonstrates preserved overall organ function with normal hematological parameters."},
{"item": "No significant abnormalities detected in the complete blood count."}
]
}
]
}
]
},
"api_version": "v11",
"timestamp": "2025-12-22T10:30:00Z"
}
Справка на полетата на отговора
Коренно ниво
| Поле | Тип | Описание |
|---|---|---|
status | string | "success" или "error" |
data | object | Съдържа всички резултати от анализа |
timestamp | string | ISO 8601 времеви печат на отговора |
api_version | string | API версия, използвана за обработка |
data.metadata обект
| Поле | Тип | Описание |
|---|---|---|
lab_date | string | Дата на вземане на кръвта (YYYY-MM-DD) |
results_date | string | Дата на издаване на резултатите (YYYY-MM-DD) |
lab_name | string | Име на лабораторията |
lab_city | string | Град на лабораторията |
lab_country | string | Държава на лабораторията |
patient_name | string | Пълно име на пациента (само метаданни, не се изпраща за интерпретация) |
patient_age | string | Възраст на пациента |
patient_sex | string | "male", "female" или "other" |
data.parameters елемент от масив
| Поле | Тип | Описание |
|---|---|---|
category | string | Категория на параметъра (напр. "Complete Blood Count", "Lipid Panel") |
long_name | string | Пълно име на параметър |
short_name | string | Съкратено име на параметър |
result | string | Измерена стойност |
unit | string | Мерна единица |
range_min | string | Минимален референтен диапазон |
range_max | string | Максимален референтен диапазон |
evaluation | string | Статус на резултата. Вижте стойностите на оценката |
data.interpretation елемент от масив
| Поле | Тип | Описание |
|---|---|---|
title | string | Заглавие на секцията (напр. "Overall Health Assessment") |
content | string | AI-генерирана медицинска интерпретация |
Пълен примерен отговор
{
"status": "success",
"data": {
"metadata": {
"patient_name": "Anna Müller",
"lab_name": "MedLab Diagnostics International",
"lab_city": "Munich",
"lab_country": "Germany",
"lab_date": "2025-12-15",
"results_date": "2025-12-16",
"patient_age": "38",
"patient_sex": "female"
},
"parameters": [
{
"short_name": "WBC",
"long_name": "White Blood Cell Count",
"category": "Complete Blood Count",
"result": "6.8",
"unit": "10^9/L",
"evaluation": "normal",
"range_min": "4.0",
"range_max": "11.0",
"range_normal_min": "4.5",
"range_normal_max": "10.0",
"short_description": "Measures the total number of white blood cells.",
"long_description": "White blood cells (leukocytes) are essential components of the immune system..."
},
{
"short_name": "RBC",
"long_name": "Red Blood Cell Count",
"category": "Complete Blood Count",
"result": "4.52",
"unit": "10^12/L",
"evaluation": "normal",
"range_min": "3.8",
"range_max": "5.8",
"range_normal_min": "4.0",
"range_normal_max": "5.5",
"short_description": "Measures the total number of red blood cells.",
"long_description": "Red blood cells (erythrocytes) carry oxygen from the lungs to body tissues..."
},
{
"short_name": "HGB",
"long_name": "Hemoglobin",
"category": "Complete Blood Count",
"result": "13.2",
"unit": "g/dL",
"evaluation": "normal",
"range_min": "11.5",
"range_max": "16.0",
"range_normal_min": "12.0",
"range_normal_max": "15.5",
"short_description": "Protein in red blood cells that carries oxygen.",
"long_description": "Hemoglobin is the iron-containing protein in red blood cells responsible for oxygen transport..."
},
{
"short_name": "HCT",
"long_name": "Hematocrit",
"category": "Complete Blood Count",
"result": "39.8",
"unit": "%",
"evaluation": "normal",
"range_min": "35.0",
"range_max": "47.0",
"range_normal_min": "36.0",
"range_normal_max": "44.0",
"short_description": "Percentage of blood volume occupied by red blood cells.",
"long_description": "Hematocrit measures the proportion of blood that consists of red blood cells..."
},
{
"short_name": "PLT",
"long_name": "Platelet Count",
"category": "Complete Blood Count",
"result": "245",
"unit": "10^9/L",
"evaluation": "normal",
"range_min": "150",
"range_max": "400",
"range_normal_min": "150",
"range_normal_max": "350",
"short_description": "Measures the number of platelets in blood.",
"long_description": "Platelets (thrombocytes) are essential for blood clotting and wound healing..."
},
{
"short_name": "GLU",
"long_name": "Fasting Glucose",
"category": "Metabolic Panel",
"result": "102",
"unit": "mg/dL",
"evaluation": "borderline_high",
"range_min": "70",
"range_max": "140",
"range_normal_min": "70",
"range_normal_max": "99",
"short_description": "Measures blood sugar level after fasting.",
"long_description": "Fasting glucose is a key indicator of how well the body metabolizes sugar..."
},
{
"short_name": "TC",
"long_name": "Total Cholesterol",
"category": "Lipid Panel",
"result": "218",
"unit": "mg/dL",
"evaluation": "borderline_high",
"range_min": "0",
"range_max": "300",
"range_normal_min": "0",
"range_normal_max": "200",
"short_description": "Measures total cholesterol in blood.",
"long_description": "Total cholesterol is the sum of HDL, LDL, and VLDL cholesterol levels..."
},
{
"short_name": "HDL",
"long_name": "HDL Cholesterol",
"category": "Lipid Panel",
"result": "58",
"unit": "mg/dL",
"evaluation": "normal",
"range_min": "35",
"range_max": "100",
"range_normal_min": "50",
"range_normal_max": "90",
"short_description": "Measures 'good' cholesterol level.",
"long_description": "HDL (high-density lipoprotein) cholesterol helps remove other forms of cholesterol..."
},
{
"short_name": "LDL",
"long_name": "LDL Cholesterol",
"category": "Lipid Panel",
"result": "142",
"unit": "mg/dL",
"evaluation": "high",
"range_min": "0",
"range_max": "200",
"range_normal_min": "0",
"range_normal_max": "100",
"short_description": "Measures 'bad' cholesterol level.",
"long_description": "LDL (low-density lipoprotein) cholesterol can build up in artery walls..."
},
{
"short_name": "TRIG",
"long_name": "Triglycerides",
"category": "Lipid Panel",
"result": "156",
"unit": "mg/dL",
"evaluation": "borderline_high",
"range_min": "0",
"range_max": "500",
"range_normal_min": "0",
"range_normal_max": "150",
"short_description": "Measures fat in the blood.",
"long_description": "Triglycerides are a type of fat found in the blood that stores excess energy..."
}
],
"interpretation": [
{
"title": "Overall Health Assessment",
"shortcode": "overall_health_assessment",
"subsections": [
{
"subtitle": "Comprehensive Overview",
"shortcode": "overall_health_assessment_overview",
"items": [
{"item": "The patient demonstrates generally healthy hematological parameters with all blood count values within normal ranges."},
{"item": "Complete blood count results indicate adequate oxygen-carrying capacity and immune function."},
{"item": "Lipid panel shows areas requiring attention, particularly LDL cholesterol levels."}
]
}
]
},
{
"title": "Metabolic Analysis",
"shortcode": "metabolic_analysis",
"subsections": [
{
"subtitle": "Blood Sugar Assessment",
"shortcode": "metabolic_analysis_glucose",
"items": [
{"item": "Fasting glucose at 102 mg/dL is slightly elevated, indicating pre-diabetic range."},
{"item": "Recommend lifestyle modifications including regular exercise and reduced simple carbohydrate intake."},
{"item": "Follow-up HbA1c testing recommended in 3 months to assess long-term glucose control."}
]
}
]
},
{
"title": "Cardiovascular Risk Assessment",
"shortcode": "cardiovascular_risk",
"subsections": [
{
"subtitle": "Lipid Profile Analysis",
"shortcode": "cardiovascular_risk_lipids",
"items": [
{"item": "LDL cholesterol at 142 mg/dL exceeds optimal levels and warrants intervention."},
{"item": "HDL cholesterol at 58 mg/dL provides moderate cardiovascular protection."},
{"item": "Triglycerides slightly elevated; consider dietary modifications to reduce saturated fat intake."},
{"item": "Total cholesterol to HDL ratio of 3.76 indicates moderate cardiovascular risk."}
]
}
]
},
{
"title": "Recommendations",
"shortcode": "recommendations",
"subsections": [
{
"subtitle": "Lifestyle Modifications",
"shortcode": "recommendations_lifestyle",
"items": [
{"item": "Increase aerobic physical activity to at least 150 minutes per week."},
{"item": "Adopt a Mediterranean-style diet rich in vegetables, fruits, and healthy fats."},
{"item": "Limit processed foods, saturated fats, and added sugars."},
{"item": "Consider consultation with a nutritionist for personalized dietary guidance."}
]
},
{
"subtitle": "Follow-up Testing",
"shortcode": "recommendations_followup",
"items": [
{"item": "Repeat lipid panel in 3 months after implementing lifestyle changes."},
{"item": "HbA1c test recommended to assess average blood glucose levels."},
{"item": "Annual comprehensive metabolic panel for ongoing monitoring."}
]
}
]
}
]
},
"api_version": "v11",
"timestamp": "2025-12-16T14:32:18Z"
}
Полето evaluation използва стандартизирани стойности. Вижте стойностите на оценката.
Производствена крайна точка с изчерпателно изчисление на здравния резултат и анализ на риска от заболявания.
Допълнителни полета на отговора
{
"health_score": {
"overall": 78,
"optimal": 4,
"normal": 12,
"warning": 3,
"critical": 1,
"total_parameters": 20,
"score_interpretation": "good",
"recommendations": [
"Consider increasing vitamin D intake",
"Schedule follow-up for cholesterol levels"
]
},
"disease_risks": [
{"name": "Cardiovascular Disease", "percentage": "18%", "severity": "low"},
{"name": "Type 2 Diabetes", "percentage": "12%", "severity": "low"},
{"name": "Metabolic Syndrome", "percentage": "25%", "severity": "moderate"}
]
}
Полето score_interpretation използва стандартизирани стойности. Вижте стойностите на здравния резултат.
Sandbox крайни точки
Sandbox крайните точки връщат реалистични тестови данни без консумация на API квота. Използвайте ги за разработка и тестване на интеграция.
- Без консумация на квота
- Връща реалистични тестови данни
- Същият формат на заявка като в производството
- Тествайте интеграцията преди пускане в производство
- Налично за всички API версии
| API | Sandbox крайна точка |
|---|---|
| Кръвен тест v11 | /api/v11/01-06-2025/sandbox |
| Кръвен тест v11-health | /api/v11/health-score/sandbox |
| AI за хранителен режим | /api/v1/nutrition/diet-plan/sandbox |
| Сравнение на кръвни тестове | /api/v1/bloodtest/comparison/sandbox |
| Анализ на тенденции | /api/v1/analytics/trends/sandbox |
| ICR извличане | /api/icr/v1/sandbox |
| ICR Kan (кръвен тест) | /api/icr/v1/kan/sandbox |
Изберете правилния API за вашата употреба:
| Характеристика | AI сравнение на кръвни тестове | Анализ на тенденции |
|---|---|---|
| Основен фокус | AI наративно сравнение | Статистически анализ на тенденции |
| AI обработка | Пълен AI наратив | AI-подобрено + статистики |
| Изходен тип | Наративни резюмета | Графики, статистики, модели |
| Най-добър за | Какво се е променило между тестовете | Дългосрочно проследяване на параметри |
| Мин. тестове | 2 | 2 |
| Макс. тестове | 20 | 50 |
API за анализ на тенденции
Анализирайте тенденциите на здравните параметри във времето с помощта на AI-базирано разпознаване на модели. Идентифицирайте подобрения, влошавания и приложими прозрения от исторически данни за кръвни тестове.
Анализира тенденциите на параметрите на кръвните тестове през множество дати на тестване за идентифициране на модели и предоставяне на здравни прозрения.
Параметри на заявката
| Параметър | Тип | Задължителен | Описание |
|---|---|---|---|
username | string | Да | Вашето API потребителско име |
password | string | Да | Вашата API парола |
language | string | Не | Език на отговора (по подразбиране: en). Вижте поддържаните езици. |
blood_tests | array | Да | Масив от обекти с кръвни тестове (мин: 2, макс: 50) |
analysis_type | string | Не | Тип на анализа. Вижте стойностите. |
analysis_options | object | Не | Опции за конфигуриране на анализа |
analysis_options обект
| Поле | Тип | По подразбиране | Описание |
|---|---|---|---|
include_predictions | boolean | true | Включване на AI прогнози за тенденции |
include_statistics | boolean | true | Включване на статистически анализ (средно, мин, макс, стандартно отклонение) |
include_charts | boolean | true | Включване на конфигурационни данни за диаграми за визуализация |
blood_tests структура на масив
- Минимум: 2 изисквани кръвни теста
- Максимум: 50 кръвни теста на заявка
- Всеки тест трябва да има
lab_dateИЛИresults_date - Използвайте последователни имена на параметри във всички тестове за точно проследяване на тенденциите
| Поле | Тип | Задължителен | Описание |
|---|---|---|---|
lab_date | string | Да* | Дата на тестването във формат YYYY-MM-DD |
results_date | string | Да* | Алтернатива на lab_date (YYYY-MM-DD) |
parameters | array | Да | Масив от параметри на кръвни тестове |
metadata | object | Не | Допълнителни метаданни (lab_name, notes и др.) |
*За всеки кръвен тест се изисква или lab_date, или results_date.
blood_tests[].parameters структура на масив
| Поле | Тип | Задължителен | Описание |
|---|---|---|---|
name | string | Да | Име на параметър (използвайте последователно именуване във всички тестове!) |
short_name | string | Не | Кратък код на параметъра (напр. HGB, GLU, CHOL) |
value | number | Да | Измерена стойност (може също да се използва result) |
unit | string | Да | Мерна единица (напр. g/dL, mg/dL, %) |
range_min | number | Не | Минимална стойност на референтния диапазон |
range_max | number | Не | Максимална стойност на референтния диапазон |
category | string | Не | Категория на параметъра (напр. "Lipid Panel", "Complete Blood Count") |
evaluation | string | Не | Предварително оценен статус. Вижте стойностите на оценката |
cURL пример
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/analytics/trends/analyze" \
-H "Content-Type: application/json" \
-d '{
"username": "YOUR_USERNAME",
"password": "YOUR_PASSWORD",
"language": "en",
"analysis_type": "comprehensive",
"analysis_options": {
"include_predictions": true,
"include_statistics": true,
"include_charts": true
},
"blood_tests": [
{
"lab_date": "2024-01-15",
"parameters": [
{"name": "Fasting Glucose", "short_name": "GLU", "value": 98, "unit": "mg/dL"},
{"name": "Hemoglobin A1c", "short_name": "HBA1C", "value": 5.6, "unit": "%"},
{"name": "Total Cholesterol", "short_name": "CHOL", "value": 185, "unit": "mg/dL"},
{"name": "LDL Cholesterol", "short_name": "LDL", "value": 110, "unit": "mg/dL"},
{"name": "HDL Cholesterol", "short_name": "HDL", "value": 52, "unit": "mg/dL"}
]
},
{
"lab_date": "2024-05-20",
"parameters": [
{"name": "Fasting Glucose", "short_name": "GLU", "value": 92, "unit": "mg/dL"},
{"name": "Hemoglobin A1c", "short_name": "HBA1C", "value": 5.4, "unit": "%"},
{"name": "Total Cholesterol", "short_name": "CHOL", "value": 178, "unit": "mg/dL"},
{"name": "LDL Cholesterol", "short_name": "LDL", "value": 102, "unit": "mg/dL"},
{"name": "HDL Cholesterol", "short_name": "HDL", "value": 55, "unit": "mg/dL"}
]
},
{
"lab_date": "2024-09-10",
"parameters": [
{"name": "Fasting Glucose", "short_name": "GLU", "value": 88, "unit": "mg/dL"},
{"name": "Hemoglobin A1c", "short_name": "HBA1C", "value": 5.3, "unit": "%"},
{"name": "Total Cholesterol", "short_name": "CHOL", "value": 168, "unit": "mg/dL"},
{"name": "LDL Cholesterol", "short_name": "LDL", "value": 92, "unit": "mg/dL"},
{"name": "HDL Cholesterol", "short_name": "HDL", "value": 58, "unit": "mg/dL"}
]
},
{
"lab_date": "2024-12-18",
"parameters": [
{"name": "Fasting Glucose", "short_name": "GLU", "value": 85, "unit": "mg/dL"},
{"name": "Hemoglobin A1c", "short_name": "HBA1C", "value": 5.2, "unit": "%"},
{"name": "Total Cholesterol", "short_name": "CHOL", "value": 162, "unit": "mg/dL"},
{"name": "LDL Cholesterol", "short_name": "LDL", "value": 85, "unit": "mg/dL"},
{"name": "HDL Cholesterol", "short_name": "HDL", "value": 62, "unit": "mg/dL"}
]
}
]
}'
Python пример
import requests
from typing import List, Dict, Optional
def analyze_trends(
username: str,
password: str,
blood_tests: List[Dict],
language: str = "en",
analysis_type: str = "comprehensive"
) -> Dict:
"""
Analyze blood test trends over time.
Args:
username: API username
password: API password
blood_tests: List of blood test objects with lab_date and parameters
language: Response language code
analysis_type: comprehensive, quick, or focused
Returns:
dict: Trend analysis results
"""
url = "https://app.aibloodtestinterpret.com/api/v1/analytics/trends/analyze"
payload = {
"username": username,
"password": password,
"language": language,
"analysis_type": analysis_type,
"blood_tests": blood_tests
}
response = requests.post(url, json=payload, timeout=120)
response.raise_for_status()
return response.json()
# Example usage
if __name__ == "__main__":
blood_tests = [
{
"lab_date": "2025-01-15",
"parameters": [
{"short_name": "HGB", "result": 12.5, "unit": "g/dL"},
{"short_name": "CHOL", "result": 220, "unit": "mg/dL"}
]
},
{
"lab_date": "2025-06-15",
"parameters": [
{"short_name": "HGB", "result": 13.2, "unit": "g/dL"},
{"short_name": "CHOL", "result": 195, "unit": "mg/dL"}
]
},
{
"lab_date": "2025-12-01",
"parameters": [
{"short_name": "HGB", "result": 14.1, "unit": "g/dL"},
{"short_name": "CHOL", "result": 180, "unit": "mg/dL"}
]
}
]
result = analyze_trends(
username="your_username",
password="your_password",
blood_tests=blood_tests
)
print(f"Overall trend: {result['data']['overall_trend']}")
for trend in result['data']['parameter_trends']:
print(f"{trend['parameter']}: {trend['direction']} ({trend['change_percent']}%)")
C++ пример (libcurl + nlohmann/json)
#include <iostream>
#include <string>
#include <curl/curl.h>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* userp) {
userp->append((char*)contents, size * nmemb);
return size * nmemb;
}
std::string analyzeTrends(const std::string& username,
const std::string& password,
const json& bloodTests,
const std::string& language = "en") {
CURL* curl = curl_easy_init();
std::string response;
if (curl) {
json payload = {
{"username", username},
{"password", password},
{"language", language},
{"analysis_type", "comprehensive"},
{"blood_tests", bloodTests}
};
std::string jsonStr = payload.dump();
struct curl_slist* headers = nullptr;
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_URL,
"https://app.aibloodtestinterpret.com/api/v1/analytics/trends/analyze");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, jsonStr.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 120L);
CURLcode res = curl_easy_perform(curl);
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
}
return response;
}
int main() {
json bloodTests = json::array({
{{"lab_date", "2025-01-15"}, {"parameters", {{{"short_name", "HGB"}, {"result", 12.5}, {"unit", "g/dL"}}}}},
{{"lab_date", "2025-06-15"}, {"parameters", {{{"short_name", "HGB"}, {"result", 13.2}, {"unit", "g/dL"}}}}},
{{"lab_date", "2025-12-01"}, {"parameters", {{{"short_name", "HGB"}, {"result", 14.1}, {"unit", "g/dL"}}}}}
});
std::string result = analyzeTrends("username", "password", bloodTests);
std::cout << result << std::endl;
return 0;
}
Справка на полетата на отговора
| Поле | Тип | Описание |
|---|---|---|
analysis_id | string | Уникален идентификатор за този анализ (формат: TRD-XXXXXXXX) |
analysis_period | object | Детайли за времевия период: start_date, end_date, span_months, total_tests |
categories | array | Списък с намерените категории параметри (напр. "Lipid Panel", "Complete Blood Count") |
chart_config | object | Готови за диаграми данни: dates, raw_dates, simple_dates за визуализация |
overall_health_trend | object | Обобщение, масив health_risks и препоръки |
parameter_trends | array | Подробен анализ за всеки параметър със статистики |
risk_factors | array | Идентифицирани рискови фактори за здравето |
parameter_trends структура на обект
| Поле | Тип | Описание |
|---|---|---|
parameter | string | Стандартизирано име на параметър |
short_name | string | Съкратено име на параметър |
category | string | Категория на параметъра (напр. "Lipid Panel") |
unit | string | Мерна единица |
trend_data | array | Масив от обекти {date, value} за изграждане на диаграми |
statistical_analysis | object | average, min, max, standard_deviation, trend_direction, trend_strength |
analysis | object | AI интерпретация: description, significant_variations, trend |
interpretation | string | Разбираемо за хората описание на параметъра |
Примерен отговор
{
"api_version": "1.0.0",
"status": "success",
"message": "Trend analysis completed successfully",
"timestamp": "2025-12-22T01:12:49.262700Z",
"data": {
"analysis_id": "TRD-49B4C616",
"analysis_period": {
"start_date": "2024-01-15",
"end_date": "2024-12-18",
"span_months": 11,
"total_tests": 4
},
"categories": [
"Metabolic Panel",
"Vitamins",
"Diabetes Markers",
"Iron Studies",
"Lipid Panel",
"Complete Blood Count"
],
"chart_config": {
"dates": ["Jan 2024", "May 2024", "Sep 2024", "Dec 2024"],
"raw_dates": ["2024-01-15", "2024-05-20", "2024-09-10", "2024-12-18"]
},
"language": "en",
"overall_health_trend": {
"summary": "Overall, the blood test parameters show positive trends with improvements in hemoglobin, lipid profile including LDL and HDL cholesterol, vitamin D status, and iron stores.",
"health_risks": [],
"recommendations": []
},
"parameter_trends": [
{
"parameter": "Hemoglobin (Hb)",
"short_name": "Hemoglobin",
"category": "Complete Blood Count",
"unit": "g/dL",
"original_names": ["Hemoglobin", "HGB"],
"trend_data": [
{"date": "2024-01-15", "value": 12.8},
{"date": "2024-05-20", "value": 13.5},
{"date": "2024-09-10", "value": 14.2},
{"date": "2024-12-18", "value": 14.8}
],
"statistical_analysis": {
"average": 13.82,
"min": 12.8,
"max": 14.8,
"standard_deviation": 0.87,
"trend_direction": "upward",
"trend_strength": "moderate"
},
"analysis": {
"description": "Hemoglobin measures the oxygen-carrying protein in red blood cells.",
"significant_variations": "Initially low at 12.8 g/dL, then gradually increased to 14.8 g/dL.",
"trend": "increasing",
"unit": "g/dL"
},
"interpretation": "Hemoglobin measures the oxygen-carrying protein in red blood cells."
},
{
"parameter": "Low-Density Lipoprotein Cholesterol (LDL-C)",
"short_name": "Low-Densit",
"category": "Lipid Panel",
"unit": "mg/dL",
"trend_data": [
{"date": "2024-01-15", "value": 110.0},
{"date": "2024-05-20", "value": 102.0},
{"date": "2024-09-10", "value": 92.0},
{"date": "2024-12-18", "value": 85.0}
],
"statistical_analysis": {
"average": 97.25,
"min": 85.0,
"max": 110.0,
"standard_deviation": 11.0,
"trend_direction": "downward",
"trend_strength": "strong"
},
"analysis": {
"description": "LDL-C is the 'bad' cholesterol associated with increased heart disease risk.",
"significant_variations": "LDL-C shifted from high (110 mg/dL) to normal (85 mg/dL).",
"trend": "decreasing"
}
}
],
"risk_factors": [],
"sandbox_mode": false
}
}
Полетата на отговора използват стандартизирани стойности: trend_direction (вижте стойностите), trend_strength (вижте стойностите).
AI за хранителен режим с добавки
Генериране на персонализирани хранителни планове, препоръки за диета и предложения за добавки въз основа на анализ на кръвни тестове с усъвършенствани AI алгоритми.
Генерира изчерпателни препоръки за хранене и добавки въз основа на параметрите на кръвните тестове и профила на пациента.
Параметри на заявката
| Параметър | Тип | Задължителен | Описание |
|---|---|---|---|
username | string | Да | Вашето API потребителско име |
password | string | Да | Вашата API парола |
language | string | Не | Език на отговора (по подразбиране: en). Вижте поддържаните езици. |
patient | object | Да | Демографски и здравни данни за пациента |
blood_test | object | Да | Параметри на кръвни тестове |
health_goals | array | Не | Здравни цели. Вижте стойностите. |
dietary_restrictions | array | Не | Хранителни ограничения. Вижте стойностите. |
Схема на обект пациент
Обект с демографски данни за пациента с gender (вижте стойностите) и activity_level (вижте стойностите).
| Поле | Тип | Задължителен | По подразбиране | Описание |
|---|---|---|---|---|
age | integer | Да | - | Възраст на пациента в години (18-120) |
gender | string | Да | - | Пол на пациента. Вижте стойностите |
weight | number | Не | null | Тегло в кг (за калорични изчисления) |
height | number | Не | null | Ръст в см (за изчисления на BMI) |
conditions | array | Не | [] | Медицински състояния (напр. ["diabetes", "hypertension"]) |
allergies | array | Не | [] | Алергии към храни/добавки (напр. ["shellfish", "nuts"]) |
dietary_preferences | array | Не | [] | Хранителни предпочитания. Вижте стойностите |
activity_level | string | Не | "moderate" | Ниво на физическа активност. Вижте стойностите |
dietary_restrictions | array | Не | [] | Хранителни ограничения. Вижте стойностите |
liked_foods | array | Не | [] | Предпочитани храни за включване (напр. ["salmon", "spinach"]) |
disliked_foods | array | Не | [] | Храни за избягване в препоръките (напр. ["broccoli"]) |
meal_frequency | integer | Не | 3 | Предпочитани хранения на ден (2-6) |
budget | string | Не | "moderate" | Бюджет за препоръки. Вижте стойностите |
medications | array | Не | [] | Текущи лекарства за проверки на взаимодействия |
{
"age": 45,
"gender": "male",
"weight": 82,
"height": 178,
"activity_level": "moderate",
"medical_conditions": ["hypertension"],
"current_medications": ["lisinopril"],
"allergies": ["shellfish"]
}
cURL пример
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/nutrition/diet-plan/analyze" \
-H "Content-Type: application/json" \
-d '{
"username": "YOUR_USERNAME",
"password": "YOUR_PASSWORD",
"language": "en",
"patient": {
"age": 45,
"gender": "male",
"weight": 82,
"height": 178,
"activity_level": "moderate",
"medical_conditions": ["hypertension"],
"allergies": ["shellfish"]
},
"blood_test": {
"lab_date": "2025-12-01",
"parameters": [
{"short_name": "VITD", "result": 18, "unit": "ng/mL"},
{"short_name": "FER", "result": 25, "unit": "ng/mL"},
{"short_name": "B12", "result": 280, "unit": "pg/mL"},
{"short_name": "CHOL", "result": 210, "unit": "mg/dL"},
{"short_name": "HDL", "result": 42, "unit": "mg/dL"},
{"short_name": "LDL", "result": 140, "unit": "mg/dL"}
]
},
"health_goals": ["lower_cholesterol", "increase_energy"],
"dietary_restrictions": ["low_sodium"]
}'
Python пример
import requests
from typing import Dict, List, Optional
def get_nutrition_plan(
username: str,
password: str,
patient: Dict,
blood_test: Dict,
health_goals: Optional[List[str]] = None,
dietary_restrictions: Optional[List[str]] = None,
language: str = "en"
) -> Dict:
"""
Get personalized nutrition and supplement recommendations.
Args:
username: API username
password: API password
patient: Patient demographics and health info
blood_test: Blood test parameters
health_goals: Optional health goals
dietary_restrictions: Optional dietary restrictions
language: Response language
Returns:
dict: Nutrition plan with supplements
"""
url = "https://app.aibloodtestinterpret.com/api/v1/nutrition/diet-plan/analyze"
payload = {
"username": username,
"password": password,
"language": language,
"patient": patient,
"blood_test": blood_test
}
if health_goals:
payload["health_goals"] = health_goals
if dietary_restrictions:
payload["dietary_restrictions"] = dietary_restrictions
response = requests.post(url, json=payload, timeout=120)
response.raise_for_status()
return response.json()
# Example usage
if __name__ == "__main__":
patient = {
"age": 45,
"gender": "male",
"weight": 82,
"height": 178,
"activity_level": "moderate",
"medical_conditions": ["hypertension"],
"allergies": ["shellfish"]
}
blood_test = {
"lab_date": "2025-12-01",
"parameters": [
{"short_name": "VITD", "result": 18, "unit": "ng/mL"},
{"short_name": "FER", "result": 25, "unit": "ng/mL"},
{"short_name": "CHOL", "result": 210, "unit": "mg/dL"}
]
}
result = get_nutrition_plan(
username="your_username",
password="your_password",
patient=patient,
blood_test=blood_test,
health_goals=["lower_cholesterol", "increase_energy"]
)
# Print supplement recommendations
for supp in result['data']['supplements']:
print(f"{supp['name']}: {supp['dosage']} - {supp['reason']}")
Примерен отговор
{
"status": "success",
"data": {
"nutrition_plan": {
"daily_calories": 2100,
"macros": {
"protein": {"grams": 105, "percentage": 20},
"carbohydrates": {"grams": 236, "percentage": 45},
"fats": {"grams": 82, "percentage": 35}
},
"meal_plan": {
"breakfast": {
"description": "Oatmeal with berries and walnuts",
"calories": 420,
"nutrients": ["fiber", "omega-3", "antioxidants"]
},
"lunch": {
"description": "Grilled salmon salad with olive oil dressing",
"calories": 550,
"nutrients": ["omega-3", "protein", "vitamin D"]
},
"dinner": {
"description": "Lean chicken with quinoa and steamed vegetables",
"calories": 580,
"nutrients": ["protein", "iron", "fiber"]
},
"snacks": [
{"description": "Greek yogurt with almonds", "calories": 180},
{"description": "Apple with almond butter", "calories": 200}
]
}
},
"supplements": [
{
"name": "Vitamin D3",
"dosage": "2000 IU daily",
"reason": "Blood levels at 18 ng/mL indicate deficiency (optimal: 30-50 ng/mL)",
"priority": "high",
"timing": "With breakfast (fat-containing meal)",
"duration": "3-6 months, then retest",
"interactions": []
},
{
"name": "Omega-3 Fish Oil",
"dosage": "1000mg EPA+DHA daily",
"reason": "Support cholesterol optimization and cardiovascular health",
"priority": "medium",
"timing": "With meals",
"duration": "Ongoing",
"interactions": []
},
{
"name": "Coenzyme Q10",
"dosage": "100mg daily",
"reason": "Support energy production and heart health",
"priority": "medium",
"timing": "With breakfast",
"duration": "Ongoing",
"interactions": []
}
],
"dietary_recommendations": [
{
"category": "increase",
"foods": ["fatty fish", "leafy greens", "nuts", "olive oil"],
"reason": "Support vitamin D levels and cardiovascular health"
},
{
"category": "decrease",
"foods": ["processed foods", "red meat", "saturated fats"],
"reason": "Help lower LDL cholesterol"
},
{
"category": "avoid",
"foods": ["shellfish", "high-sodium foods"],
"reason": "Patient allergies and hypertension management"
}
],
"lifestyle_recommendations": [
"30 minutes moderate exercise 5 days/week",
"Sun exposure 15-20 minutes daily for vitamin D",
"Stress management through meditation or yoga"
],
"follow_up": {
"retest_date": "2026-03-01",
"parameters_to_monitor": ["VITD", "CHOL", "HDL", "LDL"]
}
},
"api_version": "v1",
"timestamp": "2025-12-22T10:30:00Z"
}
Справка на полетата на отговора
nutrition_plan.educational_insights обект
| Поле | Тип | Описание |
|---|---|---|
blood_marker_education | array | Образователно съдържание за кръвни маркери и тяхното значение |
nutrition_principles | array | Приложими хранителни принципи въз основа на анализа |
blood_marker_education елемент от масив
| Поле | Тип | Описание |
|---|---|---|
marker | string | Име на маркера със статус (напр. "Ferritin (Low)", "Vitamin D (Deficient)") |
explanation | string | Подробно образователно обяснение на маркера |
normal_range | string | Референтен диапазон (специфичен за пол, ако е приложимо) |
food_recommendations.power_foods елемент от масив
| Поле | Тип | Описание |
|---|---|---|
food | string | Име на храната (напр. "Salmon", "Spinach") |
nutrients | array | Списък с ключови хранителни вещества (напр. ["omega-3", "vitamin D", "protein"]) |
serving | string | Препоръчителен размер/честота на порцията (напр. "100g, 3x per week") |
why | string | Защо тази храна е препоръчана въз основа на кръвните маркери |
supplement_recommendations елемент от масив
| Поле | Тип | Описание |
|---|---|---|
supplement | string | Име на добавката (напр. "Vitamin D3", "Iron Bisglycinate") |
dosage | string | Препоръчителна доза (напр. "2000 IU daily", "25mg twice daily") |
timing | string | Кога да се приема (напр. "With breakfast", "On empty stomach") |
duration | string | Продължителност на приема (напр. "3 months then retest", "Ongoing") |
reason | string | Защо е препоръчано въз основа на кръвните маркери и здравните цели |
Пълен cURL пример с отговор
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/nutrition/diet-plan/analyze" \
-H "Content-Type: application/json" \
-d '{
"username": "demo_user",
"password": "demo_pass",
"language": "en",
"patient": {
"age": 42,
"gender": "female",
"weight": 68,
"height": 165,
"activity_level": "moderate",
"conditions": ["iron_deficiency_anemia"],
"allergies": ["gluten"],
"dietary_preferences": ["mediterranean"],
"dietary_restrictions": ["gluten_free"],
"liked_foods": ["salmon", "spinach", "quinoa"],
"disliked_foods": ["liver"],
"meal_frequency": 4,
"budget": "moderate",
"medications": ["ferrous_sulfate"]
},
"blood_test": {
"lab_date": "2025-12-20",
"parameters": [
{"short_name": "FER", "result": 12, "unit": "ng/mL"},
{"short_name": "HGB", "result": 10.8, "unit": "g/dL"},
{"short_name": "VITD", "result": 22, "unit": "ng/mL"},
{"short_name": "B12", "result": 320, "unit": "pg/mL"},
{"short_name": "FOLATE", "result": 8.5, "unit": "ng/mL"}
]
},
"health_goals": ["increase_energy", "improve_iron_levels"]
}'
Отговор:
{
"status": "success",
"data": {
"nutrition_plan": {
"daily_calories": 1850,
"macros": {
"protein": {"grams": 92, "percentage": 20},
"carbohydrates": {"grams": 208, "percentage": 45},
"fats": {"grams": 72, "percentage": 35}
},
"educational_insights": {
"blood_marker_education": [
{
"marker": "Ferritin (Low)",
"explanation": "Ferritin is the storage form of iron in your body. Low levels indicate depleted iron stores, which can lead to fatigue, weakness, and anemia. Your current level of 12 ng/mL is below the optimal range.",
"normal_range": "Women: 20-200 ng/mL (optimal: 50-150 ng/mL)"
},
{
"marker": "Hemoglobin (Low)",
"explanation": "Hemoglobin carries oxygen in your red blood cells. Low hemoglobin confirms iron deficiency anemia and explains symptoms like fatigue and shortness of breath.",
"normal_range": "Women: 12.0-16.0 g/dL"
},
{
"marker": "Vitamin D (Insufficient)",
"explanation": "Vitamin D is essential for calcium absorption, immune function, and energy. Your level of 22 ng/mL is insufficient; optimal levels are 40-60 ng/mL.",
"normal_range": "30-100 ng/mL (optimal: 40-60 ng/mL)"
}
],
"nutrition_principles": [
"Pair iron-rich foods with vitamin C sources to enhance absorption",
"Avoid calcium-rich foods and tea/coffee within 2 hours of iron-rich meals",
"Focus on heme iron sources (meat, fish) which absorb better than plant sources",
"Include vitamin D-rich foods and consider sun exposure for synthesis"
]
},
"food_recommendations": {
"power_foods": [
{
"food": "Grass-fed Beef",
"nutrients": ["heme iron", "B12", "zinc", "protein"],
"serving": "120g, 3-4x per week",
"why": "Highest bioavailable iron source to address your ferritin deficiency"
},
{
"food": "Wild Salmon",
"nutrients": ["vitamin D", "omega-3", "protein", "B12"],
"serving": "150g, 2-3x per week",
"why": "Excellent vitamin D source plus omega-3s for inflammation reduction"
},
{
"food": "Spinach with Lemon",
"nutrients": ["non-heme iron", "folate", "vitamin C"],
"serving": "100g cooked, daily",
"why": "Iron plus vitamin C combination maximizes iron absorption"
},
{
"food": "Quinoa",
"nutrients": ["iron", "protein", "fiber", "magnesium"],
"serving": "1 cup cooked, daily",
"why": "Gluten-free grain with good iron content and complete protein"
},
{
"food": "Pumpkin Seeds",
"nutrients": ["iron", "zinc", "magnesium"],
"serving": "30g (2 tbsp), daily",
"why": "Concentrated iron source for snacking, supports energy production"
}
],
"foods_to_limit": [
{"food": "Coffee/Tea with meals", "reason": "Tannins block iron absorption by up to 60%"},
{"food": "Dairy with iron-rich meals", "reason": "Calcium competes with iron for absorption"}
]
}
},
"supplement_recommendations": [
{
"supplement": "Iron Bisglycinate",
"dosage": "25mg elemental iron",
"timing": "Take with vitamin C on empty stomach, 2 hours away from other supplements",
"duration": "3-6 months, retest ferritin after 3 months",
"reason": "Ferritin at 12 ng/mL requires supplementation; bisglycinate form is gentle on stomach",
"priority": "high"
},
{
"supplement": "Vitamin D3",
"dosage": "2000-4000 IU daily",
"timing": "With breakfast (fat-containing meal) for absorption",
"duration": "Ongoing, retest in 3 months to adjust dose",
"reason": "Level of 22 ng/mL is insufficient; goal is 40-60 ng/mL for optimal health",
"priority": "high"
},
{
"supplement": "Vitamin C",
"dosage": "500mg",
"timing": "Take with iron supplement to enhance absorption",
"duration": "While taking iron supplements",
"reason": "Enhances non-heme iron absorption by up to 6x",
"priority": "medium"
}
],
"meal_plan": {
"breakfast": {
"description": "Quinoa porridge with pumpkin seeds, berries, and coconut milk",
"calories": 420,
"key_nutrients": ["iron", "vitamin C", "fiber"]
},
"lunch": {
"description": "Grilled salmon with roasted vegetables and quinoa",
"calories": 520,
"key_nutrients": ["vitamin D", "omega-3", "protein"]
},
"snack": {
"description": "Orange slices with pumpkin seeds and dark chocolate",
"calories": 220,
"key_nutrients": ["vitamin C", "iron", "magnesium"]
},
"dinner": {
"description": "Grass-fed beef stir-fry with spinach and bell peppers",
"calories": 480,
"key_nutrients": ["heme iron", "vitamin C", "B12"]
}
},
"lifestyle_recommendations": [
"Take iron supplements on an empty stomach for best absorption",
"Get 15-20 minutes of midday sun exposure for vitamin D synthesis",
"Space iron supplements 2 hours away from coffee, tea, and calcium",
"Light exercise can help with energy; avoid intense workouts until iron improves"
],
"follow_up": {
"retest_date": "2026-03-20",
"parameters_to_monitor": ["FER", "HGB", "VITD", "iron saturation"],
"expected_improvements": "Ferritin should increase 20-30 ng/mL, hemoglobin normalize to 12+ g/dL"
}
},
"api_version": "v1",
"timestamp": "2025-12-20T14:45:22Z"
}
API за сравнение на кръвни тестове
Сравнете множество кръвни тестове, за да идентифицирате промени, подобрения и области, изискващи внимание, с AI-базиран анализ. Получете пълни AI наративни резюмета, обясняващи какво се е променило между тестовете.
Анализира 2-20 кръвни теста и предоставя подробно сравнение с AI-генерирани наративни прозрения.
- Изискват се минимум 2 кръвни теста
- Максимум 20 кръвни теста на заявка
- Всеки тест трябва да включва
lab_dateилиresults_date - Поне един общ параметър във всички тестове
Параметри на заявката
| Параметър | Тип | Задължителен | По подразбиране | Описание |
|---|---|---|---|---|
username | string | Да | - | Вашето API потребителско име |
password | string | Да | - | Вашата API парола |
language | string | Не | en | Език на отговора. Вижте поддържаните езици |
blood_tests | array | Да | - | Масив от обекти с кръвни тестове (2-20 теста) |
blood_tests структура на масив
| Поле | Тип | Задължителен | Описание |
|---|---|---|---|
lab_date | string | Да* | Дата на тестването във формат YYYY-MM-DD |
results_date | string | Да* | Алтернатива на lab_date (YYYY-MM-DD) |
parameters | array | Да | Масив от параметри на кръвни тестове |
metadata | object | Не | Допълнителни метаданни (lab_name, notes и др.) |
*За всеки кръвен тест се изисква или lab_date, или results_date.
cURL пример
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/bloodtest/comparison/analyze" \
-H "Content-Type: application/json" \
-d '{
"username": "YOUR_USERNAME",
"password": "YOUR_PASSWORD",
"language": "en",
"blood_tests": [
{
"lab_date": "2025-06-15",
"lab_name": "City Medical Lab",
"parameters": [
{"short_name": "HGB", "result": 12.8, "unit": "g/dL"},
{"short_name": "WBC", "result": 8.2, "unit": "10^9/L"},
{"short_name": "PLT", "result": 245, "unit": "10^9/L"}
]
},
{
"lab_date": "2025-12-15",
"lab_name": "City Medical Lab",
"parameters": [
{"short_name": "HGB", "result": 14.2, "unit": "g/dL"},
{"short_name": "WBC", "result": 7.1, "unit": "10^9/L"},
{"short_name": "PLT", "result": 238, "unit": "10^9/L"}
]
}
]
}'
Python пример
import requests
from typing import Dict, List
def compare_blood_tests(
username: str,
password: str,
blood_tests: List[Dict],
language: str = "en"
) -> Dict:
"""
Compare multiple blood tests with AI-powered narrative analysis.
Args:
username: API username
password: API password
blood_tests: List of blood test objects (2-20 tests)
language: Response language
Returns:
dict: Comparison results with AI narrative insights
"""
url = "https://app.aibloodtestinterpret.com/api/v1/bloodtest/comparison/analyze"
if len(blood_tests) < 2:
raise ValueError("Minimum 2 blood tests required")
if len(blood_tests) > 20:
raise ValueError("Maximum 20 blood tests allowed")
payload = {
"username": username,
"password": password,
"language": language,
"blood_tests": blood_tests
}
response = requests.post(url, json=payload, timeout=120)
response.raise_for_status()
return response.json()
# Example usage
if __name__ == "__main__":
tests = [
{
"lab_date": "2024-06-15",
"parameters": [
{"short_name": "HGB", "result": 12.2, "unit": "g/dL"},
{"short_name": "CHOL", "result": 235, "unit": "mg/dL"},
{"short_name": "LDL", "result": 155, "unit": "mg/dL"}
]
},
{
"lab_date": "2024-12-15",
"parameters": [
{"short_name": "HGB", "result": 14.5, "unit": "g/dL"},
{"short_name": "CHOL", "result": 185, "unit": "mg/dL"},
{"short_name": "LDL", "result": 98, "unit": "mg/dL"}
]
}
]
result = compare_blood_tests("your_username", "your_password", tests)
print(f"Overall trend: {result['data']['comparison_summary']['overall_trend']}")
for param in result['data']['parameter_analysis']:
print(f"{param['parameter_name']}: {param['trend_assessment']}")
Справка на полетата на отговора
| Поле | Тип | Описание |
|---|---|---|
comparison_id | string | Уникален идентификатор за това сравнение (формат: CMP-XXXXXXXX) |
comparison_summary | object | Общо обобщение: key_findings, overall_trend, дати на отчетите, time_interval |
parameter_analysis | array | Подробен анализ за всеки параметър с тип промяна и клинично значение |
health_assessment | object | Области на загриженост, подобрение, положителни развития, рискови фактори |
recommendations | object | Последващи тестове, незабавни действия, промени в начина на живот, насочвания към специалисти |
detailed_interpretation | object | AI наративни секции с резюме за ръководството и клинични препоръки |
parameter_analysis структура на обект
| Поле | Тип | Описание |
|---|---|---|
parameter_name | string | Име на параметър |
report1_value | string | Стойност от първия отчет с единица |
report2_value | string | Стойност от втория отчет с единица |
change_type | string | increased, decreased или stable |
change_magnitude | string | significant, moderate или minor |
clinical_significance | string | AI обяснение какво означава промяната |
trend_assessment | string | positive, negative или neutral |
Примерен отговор
{
"api_version": "1.0.0",
"status": "success",
"message": "Blood test comparison completed successfully",
"timestamp": "2025-12-22T01:12:43.057537Z",
"data": {
"comparison_id": "CMP-F4ACEE52",
"tests_compared": 2,
"date_range": {
"earliest": "2024-06-15",
"latest": "2024-12-15",
"span_days": 183
},
"comparison_summary": {
"overall_trend": "improved",
"report1_date": "2024-06-15",
"report2_date": "2024-12-15",
"time_interval": "183 days between reports",
"key_findings": [
"Hemoglobin and RBC levels normalized indicating resolution of anemia",
"Glucose and HbA1c improved to normal range suggesting better glycemic control",
"Lipid profile improved with total cholesterol, LDL, HDL, and triglycerides normalized"
]
},
"parameter_analysis": [
{
"parameter_name": "Hemoglobin",
"report1_value": "12.2 g/dL",
"report2_value": "14.5 g/dL",
"change_type": "increased",
"change_magnitude": "significant",
"clinical_significance": "Improvement from anemia to normal hemoglobin levels",
"trend_assessment": "positive"
},
{
"parameter_name": "LDL Cholesterol",
"report1_value": "155 mg/dL",
"report2_value": "98 mg/dL",
"change_type": "decreased",
"change_magnitude": "significant",
"clinical_significance": "LDL near optimal range, reducing atherosclerosis risk",
"trend_assessment": "positive"
},
{
"parameter_name": "HDL Cholesterol",
"report1_value": "38 mg/dL",
"report2_value": "55 mg/dL",
"change_type": "increased",
"change_magnitude": "significant",
"clinical_significance": "Improved HDL protective against heart disease",
"trend_assessment": "positive"
}
],
"health_assessment": {
"overall_health_trend": "improved",
"areas_of_improvement": [
"Anemia correction",
"Glycemic control",
"Lipid profile normalization",
"Vitamin D and iron status"
],
"areas_of_concern": [],
"positive_developments": [
"Resolution of anemia",
"Normal glucose and HbA1c",
"Improved cardiovascular risk profile"
],
"risk_factors": [
"Previous iron deficiency anemia",
"Prior dyslipidemia",
"History of impaired glucose metabolism"
]
},
"recommendations": {
"immediate_actions": [
"Continue current supplementation for iron and vitamin D",
"Maintain glycemic and lipid control with diet and exercise"
],
"follow_up_tests": [
"Repeat CBC and iron studies in 3 months",
"Monitor fasting glucose and HbA1c quarterly",
"Lipid panel recheck in 6 months"
],
"lifestyle_modifications": [
"Adopt heart-healthy diet low in saturated fats",
"Increase physical activity to maintain metabolic health"
],
"specialist_referrals": [
"Consult hematologist if anemia recurs",
"Endocrinologist referral if glucose control worsens"
],
"monitoring_frequency": "3 months"
},
"detailed_interpretation": {
"sections": [
{
"title": "Executive Summary",
"content": "The patient shows marked improvement in anemia, glucose metabolism, lipid profile, and vitamin status over 6 months."
},
{
"title": "Clinical Recommendations",
"content": "Continue supplementation and lifestyle measures. Monitor blood counts, iron, glucose, and lipids regularly."
}
]
},
"summary": {
"improved_parameters": 13,
"stable_parameters": 0,
"worsened_parameters": 0,
"overall_trend": "improved"
},
"sandbox_mode": false
}
}
Полетата на отговора използват стандартизирани стойности: overall_trend и trend_assessment (вижте оценката на тенденцията), change_type (increased, decreased, stable).
Справка на ключови думи
Пълна справка за всички стойности на ключови думи за вход, използвани във всички крайни точки на Kantesti API. Използвайте тези точни стойности при отправяне на API заявки.
analysis_type API за анализ на тенденции
Определя типа на анализа на тенденцията, който ще се извърши.
| Стойност | По подразбиране | Описание |
|---|---|---|
comprehensive | ✓ | Пълен анализ със статистики, графики и AI интерпретация |
statistical | Само статистически анализ | |
summary | Само обобщение на високо ниво |
health_goals API за хранене
Здравни цели за персонализирани хранителни препоръки. Множество стойности могат да се предоставят като масив.
| Стойност | Описание |
|---|---|
maintain | Поддържане на текущото здраве (по подразбиране) |
improve_energy | Фокус върху енергийните нива |
weight_management | Здравословно управление на теглото |
heart_health | Сърдечно-съдово здраве |
immune_support | Поддръжка на имунната система |
digestive_health | Храносмилателно здраве |
bone_health | Здраве на костите |
mental_clarity | Когнитивна функция |
dietary_restrictions API за хранене
Хранителни ограничения и алергии. Множество стойности могат да се предоставят като масив. Свободен текст също е приемлив за персонализирани ограничения.
| Стойност | Описание |
|---|---|
low_sodium | Намален прием на натрий |
low_sugar | Намален прием на захар |
low_fat | Намален прием на мазнини |
gluten_free | Без глутен |
dairy_free | Без млечни продукти |
nut_free | Без ядки |
soy_free | Без соя |
egg_free | Без яйца |
halal | Халал-съвместим |
kosher | Кашерно-съвместим |
Свободен текст също е приемлив за персонализирани хранителни ограничения, които не са изброени по-горе.
dietary_preferences API за хранене
Хранителни предпочитания за планиране на хранене.
| Стойност | Описание |
|---|---|
omnivore | Без ограничения (по подразбиране) |
vegetarian | Без месо |
vegan | Без животински продукти |
pescatarian | Вегетарианска + риба |
keto | Кетогенна диета |
paleo | Палеолитна диета |
mediterranean | Средиземноморска диета |
activity_level API за хранене
Ниво на физическа активност за калорични и хранителни изчисления.
| Стойност | Описание |
|---|---|
sedentary | Малко или никакво упражнение |
light | Леки упражнения 1-3 дни/седмица |
moderate | Умерено натоварване 3-5 дни/седмица (по подразбиране) |
active | Тежки упражнения 6-7 дни/седмица |
very_active | Много тежки упражнения или физическа работа |
budget API за хранене
Бюджет за препоръки за храна и добавки.
| Стойност | Описание |
|---|---|
low | Икономични опции |
moderate | Балансирани опции (по подразбиране) |
high | Премиум опции |
gender Всички API-та
Пол на пациента за персонализирани референтни диапазони и препоръки.
| Стойност | Описание |
|---|---|
male | Мъж пациент |
female | Жена пациент |
other | Друго или неопределено |
Изходни ключови думи
Следните ключови думи се появяват в API отговорите. Разбирането на тези стойности ви помага да интерпретирате и показвате резултатите правилно.
evaluation API за кръвни тестове и сравнение
Състояние на оценката на параметъра, показващо как резултатът се сравнява с референтните диапазони.
| Стойност | Описание |
|---|---|
normal | В нормалния референтен диапазон |
low | Под нормалния диапазон |
high | Над нормалния диапазон |
critical_low | Критично ниско (изисква незабавно внимание) |
critical_high | Критично високо (изисква незабавно внимание) |
borderline_low | Леко под нормалния диапазон |
borderline_high | Леко над нормалния диапазон |
trend_assessment API за сравнение и тенденции
Обща оценка на тенденциите на параметрите между тестовете.
| Стойност | Описание |
|---|---|
positive | Подобрен (движи се към нормалния диапазон) |
negative | Влошен (отдалечаващ се от нормалния диапазон) |
stable | Относително непроменен между тестовете |
improving | Обща тенденция на подобрение |
worsening | Обща тенденция на влошаване |
trend_direction API за анализ на тенденции
Посока на промените на стойностите на параметрите с течение на времето.
| Стойност | Описание |
|---|---|
upward | Стойности, нарастващи с течение на времето |
downward | Стойности, намаляващи с течение на времето |
stable | Минимална промяна с течение на времето |
trend_strength API за анализ на тенденции
Величина на наблюдаваната тенденция.
| Стойност | Описание |
|---|---|
strong | >15% промяна между периодите |
moderate | 5-15% промяна между периодите |
mild | <5% промяна между периодите |
health_score / score_interpretation API за здравен резултат
Интерпретация на общия здравен резултат въз основа на анализираните параметри.
| Стойност | Описание |
|---|---|
excellent | Всички маркери в оптимален диапазон |
good | Повечето маркери в нормалния диапазон |
fair | Някои маркери изискват внимание |
poor | Множество маркери изискват внимание |
Служебни крайни точки
Връща информация за API платформата, наличните версии и поддържаните функции. Не се изисква удостоверяване.
Примерен отговор
{
"platform": "Kantesti Blood Test Analysis API",
"versions": ["v6", "v8", "v9", "v10", "v11"],
"latest_version": "v11",
"supported_languages": 100,
"documentation": "https://www.kantesti.net/docs/",
"status": "operational"
}
Крайна точка за здравна проверка за мониторинг. Връща статуса на услугата. Не се изисква удостоверяване.
Примерен отговор
{
"status": "healthy",
"timestamp": "2025-12-22T10:30:00Z",
"uptime": "99.99%"
}
Проверете оставащата си API квота. Изисква удостоверяване.
cURL пример
curl -X POST "https://app.aibloodtestinterpret.com/api/quota/check" \
-H "Content-Type: application/json" \
-d '{"username": "YOUR_USERNAME", "password": "YOUR_PASSWORD"}'
Примерен отговор
{
"status": "success",
"quota": {
"remaining": 847,
"total": 1000,
"reset_date": "2026-01-01",
"plan": "professional"
}
}
API за оценка на семейния здравен риск
API за оценка на семейния здравен риск на Kantesti е AI-базирана платформа за анализ на наследствен здравен риск. Тя генерира изчерпателни отчети за семейно здраве чрез анализ на семейна медицинска история, здравни профили на пациенти и данни за кръвни тестове, за да идентифицира наследствени рискови фактори и да предостави персонализирани препоръки за превантивни грижи.
AI-базиран анализ на наследствен риск
API за семейно здраве използва усъвършенствани AI модели за кръстосано съпоставяне на семейна медицинска история с данни за кръвни тестове на пациента, идентифицирайки модели на наследствен риск в категориите сърдечно-съдови, метаболитни, онкологични, неврологични, респираторни, автоимунни, генетични, психично здраве и бъбречно-чернодробни състояния. Отчетите включват оценка на риска, времеви линии за превантивни грижи, препоръки за генетичен скрининг и насоки за начин на живот — всички локализирани на 100+ езика.
- Анализ на наследствен риск — Класификация на висок, умерен и нисък риск с подробна оценка
- Анализ на семейно дърво — Картографиране на риска по бащина и майчина линия с комбинирани рискови фактори
- Корелация на кръвни тестове — Кръстосано съпоставяне на семейна история с параметри на кръвни тестове
- Препоръки за генетичен скрининг — Персонализирани предложения за генетично тестване
- График на превантивни грижи — Подходящи за възрастта графици за скрининг въз основа на семейния риск
- Анализ на лекарства — Оценка на взаимодействия между лекарства и наследствена чувствителност
- Поддръжка на 100+ езика — Пълна локализация на отчета на над 100 езика
- Sandbox режим — Тествайте интеграцията без консумация на кредити
- 9 категории състояния — Сърдечно-съдови, метаболитни, онкологични, неврологични, респираторни, автоимунни, генетични, психично здраве, бъбречно-чернодробни
- 14 семейни отношения — Баща, майка, братя/сестри, баби/дядовци, чичовци, лели, деца
Резюме на крайните точки
| Крайна точка | Метод | Описание | Удостоверяване |
|---|---|---|---|
/api/v1/family-health/analyze |
POST | Генериране на изчерпателен отчет за оценка на семейния здравен риск | Задължително (1 кредит) |
/api/v1/family-health/validate |
POST | Валидирайте данните на заявката преди анализ (без консумация на квота) | Задължително (безплатно) |
/api/v1/family-health/supported-languages |
GET | Списък на всички 100+ поддържани езика | Не е задължително |
/api/v1/family-health/condition-categories |
GET | Списък на всички категории медицински състояния | Не е задължително |
/api/v1/family-health/family-relations |
GET | Списък на всички поддържани типове семейни отношения | Не е задължително |
/api/v1/family-health/sandbox/analyze |
POST | Sandbox тестване с примерни данни (без консумация на квота) | Задължително (безплатно) |
Генерирайте изчерпателен AI-базиран отчет за оценка на семейния здравен риск. Анализира семейна медицинска история, здравни профили на пациенти и данни за кръвни тестове, за да идентифицира наследствени рискови фактори с персонализирани препоръки за превантивни грижи.
Параметри на заявката (JSON тяло)
| Параметър | Тип | Задължителен | Описание |
|---|---|---|---|
username | string | Да | Вашето API потребителско име |
password | string | Да | Вашата API парола |
patient_data | object | Да | Информация за пациента (виж по-долу) |
family_members | array | Да* | Масив от обекти на семейни членове (макс 100). *Задължителен, ако health_profile отсъства |
health_profile | object | Да* | Здравен профил на пациента. *Задължителен, ако family_members отсъства |
blood_test_data | array | Не | Масив от обекти с данни за кръвни тестове за корелационен анализ |
language | string | Не | Код на езика за отговор (по подразбиране: en). Поддържат се 100+ езика |
patient_data обект
| Поле | Тип | Задължителен | Описание |
|---|---|---|---|
name | string | Не | Пълно име на пациента |
age | integer | Да | Възраст на пациента в години |
gender | string | Да | male, female или other |
dob | string | Не | Дата на раждане (YYYY-MM-DD) |
family_members елемент от масив
| Поле | Тип | Задължителен | Описание |
|---|---|---|---|
relation | string | Да | Тип на отношението: father, mother, brother, sister, paternal_grandfather, paternal_grandmother, maternal_grandfather, maternal_grandmother, paternal_uncle, paternal_aunt, maternal_uncle, maternal_aunt, son, daughter |
age | integer | Не | Възраст на семеен член |
conditions | array | Не | Масив от известни медицински състояния (низове) |
age_at_diagnosis | integer | Не | Възраст при диагностициране на състоянието |
deceased | boolean | Не | Дали семейният член е починал |
age_at_death | integer | Не | Възраст при смъртта (ако е починал) |
cause_of_death | string | Не | Причина за смъртта (ако е починал) |
cURL пример
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/family-health/analyze" \
-H "Content-Type: application/json" \
-d '{
"username": "YOUR_USERNAME",
"password": "YOUR_PASSWORD",
"patient_data": {
"name": "Jane Doe",
"age": 42,
"gender": "female",
"dob": "1984-03-15"
},
"family_members": [
{
"relation": "father",
"age": 70,
"conditions": ["hypertension", "type2_diabetes"],
"deceased": false
},
{
"relation": "mother",
"age": 67,
"conditions": ["breast_cancer", "osteoporosis"],
"deceased": false
},
{
"relation": "paternal_grandfather",
"conditions": ["coronary_artery_disease"],
"deceased": true,
"age_at_death": 72,
"cause_of_death": "heart_attack"
}
],
"health_profile": {
"current_medications": ["metformin"],
"allergies": ["penicillin"],
"chronic_conditions": ["prediabetes"],
"lifestyle_factors": ["sedentary", "non_smoker"]
},
"blood_test_data": [
{"parameter": "glucose", "value": 110, "unit": "mg/dL"},
{"parameter": "HbA1c", "value": 5.9, "unit": "%"},
{"parameter": "total_cholesterol", "value": 220, "unit": "mg/dL"}
],
"language": "en"
}'
Python пример
import requests
def family_health_analyze(username: str, password: str, patient_data: dict,
family_members: list = None, health_profile: dict = None,
blood_test_data: list = None, language: str = "en"):
"""
Generate a family health risk assessment report using Kantesti API.
AI-powered hereditary risk analysis with 100+ language support.
Args:
username: API username
password: API password
patient_data: Patient info dict with 'age' and 'gender' (required)
family_members: List of family member dicts with medical history
health_profile: Patient health profile dict
blood_test_data: Optional blood test data for correlation
language: Report language code (default: en)
Returns:
dict: Full family health risk assessment report
"""
url = "https://app.aibloodtestinterpret.com/api/v1/family-health/analyze"
payload = {
"username": username,
"password": password,
"patient_data": patient_data,
"language": language
}
if family_members:
payload["family_members"] = family_members
if health_profile:
payload["health_profile"] = health_profile
if blood_test_data:
payload["blood_test_data"] = blood_test_data
response = requests.post(url, json=payload, timeout=120)
response.raise_for_status()
return response.json()
# Example usage
if __name__ == "__main__":
result = family_health_analyze(
username="your_username",
password="your_password",
patient_data={"name": "Jane Doe", "age": 42, "gender": "female"},
family_members=[
{"relation": "father", "age": 70, "conditions": ["hypertension", "type2_diabetes"]},
{"relation": "mother", "age": 67, "conditions": ["breast_cancer"]},
],
health_profile={"chronic_conditions": ["prediabetes"]},
blood_test_data=[{"parameter": "glucose", "value": 110, "unit": "mg/dL"}],
language="en"
)
print(f"Status: {result['status']}")
report = result["data"]["report_data"]
print(f"Risk Level: {report['risk_assessment']['overall_risk_level']}")
for category, risk in report["risk_assessment"].items():
if isinstance(risk, dict):
print(f" {category}: {risk.get('level', 'N/A')} (score: {risk.get('score', 'N/A')})")
C++ пример (libcurl)
#include <iostream>
#include <string>
#include <curl/curl.h>
size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* userp) {
userp->append((char*)contents, size * nmemb);
return size * nmemb;
}
std::string familyHealthAnalyze(const std::string& username,
const std::string& password,
const std::string& jsonPayload) {
CURL* curl = curl_easy_init();
std::string response;
if (curl) {
struct curl_slist* headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_URL,
"https://app.aibloodtestinterpret.com/api/v1/family-health/analyze");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, jsonPayload.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 120L);
CURLcode res = curl_easy_perform(curl);
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
}
return response;
}
int main() {
std::string payload = R"({
"username": "your_username",
"password": "your_password",
"patient_data": {"name": "Jane Doe", "age": 42, "gender": "female"},
"family_members": [
{"relation": "father", "age": 70, "conditions": ["hypertension"]},
{"relation": "mother", "age": 67, "conditions": ["breast_cancer"]}
],
"language": "en"
})";
std::string result = familyHealthAnalyze("user", "pass", payload);
std::cout << result << std::endl;
return 0;
}
Postman пример
Method: POST
URL: https://app.aibloodtestinterpret.com/api/v1/family-health/analyze
Headers:
Content-Type: application/json
Body (raw JSON):
{
"username": "YOUR_USERNAME",
"password": "YOUR_PASSWORD",
"patient_data": {
"age": 42,
"gender": "female"
},
"family_members": [
{"relation": "father", "age": 70, "conditions": ["hypertension"]}
],
"language": "en"
}
Примерен отговор
{
"status": "success",
"data": {
"report_data": {
"report_title": "Family Health Risk Assessment Report",
"executive_summary": "Based on family medical history analysis...",
"hereditary_risk_analysis": {
"high_risk": [
{
"condition": "Cardiovascular Disease",
"risk_score": 75,
"contributing_factors": ["Paternal hypertension", "Grandfather coronary artery disease"],
"recommendation": "Regular cardiac screening recommended"
}
],
"moderate_risk": [
{
"condition": "Type 2 Diabetes",
"risk_score": 60,
"contributing_factors": ["Paternal type 2 diabetes", "Elevated glucose levels"],
"recommendation": "Annual HbA1c and fasting glucose monitoring"
}
],
"low_risk": []
},
"medication_analysis": {
"current_medications": ["metformin"],
"hereditary_sensitivities": [],
"recommendations": ["Continue metformin for prediabetes management"]
},
"blood_test_family_correlation": {
"correlated_findings": [
"Elevated glucose (110 mg/dL) correlates with paternal diabetes history",
"Cholesterol level (220 mg/dL) warrants monitoring given cardiovascular family history"
]
},
"genetic_screening_recommendations": [
"BRCA1/BRCA2 genetic testing (maternal breast cancer history)",
"Cardiovascular genetic panel (strong paternal cardiac history)"
],
"lifestyle_recommendations": [
"Adopt heart-healthy Mediterranean diet",
"150 minutes weekly moderate aerobic exercise",
"Maintain healthy BMI (18.5-24.9)"
],
"family_tree_summary": {
"paternal_lineage": {"risk_factors": ["hypertension", "type2_diabetes", "coronary_artery_disease"]},
"maternal_lineage": {"risk_factors": ["breast_cancer", "osteoporosis"]},
"combined_risk_factors": ["cardiovascular", "metabolic", "oncological"]
},
"preventive_care_timeline": [
{"age_range": "40-45", "screenings": ["Annual mammogram", "Cardiac stress test", "HbA1c every 6 months"]},
{"age_range": "45-50", "screenings": ["Colonoscopy baseline", "Bone density scan", "Lipid panel annually"]},
{"age_range": "50+", "screenings": ["Biennial mammogram", "Annual cardiac checkup", "Diabetes screening"]}
]
}
},
"message": "Family health risk assessment completed successfully",
"timestamp": "2026-03-23T10:30:00Z",
"api_version": "1.0.0"
}
Кодове за грешки на API за семейно здраве
| Код на грешка | HTTP статус | Описание |
|---|---|---|
AUTH_1001 | 401 | Липсващи идентификационни данни за удостоверяване |
AUTH_1002 | 401 | Невалидно потребителско име или парола |
QUOTA_1101 | 403 | Недостатъчна API квота |
QUOTA_1103 | 429 | Лимитът на скоростта е превишен |
VAL_2001 | 400 | Липсва задължително поле (patient_data.age, patient_data.gender) |
VAL_2002 | 400 | Невалиден формат на данните |
VAL_2003 | 400 | Неподдържан код на език |
VAL_2005 | 400 | Данните на заявката не могат да са празни |
VAL_2006 | 400 | Масивът надвишава максималния размер (макс 100 семейни членове) |
VAL_2007 | 400 | Невалидна структура на данните на пациента |
PROC_3001 | 500 | Генерирането на отчета е неуспешно |
PROC_3003 | 500 | AI грешка при обработка |
SRV_5001 | 500 | Вътрешна сървърна грешка |
Валидирайте данните на заявката си преди изпращане за анализ. Не се консумира квота. Използвайте тази крайна точка, за да проверите дали структурата на вашия payload е правилна преди извикване на /analyze.
cURL пример
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/family-health/validate" \
-H "Content-Type: application/json" \
-d '{
"username": "YOUR_USERNAME",
"password": "YOUR_PASSWORD",
"patient_data": {"age": 42, "gender": "female"},
"family_members": [{"relation": "father", "conditions": ["hypertension"]}],
"language": "en"
}'
Примерен отговор
{
"status": "success",
"data": {
"validation": {
"valid": true,
"data_validation": {"valid": true, "error": null},
"language_valid": true
}
},
"message": "Validation completed",
"timestamp": "2026-03-23T10:30:00Z",
"api_version": "1.0.0"
}
Sandbox крайна точка за семейно здраве
Тествайте интеграцията на API за семейно здраве без консумация на кредити. Sandbox крайната точка връща реалистични примерни данни от отчет.
| API | Sandbox крайна точка | Описание |
|---|---|---|
| Анализ на семейно здраве | /api/v1/family-health/sandbox/analyze | Връща примерни данни за отчет за оценка на семейния здравен риск |
Референтни крайни точки (не се изисква удостоверяване)
Тези крайни точки предоставят референтни данни за изграждане на вашата интеграция. Не се изисква удостоверяване.
| Крайна точка | Метод | Описание |
|---|---|---|
/api/v1/family-health/supported-languages |
GET | Връща всички 100+ поддържани езикови кодове и имена |
/api/v1/family-health/condition-categories |
GET | Връща всички 9 категории състояния с техните състояния (Сърдечно-съдови, Метаболитни, Онкологични, Неврологични, Респираторни, Автоимунни, Генетични, Психично здраве, Бъбречно-чернодробни) |
/api/v1/family-health/family-relations |
GET | Връща всички 14 поддържани типа семейни отношения |
ICR - API за интелигентно разпознаване на символи
Kantesti ICR (Интелигентно разпознаване на символи) API е усъвършенствана технология за извличане на текст от документи, която надхвърля далеч традиционния OCR. Захранван от собствения AI двигател на Kantesti, ICR предоставя структуриран JSON изход от всякакъв тип документи, включително медицински отчети, фактури, формуляри и др.
Kantesti ICR срещу традиционен OCR
В сравнителни тестове Kantesti ICR демонстрира 79% по-висока производителност в сравнение с традиционните OCR решения. ICR разбира структурата на документа, запазва оформленията на таблици, извлича метаданни и връща чист структуриран JSON — докато OCR предоставя само необработен неструктуриран текст. ICR използва AI-базирано интелигентно разпознаване, за да разбира контекста, да открива автоматично типовете документи и да предоставя структурирани данни, готови за интеграция.
- Структуриран JSON изход — Таблици, секции, метаданни и необработен текст в чист JSON формат
- Откриване на тип документ — Автоматично идентифициране на медицински отчети, фактури, формуляри, писма и др.
- Извличане на таблици — Запазва заглавията на таблиците и данните на редовете с пълна структура
- Мултиформатна поддръжка — Обработка на документи PDF, JPG, JPEG, PNG
- Интеграция на кръвен тест (Kan) — Специализирана крайна точка за извличане на документи с кръвни тестове
- Sandbox режим — Тествайте интеграцията без консумация на кредити
- Обработка, безопасна за нишки — Едновременна обработка на документи с RLock
- Кредитна система — 0,5 кредита на API извикване
Резюме на ICR крайните точки
| Крайна точка | Метод | Описание | Цена |
|---|---|---|---|
/api/icr/v1/extract |
POST | ICR извличане на текст от документи | 0,5 кредита |
/api/icr/v1/sandbox |
POST | ICR sandbox тестване (без обработка) | Безплатно |
/api/icr/v1/kan |
POST | Анализ на документи с кръвни тестове | 0,5 кредита |
/api/icr/v1/kan/sandbox |
POST | Sandbox тестване на кръвни тестове | Безплатно |
/api/icr/info |
GET | API документация и функции | Безплатно |
/api/icr/health |
GET | Крайна точка за здравна проверка | Безплатно |
/api/icr/v1/quota |
POST | Проверка на оставащи ICR кредити | Безплатно |
Извличане на цялото текстово съдържание от качените документи с помощта на технологията Kantesti ICR. Връща структуриран JSON с откриване на типа на документа, извличане на таблици, парсване на секции и метаданни.
Параметри на заявката
| Параметър | Тип | Задължителен | Описание |
|---|---|---|---|
username | string | Да | Вашето API потребителско име |
password | string | Да | Вашата API парола |
file | file | Да | Файл на документа (PDF, JPG, JPEG, PNG) |
language | string | Не | Код на изходния език (по подразбиране: en). Вижте поддържаните езици. |
cURL пример
curl -X POST "https://app.aibloodtestinterpret.com/api/icr/v1/extract" \
-F "username=YOUR_USERNAME" \
-F "password=YOUR_PASSWORD" \
-F "language=en" \
-F "[email protected]"
Python пример
import requests
def icr_extract(file_path: str, username: str, password: str, language: str = "en"):
"""
Extract text from a document using Kantesti ICR API.
79% faster and more accurate than traditional OCR.
Args:
file_path: Path to the document (PDF, JPG, JPEG, PNG)
username: API username
password: API password
language: Output language code (default: en)
Returns:
dict: Structured JSON with document content, tables, sections, metadata
"""
url = "https://app.aibloodtestinterpret.com/api/icr/v1/extract"
with open(file_path, "rb") as f:
files = {"file": (file_path, f)}
data = {
"username": username,
"password": password,
"language": language
}
response = requests.post(url, files=files, data=data, timeout=120)
response.raise_for_status()
return response.json()
# Example usage
if __name__ == "__main__":
result = icr_extract(
file_path="medical_report.pdf",
username="your_username",
password="your_password",
language="en"
)
print(f"Status: {result['status']}")
print(f"Document Type: {result['data']['document_type']}")
print(f"Pages: {result['data']['page_count']}")
for page in result['data']['pages']:
print(f" Page {page['page_number']}: {len(page['content']['sections'])} sections")
for table in page['content'].get('tables', []):
print(f" Table: {len(table['rows'])} rows x {len(table['headers'])} cols")
C++ пример (libcurl)
#include <iostream>
#include <string>
#include <curl/curl.h>
size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* userp) {
userp->append((char*)contents, size * nmemb);
return size * nmemb;
}
std::string icrExtract(const std::string& filePath,
const std::string& username,
const std::string& password,
const std::string& language = "en") {
CURL* curl = curl_easy_init();
std::string response;
if (curl) {
curl_mime* form = curl_mime_init(curl);
curl_mimepart* field;
field = curl_mime_addpart(form);
curl_mime_name(field, "username");
curl_mime_data(field, username.c_str(), CURL_ZERO_TERMINATED);
field = curl_mime_addpart(form);
curl_mime_name(field, "password");
curl_mime_data(field, password.c_str(), CURL_ZERO_TERMINATED);
field = curl_mime_addpart(form);
curl_mime_name(field, "language");
curl_mime_data(field, language.c_str(), CURL_ZERO_TERMINATED);
field = curl_mime_addpart(form);
curl_mime_name(field, "file");
curl_mime_filedata(field, filePath.c_str());
curl_easy_setopt(curl, CURLOPT_URL,
"https://app.aibloodtestinterpret.com/api/icr/v1/extract");
curl_easy_setopt(curl, CURLOPT_MIMEPOST, form);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 120L);
CURLcode res = curl_easy_perform(curl);
curl_mime_free(form);
curl_easy_cleanup(curl);
}
return response;
}
int main() {
std::string result = icrExtract("medical_report.pdf", "username", "password");
std::cout << result << std::endl;
return 0;
}
Примерен отговор
{
"status": "success",
"data": {
"document_type": "blood_test_report",
"page_count": 1,
"pages": [
{
"page_number": 1,
"content": {
"raw_text": "Cologne University Hospital - Blutbild\n\nPatient: Max Mustermann\nDOB: 15.03.1990\nGender: Male\nDate: 10.01.2026\n\nGlucose: 92 mg/dL (74-100)\nALT: 22 U/L (<35)\nCreatinine: 0.9 mg/dL (0.7-1.2)\nWBC: 7.2 10*9/L (3.8-10)\nHGB: 148 g/L (130-175)\nPLT: 230 10*9/L (150-400)",
"sections": [
{"type": "header", "content": "Cologne University Hospital - Blutbild"},
{"type": "paragraph", "content": "Patient: Max Mustermann, DOB: 15.03.1990, Male"},
{"type": "table", "content": "Blood test results with 6 parameters"}
],
"tables": [
{
"headers": ["Test", "Result", "Unit", "Reference Range"],
"rows": [
["Glucose", "92", "mg/dL", "74 - 100"],
["ALT", "22", "U/L", "< 35"],
["Creatinine", "0.9", "mg/dL", "0.7 - 1.2"],
["WBC", "7.2", "10*9/L", "3.8 - 10"],
["HGB", "148", "g/L", "130 - 175"],
["PLT", "230", "10*9/L", "150 - 400"]
]
}
]
}
}
],
"metadata": {
"detected_language": "de",
"confidence": "high"
},
"icr_metadata": {
"engine": "kantesti-icr",
"version": "1.0.0",
"images_processed": 1,
"timestamp": "2026-02-14T10:30:00Z"
}
},
"credit_cost": 0.5,
"api_version": "icr-v1",
"timestamp": "2026-02-14T10:30:00Z"
}
ICR кодове за грешки
| Код на грешка | HTTP статус | Описание |
|---|---|---|
ICR_AUTH_1001 | 401 | Липсващи идентификационни данни за удостоверяване |
ICR_AUTH_1002 | 401 | Невалидно потребителско име или парола |
ICR_QUOTA_1101 | 403 | Недостатъчно кредити (изисквани са 0,5 кредита на извикване) |
ICR_VAL_2001 | 400 | Не е качен файл |
ICR_VAL_2002 | 400 | Невалиден формат на файл (поддържани: PDF, JPG, JPEG, PNG) |
ICR_VAL_2003 | 400 | Не се разрешават множество PDF файлове в една заявка |
ICR_VAL_2004 | 400 | Не могат да се смесват PDF и изображения в една заявка |
ICR_PROC_3001 | 500 | ICR извличането на текст е неуспешно |
ICR_PROC_3004 | 504 | Изтекло време на обработка |
ICR_SRV_5001 | 500 | Вътрешна сървърна грешка |
ICR_SRV_5002 | 503 | ICR услугата е временно недостъпна |
Анализ на документи с кръвни тестове с помощта на двигателя Kantesti Kan. Обработва документи с кръвни тестове и извлича структурирани тестови параметри, информация за пациента и метаданни.
Параметри на заявката
| Параметър | Тип | Задължителен | Описание |
|---|---|---|---|
username | string | Да | Вашето API потребителско име |
password | string | Да | Вашата API парола |
file | file | Да | Файл с кръвен тест (PDF, JPG, JPEG, PNG) |
language | string | Не | Код на езика на отчета (по подразбиране: en) |
pdf_password | string | Не | Парола за криптирани PDF файлове |
cURL пример
curl -X POST "https://app.aibloodtestinterpret.com/api/icr/v1/kan" \
-F "username=YOUR_USERNAME" \
-F "password=YOUR_PASSWORD" \
-F "language=en" \
-F "file=@blood_test.pdf"
Python пример
import requests
def icr_kan_analyze(file_path: str, username: str, password: str,
language: str = "en", pdf_password: str = None):
"""
Analyze blood test document using Kantesti ICR Kan engine.
Args:
file_path: Path to blood test document (PDF, JPG, JPEG, PNG)
username: API username
password: API password
language: Report language code (default: en)
pdf_password: Password for encrypted PDFs (optional)
Returns:
dict: Structured blood test parameters with patient info
"""
url = "https://app.aibloodtestinterpret.com/api/icr/v1/kan"
with open(file_path, "rb") as f:
files = {"file": (file_path, f)}
data = {
"username": username,
"password": password,
"language": language
}
if pdf_password:
data["pdf_password"] = pdf_password
response = requests.post(url, files=files, data=data, timeout=120)
response.raise_for_status()
return response.json()
# Example usage
if __name__ == "__main__":
result = icr_kan_analyze(
file_path="blood_test_report.pdf",
username="your_username",
password="your_password",
language="en"
)
print(f"Status: {result['status']}")
params = result['data']['test_parameters']
print(f"Parameters found: {len(params)}")
for param in params:
print(f" {param['name']}: {param['value']} {param['unit']} ({param['reference_range']})")
Примерен отговор
{
"status": "success",
"data": {
"institute_info": {
"name": "Cologne University Hospital"
},
"test_metadata": {
"report_date": "10.01.2026",
"sample_type": "Blood",
"test_date": "10.01.2026"
},
"test_parameters": [
{"name": "Glucose (Fasting Blood Sugar)", "value": "92", "unit": "mg/dL", "reference_range": "74 - 100", "type": "range"},
{"name": "Alanine aminotransferase (ALT)", "value": "22", "unit": "U/L", "reference_range": "< 35", "type": "range"},
{"name": "Creatinine", "value": "0.9", "unit": "mg/dL", "reference_range": "0.7 - 1.2", "type": "range"},
{"name": "Cholesterol", "value": "185", "unit": "mg/dL", "reference_range": "< 200", "type": "range"},
{"name": "TSH", "value": "2.1", "unit": "mIU/L", "reference_range": "0.38 - 5.33", "type": "range"},
{"name": "WBC (White Blood Cell Count)", "value": "7.2", "unit": "10*9/L", "reference_range": "3.8 - 10", "type": "range"},
{"name": "RBC (Red Blood Cell Count)", "value": "4.9", "unit": "10*12/L", "reference_range": "4.5 - 5.5", "type": "range"},
{"name": "HGB (Hemoglobin)", "value": "148", "unit": "g/L", "reference_range": "130 - 175", "type": "range"},
{"name": "PLT (Platelet Count)", "value": "230", "unit": "10*9/L", "reference_range": "150 - 400", "type": "range"},
{"name": "HBsAg", "value": "Negative", "unit": "", "reference_range": "", "type": "binary"}
],
"tester_info": {
"age": "35 (Calculated from 15.03.1990 to 10.01.2026)",
"gender": "Male"
},
"kan_metadata": {
"engine": "kantesti-kan",
"version": "1.0.0",
"language": "en",
"timestamp": "2026-02-14T10:30:00Z"
}
},
"credit_cost": 0.5,
"api_version": "icr-v1",
"timestamp": "2026-02-14T10:30:00Z"
}
ICR Sandbox крайни точки
Тествайте ICR интеграцията без консумация на кредити. Sandbox крайните точки връщат реалистични примерни данни.
| API | Sandbox крайна точка | Описание |
|---|---|---|
| ICR извличане | /api/icr/v1/sandbox | Връща примерни ICR данни за извличане |
| ICR Kan | /api/icr/v1/kan/sandbox | Връща примерни данни за параметри на кръвен тест |
ICR срещу OCR сравнение на производителността
| Метрика | Kantesti ICR | Традиционен OCR | Подобрение |
|---|---|---|---|
| Скорост на обработка | средно 1,2 сек | средно 5,7 сек | 79% по-бързо |
| Точност на текста | 99.7% | 92.1% | +7.6% |
| Откриване на таблици | 98.9% | 71.2% | +27.7% |
| Структуриран изход | JSON със секции, таблици, метаданни | Суров неструктуриран текст | Пълна структура |
| Откриване на тип документ | Автоматично | Не е налично | AI-базиран |
| Многоезична поддръжка | 100+ езика | 30-50 езика | 2x+ покритие |
| Поддръжка на медицински документи | Специализиран | Общ | Опит в областта |