API крайни точки

Пълна справка за всички крайни точки на Kantesti Blood Test API с примери за код на множество езици.

Основен URL
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, за да извлечете параметри и да генерирате изчерпателни медицински интерпретации.

POST /api/v11/01-06-2025/analyze Най-нов

Производствена крайна точка за анализ на кръвни тестове. Консумира 1 кредит на заявка.

Параметри на заявката

ПараметърТипЗадължителенОписание
usernamestringДаВашето API потребителско име
passwordstringДаВашата API парола
filefileДаИзображение на кръвен тест (PNG, JPG, WEBP) или PDF. Макс 20MB.
languagestringНеКод на езика за отговор (по подразбиране: 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"
}

Справка на полетата на отговора

Коренно ниво
ПолеТипОписание
statusstring"success" или "error"
dataobjectСъдържа всички резултати от анализа
timestampstringISO 8601 времеви печат на отговора
api_versionstringAPI версия, използвана за обработка
data.metadata обект
ПолеТипОписание
lab_datestringДата на вземане на кръвта (YYYY-MM-DD)
results_datestringДата на издаване на резултатите (YYYY-MM-DD)
lab_namestringИме на лабораторията
lab_citystringГрад на лабораторията
lab_countrystringДържава на лабораторията
patient_namestringПълно име на пациента (само метаданни, не се изпраща за интерпретация)
patient_agestringВъзраст на пациента
patient_sexstring"male", "female" или "other"
data.parameters елемент от масив
ПолеТипОписание
categorystringКатегория на параметъра (напр. "Complete Blood Count", "Lipid Panel")
long_namestringПълно име на параметър
short_namestringСъкратено име на параметър
resultstringИзмерена стойност
unitstringМерна единица
range_minstringМинимален референтен диапазон
range_maxstringМаксимален референтен диапазон
evaluationstringСтатус на резултата. Вижте стойностите на оценката
data.interpretation елемент от масив
ПолеТипОписание
titlestringЗаглавие на секцията (напр. "Overall Health Assessment")
contentstringAI-генерирана медицинска интерпретация

Пълен примерен отговор

{
  "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 използва стандартизирани стойности. Вижте стойностите на оценката.

POST /api/v11/health-score/analyze Най-нов

Производствена крайна точка с изчерпателно изчисление на здравния резултат и анализ на риска от заболявания.

Допълнителни полета на отговора

{
  "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 квота. Използвайте ги за разработка и тестване на интеграция.

Sandbox предимства
  • Без консумация на квота
  • Връща реалистични тестови данни
  • Същият формат на заявка като в производството
  • Тествайте интеграцията преди пускане в производство
  • Налично за всички API версии
APISandbox крайна точка
Кръвен тест 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 за сравнение срещу API за анализ на тенденции

Изберете правилния API за вашата употреба:

ХарактеристикаAI сравнение на кръвни тестовеАнализ на тенденции
Основен фокусAI наративно сравнениеСтатистически анализ на тенденции
AI обработкаПълен AI наративAI-подобрено + статистики
Изходен типНаративни резюметаГрафики, статистики, модели
Най-добър заКакво се е променило между тестоветеДългосрочно проследяване на параметри
Мин. тестове22
Макс. тестове2050

API за анализ на тенденции

Анализирайте тенденциите на здравните параметри във времето с помощта на AI-базирано разпознаване на модели. Идентифицирайте подобрения, влошавания и приложими прозрения от исторически данни за кръвни тестове.

AI за хранителен режим с добавки

Генериране на персонализирани хранителни планове, препоръки за диета и предложения за добавки въз основа на анализ на кръвни тестове с усъвършенствани AI алгоритми.

POST /api/v1/nutrition/diet-plan/analyze Ново

Генерира изчерпателни препоръки за хранене и добавки въз основа на параметрите на кръвните тестове и профила на пациента.

Параметри на заявката

ПараметърТипЗадължителенОписание
usernamestringДаВашето API потребителско име
passwordstringДаВашата API парола
languagestringНеЕзик на отговора (по подразбиране: en). Вижте поддържаните езици.
patientobjectДаДемографски и здравни данни за пациента
blood_testobjectДаПараметри на кръвни тестове
health_goalsarrayНеЗдравни цели. Вижте стойностите.
dietary_restrictionsarrayНеХранителни ограничения. Вижте стойностите.

Схема на обект пациент

Обект с демографски данни за пациента с gender (вижте стойностите) и activity_level (вижте стойностите).

ПолеТипЗадължителенПо подразбиранеОписание
ageintegerДа-Възраст на пациента в години (18-120)
genderstringДа-Пол на пациента. Вижте стойностите
weightnumberНеnullТегло в кг (за калорични изчисления)
heightnumberНеnullРъст в см (за изчисления на BMI)
conditionsarrayНе[]Медицински състояния (напр. ["diabetes", "hypertension"])
allergiesarrayНе[]Алергии към храни/добавки (напр. ["shellfish", "nuts"])
dietary_preferencesarrayНе[]Хранителни предпочитания. Вижте стойностите
activity_levelstringНе"moderate"Ниво на физическа активност. Вижте стойностите
dietary_restrictionsarrayНе[]Хранителни ограничения. Вижте стойностите
liked_foodsarrayНе[]Предпочитани храни за включване (напр. ["salmon", "spinach"])
disliked_foodsarrayНе[]Храни за избягване в препоръките (напр. ["broccoli"])
meal_frequencyintegerНе3Предпочитани хранения на ден (2-6)
budgetstringНе"moderate"Бюджет за препоръки. Вижте стойностите
medicationsarrayНе[]Текущи лекарства за проверки на взаимодействия
{
  "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_educationarrayОбразователно съдържание за кръвни маркери и тяхното значение
nutrition_principlesarrayПриложими хранителни принципи въз основа на анализа
blood_marker_education елемент от масив
ПолеТипОписание
markerstringИме на маркера със статус (напр. "Ferritin (Low)", "Vitamin D (Deficient)")
explanationstringПодробно образователно обяснение на маркера
normal_rangestringРеферентен диапазон (специфичен за пол, ако е приложимо)
food_recommendations.power_foods елемент от масив
ПолеТипОписание
foodstringИме на храната (напр. "Salmon", "Spinach")
nutrientsarrayСписък с ключови хранителни вещества (напр. ["omega-3", "vitamin D", "protein"])
servingstringПрепоръчителен размер/честота на порцията (напр. "100g, 3x per week")
whystringЗащо тази храна е препоръчана въз основа на кръвните маркери
supplement_recommendations елемент от масив
ПолеТипОписание
supplementstringИме на добавката (напр. "Vitamin D3", "Iron Bisglycinate")
dosagestringПрепоръчителна доза (напр. "2000 IU daily", "25mg twice daily")
timingstringКога да се приема (напр. "With breakfast", "On empty stomach")
durationstringПродължителност на приема (напр. "3 months then retest", "Ongoing")
reasonstringЗащо е препоръчано въз основа на кръвните маркери и здравните цели

Пълен 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 наративни резюмета, обясняващи какво се е променило между тестовете.

POST /api/v1/bloodtest/comparison/analyze

Анализира 2-20 кръвни теста и предоставя подробно сравнение с AI-генерирани наративни прозрения.

Изисквания
  • Изискват се минимум 2 кръвни теста
  • Максимум 20 кръвни теста на заявка
  • Всеки тест трябва да включва lab_date или results_date
  • Поне един общ параметър във всички тестове

Параметри на заявката

ПараметърТипЗадължителенПо подразбиранеОписание
usernamestringДа-Вашето API потребителско име
passwordstringДа-Вашата API парола
languagestringНеenЕзик на отговора. Вижте поддържаните езици
blood_testsarrayДа-Масив от обекти с кръвни тестове (2-20 теста)

blood_tests структура на масив

ПолеТипЗадължителенОписание
lab_datestringДа*Дата на тестването във формат YYYY-MM-DD
results_datestringДа*Алтернатива на lab_date (YYYY-MM-DD)
parametersarrayДаМасив от параметри на кръвни тестове
metadataobjectНеДопълнителни метаданни (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_idstringУникален идентификатор за това сравнение (формат: CMP-XXXXXXXX)
comparison_summaryobjectОбщо обобщение: key_findings, overall_trend, дати на отчетите, time_interval
parameter_analysisarrayПодробен анализ за всеки параметър с тип промяна и клинично значение
health_assessmentobjectОбласти на загриженост, подобрение, положителни развития, рискови фактори
recommendationsobjectПоследващи тестове, незабавни действия, промени в начина на живот, насочвания към специалисти
detailed_interpretationobjectAI наративни секции с резюме за ръководството и клинични препоръки

parameter_analysis структура на обект

ПолеТипОписание
parameter_namestringИме на параметър
report1_valuestringСтойност от първия отчет с единица
report2_valuestringСтойност от втория отчет с единица
change_typestringincreased, decreased или stable
change_magnitudestringsignificant, moderate или minor
clinical_significancestringAI обяснение какво означава промяната
trend_assessmentstringpositive, 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% промяна между периодите
moderate5-15% промяна между периодите
mild<5% промяна между периодите

health_score / score_interpretation API за здравен резултат

Интерпретация на общия здравен резултат въз основа на анализираните параметри.

СтойностОписание
excellentВсички маркери в оптимален диапазон
goodПовечето маркери в нормалния диапазон
fairНякои маркери изискват внимание
poorМножество маркери изискват внимание

Служебни крайни точки

GET /api/info

Връща информация за 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"
}
GET /api/health

Крайна точка за здравна проверка за мониторинг. Връща статуса на услугата. Не се изисква удостоверяване.

Примерен отговор

{
  "status": "healthy",
  "timestamp": "2025-12-22T10:30:00Z",
  "uptime": "99.99%"
}
POST /api/quota/check

Проверете оставащата си 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 за оценка на семейния здравен риск

Издаден: 23 март 2026

API за оценка на семейния здравен риск на Kantesti е AI-базирана платформа за анализ на наследствен здравен риск. Тя генерира изчерпателни отчети за семейно здраве чрез анализ на семейна медицинска история, здравни профили на пациенти и данни за кръвни тестове, за да идентифицира наследствени рискови фактори и да предостави персонализирани препоръки за превантивни грижи.

100+
Езици
9
Категории състояния
14
Семейни отношения

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 тестване с примерни данни (без консумация на квота) Задължително (безплатно)
POST /api/v1/family-health/analyze Издаден 23.03.2026

Генерирайте изчерпателен AI-базиран отчет за оценка на семейния здравен риск. Анализира семейна медицинска история, здравни профили на пациенти и данни за кръвни тестове, за да идентифицира наследствени рискови фактори с персонализирани препоръки за превантивни грижи.

Параметри на заявката (JSON тяло)

ПараметърТипЗадължителенОписание
usernamestringДаВашето API потребителско име
passwordstringДаВашата API парола
patient_dataobjectДаИнформация за пациента (виж по-долу)
family_membersarrayДа*Масив от обекти на семейни членове (макс 100). *Задължителен, ако health_profile отсъства
health_profileobjectДа*Здравен профил на пациента. *Задължителен, ако family_members отсъства
blood_test_dataarrayНеМасив от обекти с данни за кръвни тестове за корелационен анализ
languagestringНеКод на езика за отговор (по подразбиране: en). Поддържат се 100+ езика

patient_data обект

ПолеТипЗадължителенОписание
namestringНеПълно име на пациента
ageintegerДаВъзраст на пациента в години
genderstringДаmale, female или other
dobstringНеДата на раждане (YYYY-MM-DD)

family_members елемент от масив

ПолеТипЗадължителенОписание
relationstringДаТип на отношението: father, mother, brother, sister, paternal_grandfather, paternal_grandmother, maternal_grandfather, maternal_grandmother, paternal_uncle, paternal_aunt, maternal_uncle, maternal_aunt, son, daughter
ageintegerНеВъзраст на семеен член
conditionsarrayНеМасив от известни медицински състояния (низове)
age_at_diagnosisintegerНеВъзраст при диагностициране на състоянието
deceasedbooleanНеДали семейният член е починал
age_at_deathintegerНеВъзраст при смъртта (ако е починал)
cause_of_deathstringНеПричина за смъртта (ако е починал)

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_1001401Липсващи идентификационни данни за удостоверяване
AUTH_1002401Невалидно потребителско име или парола
QUOTA_1101403Недостатъчна API квота
QUOTA_1103429Лимитът на скоростта е превишен
VAL_2001400Липсва задължително поле (patient_data.age, patient_data.gender)
VAL_2002400Невалиден формат на данните
VAL_2003400Неподдържан код на език
VAL_2005400Данните на заявката не могат да са празни
VAL_2006400Масивът надвишава максималния размер (макс 100 семейни членове)
VAL_2007400Невалидна структура на данните на пациента
PROC_3001500Генерирането на отчета е неуспешно
PROC_3003500AI грешка при обработка
SRV_5001500Вътрешна сървърна грешка
POST /api/v1/family-health/validate

Валидирайте данните на заявката си преди изпращане за анализ. Не се консумира квота. Използвайте тази крайна точка, за да проверите дали структурата на вашия 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 крайната точка връща реалистични примерни данни от отчет.

APISandbox крайна точкаОписание
Анализ на семейно здраве/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 за интелигентно разпознаване на символи

Издаден: 14 февруари 2026

Kantesti ICR (Интелигентно разпознаване на символи) API е усъвършенствана технология за извличане на текст от документи, която надхвърля далеч традиционния OCR. Захранван от собствения AI двигател на Kantesti, ICR предоставя структуриран JSON изход от всякакъв тип документи, включително медицински отчети, фактури, формуляри и др.

79%
По-бързо от OCR
99.7%
Процент на точност
100+
Езици

Kantesti ICR срещу традиционен OCR

В сравнителни тестове Kantesti ICR демонстрира 79% по-висока производителност в сравнение с традиционните OCR решения. ICR разбира структурата на документа, запазва оформленията на таблици, извлича метаданни и връща чист структуриран JSON — докато OCR предоставя само необработен неструктуриран текст. ICR използва AI-базирано интелигентно разпознаване, за да разбира контекста, да открива автоматично типовете документи и да предоставя структурирани данни, готови за интеграция.

Основни характеристики на ICR
  • Структуриран 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 кредити Безплатно
POST /api/icr/v1/extract Издаден 14.02.2026

Извличане на цялото текстово съдържание от качените документи с помощта на технологията Kantesti ICR. Връща структуриран JSON с откриване на типа на документа, извличане на таблици, парсване на секции и метаданни.

Параметри на заявката

ПараметърТипЗадължителенОписание
usernamestringДаВашето API потребителско име
passwordstringДаВашата API парола
filefileДаФайл на документа (PDF, JPG, JPEG, PNG)
languagestringНеКод на изходния език (по подразбиране: 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_1001401Липсващи идентификационни данни за удостоверяване
ICR_AUTH_1002401Невалидно потребителско име или парола
ICR_QUOTA_1101403Недостатъчно кредити (изисквани са 0,5 кредита на извикване)
ICR_VAL_2001400Не е качен файл
ICR_VAL_2002400Невалиден формат на файл (поддържани: PDF, JPG, JPEG, PNG)
ICR_VAL_2003400Не се разрешават множество PDF файлове в една заявка
ICR_VAL_2004400Не могат да се смесват PDF и изображения в една заявка
ICR_PROC_3001500ICR извличането на текст е неуспешно
ICR_PROC_3004504Изтекло време на обработка
ICR_SRV_5001500Вътрешна сървърна грешка
ICR_SRV_5002503ICR услугата е временно недостъпна
POST /api/icr/v1/kan Издаден 14.02.2026

Анализ на документи с кръвни тестове с помощта на двигателя Kantesti Kan. Обработва документи с кръвни тестове и извлича структурирани тестови параметри, информация за пациента и метаданни.

Параметри на заявката

ПараметърТипЗадължителенОписание
usernamestringДаВашето API потребителско име
passwordstringДаВашата API парола
filefileДаФайл с кръвен тест (PDF, JPG, JPEG, PNG)
languagestringНеКод на езика на отчета (по подразбиране: en)
pdf_passwordstringНеПарола за криптирани 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 крайните точки връщат реалистични примерни данни.

APISandbox крайна точкаОписание
ICR извличане/api/icr/v1/sandboxВръща примерни ICR данни за извличане
ICR Kan/api/icr/v1/kan/sandboxВръща примерни данни за параметри на кръвен тест

ICR срещу OCR сравнение на производителността

Резултати от сравнителен тест — Kantesti 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+ покритие
Поддръжка на медицински документиСпециализиранОбщОпит в областта