Endpoints van de Bloedtest API
Volledige referentie voor alle Kantesti API endpoints met codevoorbeelden in meerdere programmeertalen.
Met trots kondigen we drie DNA-modules voor de Kantesti API aan. DNA-testinterpretatie zet ruwe DNA-data of een genetisch rapport om in een uitgebreid genetisch gezondheidsrapport, het DNA + Bloedgezondheidsrapport combineert dat rapport met een bloedtest, en de Supplementadviseur stelt een persoonlijk supplementenplan op met de eigen producten van uw kliniek. Lees de referentie van de DNA Health API.
https://app.aibloodtestinterpret.com
Changelog
Volg API-versies, updates en migratie-informatie. Gebruik de aanbevolen endpoints voor nieuwe integraties.
Alle drie de updates van 2026 zijn toegepast op elke hieronder vermelde API-versie. Versienummers en endpoint-paden zijn niet gewijzigd, dus er is geen migratie nodig.
- 8 september 2026 Update van het AI-model en platformbrede verbeteringen
- 21 juli 2026 Uitgebreide verbeteringen en bugfixes
- 8 mei 2026 Uitgebreide verbeteringen en bugfixes
Huidige Stabiele Endpoints
Deze endpoints worden aanbevolen voor productiegebruik en nieuwe integraties.
| API | Endpoint | Status |
|---|---|---|
| Bloedtest Analyse v12 | /api/v12/18-09-2026/analyze |
Aanbevolen Nieuw 18.09.2026 |
| Bloedtest Analyse (Gezondheidsscore) v12 | /api/v12/health-score/analyze |
Aanbevolen Nieuw 18.09.2026 |
| Lichaamskaart v1 | /api/v1/body-map/analyze |
Uitgebracht 18.09.2026 Nieuw |
| Biologische Bloedleeftijd v1 | /api/v1/blood-age/analyze |
Uitgebracht 18.09.2026 Nieuw |
| DNA-testinterpretatie v1 | /api/v1/dna-interpretation/analyze |
Uitgebracht 23.09.2026 Nieuw |
| DNA + Bloedgezondheidsrapport v1 | /api/v1/dna-blood-report/analyze |
Uitgebracht 23.09.2026 Nieuw |
| DNA-supplementadviseur v1 | /api/v1/dna-supplements/analyze |
Uitgebracht 23.09.2026 Nieuw |
| Bloedtest Analyse v11 | /api/v11/01-06-2025/analyze |
Stabiel Bijgewerkt 08.09.2026 |
| Bloedtest Analyse (Gezondheidsscore) v11 | /api/v11/health-score/analyze |
Stabiel Bijgewerkt 08.09.2026 |
| AI Voeding v1 | /api/v1/nutrition/diet-plan/analyze |
Stabiel Bijgewerkt 08.09.2026 |
| AI Bloedtest Vergelijking v1 | /api/v1/bloodtest/comparison/analyze |
Stabiel Bijgewerkt 08.09.2026 |
| Familiaire Gezondheidsrisicobeoordeling v1 | /api/v1/family-health/analyze |
Uitgebracht 23.03.2026 Bijgewerkt 08.09.2026 |
| ICR - Intelligente Tekenherkenning v1 | /api/icr/v1/extract |
Uitgebracht 14.02.2026 Bijgewerkt 08.09.2026 |
| ICR Kan - Bloedtest Extractie v1 | /api/icr/v1/kan |
Uitgebracht 14.02.2026 Bijgewerkt 08.09.2026 |
| Trendanalyse v1 | /api/v1/analytics/trends/analyze |
Stabiel Bijgewerkt 08.09.2026 |
Versiegeschiedenis
| Datum | Versie | Wijzigingen |
|---|---|---|
| 5 november 2026 | Bloedtest Analyse v12, Voedings-API v1 | Kwalitatieve (binary) rijen: bereikvelden zijn null, evaluation is good of bad; alle beoordelingswaarden staan onder evaluation. lab_date valt terug op de uitslagdatum. Voedingsplannen volgen dietary_preferences, dietary_restrictions en allergies in elk onderdeel; supplementen volgen de afwijkende markers. |
| 23 september 2026 | DNA-testinterpretatie v1, DNA + Bloedgezondheidsrapport v1, DNA-supplementadviseur v1 | DNA Health API uitgebracht — DNA-testinterpretatie van ruwe DNA-data (23andMe, AncestryDNA, MyHeritage, FTDNA, LivingDNA, VCF) of bestanden met een genetisch rapport aan de hand van 334 geselecteerde markers, een gecombineerd DNA + bloedgezondheidsrapport en een supplementadviseur met de eigen productcatalogus van de kliniek; asynchrone modus en sandbox |
| September 2026 | Bloedtest Analyse v12 | Bloedtest Analyse v12 uitgebracht — upload van meerdere bestanden, rapportage in 100 talen, optionele gezondheidsscore en analyse van ziekterisico's, sandbox-modus |
| September 2026 | Lichaamskaart v1, Biologische Bloedleeftijd v1 | Lichaamskaart API en Biologische Bloedleeftijd API uitgebracht — toewijzing op orgaanniveau van resultaten buiten de referentiewaarden over 13 anatomische regio's, en PhenoAge biologische leeftijd met tot 18 afgeleide klinische indices; beide met een deterministische modus en een sandbox |
| September 2026 | Alle versies | Update van het AI-model, vastgezet op de nieuwste modelversie; uitgebreide verbeteringen en bugfixes in alle API-versies; versienummers ongewijzigd; 98,89% nauwkeurigheid op examens van medische faculteiten (nieuwste open-source benchmark) |
| Juli 2026 | Alle versies | Uitgebreide verbeteringen en bugfixes toegepast op alle API-versies; versienummers ongewijzigd |
| Mei 2026 | Alle versies | Uitgebreide verbeteringen en bugfixes toegepast op alle API-versies; versienummers ongewijzigd |
| Maart 2026 | Family Health v1 | Family Health Risicobeoordeling API uitgebracht — AI-gestuurde erfelijke risicoanalyse, 100+ taalondersteuning, stamboomanalyse, preventief zorgplan, genetische screeningaanbevelingen, sandbox-modus |
| Februari 2026 | ICR v1 | ICR (Intelligente Tekenherkenning) API uitgebracht — 79% sneller dan OCR, gestructureerde JSON-uitvoer, documenttype-detectie, tabelextractie, Kan-bloedtest-integratie |
| December 2025 | Nieuwste | Verbeterde foutafhandeling, 98,7% nauwkeurigheid, ondersteuning voor 100 talen |
| Juni 2025 | v11 | Bloedtestanalyse v11, gezondheidsscore endpoint, multi-file ondersteuning |
| April 2025 | v9 | api_parameters_v9 model, verbeterde parameterextractie |
| Maart 2025 | v8 | Multi-file upload ondersteuning, batchverwerking |
Legacy Endpoints
Deze endpoints worden onderhouden voor achterwaartse compatibiliteit maar worden niet aanbevolen voor nieuwe integraties.
| Versie | Endpoint | Status |
|---|---|---|
| v10 | /api/v10/health-score/analyze |
Legacy |
| v9 | /api/v9/14-04-2025/analyze |
Legacy |
| v8 | /api/v8/31-03-2025/analyze |
Legacy |
| v6 | /api/v6-1/21-11-2024/analyze |
Legacy |
| v3 | /api/v3/10-10-2024/analyze |
Legacy |
Legacy endpoints worden onderhouden voor achterwaartse compatibiliteit maar worden niet aanbevolen voor nieuwe integraties. Migreer naar de huidige stabiele endpoints voor betere prestaties en ondersteuning.
Ondersteunde Talen Referentie
De Kantesti API ondersteunt 100 talen voor responslokalisatie. Gebruik de language parameter met een van de onderstaande ISO 639-1 codes. Indien niet gespecificeerd, worden antwoorden standaard in het Engels (en) geretourneerd.
Als er geen language parameter wordt opgegeven, retourneert de API antwoorden in het Engels (en).
Belangrijkste Wereldtalen
| Code | Taal | Eigen Naam |
|---|---|---|
en | Engels | English |
zh | Chinees | 中文 |
es | Spaans | Español |
ar | Arabisch | العربية |
hi | Hindi | हिन्दी |
pt | Portugees | Português |
ru | Russisch | Русский |
ja | Japans | 日本語 |
fr | Frans | Français |
de | Duits | Deutsch |
ko | Koreaans | 한국어 |
tr | Turks | Türkçe |
Europese Talen
| Code | Taal | Eigen Naam |
|---|---|---|
it | Italiaans | Italiano |
nl | Nederlands | Nederlands |
pl | Pools | Polski |
el | Grieks | Ελληνικά |
sv | Zweeds | Svenska |
no | Noors | Norsk |
da | Deens | Dansk |
fi | Fins | Suomi |
cs | Tsjechisch | Čeština |
uk | Oekraïens | Українська |
ro | Roemeens | Română |
hu | Hongaars | Magyar |
Midden-Oosten & Centraal-Aziatische Talen
| Code | Taal | Eigen Naam |
|---|---|---|
he | Hebreeuws | עברית |
fa | Perzisch | فارسی |
az | Azerbeidzjaans | Azərbaycan |
Zuid-Aziatische Talen
| Code | Taal | Eigen Naam |
|---|---|---|
bn | Bengaals | বাংলা |
ta | Tamil | தமிழ் |
ur | Urdu | اردو |
Zuidoost-Aziatische Talen
| Code | Taal | Eigen Naam |
|---|---|---|
id | Indonesisch | Bahasa Indonesia |
th | Thais | ไทย |
vi | Vietnamees | Tiếng Việt |
Afrikaanse Talen
| Code | Taal | Eigen Naam |
|---|---|---|
af | Afrikaans | Afrikaans |
sw | Swahili | Kiswahili |
Overige Talen
| Code | Taal | Eigen Naam |
|---|---|---|
la | Latijn | Latina |
eo | Esperanto | Esperanto |
yi | Jiddisch | ייִדיש |
ht | Haïtiaans Creools | Kreyòl Ayisyen |
mi | Maori | Te Reo Māori |
sm | Samoaans | Gagana Samoa |
to | Tongaans | Lea Faka-Tonga |
haw | Hawaïaans | ʻŌlelo Hawaiʻi |
Bloedtest Analyse API
Analyseer bloedtestafbeeldingen of PDF's met behulp van AI om parameters te extraheren en uitgebreide medische interpretaties te genereren.
Productie endpoint voor bloedtestanalyse. Upload een of meer bloedtestafbeeldingen of een PDF en ontvang gestructureerde parameters, metagegevens van patiënt en laboratorium, en een volledige klinische interpretatie in elk van de 100 ondersteunde talen. Verbruikt 1 credit per verzoek.
Verzoekparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
username | string | Ja | Uw API-gebruikersnaam |
password | string | Ja | Uw API-wachtwoord |
file | file | Ja | Bloedtest afbeelding (PNG, JPG, WEBP) of PDF. Max 20MB. Herhaal het veld om meerdere afbeeldingen te sturen. |
language | string | Nee | Respons taalcode (standaard: en). Zie ondersteunde talen. |
pdf_password | string | Nee | Wachtwoord voor versleutelde PDF's |
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v12/18-09-2026/analyze" \
-F "username=UW_GEBRUIKERSNAAM" \
-F "password=UW_WACHTWOORD" \
-F "language=nl" \
-F "[email protected]"
Python Voorbeeld
import requests
def analyze_blood_test(file_paths, username, password, language="nl"):
"""
Analyseer een bloedtest met Kantesti Bloedtest Analyse v12.
Geef een of meer afbeeldingen mee, of een enkele PDF.
"""
url = "https://app.aibloodtestinterpret.com/api/v12/18-09-2026/analyze"
handles = [open(path, "rb") for path in file_paths]
try:
files = [("file", (path, handle)) for path, handle in zip(file_paths, handles)]
data = {"username": username, "password": password, "language": language}
response = requests.post(url, files=files, data=data, timeout=300)
response.raise_for_status()
return response.json()
finally:
for handle in handles:
handle.close()
# Voorbeeldgebruik
result = analyze_blood_test(
file_paths=["bloedtest.pdf"],
username="gebruikersnaam",
password="wachtwoord",
language="nl"
)
print(f"Status: {result['status']}")
for param in result["data"]["parameters"]:
print(f" {param['short_name']}: {param['result']} {param['unit']} ({param['evaluation']})")
Voorbeeldrespons
{
"status": "success",
"api_version": "v12",
"data": {
"metadata": {
"patient_name": "Jan Novak",
"patient_age": "45",
"patient_sex": "Male",
"lab_name": "BioLAB Medical Center",
"lab_city": "Prague",
"lab_country": "Czech Republic",
"lab_date": "2026-09-11",
"results_date": "2026-09-12"
},
"parameters": [
{"short_name": "Glucose", "long_name": "Fasting Blood Glucose", "result": "92", "unit": "mg/dL", "reference_range": "74 - 100", "range_normal_min": 74, "range_normal_max": 100, "type": "range", "evaluation": "normal"},
{"short_name": "ALT", "long_name": "Alanine aminotransferase", "result": "65", "unit": "U/L", "reference_range": "< 45", "range_normal_min": 7, "range_normal_max": 45, "type": "range", "evaluation": "high"},
{"short_name": "Creatinine", "long_name": "Creatinine", "result": "0.9", "unit": "mg/dL", "reference_range": "0.7 - 1.2", "range_normal_min": 0.7, "range_normal_max": 1.2, "type": "range", "evaluation": "normal"}
],
"interpretation": [
{"shortcode": "overview", "item": "Most parameters are within their reference ranges."},
{"shortcode": "key_findings", "item": "Alanine aminotransferase is above the reference range, which warrants a follow-up liver panel."}
]
},
"timestamp": "2026-09-18T10:30:00Z"
}
Productie endpoint met uitgebreide berekening van de gezondheidsscore en analyse van ziekterisico's. Neemt hetzelfde verzoek aan als /api/v12/18-09-2026/analyze en voegt de onderstaande velden toe aan de respons. Verbruikt 1 credit per verzoek.
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v12/health-score/analyze" \
-F "username=UW_GEBRUIKERSNAAM" \
-F "password=UW_WACHTWOORD" \
-F "language=nl" \
-F "[email protected]"
Aanvullende responsvelden
{
"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"}
]
}
Het veld score_interpretation gebruikt gestandaardiseerde waarden. Zie gezondheidsscore waarden.
Productie endpoint voor bloedtestanalyse. Verbruikt 1 credit per verzoek.
Verzoekparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
username | string | Ja | Uw API-gebruikersnaam |
password | string | Ja | Uw API-wachtwoord |
file | file | Ja | Bloedtest afbeelding (PNG, JPG, WEBP) of PDF. Max 20MB. |
language | string | Nee | Respons taalcode (standaard: en). Ondersteunt 100+ talen. |
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v11/01-06-2025/analyze" \
-F "username=UW_GEBRUIKERSNAAM" \
-F "password=UW_WACHTWOORD" \
-F "language=nl" \
-F "[email protected]"
Python Voorbeeld
import requests
def analyseer_bloedtest(bestandspad: str, gebruikersnaam: str, wachtwoord: str, taal: str = "nl"):
"""
Analyseer een bloedtest bestand met de Kantesti API.
"""
url = "https://app.aibloodtestinterpret.com/api/v11/01-06-2025/analyze"
with open(bestandspad, "rb") as f:
bestanden = {"file": (bestandspad, f, "application/pdf")}
gegevens = {
"username": gebruikersnaam,
"password": wachtwoord,
"language": taal
}
respons = requests.post(url, files=bestanden, data=gegevens, timeout=120)
respons.raise_for_status()
return respons.json()
# Voorbeeldgebruik
if __name__ == "__main__":
resultaat = analyseer_bloedtest(
bestandspad="bloedtest.pdf",
gebruikersnaam="uw_gebruikersnaam",
wachtwoord="uw_wachtwoord",
taal="nl"
)
print(f"Status: {resultaat['status']}")
print(f"Gevonden parameters: {len(resultaat['data']['parameters'])}")
Referentie responsvelden
Hoofdniveau
| Veld | Type | Beschrijving |
|---|---|---|
status | string | "success" of "error" |
data | object | Bevat alle analyseresultaten |
timestamp | string | ISO 8601 tijdstempel van de respons |
api_version | string | Gebruikte API-versie |
data.metadata Object
| Veld | Type | Beschrijving |
|---|---|---|
lab_date | string | Datum bloedafname (JJJJ-MM-DD). Vermeldt het rapport alleen de uitslagdatum, dan die datum. Leeg als het rapport helemaal geen datum toont. |
results_date | string | Datum uitgifte resultaten (JJJJ-MM-DD) |
lab_name | string | Naam van het laboratorium |
lab_city | string | Stad van het laboratorium |
lab_country | string | Land van het laboratorium |
patient_name | string | Volledige naam van de patiënt (alleen metadata, niet verzonden naar interpretatie) |
patient_age | string | Leeftijd van de patiënt |
patient_sex | string | "male", "female" of "other" |
data.parameters Array Element
| Veld | Type | Beschrijving |
|---|---|---|
category | string | Parametercategorie (bijv. "Volledig bloedbeeld", "Lipidenprofiel") |
long_name | string | Volledige parameternaam |
short_name | string | Afgekorte parameternaam |
result | string | Gemeten waarde |
unit | string | Meeteenheid |
type | string | range: een numeriek resultaat dat aan referentiebereiken wordt getoetst. binary: een kwalitatief resultaat (Negatief, Positief, Reactief, een titer ...) — de bereikvelden zijn null, er valt niets in een grafiek te tonen en evaluation is good of bad. |
range_optimal_min | number|null | Ondergrens van het optimale bereik: de ideale zone, binnen het normale bereik. Zo toont u de drie bereiken (null bij een binary-rij) |
range_optimal_max | number|null | Bovengrens van het optimale bereik (null bij een binary-rij) |
range_normal_min | number|null | Ondergrens van het normale bereik: het referentiebereik van het laboratorium (null bij een binary-rij) |
range_normal_max | number|null | Bovengrens van het normale bereik (null bij een binary-rij) |
range_min | number|null | Ondergrens van het grensgebied: tussen deze grens en het normale bereik is een resultaat grenswaardig (slightly_low); daaronder low (null bij een binary-rij) |
range_max | number|null | Bovengrens van het grensgebied: tussen het normale bereik en deze grens is een resultaat grenswaardig (slightly_high); daarboven high (null bij een binary-rij) |
evaluation | string | Resultaatstatus. Zie evaluatiewaarden |
data.interpretation Array Element
| Veld | Type | Beschrijving |
|---|---|---|
title | string | Sectietitel (bijv. "Algemene gezondheidsbeoordeling") |
content | string | AI-gegenereerde medische interpretatie |
Volledig responsvoorbeeld
{
"status": "success",
"data": {
"metadata": {
"patient_name": "Anna Müller",
"lab_name": "MedLab Diagnostics International",
"lab_city": "Amsterdam",
"lab_country": "Nederland",
"lab_date": "2025-12-15",
"results_date": "2025-12-16",
"patient_age": "38",
"patient_sex": "female"
},
"parameters": [
{
"short_name": "WBC",
"long_name": "Witte bloedceltelling",
"category": "Volledig bloedbeeld",
"result": "6.8",
"unit": "10^9/L",
"evaluation": "normal",
"range_min": "4.0",
"range_max": "11.0",
"short_description": "Meet het totale aantal witte bloedcellen.",
"long_description": "Witte bloedcellen (leukocyten) zijn essentiële componenten van het immuunsysteem..."
},
{
"short_name": "RBC",
"long_name": "Rode bloedceltelling",
"category": "Volledig bloedbeeld",
"result": "4.52",
"unit": "10^12/L",
"evaluation": "normal",
"range_min": "3.8",
"range_max": "5.8",
"short_description": "Meet het totale aantal rode bloedcellen.",
"long_description": "Rode bloedcellen (erytrocyten) transporteren zuurstof van de longen naar de weefsels..."
},
{
"short_name": "HGB",
"long_name": "Hemoglobine",
"category": "Volledig bloedbeeld",
"result": "13.2",
"unit": "g/dL",
"evaluation": "normal",
"range_min": "11.5",
"range_max": "16.0",
"short_description": "Eiwit in rode bloedcellen dat zuurstof transporteert.",
"long_description": "Hemoglobine is het ijzerbevattende eiwit in rode bloedcellen verantwoordelijk voor zuurstoftransport..."
},
{
"short_name": "GLU",
"long_name": "Nuchtere glucose",
"category": "Metabolisch panel",
"result": "102",
"unit": "mg/dL",
"evaluation": "borderline_high",
"range_min": "70",
"range_max": "140",
"short_description": "Meet het bloedsuikerniveau na vasten.",
"long_description": "Nuchtere glucose is een belangrijke indicator van hoe het lichaam suiker verwerkt..."
},
{
"short_name": "TC",
"long_name": "Totaal cholesterol",
"category": "Lipidenprofiel",
"result": "218",
"unit": "mg/dL",
"evaluation": "borderline_high",
"range_min": "0",
"range_max": "300",
"short_description": "Meet het totale cholesterol in het bloed.",
"long_description": "Totaal cholesterol is de som van HDL-, LDL- en VLDL-cholesterol..."
},
{
"short_name": "LDL",
"long_name": "LDL-cholesterol",
"category": "Lipidenprofiel",
"result": "142",
"unit": "mg/dL",
"evaluation": "high",
"range_min": "0",
"range_max": "200",
"short_description": "Meet het niveau van 'slecht' cholesterol.",
"long_description": "LDL-cholesterol kan zich ophopen in de slagaderwanden..."
}
],
"interpretation": [
{
"title": "Algemene gezondheidsbeoordeling",
"shortcode": "overall_health_assessment",
"subsections": [
{
"subtitle": "Uitgebreid overzicht",
"items": [
{"item": "De patiënt vertoont over het algemeen gezonde hematologische parameters met alle bloedbeeldwaarden binnen de normale grenzen."},
{"item": "Het lipidenprofiel toont gebieden die aandacht vereisen, met name de LDL-cholesterolniveaus."}
]
}
]
},
{
"title": "Aanbevelingen",
"shortcode": "recommendations",
"subsections": [
{
"subtitle": "Leefstijlaanpassingen",
"items": [
{"item": "Verhoog aerobe fysieke activiteit tot minimaal 150 minuten per week."},
{"item": "Adopteer een mediterraan dieet rijk aan groenten, fruit en gezonde vetten."}
]
}
]
}
]
},
"api_version": "v11",
"timestamp": "2025-12-16T14:32:18Z"
}
Het veld evaluation gebruikt gestandaardiseerde waarden. Zie evaluatiewaarden.
AI Voeding met Supplementen
Genereer gepersonaliseerde voedingsplannen, dieetaanbevelingen en supplementsuggesties op basis van bloedtestanalyse.
Genereert uitgebreide voedings- en supplementaanbevelingen op basis van bloedtestparameters en patiëntprofiel.
Patiënt Object Schema
Gedetailleerde beschrijving van alle beschikbare velden voor het patiënt object:
| Veld | Type | Vereist | Standaard | Beschrijving |
|---|---|---|---|---|
age |
integer | Ja | - | Leeftijd patiënt in jaren (18-120) |
gender |
string | Ja | - | Geslacht patiënt. Zie waarden |
weight |
number | Nee | null | Gewicht in kg (voor calorieberekeningen) |
height |
number | Nee | null | Lengte in cm (voor BMI-berekeningen) |
conditions |
array | Nee | [] | Medische condities. Zie waarden |
allergies |
array | Nee | [] | Voedselallergieën. Zie waarden |
dietary_preferences |
array | Nee | [] | Dieetvoorkeuren. Zie waarden |
activity_level |
string | Nee | "moderate" | Fysiek activiteitsniveau. Zie waarden |
dietary_restrictions |
array | Nee | [] | Dieetbeperkingen (bijv: glutenvrij, lactosevrij) |
liked_foods |
array | Nee | [] | Favoriete voedingsmiddelen voor planpersonalisatie |
disliked_foods |
array | Nee | [] | Voedingsmiddelen om te vermijden in aanbevelingen |
meal_frequency |
integer of string | Nee | 5 | Maaltijden per dag: elke dag van het plan heeft precies deze maaltijden, bijv. 2 = lunch en diner. Zie waarden |
budget |
string of object | Nee | "moderate" | Voedingsbudget: een niveau, of een bedrag per dag zoals "10-20 EUR/day". Zie waarden |
medications |
array | Nee | [] | Huidige medicatie (voor interacties) |
Responsvelden referentie
Het productie-endpoint (/analyze) en de sandbox retourneren dezelfde structuur. JSON-sleutels en codes zijn altijd in het Engels; alle tekst staat in de via language gevraagde taal (sandbox-tekst is altijd in het Engels). Toon geen sleutels of codes aan gebruikers: neem titels uit labels en toon priority_label en source_label voor de prioriteit en de bron van een supplement. Elke dag van weekly_meal_plan, van monday tot en met sunday, heeft dezelfde maaltijden: die van meal_frequency (standaard vijf).
Het plan wordt geschreven in 39 talen: en, de, fr, it, es, pt, ar, he, el, pl, tr, zh, ru, fa, ja, ko, nl, hi, id, th, vi, sv, no, da, fi, cs, ms, af, uk, ro, hu, sk, sl, hr, bg, sr, lv, lt, et. Elke andere ondersteunde taalcode (language) retourneert het plan en de bijbehorende labels in het Engels.
Object data
| Veld | Type | Beschrijving |
|---|---|---|
analysis_id | string | Unieke identificatie voor deze analyse (bijv: "NUT-1A2B3C4D") |
generated_at | string | Tijdstip van aanmaak (ISO 8601, UTC) |
patient_summary | object | De patiëntgegevens die u hebt verstuurd: age, gender, weight, height, conditions, dietary_preferences |
nutrition_plan | object | Het voedingsplan (secties hieronder) |
labels | object | Weergavetekst in de gevraagde taal voor elke sleutel van nutrition_plan en elke code van priority en source, bijvoorbeeld labels.key_focus_areas, labels.monday, labels.high |
language | string | Taalcode van de respons |
sandbox_mode | boolean | true alleen in sandbox-responsen |
Object nutrition_plan
| Veld | Type | Beschrijving |
|---|---|---|
nutrition_summary | object | Dagelijkse doelen voor calorieën en macronutriënten en de aandachtsgebieden van het plan |
weekly_meal_plan | object | monday tot en met sunday, elke dag met de maaltijden van meal_frequency (hieronder); standaard vijf |
food_recommendations | object | power_foods, foods_to_limit (hieronder) en hydration (daily_water, timing, special_considerations) |
supplement_recommendations | array | Supplementaanbevelingen (hieronder). Eén per afwijkende of grenswaardige marker waarbij een supplement kan helpen, geen voor een marker binnen het bereik; geen vast aantal. |
lifestyle_integration | object | meal_prep_tips, shopping_list (per voedingsgroep), eating_schedule (tijdstip van elke maaltijd), special_occasions |
monitoring_plan | object | weekly_goals, tracking_metrics, adjustment_signs, follow_up_tests, expected_improvements (lijsten van teksten) |
educational_insights | object | blood_test_connections (parameter, current_value, dietary_impact, foods_that_help), nutritional_science, success_strategies |
metadata | object | Technische details, niet voor weergave: bmr en tdee (kcal/dag), nutritional_concerns (codes), version, report_language, meal_slots (de maaltijden die elke dag heeft, bijv. ["lunch", "dinner"]), meal_frequency en budget (hoe de waarden van het verzoek zijn begrepen) |
Object nutrition_plan.nutrition_summary
| Veld | Type | Beschrijving |
|---|---|---|
daily_calories | integer | Dagelijks caloriedoel (kcal) |
macro_distribution | object | protein_g, fat_g, carbs_g, fiber_g: gram per dag |
key_focus_areas | array | Belangrijkste aandachtsgebieden van het plan |
primary_recommendations | array | De belangrijkste aanbevelingen |
Object weekly_meal_plan.<day>
| Veld | Type | Beschrijving |
|---|---|---|
breakfast, lunch, dinner | object | Hoofdmaaltijden (velden hieronder) |
morning_snack, afternoon_snack | object | Snacks: items (array van teksten) en calories (geheel getal, kcal) |
Een dag heeft precies de maaltijden van meal_frequency, en metadata.meal_slots somt ze op: met 2 alleen lunch en dinner. Toon de maaltijden die een dag heeft, geen vaste lijst van vijf.
Object breakfast / lunch / dinner
| Veld | Type | Beschrijving |
|---|---|---|
main_dish | string | Naam van het hoofdgerecht |
sides | array | Bijgerechten |
calories | integer | Calorieën (kcal) |
protein | integer | Eiwit (g) |
preparation_time | string | Bereidingstijd (bijv: "15 minuten") |
cost_estimate | string | Geschatte kosten (bijv: "$3-5") |
Array-element food_recommendations.power_foods
| Veld | Type | Beschrijving |
|---|---|---|
name | string | Naam van het voedingsmiddel |
benefits | string | Waarom het helpt, gekoppeld aan de bloedtestresultaten |
serving_size | string | Portiegrootte |
frequency | string | Hoe vaak het te eten |
blood_marker_impact | string | Bloedmarker(s) waarbij het helpt |
Array-element food_recommendations.foods_to_limit
| Veld | Type | Beschrijving |
|---|---|---|
name | string | Naam van het voedingsmiddel |
reason | string | Waarom het te beperken |
alternative | string | Gezonder alternatief |
impact_on_health | string | Effect op de gezondheid van de patiënt |
Array-element supplement_recommendations
| Veld | Type | Beschrijving |
|---|---|---|
name | string | Naam van het supplement |
dosage | string | Dosering (bijv: "2000 IE per dag") |
timing | string | Wanneer in te nemen |
reason | string | Waarom het wordt aanbevolen, op basis van de bloedtestresultaten |
duration | string | Hoe lang in te nemen |
contraindications | string | Contra-indicaties en interacties |
source | string | Code: clinic_library (uit uw supplementenbibliotheek) of evidence_based |
source_label | string | source als tekst in de gevraagde taal, klaar om te tonen |
priority | string | Code: high, medium of low |
priority_label | string | priority als tekst in de gevraagde taal, klaar om te tonen |
blood_marker_addressed | string | Bloedmarker(s) waarop het zich richt |
Volledig cURL voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/nutrition/diet-plan/analyze" \
-H "Content-Type: application/json" \
-d '{
"username": "uw_gebruikersnaam",
"password": "uw_wachtwoord",
"language": "nl",
"patient": {
"age": 45,
"gender": "male",
"weight": 82,
"height": 178,
"conditions": ["hypertension"],
"allergies": ["shellfish"],
"dietary_preferences": ["mediterranean"],
"activity_level": "moderate",
"liked_foods": ["fish", "vegetables", "olive oil"],
"disliked_foods": ["liver"],
"meal_frequency": 5,
"budget": "moderate"
},
"blood_test": {
"lab_date": "2025-12-01",
"parameters": [
{"short_name": "VITD", "result": 18, "unit": "ng/mL"},
{"short_name": "CHOL", "result": 210, "unit": "mg/dL"},
{"short_name": "LDL", "result": 140, "unit": "mg/dL"},
{"short_name": "HDL", "result": 45, "unit": "mg/dL"},
{"short_name": "FE", "result": 65, "unit": "µg/dL"}
]
},
"health_goals": ["lower_cholesterol", "increase_energy", "heart_health"]
}'
Volledige respons
{
"status": "success",
"data": {
"analysis_id": "NUT-1A2B3C4D",
"generated_at": "2026-11-04T10:30:00Z",
"patient_summary": {
"age": 34,
"gender": "female",
"weight": 62,
"height": 165,
"conditions": [],
"dietary_preferences": "omnivore"
},
"nutrition_plan": {
"nutrition_summary": {
"daily_calories": 2046,
"macro_distribution": {
"protein_g": 153,
"fat_g": 57,
"carbs_g": 230,
"fiber_g": 29
},
"key_focus_areas": [
"Rebuild iron stores (low ferritin and haemoglobin)",
"Raise vitamin D into the optimal range",
"Lower LDL cholesterol with fibre and unsaturated fats"
],
"primary_recommendations": [
"Eat a heme-iron source (red meat, poultry, fish or shellfish) at least once a day",
"Pair plant iron with vitamin C and keep tea and coffee one hour away from meals",
"Have oily fish 2-3 times a week and oats, legumes or psyllium every day"
]
},
"weekly_meal_plan": {
"monday": {
"breakfast": {
"main_dish": "Spinach and mushroom omelette (2 eggs) on wholegrain toast",
"sides": ["Orange segments", "Cherry tomatoes"],
"calories": 510,
"protein": 30,
"preparation_time": "15 minutes",
"cost_estimate": "$3-4"
},
"morning_snack": {
"items": ["Pumpkin seeds (30 g)", "Kiwi"],
"calories": 150
},
"lunch": {
"main_dish": "Lentil and vegetable soup",
"sides": ["Wholegrain bread", "Red pepper salad with lemon"],
"calories": 640,
"protein": 32,
"preparation_time": "25 minutes",
"cost_estimate": "$3-5"
},
"afternoon_snack": {
"items": ["Greek yogurt (150 g)", "Strawberries"],
"calories": 150
},
"dinner": {
"main_dish": "Grilled lean beef steak (150 g)",
"sides": ["Roasted sweet potato", "Steamed broccoli with lemon"],
"calories": 600,
"protein": 45,
"preparation_time": "30 minutes",
"cost_estimate": "$6-8"
}
}
// "tuesday" ... "sunday": the same meals as "monday"
},
"food_recommendations": {
"power_foods": [
{
"name": "Lean red meat (beef, lamb)",
"benefits": "Heme iron is absorbed two to three times better than plant iron and refills ferritin fastest; also supplies B12 and zinc.",
"serving_size": "120-150 g",
"frequency": "3 times a week",
"blood_marker_impact": "Ferritin, Hemoglobin"
},
{
"name": "Mussels and clams",
"benefits": "Among the richest heme-iron foods, with B12 and omega-3 fats.",
"serving_size": "100 g (cooked, shelled)",
"frequency": "Once a week",
"blood_marker_impact": "Ferritin, Hemoglobin"
}
// 12-15 foods in a live plan
],
"foods_to_limit": [
{
"name": "Tea and coffee with meals",
"reason": "Tannins and polyphenols can cut iron absorption from a meal by more than half.",
"alternative": "Drink them at least one hour before or after eating; water or rooibos with meals",
"impact_on_health": "Slows the rebuilding of ferritin"
},
{
"name": "Processed meats (sausages, salami, bacon)",
"reason": "High in saturated fat and salt, which raise LDL and blood pressure.",
"alternative": "Grilled chicken, turkey or lean beef",
"impact_on_health": "Keeps LDL cholesterol high"
}
// 12-15 foods in a live plan
],
"hydration": {
"daily_water": "3.1 L",
"timing": "A glass on waking, then evenly through the day; less in the hour before bed",
"special_considerations": "Keep tea and coffee at least one hour away from iron-rich meals"
}
},
"supplement_recommendations": [
{
"name": "Iron bisglycinate",
"dosage": "25 mg elemental iron a day",
"timing": "In the morning on an empty stomach, with vitamin C",
"reason": "Ferritin 14 ng/mL and haemoglobin 11.8 g/dL show depleted iron stores",
"duration": "3 months, then retest ferritin",
"contraindications": "Haemochromatosis; take 2 hours apart from calcium, antacids and thyroid medication",
"source": "evidence_based",
"priority": "high",
"blood_marker_addressed": "Ferritin, Hemoglobin",
"priority_label": "High",
"source_label": "Evidence-Based"
},
{
"name": "Vitamin D3",
"dosage": "2000 IU a day",
"timing": "With the largest meal of the day",
"reason": "Vitamin D 18 ng/mL is below the 30 ng/mL threshold",
"duration": "3 months, then retest",
"contraindications": "Hypercalcaemia, sarcoidosis",
"source": "evidence_based",
"priority": "high",
"blood_marker_addressed": "Vitamin D (25-OH)",
"priority_label": "High",
"source_label": "Evidence-Based"
}
// 5-8 supplements in a live plan
],
"lifestyle_integration": {
"meal_prep_tips": [
"Cook a large pot of lentils or chickpeas on Sunday for three lunches",
"Keep cut peppers and kiwi ready to add vitamin C to meals",
"Portion nuts and seeds into small boxes for snacks"
],
"shopping_list": {
"proteins": ["Lean beef", "Salmon", "Sardines", "Mussels", "Chicken liver", "Eggs"],
"vegetables": ["Spinach", "Kale", "Broccoli", "Bell peppers", "Tomatoes"],
"fruits": ["Kiwi", "Oranges", "Strawberries", "Dried apricots"],
"grains": ["Oats", "Quinoa", "Brown rice", "Wholegrain bread"],
"dairy_alternatives": ["Greek yogurt", "Kefir", "Cottage cheese"],
"pantry_staples": ["Lentils", "Chickpeas", "Pumpkin seeds", "Olive oil", "Psyllium husk"]
},
"eating_schedule": {
"breakfast": "07:30-08:30",
"morning_snack": "10:30",
"lunch": "12:30-13:30",
"afternoon_snack": "16:00",
"dinner": "19:00-20:00"
},
"special_occasions": "When eating out, choose grilled meat or fish with salad, and keep coffee for after the meal."
},
"monitoring_plan": {
"weekly_goals": [
"Heme iron at least 5 days a week",
"Oily fish twice a week",
"No tea or coffee within an hour of meals"
],
"tracking_metrics": [
"Energy levels",
"Fatigue and breathlessness",
"Weight",
"Digestive tolerance of the iron supplement"
],
"adjustment_signs": [
"Constipation or stomach upset from the iron supplement",
"No improvement in energy after 6 weeks"
],
"follow_up_tests": [
"Ferritin, iron and haemoglobin in 8-12 weeks",
"Vitamin D (25-OH) in 3 months",
"Lipid panel in 3 months"
],
"expected_improvements": [
"Ferritin up 15-30 ng/mL within 3 months",
"Vitamin D above 30 ng/mL within 3 months",
"LDL down 10-15% within 3 months"
]
},
"educational_insights": {
"blood_test_connections": [
{
"parameter": "Ferritin",
"current_value": "14 ng/mL",
"dietary_impact": "Iron stores are low; heme iron and vitamin C with meals refill them fastest.",
"foods_that_help": ["Lean red meat", "Mussels", "Chicken liver", "Lentils with peppers"]
},
{
"parameter": "Hemoglobin",
"current_value": "11.8 g/dL",
"dietary_impact": "Slightly below range, consistent with iron deficiency; it rises as ferritin recovers.",
"foods_that_help": ["Beef", "Spinach with lemon", "Eggs"]
}
// one entry per relevant blood test parameter
],
"nutritional_science": [
"Heme iron from animal foods is absorbed at 15-35%, plant iron at 2-20%.",
"Vitamin C turns plant iron into a form the gut absorbs more easily.",
"Beta-glucan from oats forms a gel that carries cholesterol-rich bile out of the body."
],
"success_strategies": [
"Plan the week's meals and shop once",
"Add a vitamin C food to every iron-rich meal",
"Retest on schedule to see the progress"
]
},
"metadata": {
"generated_at": "2026-11-04T10:30:00",
"patient_id": "api_1a2b3c4d",
"bmr": 1320.25,
"tdee": 2046.39,
"nutritional_concerns": ["vitamin_d_deficiency", "anemia", "iron_deficiency", "elevated_ldl"],
"version": "2.2",
"used_clinic_supplements": false,
"clinic_supplements_count": 0,
"report_language": "english",
"meal_slots": ["breakfast", "morning_snack", "lunch", "afternoon_snack", "dinner"],
"meal_frequency": "3 meals and 2 snacks a day (breakfast, morning snack, lunch, afternoon snack, dinner)",
"budget": "moderate",
"api_provider": "KantestiAI Engine",
"model": "KantestiAI Engine"
}
},
"labels": {
"nutrition_summary": "Nutrition Summary",
"key_focus_areas": "Key Focus Areas",
"weekly_meal_plan": "Weekly Meal Plan",
"monday": "Monday",
"breakfast": "Breakfast",
"morning_snack": "Morning Snack",
"main_dish": "Main Dish",
"supplement_recommendations": "Supplement Recommendations",
"priority": "Priority",
"high": "High",
"evidence_based": "Evidence-Based"
// ... one entry for every key of nutrition_plan and every priority / source code
},
"language": "en",
"sandbox_mode": false
},
"timestamp": "2026-11-04T10:30:00Z",
"api_version": "1.0.0",
"message": "Nutrition analysis completed successfully"
}
Voor een volledige lijst van alle mogelijke responswaarden, zie de sectie Uitvoer trefwoorden.
Sandbox Endpoints
Sandbox endpoints retourneren realistische testgegevens zonder API-quota te verbruiken. Gebruik ze voor ontwikkeling en integratietesten.
- Geen quota verbruik
- Retourneert realistische testgegevens
- Zelfde verzoekformaat als productie
- Test uw integratie voor lancering
- Beschikbaar voor alle API-versies
| API | Sandbox Endpoint |
|---|---|
| Bloedtest v12 | /api/v12/18-09-2026/sandbox |
| Bloedtest v12-health | /api/v12/health-score/sandbox |
| Lichaamskaart | /api/v1/body-map/sandbox |
| Biologische bloedleeftijd | /api/v1/blood-age/sandbox |
| DNA-testinterpretatie | /api/v1/dna-interpretation/sandbox |
| DNA + Bloedgezondheidsrapport | /api/v1/dna-blood-report/sandbox |
| DNA-supplementadviseur | /api/v1/dna-supplements/sandbox |
| Bloedtest v11 | /api/v11/01-06-2025/sandbox |
| Bloedtest v11-health | /api/v11/health-score/sandbox |
| AI Voeding | /api/v1/nutrition/diet-plan/sandbox |
| Test vergelijking | /api/v1/bloodtest/comparison/sandbox |
| Trendanalyse | /api/v1/analytics/trends/sandbox |
| ICR Extractie | /api/icr/v1/sandbox |
| ICR Kan Bloedtest | /api/icr/v1/kan/sandbox |
Kies de juiste API voor uw gebruikssituatie:
| Functie | AI Bloedtest Vergelijking | Trendanalyse |
|---|---|---|
| Primaire Focus | AI narratieve vergelijking | Statistische trendanalyse |
| AI Verwerking | Volledige AI narratief | AI-verbeterd + statistieken |
| Uitvoertype | Narratieve samenvattingen | Grafieken, statistieken, patronen |
| Ideaal Voor | Wat veranderde tussen tests | Langetermijn parameter tracking |
| Min Tests | 2 | 2 |
| Max Tests | 20 | 50 |
Trendanalyse API
Analyseer langetermijntrends in bloedtestparameters over meerdere tests. Identificeer patronen, bereken statistieken en genereer AI-gestuurde inzichten voor gezondheidsmonitoring in de tijd.
Voer trendanalyse uit op 2-50 bloedtests om langetermijnpatronen en gezondheidsveranderingen te identificeren. Verbruikt 1 credit per verzoek.
- Minimum: 2 bloedtests vereist
- Maximum: 50 bloedtests per verzoek
- Elke test moet lab_date OF results_date hebben
- Gebruik consistente parameternamen voor nauwkeurige tracking
Verzoekparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
username | string | Ja | Uw API-gebruikersnaam |
password | string | Ja | Uw API-wachtwoord |
blood_tests | array | Ja | Array van bloedtestobjecten (min: 2, max: 50) |
language | string | Nee | Respons taalcode (standaard: en) |
analysis_type | string | Nee | Type analyse. Zie waarden. Standaard: "comprehensive" |
analysis_options | object | Nee | Analyseconfiguratie-opties |
analysis_options Object
Optionele configuratie-opties voor het aanpassen van de analyse-uitvoer:
| Veld | Type | Standaard | Beschrijving |
|---|---|---|---|
include_predictions | boolean | true | AI-trendvoorspellingen opnemen |
include_statistics | boolean | true | Statistische analyse opnemen |
include_charts | boolean | true | Grafiekconfiguratie opnemen |
blood_tests Array Structuur
Elk bloedtest object in de blood_tests array moet de volgende structuur hebben:
| Veld | Type | Vereist | Beschrijving |
|---|---|---|---|
test_date | string | Ja | Datum bloedtest (JJJJ-MM-DD) |
parameters | array | Ja | Array van bloedparameters met short_name, result, unit |
blood_tests[].parameters Structuur
Elk parameter object in de parameters array moet de volgende velden bevatten:
| Veld | Type | Vereist | Beschrijving |
|---|---|---|---|
short_name | string | Ja | Standaard parameternaam (bijv. "CHOL", "GLU", "HbA1c") |
result | number | Ja | Gemeten waarde van de parameter |
unit | string | Ja | Meeteenheid (bijv. "mg/dL", "%", "mmol/L") |
Referentie responsvelden
data.trend_summary Object
| Veld | Type | Beschrijving |
|---|---|---|
total_tests | integer | Aantal geanalyseerde tests |
date_range | object | Start- en einddatum van analysebereik |
parameters_tracked | integer | Aantal getrackte parameters |
overall_assessment | string | Algehele trendbeoordeling. Zie waarden |
data.parameter_trends Array Element
| Veld | Type | Beschrijving |
|---|---|---|
parameter_name | string | Naam bloedparameter |
trend_direction | string | Richting trend. Zie waarden |
trend_strength | string | Sterkte trend. Zie waarden |
statistical_data | object | Gemiddelde, mediaan, min, max, standaardafwijking |
chart_data | array | Datapunten voor visualisatie (datum, waarde) |
interpretation | string | AI-gegenereerde trendinterpretatie |
data.insights Object
| Veld | Type | Beschrijving |
|---|---|---|
positive_trends | array | Parameters die verbeteren |
negative_trends | array | Parameters die verslechteren |
stable_parameters | array | Parameters die stabiel blijven |
recommendations | array | AI-aanbevelingen op basis van trends |
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/analytics/trends/analyze" \
-H "Content-Type: application/json" \
-d '{
"username": "uw_gebruikersnaam",
"password": "uw_wachtwoord",
"language": "nl",
"analysis_type": "comprehensive",
"blood_tests": [
{
"test_date": "2024-01-15",
"parameters": [
{"short_name": "GLU", "result": 118, "unit": "mg/dL"},
{"short_name": "HbA1c", "result": 6.2, "unit": "%"},
{"short_name": "CHOL", "result": 235, "unit": "mg/dL"},
{"short_name": "LDL", "result": 155, "unit": "mg/dL"},
{"short_name": "HDL", "result": 38, "unit": "mg/dL"}
]
},
{
"test_date": "2024-05-18",
"parameters": [
{"short_name": "GLU", "result": 108, "unit": "mg/dL"},
{"short_name": "HbA1c", "result": 5.9, "unit": "%"},
{"short_name": "CHOL", "result": 215, "unit": "mg/dL"},
{"short_name": "LDL", "result": 140, "unit": "mg/dL"},
{"short_name": "HDL", "result": 42, "unit": "mg/dL"}
]
},
{
"test_date": "2024-08-20",
"parameters": [
{"short_name": "GLU", "result": 102, "unit": "mg/dL"},
{"short_name": "HbA1c", "result": 5.6, "unit": "%"},
{"short_name": "CHOL", "result": 200, "unit": "mg/dL"},
{"short_name": "LDL", "result": 128, "unit": "mg/dL"},
{"short_name": "HDL", "result": 48, "unit": "mg/dL"}
]
},
{
"test_date": "2024-12-18",
"parameters": [
{"short_name": "GLU", "result": 95, "unit": "mg/dL"},
{"short_name": "HbA1c", "result": 5.4, "unit": "%"},
{"short_name": "CHOL", "result": 188, "unit": "mg/dL"},
{"short_name": "LDL", "result": 115, "unit": "mg/dL"},
{"short_name": "HDL", "result": 52, "unit": "mg/dL"}
]
}
]
}'
Python Voorbeeld
import requests
def analyseer_trends(bloedtests: list, gebruikersnaam: str, wachtwoord: str, taal: str = "nl"):
"""
Voer trendanalyse uit op meerdere bloedtests.
"""
url = "https://app.aibloodtestinterpret.com/api/v1/analytics/trends/analyze"
payload = {
"username": gebruikersnaam,
"password": wachtwoord,
"language": taal,
"analysis_type": "comprehensive",
"blood_tests": bloedtests
}
respons = requests.post(url, json=payload, timeout=120)
respons.raise_for_status()
return respons.json()
# Voorbeeldgebruik
if __name__ == "__main__":
bloedtests = [
{
"test_date": "2025-01-15",
"parameters": [
{"short_name": "CHOL", "result": 220, "unit": "mg/dL"},
{"short_name": "LDL", "result": 145, "unit": "mg/dL"}
]
},
{
"test_date": "2025-06-15",
"parameters": [
{"short_name": "CHOL", "result": 205, "unit": "mg/dL"},
{"short_name": "LDL", "result": 135, "unit": "mg/dL"}
]
}
]
resultaat = analyseer_trends(
bloedtests=bloedtests,
gebruikersnaam="uw_gebruikersnaam",
wachtwoord="uw_wachtwoord",
taal="nl"
)
print(f"Totaal tests: {resultaat['data']['trend_summary']['total_tests']}")
print(f"Algehele beoordeling: {resultaat['data']['trend_summary']['overall_assessment']}")
Bloedtest Vergelijking API
Vergelijk 2-20 bloedtests met behulp van AI om veranderingen te identificeren, parameterbewegingen te begrijpen en narratieve samenvattingen te genereren van wat er is veranderd tussen tests.
Genereer AI-gestuurde narratieve vergelijkingen tussen bloedtests. Verbruikt 1 credit per verzoek.
- Minimum: 2 bloedtests vereist
- Maximum: 20 bloedtests ondersteund
- Focus: AI narratieve interpretatie van veranderingen
Verzoekparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
username | string | Ja | Uw API-gebruikersnaam |
password | string | Ja | Uw API-wachtwoord |
blood_tests | array | Ja | Array van bloedtestobjecten (min: 2, max: 20) |
language | string | Nee | Respons taalcode (standaard: en) |
blood_tests Array Structuur
Elk bloedtest object in de blood_tests array moet de volgende structuur hebben:
| Veld | Type | Vereist | Beschrijving |
|---|---|---|---|
test_date | string | Ja | Datum bloedtest (JJJJ-MM-DD) |
parameters | array | Ja | Array van bloedparameters met short_name, result, unit |
Referentie responsvelden
data.comparison_summary Object
| Veld | Type | Beschrijving |
|---|---|---|
total_tests_compared | integer | Aantal vergeleken tests |
date_range | object | Start- en einddatum van vergelijking |
overall_change | string | Algehele veranderingsbeoordeling. Zie waarden |
parameters_analyzed | integer | Aantal geanalyseerde parameters |
data.parameter_comparisons Array Element
| Veld | Type | Beschrijving |
|---|---|---|
parameter_name | string | Naam bloedparameter |
initial_value | object | Startwaarde (test_date, result, unit, evaluation) |
final_value | object | Eindwaarde (test_date, result, unit, evaluation) |
change_percent | number | Procentuele verandering tussen eerste en laatste test |
change_direction | string | Richting van verandering. Zie waarden |
assessment | string | Of verandering positief of negatief is. Zie waarden |
narrative | string | AI-gegenereerde verhaaluitleg van verandering |
data.ai_interpretation Object
| Veld | Type | Beschrijving |
|---|---|---|
key_improvements | array | Lijst van parameters met significante verbetering |
areas_of_concern | array | Parameters die verslechtering tonen |
stable_parameters | array | Parameters met minimale verandering |
overall_summary | string | AI-gegenereerde algehele narratieve samenvatting |
recommendations | array | Aanbevelingen op basis van geïdentificeerde veranderingen |
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/bloodtest/comparison/analyze" \
-H "Content-Type: application/json" \
-d '{
"username": "uw_gebruikersnaam",
"password": "uw_wachtwoord",
"language": "nl",
"blood_tests": [
{
"test_date": "2025-01-15",
"parameters": [
{"short_name": "CHOL", "result": 220, "unit": "mg/dL"},
{"short_name": "LDL", "result": 145, "unit": "mg/dL"},
{"short_name": "HDL", "result": 42, "unit": "mg/dL"},
{"short_name": "TRIG", "result": 165, "unit": "mg/dL"}
]
},
{
"test_date": "2025-12-15",
"parameters": [
{"short_name": "CHOL", "result": 195, "unit": "mg/dL"},
{"short_name": "LDL", "result": 125, "unit": "mg/dL"},
{"short_name": "HDL", "result": 52, "unit": "mg/dL"},
{"short_name": "TRIG", "result": 140, "unit": "mg/dL"}
]
}
]
}'
Python Voorbeeld
import requests
def vergelijk_bloedtests(bloedtests: list, gebruikersnaam: str, wachtwoord: str, taal: str = "nl"):
"""
Vergelijk bloedtests met behulp van AI-narratieve analyse.
"""
url = "https://app.aibloodtestinterpret.com/api/v1/bloodtest/comparison/analyze"
payload = {
"username": gebruikersnaam,
"password": wachtwoord,
"language": taal,
"blood_tests": bloedtests
}
respons = requests.post(url, json=payload, timeout=120)
respons.raise_for_status()
return respons.json()
# Voorbeeldgebruik
if __name__ == "__main__":
bloedtests = [
{
"test_date": "2025-01-15",
"parameters": [
{"short_name": "CHOL", "result": 220, "unit": "mg/dL"},
{"short_name": "LDL", "result": 145, "unit": "mg/dL"}
]
},
{
"test_date": "2025-12-15",
"parameters": [
{"short_name": "CHOL", "result": 195, "unit": "mg/dL"},
{"short_name": "LDL", "result": 125, "unit": "mg/dL"}
]
}
]
resultaat = vergelijk_bloedtests(
bloedtests=bloedtests,
gebruikersnaam="uw_gebruikersnaam",
wachtwoord="uw_wachtwoord",
taal="nl"
)
print(f"Totaal vergeleken tests: {resultaat['data']['comparison_summary']['total_tests_compared']}")
print(f"Algehele verandering: {resultaat['data']['comparison_summary']['overall_change']}")
Trefwoord Referentie
Volledige referentie voor alle invoertrefwoordwaarden die worden gebruikt in Kantesti API-endpoints. Gebruik deze exacte waarden bij API-verzoeken.
analysis_type Trendanalyse API
Specificeert het type trendanalyse dat moet worden uitgevoerd.
| Waarde | Standaard | Beschrijving |
|---|---|---|
comprehensive | ✓ | Volledige analyse met statistieken, grafieken en AI-interpretatie |
statistical | Alleen statistische analyse | |
summary | Alleen samenvatting op hoog niveau |
health_goals Voedings-API
Gezondheidsdoelen voor gepersonaliseerde voedingsaanbevelingen. Meerdere waarden kunnen als array worden opgegeven.
| Waarde | Beschrijving |
|---|---|
maintain | Huidige gezondheid behouden (standaard) |
improve_energy | Focus op energieniveaus |
weight_management | Gezond gewichtsbeheer |
heart_health | Cardiovasculaire gezondheid |
immune_support | Ondersteuning immuunsysteem |
digestive_health | Spijsverteringswelzijn |
bone_health | Botgezondheid |
mental_clarity | Cognitieve functie |
dietary_restrictions Voedings-API
Dieetbeperkingen en allergieën. Meerdere waarden kunnen als array worden opgegeven. Vrije tekst wordt ook geaccepteerd voor aangepaste beperkingen.
| Waarde | Beschrijving |
|---|---|
low_sodium | Verminderde natriuminname |
low_sugar | Verminderde suikerinname |
low_fat | Verminderde vetinname |
gluten_free | Geen gluten |
dairy_free | Geen zuivel |
nut_free | Geen noten |
soy_free | Geen soja |
egg_free | Geen eieren |
halal | Halal-conform |
kosher | Koosjer-conform |
Vrije tekst wordt ook geaccepteerd voor aangepaste dieetbeperkingen die hierboven niet worden vermeld.
dietary_preferences Voedings-API
Dieetlevensstijlvoorkeuren voor maaltijdplanning.
| Waarde | Beschrijving |
|---|---|
omnivore | Geen beperkingen (standaard) |
vegetarian | Geen vlees |
vegan | Geen dierlijke producten |
pescatarian | Vegetarisch + vis |
keto | Ketogeen dieet |
paleo | Paleolithisch dieet |
mediterranean | Mediterraan dieet |
Het plan volgt dietary_preferences, dietary_restrictions en allergies in elk onderdeel: maaltijden, aanbevolen voeding en supplementen (vegetarisch: geen vlees, vis, lever of visolie; omega-3 uit algenolie, lijnzaad of walnoten).
activity_level Voedings-API
Fysiek activiteitsniveau voor calorische en voedingsberekeningen.
| Waarde | Beschrijving |
|---|---|
sedentary | Weinig of geen beweging |
light | Lichte beweging 1-3 dagen/week |
moderate | Matige beweging 3-5 dagen/week (standaard) |
active | Intensieve beweging 6-7 dagen/week |
very_active | Zeer intensieve beweging of fysiek werk |
meal_frequency Voedings-API
De maaltijden die elke dag van het plan heeft, en verder niets. De respons somt ze op in nutrition_plan.metadata.meal_slots. De sandbox antwoordt met dezelfde maaltijden, zodat u elke optie kunt testen zonder API-quota te verbruiken.
| Waarde | Maaltijden van elke dag |
|---|---|
1 | dinner |
2 | lunch, dinner |
3 | breakfast, lunch, dinner |
4 | breakfast, lunch, afternoon_snack, dinner |
5 of meer | breakfast, morning_snack, lunch, afternoon_snack, dinner (standaard) |
"2 meals + 1 snack", "3 meals and 2 snacks" | De opgegeven maaltijden en snacks (maximaal 3 maaltijden en 2 snacks) |
"intermittent", "16:8" | lunch, afternoon_snack, dinner, alle tussen 12:00 en 20:00 |
["breakfast", "dinner"] | Precies de opgegeven maaltijden |
budget Voedings-API
Voedingsbudget van het maaltijdplan: een niveau, of een bedrag. Met een bedrag staat elke cost_estimate in die valuta en blijven de maaltijden van elke dag daarbinnen.
| Waarde | Beschrijving |
|---|---|
low | Budgetvriendelijke opties |
moderate | Evenwichtige opties (standaard) |
high | Premium opties |
"10-20 EUR/day", "€15 a day", "100 EUR per week" | Een bedrag per dag, week of maand, met de valuta (EUR, USD, GBP, TRY, ... of € $ £ ₺) |
{"min": 10, "max": 20, "currency": "EUR"} | Hetzelfde bedrag als object (optioneel "period": "day", "week" of "month") |
gender Alle API's
Geslacht van de patiënt voor gepersonaliseerde referentiebereiken en aanbevelingen.
| Waarde | Beschrijving |
|---|---|
male | Mannelijke patiënt |
female | Vrouwelijke patiënt |
other | Anders of niet gespecificeerd |
Uitvoer trefwoorden
De volgende trefwoorden verschijnen in API-antwoorden. Begrip van deze waarden helpt u resultaten correct te interpreteren en weer te geven.
evaluation Bloedtest- & Vergelijkings-APIs
Beoordelingsstatus van parameter die aangeeft hoe het resultaat zich verhoudt tot referentiebereiken.
| Waarde | Beschrijving |
|---|---|
normal | Binnen normaal referentiebereik |
low | Onder normaal bereik |
high | Boven normaal bereik |
critical_low | Kritiek laag (onmiddellijke aandacht vereist) |
critical_high | Kritiek hoog (onmiddellijke aandacht vereist) |
borderline_low | Licht onder normaal bereik |
borderline_high | Licht boven normaal bereik |
Wat de bloedtestanalyse-API per type teruggeeft:
| Waarde | Rijtype | Tonen als |
|---|---|---|
optimal, normal | range | Normaal |
slightly_low, slightly_high | range | Grensgeval (buiten het normale bereik, binnen het buitenste bereik) |
low, high | range | Afwijkend |
good | binary | Normaal (bijv. "Negatief" waar negatief wordt verwacht) |
bad | binary | Afwijkend (bijv. "Positief" waar negatief wordt verwacht) |
Unknown | beide | Niet beoordeeld (geen resultaat, of geen referentie om het aan te toetsen) — normaal noch afwijkend |
Referentiebereiken Bloedtest- & Vergelijkings-APIs
Elke range-marker heeft drie geneste bereiken, van het smalste tot het breedste. Toon elk bereik met label en eenheid (bijv. Optimaal: 0.0 – 0.51 %) en markeer met evaluation het bereik waarin het resultaat valt. Verberg een bereik waarvan de velden null zijn; binary-rijen hebben geen bereiken.
| Te tonen label | Velden | Het resultaat valt hier als evaluation is |
|---|---|---|
| Optimaal | range_optimal_min – range_optimal_max | optimal |
| Normaal (referentiebereik) | range_normal_min – range_normal_max | normal |
| Grensgebied | range_min – range_max | slightly_low, slightly_high (tussen het normale bereik en deze grens: grenswaardig) |
| Buiten het grensgebied | — | low, high (afwijkend) |
Voorbeeld: een resultaat van 0.2 % met Optimaal 0.0 – 0.51 %, Normaal 0.0 – 0.6 % en Grensgebied 0.0 – 0.9 % valt in het optimale bereik (evaluation: optimal).
trend_assessment Vergelijkings- & Trend-APIs
Algehele beoordeling van parametertrends tussen tests.
| Waarde | Beschrijving |
|---|---|
positive | Verbeterd (richting normaal bereik) |
negative | Verslechterd (weg van normaal bereik) |
stable | Relatief onveranderd tussen tests |
improving | Algehele verbeteringstrend |
worsening | Algehele verslechteringstrend |
trend_direction Trendanalyse-API
Richting van parameterwaardeveranderingen in de tijd.
| Waarde | Beschrijving |
|---|---|
upward | Waarden stijgen in de tijd |
downward | Waarden dalen in de tijd |
stable | Minimale verandering in de tijd |
trend_strength Trendanalyse-API
Sterkte van de waargenomen trend.
| Waarde | Beschrijving |
|---|---|
strong | >15% verandering tussen periodes |
moderate | 5-15% verandering tussen periodes |
mild | <5% verandering tussen periodes |
health_score / score_interpretation Gezondheidsscore-API
Algehele interpretatie van de gezondheidsscore op basis van geanalyseerde parameters.
| Waarde | Beschrijving |
|---|---|
excellent | Alle markers binnen optimaal bereik |
good | De meeste markers binnen normaal bereik |
fair | Sommige markers vereisen aandacht |
poor | Meerdere markers vereisen aandacht |
Hulpprogramma Endpoints
Controleer uw resterende API-quota. Authenticatie vereist.
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/quota/check" \
-H "Content-Type: application/json" \
-d '{"username": "UW_GEBRUIKERSNAAM", "password": "UW_WACHTWOORD"}'
Voorbeeld Respons
{
"status": "success",
"quota": {
"remaining": 847,
"total": 1000,
"reset_date": "2026-01-01",
"plan": "professional"
}
}
API Familiaire Gezondheidsrisicobeoordeling
De Kantesti API Familiaire Gezondheidsrisicobeoordeling is een AI-gestuurd platform voor analyse van erfelijke gezondheidsrisico's. Het genereert uitgebreide familiegezondheidsrapporten door de medische familiegeschiedenis, gezondheidprofielen van patiënten en bloedtestgegevens te analyseren om erfelijke risicofactoren te identificeren en gepersonaliseerde preventieve zorgaanbevelingen te bieden.
AI-gestuurde erfelijke risicoanalyse
De Family Health API maakt gebruik van geavanceerde AI-modellen om de medische familiegeschiedenis te kruisen met de bloedtestgegevens van de patiënt, waarbij erfelijke risicopatronen worden geïdentificeerd in de categorieën cardiovasculair, metabool, oncologisch, neurologisch, respiratoir, auto-immuun, genetisch, geestelijke gezondheid en nier/lever. Rapporten omvatten risicoscore, preventief zorgplan, genetische screeningaanbevelingen en levensstijladviezen — allemaal gelokaliseerd in meer dan 100 talen.
- Erfelijke risicoanalyse — Classificatie in hoog, matig en laag risico
- Stamboomanalyse — Risicokarteling van vaderlijke en moederlijke lijnen
- Bloedtest correlatie — Kruising van familiegeschiedenis met bloedparameters
- Genetische screeningaanbevelingen — Gepersonaliseerde suggesties voor genetische tests
- Preventief zorgplan — Leeftijdsgeschikte screeningprogramma's
- Medicijnanalyse — Beoordeling van erfelijke interacties en gevoeligheden
- 100+ talen ondersteund — Volledige lokalisatie van rapporten
- Sandbox-modus — Test de integratie zonder credits te verbruiken
Overzicht endpoints
| Endpoint | Methode | Beschrijving | Auth |
|---|---|---|---|
/api/v1/family-health/analyze | POST | Genereert uitgebreid risicobeoordeligsrapport | Vereist (1 credit) |
/api/v1/family-health/validate | POST | Valideert de aanvraaggegevens (geen quotaverbruik) | Vereist (Gratis) |
/api/v1/family-health/supported-languages | GET | Lijst van 100+ ondersteunde talen | Niet vereist |
/api/v1/family-health/condition-categories | GET | Lijst van aandoeningscategorieën | Niet vereist |
/api/v1/family-health/family-relations | GET | Lijst van familierelatie types | Niet vereist |
/api/v1/family-health/sandbox/analyze | POST | Sandbox-test met voorbeeldgegevens | Vereist (Gratis) |
Genereert een uitgebreid AI-gestuurd rapport voor familiaire gezondheidsrisicobeoordeling.
Aanvraagparameters (JSON Body)
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
username | string | Ja | API gebruikersnaam |
password | string | Ja | API wachtwoord |
patient_data | object | Ja | Patiëntinformatie |
family_members | array | Ja* | Familieleden (max 100) |
health_profile | object | Ja* | Gezondheidsprofiel |
blood_test_data | array | Nee | Bloedtestgegevens |
language | string | Nee | Taalcode (standaard: en) |
cURL voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/family-health/analyze" \
-H "Content-Type: application/json" \
-d '{"username":"GEBRUIKER","password":"WACHTWOORD","patient_data":{"name":"Anna de Vries","age":42,"gender":"female"},"family_members":[{"relation":"father","age":70,"conditions":["hypertension"]}],"language":"nl"}'
Python voorbeeld
import requests
url = "https://app.aibloodtestinterpret.com/api/v1/family-health/analyze"
payload = {"username":"GEBRUIKER","password":"WACHTWOORD","patient_data":{"name":"Anna de Vries","age":42,"gender":"female"},"family_members":[{"relation":"father","age":70,"conditions":["hypertension"]}],"language":"nl"}
response = requests.post(url, json=payload, timeout=120)
print(response.json())
Voorbeeld respons
{"status":"success","data":{"report_data":{"report_title":"Familiaire Gezondheidsrisicobeoordeling Rapport","hereditary_risk_analysis":{"high_risk":[{"condition":"Cardiovasculaire ziekte","risk_score":75}]},"genetic_screening_recommendations":["BRCA1/BRCA2 genetische test"]}},"timestamp":"2026-03-23T10:30:00Z","api_version":"1.0.0"}
Foutcodes Family Health API
| Code | HTTP | Beschrijving |
|---|---|---|
AUTH_1001 | 401 | Ontbrekende inloggegevens |
AUTH_1002 | 401 | Ongeldige inloggegevens |
QUOTA_1101 | 403 | Onvoldoende API-quotum |
VAL_2001 | 400 | Verplicht veld ontbreekt |
VAL_2003 | 400 | Niet-ondersteunde taalcode |
PROC_3001 | 500 | Rapportgeneratie mislukt |
SRV_5001 | 500 | Interne serverfout |
Sandbox Endpoint Family Health
Test uw integratie zonder credits te verbruiken.
| API | Sandbox | Beschrijving |
|---|---|---|
| Family Health | /api/v1/family-health/sandbox/analyze | Voorbeeld rapportgegevens |
Referentie-endpoints (Geen auth)
| Endpoint | Methode | Beschrijving |
|---|---|---|
/api/v1/family-health/supported-languages | GET | 100+ ondersteunde talen |
/api/v1/family-health/condition-categories | GET | 9 aandoeningscategorieën |
/api/v1/family-health/family-relations | GET | 14 familierelaties |
Lichaamskaart API
De Kantesti Lichaamskaart API vertaalt een laboratoriumpanel naar anatomie. Elk resultaat buiten de referentiewaarden of op de grens daarvan wordt op een van de 13 lichaamsregio's geplaatst, en de API retourneert zowel de legenda — welke regio, hoe ernstig, welke markers daartoe leidden — als een URL van een bijpassende illustratie van het lichaam.
Standaard deterministisch
Markernamen worden vergeleken met meertalige aliastabellen die 39 rapporttalen omvatten, inclusief niet-Latijnse schriften — u stuurt de analytnamen precies zoals uw laboratorium ze heeft afgedrukt, in welke taal dan ook. Er wordt geen model aangeroepen en geen illustratie gegenereerd tenzij u daarom vraagt, dus het standaardverzoek is vrij van AI-kosten en geeft steeds hetzelfde antwoord voor hetzelfde panel.
- 13 anatomische regio's — Hersenen en zenuwen, schildklier, hart en bloedvaten, lever, alvleesklier, bijnieren, nieren, darmen, voortplantingsorganen, bloed, immuunsysteem, botten, spieren
- Ernstniveaus — Niveau 2 voor resultaten buiten de referentiewaarden, niveau 1 voor grenswaarden, zodat een legenda zonder extra logica gekleurd kan worden
- Markertoewijzing — Elke regio vermeldt de markers die daartoe leidden, de ernstigste eerst
- Taalonafhankelijke uitvoer — Regiosleutels en uw eigen markernamen; de illustratie bevat geen tekst, dus één afbeelding volstaat voor elke taal
- Ondertekende illustratie-URL's — Elke illustratie-URL bevat een HMAC-handtekening, zodat niemand ze kan opsommen of vervalsen
- Eerlijke lege toestanden — Een schoon panel geeft het gedeelde lichaam "alles in orde" terug; een panel waarvan de gemarkeerde markers niet geplaatst kunnen worden geeft een fout terug in plaats van een misleidend groen lichaam
- Deterministische modus — Standaard. Geen modelaanroep, geen afbeeldingscredit, reproduceerbare uitvoer
- Sandbox-modus — Test uw integratie zonder credits te verbruiken
Overzicht endpoints
| Endpoint | Methode | Beschrijving | Auth |
|---|---|---|---|
/api/v1/body-map/analyze | POST | Bouwt een lichaamskaart op uit een laboratoriumpanel | Vereist (1 credit) |
/api/v1/body-map/validate | POST | Valideert een payload en toont welke markers herkend worden (geen quotaverbruik) | Vereist (Gratis) |
/api/v1/body-map/sandbox | POST | Sandbox-test met voorbeeldgegevens (geen quotaverbruik) | Vereist (Gratis) |
/api/v1/body-map/regions | GET | Lijst van alle 13 lichaamsregio's en de ernstniveaus | Niet vereist |
/api/v1/body-map/info | GET | Metagegevens over mogelijkheden, limieten en authenticatie | Niet vereist |
Plaatst elk gemarkeerd resultaat uit een laboratoriumpanel op het lichaam. Verbruikt 1 credit per geslaagd verzoek. Een verzoek dat de validatie niet doorstaat, of waarvan de gemarkeerde markers niet geplaatst kunnen worden, wordt niet in rekening gebracht.
Verzoekparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
username | string | Ja | Uw API-gebruikersnaam |
password | string | Ja | Uw API-wachtwoord |
parameters | array | Ja | Objecten met laboratoriumresultaten. Max 500. Elk object heeft een analytnaam en een evaluation nodig. |
interpretation | array | Nee | Klinische interpretatie, alleen als context gebruikt wanneer ai_assist aanstaat |
ai_assist | boolean | Nee | Laat het model markers plaatsen die de aliastabellen niet herkennen (standaard: false) |
include_image | boolean | Nee | Vraagt de gerenderde illustratie op (standaard: false) |
image_wait | integer | Nee | Aantal seconden wachten op een nieuw gegenereerde illustratie, 0-30 (standaard: 0) |
Velden van het parameterobject
| Veld | Type | Vereist | Beschrijving |
|---|---|---|---|
short_name | string | Ja* | Analytnaam zoals afgedrukt door het laboratorium. *Ten minste één van short_name, long_name, name, parameter_name of parameter is vereist. |
long_name | string | Nee | Volledige analytnaam; verbetert de herkenning van afkortingen |
evaluation | string | Nee | Eén van high, low, bad, slightly_high, slightly_low, normal. Alleen gemarkeerde waarden verschijnen op de kaart. |
result | string|number | Nee | De gemeten waarde; bepaalt mede welke regio's getekend worden |
unit | string | Nee | Eenheid van het resultaat, in welke schrijfwijze dan ook |
range_normal_min | number | Nee | Ondergrens van de referentiewaarde |
range_normal_max | number | Nee | Bovengrens van de referentiewaarde |
category | string | Nee | Laboratoriumcategorie; gebruikt als terugval wanneer de analytnaam onbekend is |
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/body-map/analyze" \
-H "Content-Type: application/json" \
-d '{
"username": "UW_GEBRUIKERSNAAM",
"password": "UW_WACHTWOORD",
"parameters": [
{"short_name": "ALT", "long_name": "Alanine aminotransferase", "result": "65", "unit": "U/L", "range_normal_min": 7, "range_normal_max": 45, "evaluation": "high"},
{"short_name": "AST", "long_name": "Aspartate aminotransferase", "result": "48", "unit": "U/L", "range_normal_min": 8, "range_normal_max": 40, "evaluation": "slightly_high"},
{"short_name": "TSH", "long_name": "Thyrotropin", "result": "6.2", "unit": "mIU/L", "range_normal_min": 0.4, "range_normal_max": 4.0, "evaluation": "high"}
]
}'
Python Voorbeeld
import requests
def build_body_map(parameters, username, password, include_image=False):
"""
Plaats bloedtestresultaten buiten de referentiewaarden op het lichaam.
Retourneert de regio's, de legenda en de URL's van de illustratie.
"""
url = "https://app.aibloodtestinterpret.com/api/v1/body-map/analyze"
response = requests.post(url, json={
"username": username,
"password": password,
"parameters": parameters,
"include_image": include_image,
}, timeout=60)
response.raise_for_status()
return response.json()
# Voorbeeldgebruik
result = build_body_map(
parameters=[
{"short_name": "ALT", "result": "65", "unit": "U/L", "evaluation": "high"},
{"short_name": "TSH", "result": "6.2", "unit": "mIU/L", "evaluation": "high"},
],
username="gebruikersnaam",
password="wachtwoord",
)
body_map = result["data"]["body_map"]
for region in body_map["regions"]:
ernst = "buiten referentie" if region["level"] == 2 else "grenswaarde"
print(f" {region['key']}: {ernst} ({', '.join(region['markers'])})")
print(f"Illustratie: {body_map['image_url'] or body_map['fallback_url']}")
Voorbeeldrespons
{
"status": "success",
"api_version": "1.0.0",
"message": "Body map generated successfully",
"data": {
"body_map": {
"v": 4,
"spec": "v4-thy2-liv2",
"unmapped": 0,
"image_url": "/static/body_maps/v4-thy2-liv2.webp",
"fallback_url": "/body-map/v4-thy2-liv2.0123456789abcdef.webp",
"regions": [
{"key": "thyroid", "level": 2, "drawn": true, "markers": ["TSH"]},
{"key": "liver", "level": 2, "drawn": true, "markers": ["ALT", "AST"]}
]
},
"engine_version": 4,
"region_keys": ["brain_nerves", "thyroid", "heart_vessels", "liver", "pancreas", "adrenals", "kidneys", "gut", "reproductive", "blood", "immune", "bones", "muscles"],
"mode": "deterministic",
"all_clear": false
},
"timestamp": "2026-09-18T10:30:00Z"
}
Referentie responsvelden
| Veld | Type | Beschrijving |
|---|---|---|
body_map.spec | string | Canonieke aanduiding van deze combinatie van regio's en ernstniveaus. Identieke panels delen een spec en daarmee dezelfde illustratie uit de cache. |
body_map.regions[].key | string | Eén van de 13 regiosleutels |
body_map.regions[].level | integer | 2 = buiten referentie, 1 = grenswaarde |
body_map.regions[].drawn | boolean | Of deze regio op de illustratie is ingekleurd. De legenda vermeldt altijd elke regio; er worden er hoogstens zes getekend. |
body_map.regions[].markers | array | Markernamen die deze regio op de kaart brachten, de ernstigste eerst |
body_map.unmapped | integer | Gemarkeerde markers die op geen enkele regio geplaatst konden worden |
body_map.image_url | string|null | Illustratie uit de cache. null zolang het bestand niet bestaat — val dan terug op fallback_url. |
body_map.fallback_url | string | Ondertekende genererende URL. Altijd aanwezig. Antwoordt met 503 en Retry-After zolang de illustratie nog gemaakt wordt. |
all_clear | boolean | true wanneer er niets gemarkeerd is; dan geldt het gedeelde lichaam "alles in orde" |
mode | string | deterministic of ai_assisted |
De respons is bewust taalonafhankelijk: hij bevat regiosleutels en de markernamen van uw eigen laboratorium. Vertaal de 13 regiosleutels in uw eigen client en geef de voorkeur aan de legenda boven de illustratie — mocht het beeldmodel ooit het verkeerde orgaan inkleuren, dan klopt de legenda ernaast nog steeds.
Controleert een payload zonder de analyse uit te voeren en meldt welke van uw analytnamen de engine herkent, onder recognised en unrecognised. Authenticatie is vereist; er wordt geen quota verbruikt en het endpoint blijft werken op een account zonder resterende credits.
Referentie-endpoints
Beide referentie-endpoints zijn gratis en vereisen geen authenticatie.
Geeft de 13 lichaamsregio's in canonieke volgorde terug, samen met de ernstniveaus. Gebruik dit om uw eigen vertalingen van de legenda op te bouwen.
Metagegevens over de mogelijkheden: of de engine op deze deployment ingeschakeld is, de verzoeklimieten, het authenticatieschema en de volledige lijst met endpoints.
Sandbox
POST /api/v1/body-map/sandbox retourneert een voorbeeldrespons in precies de vorm die /analyze oplevert, zodat een client die tegen de sandbox is geschreven ongewijzigd tegen productie werkt. Authenticatie is vereist, zodat de aanroep meteen uw inloggegevens bevestigt, maar er wordt geen quota verbruikt en er vindt geen analyse plaats.
| Foutcode | HTTP | Betekenis |
|---|---|---|
AUTH_1001 | 401 | Ontbrekende inloggegevens |
AUTH_1002 | 401 | Ongeldige gebruikersnaam of wachtwoord |
QUOTA_1101 | 403 | Onvoldoende API-quotum |
VAL_2001 | 400 | parameters ontbreekt |
VAL_2002 | 400 | Ongeldig gegevensformaat |
VAL_2005 | 400 | parameters is leeg |
VAL_2006 | 400 | Meer dan 500 parameters |
RES_4004 | 422 | Er zijn gemarkeerde resultaten, maar geen ervan hoort bij een lichaamsregio |
RES_4005 | 503 | De lichaamskaart-engine is uitgeschakeld op deze deployment |
Biologische Bloedleeftijd API
De Kantesti Biologische Bloedleeftijd API beantwoordt een vraag die een referentiewaarde niet kan beantwoorden: hoe oud ziet dit bloed eruit? De API berekent de biologische leeftijd uit een routinepanel met het gepubliceerde Levine PhenoAge-model en leidt daarnaast tot 18 klinische indices af — FIB-4, HOMA-IR, TyG, eGFR, AIP, NLR, aniongat en meer — die een laboratoriumrapport zelden afdrukt.
Een uitkomst, ook uit een onvolledig panel
PhenoAge heeft negen markers nodig en de meeste panels bevatten er minder. Zijn alle negen aanwezig, dan geeft de API de gepubliceerde formule ongewijzigd terug. Zo niet, dan worden de ontbrekende invoerwaarden aangevuld met populatiemedianen en komt het antwoord terug als source: "partial", zodat u altijd weet welke van de twee u kreeg. Beide routes zijn deterministisch: geen modelaanroep, geen extra kosten, steeds hetzelfde antwoord voor hetzelfde panel.
- Levine PhenoAge — Het gepubliceerde model, ongewijzigd berekend wanneer alle negen markers aanwezig zijn
- Geleidelijke terugval — Een onvolledig panel levert alsnog een uitkomst op, duidelijk als zodanig gelabeld en met de ontbrekende markers erbij
- 18 klinische indices — FIB-4, De Ritis, A/G-ratio, HOMA-IR, TyG, eAG, eGFR, aniongat, ureum/creatinine, non-HDL, TG/HDL, AIP, TC/HDL, restcholesterol, NLR, Mentzer, transferrinesaturatie, gecorrigeerd calcium
- Automatische eenheidsconversie — SI- en conventionele eenheden, in welke schrijfwijze dan ook, met fysiologische plausibiliteitscontroles die onmogelijke waarden afwijzen
- Meertalige markerherkenning — Analytnamen in 39 rapporttalen inclusief niet-Latijnse schriften; u stuurt nooit interne sleutels
- Deterministische modus — Standaard. Geen netwerkaanroep, geen AI-kosten, reproduceerbare uitvoer
- Optionele modellagen — Rijherkenning, een verbeterde schatting en een persoonlijke notitie, elk achter een eigen vlag. Een volledige PhenoAge met negen markers wordt nooit door het model overschreven.
- 100 talen — Voor de optionele persoonlijke notitie
- Sandbox-modus — Test uw integratie zonder credits te verbruiken
Overzicht endpoints
| Endpoint | Methode | Beschrijving | Auth |
|---|---|---|---|
/api/v1/blood-age/analyze | POST | Berekent de biologische bloedleeftijd en de afgeleide klinische indices | Vereist (1 credit) |
/api/v1/blood-age/validate | POST | Valideert een payload en toont welke markers het panel bevat (geen quotaverbruik) | Vereist (Gratis) |
/api/v1/blood-age/sandbox | POST | Sandbox-test met voorbeeldgegevens (geen quotaverbruik) | Vereist (Gratis) |
/api/v1/blood-age/biomarkers | GET | Lijst van de markers die de engine leest en hun doeleenheden | Niet vereist |
/api/v1/blood-age/info | GET | Metagegevens over mogelijkheden, limieten en authenticatie | Niet vereist |
Berekent de biologische bloedleeftijd en de afgeleide indices uit een laboratoriumpanel. Verbruikt 1 credit per geslaagd verzoek. Een verzoek dat de validatie niet doorstaat, of waarvan het panel niets berekenbaars oplevert, wordt niet in rekening gebracht.
Verzoekparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
username | string | Ja | Uw API-gebruikersnaam |
password | string | Ja | Uw API-wachtwoord |
parameters | array | Ja | Objecten met laboratoriumresultaten. Max 500. Elk object heeft een analytnaam en een resultaat nodig. |
metadata | object | Nee | Rapportkop. Sterk aanbevolen: PhenoAge bevat een term voor de kalenderleeftijd. Leest patient_age, patient_sex, dob, lab_date. |
patient | object | Nee | {"age": 42, "gender": "female"} — gebruikt wanneer de metagegevens deze niet bevatten |
interpretation | array | Nee | Klinische interpretatie, alleen als context voor het model gebruikt |
language | string | Nee | Taal van de optionele persoonlijke notitie (standaard: en). Zie ondersteunde talen. |
ai_assist | boolean | Nee | Laat het model ongebruikelijke analytnamen herkennen (standaard: false) |
ai_estimate | boolean | Nee | Laat het model een onvolledige leeftijd verbeteren (standaard: false) |
ai_note | boolean | Nee | Vraagt een persoonlijke notitie in language (standaard: false) |
De negen PhenoAge-markers
Stuur ze onder de namen die uw laboratorium heeft afgedrukt — de herkenning gebeurt op naam, in elk van de 39 ondersteunde rapporttalen, en eenheden worden automatisch omgerekend.
| Marker | Gebruikelijke naam | Doeleenheid |
|---|---|---|
albumin | Albumine | g/L |
creatinine | Creatinine | µmol/L |
glucose | Glucose / Nuchtere bloedsuiker | mmol/L |
crp | C-reactief proteïne | mg/L |
lymph | Lymfocyten | % |
mcv | Gemiddeld celvolume | fL |
rdw | Rodecelverdelingsbreedte | % |
alp | Alkalische fosfatase | U/L |
wbc | Aantal witte bloedcellen | 10⁹/L |
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/blood-age/analyze" \
-H "Content-Type: application/json" \
-d '{
"username": "UW_GEBRUIKERSNAAM",
"password": "UW_WACHTWOORD",
"metadata": {"patient_age": "40", "patient_sex": "Male", "lab_date": "2026-09-11"},
"parameters": [
{"short_name": "Albumin", "result": 4.4, "unit": "g/dL"},
{"short_name": "Creatinine", "result": 0.9, "unit": "mg/dL"},
{"short_name": "Glucose", "result": 90, "unit": "mg/dL"},
{"short_name": "CRP", "result": 1.0, "unit": "mg/L"},
{"short_name": "Lymphocytes", "result": 30, "unit": "%"},
{"short_name": "MCV", "result": 90, "unit": "fL"},
{"short_name": "RDW", "result": 13, "unit": "%"},
{"short_name": "ALP", "result": 70, "unit": "U/L"},
{"short_name": "WBC", "result": 6.0, "unit": "10^9/L"}
]
}'
Python Voorbeeld
import requests
def biological_blood_age(parameters, metadata, username, password):
"""
Bereken de biologische bloedleeftijd uit een routinebloedpanel.
De metagegevens dragen patient_age en patient_sex aan.
"""
url = "https://app.aibloodtestinterpret.com/api/v1/blood-age/analyze"
response = requests.post(url, json={
"username": username,
"password": password,
"parameters": parameters,
"metadata": metadata,
}, timeout=60)
response.raise_for_status()
return response.json()
# Voorbeeldgebruik
result = biological_blood_age(
parameters=[
{"short_name": "Albumin", "result": 4.4, "unit": "g/dL"},
{"short_name": "Creatinine", "result": 0.9, "unit": "mg/dL"},
{"short_name": "Glucose", "result": 90, "unit": "mg/dL"},
{"short_name": "CRP", "result": 1.0, "unit": "mg/L"},
{"short_name": "Lymphocytes", "result": 30, "unit": "%"},
{"short_name": "MCV", "result": 90, "unit": "fL"},
{"short_name": "RDW", "result": 13, "unit": "%"},
{"short_name": "ALP", "result": 70, "unit": "U/L"},
{"short_name": "WBC", "result": 6.0, "unit": "10^9/L"},
],
metadata={"patient_age": "40", "patient_sex": "Male"},
username="gebruikersnaam",
password="wachtwoord",
)
samenvatting = result["data"]["summary"]
print(f"Kalenderleeftijd: {samenvatting['chronological_age']}")
print(f"Biologisch: {samenvatting['biological_age']} ({samenvatting['source']})")
print(f"Verschil: {samenvatting['delta_years']:+} jaar")
Voorbeeldrespons
{
"status": "success",
"api_version": "1.0.0",
"message": "Biological blood age computed successfully",
"data": {
"blood_age": {
"version": 1,
"age": {
"status": "ok",
"source": "formula",
"chrono": 40,
"pheno": 35.1,
"delta": -4.9,
"sex": "m",
"found": ["albumin", "creatinine", "glucose", "crp", "lymph", "mcv", "rdw", "alp", "wbc"],
"missing": [],
"inputs": {"albumin": 44.0, "creatinine": 79.56, "glucose": 5.0}
},
"indices": [
{"key": "fib4", "group": "liver", "value": 1.12, "unit": "", "band": "ok", "from": ["AST", "ALT", "PLT"]},
{"key": "egfr", "group": "kidneys", "value": 98.0, "unit": "mL/min/1.73m2", "band": "ok", "from": ["Creatinine"]},
{"key": "nlr", "group": "immune", "value": 1.8, "unit": "", "band": "ok", "from": ["Neutrophils", "Lymphocytes"]}
]
},
"engine_version": 1,
"mode": "deterministic",
"summary": {
"status": "ok",
"source": "formula",
"chronological_age": 40,
"biological_age": 35.1,
"delta_years": -4.9,
"sex": "m",
"markers_found": 9,
"markers_missing": [],
"indices_count": 3
}
},
"timestamp": "2026-09-18T10:30:00Z"
}
Referentie responsvelden
| Veld | Type | Beschrijving |
|---|---|---|
summary.status | string | ok, missing_age, missing_markers, needs_markers of unavailable |
summary.source | string | formula (alle negen markers), partial (medianen ingevuld) of ai (modelschatting, alleen met ai_estimate) |
summary.chronological_age | integer|null | Leeftijd gelezen uit de metagegevens of het patiëntobject |
summary.biological_age | number|null | De berekende bloedleeftijd, in jaren |
summary.delta_years | number|null | Biologisch min kalenderleeftijd. Negatief is jonger dan de kalender. |
summary.markers_missing | array | Welke van de negen PhenoAge-markers het panel niet aanleverde |
blood_age.age.inputs | object | De omgerekende waarden die daadwerkelijk zijn gebruikt, in de doeleenheden |
blood_age.indices[].band | string | ok, borderline, high, low of info |
blood_age.indices[].from | array | De laboratoriumrijen waaruit deze index is afgeleid |
mode | string | deterministic of ai_assisted |
PhenoAge bevat een leeftijdsterm, dus zonder kalenderleeftijd komt de respons terug met status: "missing_age" en zonder uitkomst. Stuur die mee in metadata.patient_age, of in patient.age, of als geboortedatum in patient.dob. De formule geldt tussen 18 en 100 jaar.
Controleert een payload zonder de analyse uit te voeren en meldt welke van de negen PhenoAge-markers uw panel aanlevert en of er een kalenderleeftijd gelezen kon worden — de twee dingen die bepalen of u de volledige formule of de gedeeltelijke schatting krijgt. Authenticatie is vereist; er wordt geen quota verbruikt en het endpoint blijft werken op een account zonder resterende credits.
Referentie-endpoints
Beide referentie-endpoints zijn gratis en vereisen geen authenticatie.
Geeft de negen PhenoAge-invoerwaarden terug, elke marker die de engine kan lezen met zijn doeleenheid, en het leeftijdsbereik waarvoor de formule geldt.
Metagegevens over de mogelijkheden: of de engine op deze deployment ingeschakeld is, de twee modi en wat elk daarvan kost, de verzoeklimieten, het authenticatieschema en de ondersteunde talen.
Sandbox
POST /api/v1/blood-age/sandbox retourneert een voorbeeldrespons in precies de vorm die /analyze oplevert, zodat een client die tegen de sandbox is geschreven ongewijzigd tegen productie werkt. Authenticatie is vereist, zodat de aanroep meteen uw inloggegevens bevestigt, maar er wordt geen quota verbruikt en er vindt geen analyse plaats.
| Foutcode | HTTP | Betekenis |
|---|---|---|
AUTH_1001 | 401 | Ontbrekende inloggegevens |
AUTH_1002 | 401 | Ongeldige gebruikersnaam of wachtwoord |
QUOTA_1101 | 403 | Onvoldoende API-quotum |
VAL_2001 | 400 | parameters ontbreekt |
VAL_2002 | 400 | Ongeldig gegevensformaat |
VAL_2003 | 400 | Niet-ondersteunde taalcode |
VAL_2005 | 400 | parameters is leeg |
VAL_2006 | 400 | Meer dan 500 parameters |
VAL_2007 | 400 | Ongeldig patient-object |
RES_4004 | 422 | Niets berekenbaars uit deze parameters |
RES_4005 | 503 | De bloedleeftijd-engine is uitgeschakeld op deze deployment |
DNA Health API: DNA-testinterpretatie, DNA + Bloedrapport en Supplementadviseur
Met trots introduceren we de Kantesti DNA Health API: drie nieuwe AI-modules die de DNA-test van een patiënt omzetten in klinische rapporten. DNA-testinterpretatie leest een ruw genotypebestand of een genetisch rapport en stelt een uitgebreid genetisch gezondheidsrapport op. Het DNA + Bloedgezondheidsrapport combineert dat rapport met een geïnterpreteerde bloedtest en laat zien waar genen en labwaarden elkaar bevestigen of tegenspreken. De Supplementadviseur vertaalt DNA, bloedtest en een korte vragenlijst naar een persoonlijk supplementenplan, opgebouwd uit de eigen producten van uw kliniek.
Getoetst aan uw eigen bestand
Een ruw genotypebestand wordt op de server ingelezen en vergeleken met een zorgvuldig samengesteld panel van 334 markers in 20 categorieën, van methylerings-, cardiovasculaire en lipidengenen tot farmacogenomica, de stofwisseling van voedingsstoffen, dragerschap en levensduur. Elke bevinding die de AI opschrijft, wordt getoetst aan de upload: een rsID die niet in het bestand voorkomt, wordt geschrapt, en elk genotype wordt vastgezet op de waarde die in het bestand staat, zodat het rapport geen uitslag kan verzinnen.
- Elke gangbare DNA-bron — Ruwe bestanden van 23andMe, AncestryDNA, MyHeritage, FTDNA en LivingDNA, VCF-bestanden, ook in
.zipof.gz; geplakte rsID-regels; of een genetisch rapport als maximaal 6 PDF-, JPG- of PNG-bestanden - Uitgebreid genetisch rapport — Bevindingen per gezondheidsgebied, ziekterisico's, dragerschap, farmacogenomica (voorspelde metabolisatorfenotypen en de betrokken geneesmiddelgroepen), nutrigenomica, kenmerken, aanbevolen vervolgonderzoek en alarmsignalen
- Genen ontmoeten labwaarden — Het DNA + Bloedrapport typeert elk verband tussen een genetische bevinding en een labuitslag als
confirms,contradicts,neutralofwatch, met een risicomatrix, prioritaire acties en een monitoringplan - Supplementenplannen met veiligheidsregels — Dosis, vorm, tijdstip, duur, interacties en hertestmomenten; doseringen blijven binnen de aanvaardbare bovengrens van inname, bij zwangerschap gelden veilige grenswaarden, en alles waarover een voorschrijver moet beslissen, komt in
clinician_review_requiredterecht - Uw eigen productcatalogus — De adviseur beveelt de producten aan die uw kliniek voert, markeert ze als
clinic_libraryen vermeldt in de modus "alleen kliniekproducten" de behoeften die uw catalogus niet dekt - Koppelbaar en stateless — Stuur het rapport van module 1 rechtstreeks door naar module 2 en 3. Er wordt niets bij een patiënt opgeslagen, en ruwe genotypebestanden worden na het inlezen verwijderd
- 100+ rapporttalen — Het rapport wordt geschreven in de taal die u opvraagt
- Asynchrone modus — Voeg
?async=1toe en poll/api/jobs/<job_id>, zodat een lange analyse nooit op een gateway-time-out stuit - Sandbox-modus — Test uw integratie zonder credits te verbruiken
1. POST /api/v1/dna-interpretation/analyze met het DNA-bestand retourneert data.report. 2. Stuur dat rapport samen met een geïnterpreteerde bloedtest naar /api/v1/dna-blood-report/analyze. 3. Stuur hetzelfde rapport, de antwoorden op de vragenlijst en optioneel de bloedtest naar /api/v1/dna-supplements/analyze. Module 2 en 3 accepteren het DNA-rapport precies zoals het is teruggekomen: het report-object, het volledige data-object of de complete respons.
Overzicht endpoints
| Endpoint | Methode | Beschrijving | Auth |
|---|---|---|---|
/api/v1/dna-interpretation/analyze | POST | DNA-bestand, geplakte rsID-regels of rapportpagina's → uitgebreid genetisch gezondheidsrapport | Vereist (1 credit) |
/api/v1/dna-interpretation/validate | POST | Leest de upload in en toont wat er is gevonden, zonder AI-aanroep | Vereist (Gratis) |
/api/v1/dna-interpretation/sandbox | POST | Voorbeeld van een genetisch rapport | Vereist (Gratis) |
/api/v1/dna-interpretation/info | GET | Geaccepteerde invoer, limieten en rapporttalen | Niet vereist |
/api/v1/dna-blood-report/analyze | POST | DNA-rapport + geïnterpreteerde bloedtest → gecombineerd gezondheidsrapport | Vereist (1 credit) |
/api/v1/dna-blood-report/validate | POST | Controleert de payload zonder AI-aanroep | Vereist (Gratis) |
/api/v1/dna-blood-report/sandbox | POST | Voorbeeld van een gecombineerd rapport | Vereist (Gratis) |
/api/v1/dna-blood-report/info | GET | Verzoekvelden en limieten | Niet vereist |
/api/v1/dna-supplements/analyze | POST | DNA-rapport + bloedtest (optioneel) + vragenlijst → supplementenplan | Vereist (1 credit) |
/api/v1/dna-supplements/validate | POST | Controleert de payload en de antwoorden zonder AI-aanroep | Vereist (Gratis) |
/api/v1/dna-supplements/sandbox | POST | Voorbeeld van een supplementenplan | Vereist (Gratis) |
/api/v1/dna-supplements/questionnaire | GET | De 25 vragen en hun toegestane antwoorden | Niet vereist |
/api/v1/dna-supplements/settings | GET PUT | Leest of wijzigt de productcatalogus en de adviseurinstellingen van uw kliniek | Vereist (Gratis) |
/api/v1/dna-supplements/info | GET | Verzoekvelden en limieten | Niet vereist |
Interpreteert één DNA-test en retourneert een uitgebreid genetisch gezondheidsrapport. Stuur een bestand als multipart/form-data, of geplakte genotyperegels als JSON. De upload wordt direct tijdens het verzoek ingelezen, zodat een onleesbaar bestand meteen een 400 oplevert en niets kost. Er wordt pas één credit afgeschreven nadat het rapport is opgesteld.
Verzoekparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
username | string | Ja | Uw API-gebruikersnaam (of gebruik HTTP Basic-authenticatie) |
password | string | Ja | Uw API-wachtwoord |
file | file | Ja* | Eén ruw genotypebestand (.txt, .csv, .tsv, .vcf, .zip, .gz, tot 80 MB) of maximaal 6 rapportbestanden (PDF tot 20 MB, JPG/PNG tot 10 MB per bestand). *Stuur file of genotype_text. |
genotype_text | string | Ja* | Geplakte genotyperegels (rsID, chromosoom, positie, genotype), tot 2.000.000 tekens |
language | string | Nee | Taalcode van het rapport, bijv. en, de, ar (standaard: en). Zie ondersteunde talen. |
patient | object | Nee | age, sex, diagnoses, comorbidities, medications, treatments, notes. Stuur het in een multipart-verzoek mee als JSON-string. |
source_label | string | Nee | Uw eigen naam voor de bron, maximaal 120 tekens |
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/dna-interpretation/analyze?async=1" \
-u "UW_GEBRUIKERSNAAM:UW_WACHTWOORD" \
-F "file=@genome_raw_data.txt" \
-F "language=en" \
-F 'patient={"age": 41, "sex": "female", "medications": "clopidogrel"}'
# Antwoord 202 Accepted: {"status": "pending", "job_id": "...", "poll_url": "/api/jobs/...", ...}
curl -u "UW_GEBRUIKERSNAAM:UW_WACHTWOORD" "https://app.aibloodtestinterpret.com/api/jobs/JOB_ID"
Python Voorbeeld
import time
import requests
BASE = "https://app.aibloodtestinterpret.com"
AUTH = ("UW_GEBRUIKERSNAAM", "UW_WACHTWOORD")
def run(path, poll=True, **kwargs):
"""POST in asynchrone modus en poll daarna /api/jobs/<id> tot het rapport klaar is."""
resp = requests.post(f"{BASE}{path}?async=1", auth=AUTH, timeout=60, **kwargs)
body = resp.json()
if resp.status_code != 202:
return body # een fout, of een synchroon antwoord
while True:
time.sleep(body.get("poll_interval_ms", 3000) / 1000)
job = requests.get(f"{BASE}{body['poll_url']}", auth=AUTH, timeout=30).json()
if job["status"] in ("completed", "failed"):
return job["result"]["response"]
# 1) DNA-testinterpretatie
with open("genome_raw_data.txt", "rb") as fh:
dna = run("/api/v1/dna-interpretation/analyze",
files={"file": fh},
data={"language": "en", "patient": '{"age": 41, "sex": "female"}'})
report = dna["data"]["report"]
print(report["executive_summary"])
for section in report["sections"]:
print(section["title"], "-", section["risk_level"])
Voorbeeldrespons
{
"status": "success",
"api_version": "1.0.0",
"message": "DNA test interpretation completed successfully",
"data": {
"analysis_id": "DNA-3F9A1C07B2",
"module": "dna_interpretation",
"generated_at": "2026-09-23T10:30:00Z",
"language": "en",
"source": {
"kind": "raw", "format": "23andme", "build": "GRCh37",
"total_records": 638463, "called": 631022, "no_call_rate": 0.0117,
"inferred_sex": "female", "panel_total": 334, "panel_found": 291,
"filename": "genome_raw_data.txt", "warnings": []
},
"report": {
"report_type": "dna",
"title": "Genetic health report",
"executive_summary": "Array genotyping with good coverage of the clinical panel...",
"overall_assessment": {"level": "slightly_elevated", "summary": "Mostly typical findings with a few actionable ones."},
"data_quality": {"source": "23andMe v5 raw file", "markers_analyzed": 291, "coverage_note": "...", "limitations": "..."},
"sections": [
{
"key": "nutrigenomics", "title": "Nutrient metabolism", "risk_level": "slightly_elevated",
"summary": "Reduced folate cycle activity...",
"findings": [
{"gene": "MTHFR", "rsid": "rs1801133", "genotype": "AG", "phenotype": "C677T heterozygous",
"risk_level": "slightly_elevated", "evidence": "established",
"explanation": "About 65% of typical enzyme activity.", "recommendation": "Check homocysteine."}
]
}
],
"pharmacogenomics": [
{"gene": "CYP2C19", "rsids": ["rs4244285"], "predicted_phenotype": "Intermediate metabolizer",
"affected_drugs": ["clopidogrel", "omeprazole"], "recommendation": "Review before prescribing clopidogrel."}
],
"disease_risks": [], "carrier_status": [], "nutrigenomics": [], "traits": [],
"lifestyle_recommendations": ["..."], "recommended_tests": [{"test": "Homocysteine", "reason": "MTHFR C677T"}],
"red_flags": [], "limitations": "Consumer arrays miss rare variants.",
"disclaimer": "AI-generated clinical decision support for clinician review; not a diagnosis."
}
},
"timestamp": "2026-09-23T10:30:00Z"
}
Referentie responsvelden
| Veld | Type | Beschrijving |
|---|---|---|
source | object | Wat er is ingelezen: kind (raw, text of document), het herkende formaat en de genoomversie, het aantal records en genotype-calls, hoeveel van de 334 panelmarkers zijn gevonden, en waarschuwingen van de parser |
report.overall_assessment.level | string | typical, slightly_elevated, elevated of high |
report.sections[] | array | Eén item per gezondheidsgebied, met een risk_level en de bijbehorende findings |
report.sections[].findings[] | array | gene, rsid, genotype, phenotype, risk_level (protective, typical, informational, slightly_elevated, elevated, high), evidence (established, probable, preliminary), explanation, recommendation |
report.pharmacogenomics[] | array | Voorspeld metabolisatorfenotype per gen en de geneesmiddelgroepen waarop dat van invloed kan zijn. Het rapport noemt nooit voorschrijfdoseringen. |
report.carrier_status[] | array | carrier, not_detected, affected_pattern of inconclusive, altijd te bevestigen met klinisch genetisch onderzoek |
report.disease_risks[], nutrigenomics[], traits[] | array | Risico's op aandoeningen, bevindingen over voedingsstoffen en kenmerken, met de onderliggende genen |
report.recommended_tests[], red_flags[] | array | Vervolgonderzoek met een reden, en bevindingen die snel aandacht vragen |
Leest de upload precies zo in als /analyze en meldt wat er is gevonden, zonder AI-aanroep. Authenticatie is vereist; er wordt geen credit verbruikt. Gebruik dit endpoint om een bestand te controleren voordat u een credit besteedt.
Voorbeeldrespons
{
"status": "success",
"message": "Payload is valid",
"data": {
"valid": true,
"language": "en",
"source": {"kind": "raw", "format": "ancestrydna", "build": "GRCh37", "panel_total": 334, "panel_found": 287, "warnings": []}
}
}
Combineert een DNA-rapport met een geïnterpreteerde bloedtest tot één gezondheidsrapport. Elk verband tussen een genetische bevinding en een labwaarde wordt geclassificeerd, gevolgd door een risicomatrix, prioritaire acties en een monitoringplan. Eén credit per geslaagd verzoek.
Verzoekparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
dna_report | object | Ja | Het rapport van /api/v1/dna-interpretation/analyze: data.report, het volledige data-object of de complete respons |
blood_test | object|array | Ja | Een geïnterpreteerde bloedtest zoals de Bloedtest API die retourneert (metadata, parameters, interpretation), of alleen een lijst van maximaal 500 parameters met een naam en een result |
language | string | Nee | Taalcode van het rapport (standaard: en) |
patient | object | Nee | Dezelfde velden als bij DNA-testinterpretatie |
Python Voorbeeld
# 2) DNA + bloedgezondheidsrapport (gebruikt run() en dna uit het voorbeeld hierboven)
blood_test = {
"parameters": [
{"short_name": "25-OH D", "result": 18, "unit": "ng/mL", "range_normal_min": 30, "range_normal_max": 100, "evaluation": "low"},
{"short_name": "Homocysteine", "result": 13.2, "unit": "µmol/L", "evaluation": "high"}
]
}
combined = run("/api/v1/dna-blood-report/analyze",
json={"dna_report": dna, "blood_test": blood_test, "language": "en"})
for link in combined["data"]["report"]["correlations"]:
print(link["topic"], link["concordance"], link["action"])
Voorbeeldrespons
{
"status": "success",
"message": "DNA + blood health report completed successfully",
"data": {
"analysis_id": "DNB-8C21E40A9D",
"module": "dna_blood_report",
"language": "en",
"report": {
"report_type": "dna_blood",
"executive_summary": "The low vitamin D level matches the GC genotype; homocysteine is borderline, in line with MTHFR C677T.",
"overall_status": {"level": "watch", "summary": "Two gene-lab matches to act on."},
"correlations": [
{"topic": "Vitamin D", "genetic_finding": "GC rs2282679 GT", "lab_finding": "25-OH D 18 ng/mL",
"concordance": "confirms", "interpretation": "Genetic tendency and lab value agree.", "action": "Supplement and recheck in 12 weeks."}
],
"risk_matrix": [{"area": "Folate cycle", "genetic_risk": "slightly_elevated", "lab_status": "borderline", "combined_assessment": "Watch homocysteine."}],
"priority_actions": [{"priority": "high", "action": "Start vitamin D3", "why": "Deficient level and GC genotype"}],
"monitoring_plan": [{"marker": "25-OH vitamin D", "interval": "12 weeks", "reason": "Dose check"}],
"lifestyle_plan": [], "questions_for_clinician": [], "red_flags": [],
"limitations": "One blood test; values vary.",
"disclaimer": "AI-generated clinical decision support for clinician review; not a diagnosis."
}
}
}
Referentie responsvelden
| Veld | Type | Beschrijving |
|---|---|---|
report.overall_status.level | string | good, watch, attention of urgent |
report.correlations[].concordance | string | confirms, contradicts, neutral of watch |
report.risk_matrix[] | array | Per gebied: genetic_risk, lab_status (normal, borderline, abnormal, not_measured) en een gecombineerde beoordeling |
report.priority_actions[] | array | priority (high, medium, low), de actie en de reden |
report.monitoring_plan[] | array | Welke marker opnieuw getest moet worden, wanneer en waarom |
Stelt een persoonlijk supplementenplan op uit het DNA-rapport, de antwoorden op de vragenlijst en, optioneel, een geïnterpreteerde bloedtest. De productcatalogus en de adviseurinstellingen van uw kliniek worden automatisch toegepast. Eén credit per geslaagd verzoek.
Verzoekparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
dna_report | object | Ja | Het rapport van /api/v1/dna-interpretation/analyze |
answers | object | Ja | Antwoorden op de vragenlijst. diet_type en pregnancy zijn verplicht; zie GET /api/v1/dna-supplements/questionnaire voor alle 25 vragen. Onbekende sleutels en waarden worden weggelaten. |
blood_test | object|array | Nee | Hetzelfde formaat als bij het DNA + Bloedgezondheidsrapport |
use_clinic_catalogue | boolean | Nee | Past de productcatalogus en de instellingen van uw kliniek toe (standaard: true) |
language | string | Nee | Taalcode van het rapport (standaard: en) |
patient | object | Nee | Dezelfde velden als bij DNA-testinterpretatie. Medicatie die hier wordt vermeld, wordt op interacties gecontroleerd. |
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/v1/dna-supplements/analyze?async=1" \
-u "UW_GEBRUIKERSNAAM:UW_WACHTWOORD" \
-H "Content-Type: application/json" \
-d '{
"dna_report": { ...data.report uit de DNA-interpretatie... },
"answers": {"diet_type": "vegetarian", "pregnancy": "no", "sun_exposure": "low", "goals": ["energy", "immunity"]},
"language": "en"
}'
Python Voorbeeld
# 3) Supplementenplan (gebruikt run(), dna en blood_test uit de voorbeelden hierboven)
plan = run("/api/v1/dna-supplements/analyze",
json={"dna_report": dna, "blood_test": blood_test,
"answers": {"diet_type": "vegetarian", "pregnancy": "no"},
"language": "en"})
for item in plan["data"]["report"]["recommendations"]:
print(item["name"], item["dose"], item["timing"], "-", item["source"])
Voorbeeldrespons
{
"status": "success",
"message": "Supplement plan completed successfully",
"data": {
"analysis_id": "SUP-51B7D2E6F0",
"module": "dna_supplements",
"language": "en",
"catalogue": {"mode": "prefer", "products": 24},
"report": {
"report_type": "supplement",
"summary": "Plan built from GC and MTHFR findings, a low vitamin D level and a vegetarian diet.",
"recommendations": [
{"name": "Vitamin D3 + K2", "source": "clinic_library", "product": "Vitamin D3 + K2 (Clinic Brand)",
"form": "softgel", "dose": "2000 IU", "timing": "with lunch", "duration": "12 weeks", "priority": "high",
"rationale": {"genetic": "GC rs2282679 GT", "lab": "25-OH D 18 ng/mL", "questionnaire": "little sun"},
"evidence": "established", "cautions": ["Recheck calcium"], "interactions": ["Thiazide diuretics"],
"retest": "25-OH D in 12 weeks"}
],
"avoid_or_caution": [{"name": "High-dose vitamin A", "reason": "Pregnancy planning"}],
"uncovered_needs": [],
"dietary_sources": [{"nutrient": "Folate", "foods": ["lentils", "spinach"]}],
"retest_plan": [{"marker": "25-OH vitamin D", "when": "12 weeks", "why": "Dose check"}],
"clinician_review_required": ["Thiazide co-medication"],
"disclaimer": "AI-generated clinical decision support for clinician review; not a diagnosis."
}
}
}
Referentie responsvelden
| Veld | Type | Beschrijving |
|---|---|---|
catalogue | object | De toegepaste catalogusmodus (prefer, only, off) en hoeveel kliniekproducten er beschikbaar waren |
report.recommendations[] | array | name, form, dose, timing, duration, priority, de rationale vanuit genetica, lab en vragenlijst, evidence, cautions, interactions en retest |
report.recommendations[].source | string | clinic_library voor een product uit uw catalogus (genoemd in product), anders evidence_based |
report.uncovered_needs[] | array | In de modus "alleen kliniekproducten": behoeften die uw catalogus niet dekt |
report.clinician_review_required[] | array | Alles waarover een voorschrijver moet beslissen: interacties, zwangerschap, nier- of leverziekte, antistollingsmiddelen, doseringen dicht bij de bovengrens van inname |
report.avoid_or_caution[], dietary_sources[], retest_plan[] | array | Wat te vermijden, voedingsbronnen per voedingsstof, en wanneer opnieuw te testen |
Leest of wijzigt de productcatalogus van uw kliniek en de instellingen van de adviseur. Het is dezelfde catalogus als in het kliniekpaneel en in Nutrition Diet AI, dus een product dat u op één plek toevoegt, is overal beschikbaar. Authenticatie is vereist; er wordt geen credit verbruikt. Stuur catalogue, settings of beide; de catalogus vervangt de volledige lijst.
| Veld | Type | Beschrijving |
|---|---|---|
catalogue[] | array | Maximaal 200 producten: name, brand, form, dosage, category (vitamin, mineral, probiotic, omega, herbal, other), description |
settings.mode | string | prefer (kliniekproducten waar ze passen, anders wetenschappelijk onderbouwde suggesties), only (alleen kliniekproducten) of off (catalogus negeren) |
settings.instructions | string | Uw eigen instructies voor de AI, maximaal 1.500 tekens. Veiligheidsregels hebben altijd voorrang. |
settings.max_items | integer | Maximaal aantal aanbevelingen per plan, 3 tot 12 |
cURL Voorbeeld
curl -X PUT "https://app.aibloodtestinterpret.com/api/v1/dna-supplements/settings" \
-u "UW_GEBRUIKERSNAAM:UW_WACHTWOORD" \
-H "Content-Type: application/json" \
-d '{
"catalogue": [
{"name": "Vitamin D3 + K2", "brand": "Clinic Brand", "form": "softgel", "dosage": "2000 IU / 75 µg", "category": "vitamin"},
{"name": "Omega-3 EPA/DHA", "brand": "Clinic Brand", "form": "softgel", "dosage": "1000 mg", "category": "omega"}
],
"settings": {"mode": "prefer", "instructions": "Prefer our own brand.", "max_items": 8}
}'
Referentie-endpoints
GET /api/v1/dna-supplements/questionnaire geeft de 25 vragen (dieet, maaltijden, groente en fruit, vis, rood vlees, zuivel, alcohol, roken, cafeïne, blootstelling aan zonlicht, beweging, slaap, stress, spijsvertering, energie, huidige supplementen, medicatie, allergieën, aandoeningen, zwangerschap, doelen, budget, voorkeursvorm en opmerkingen) met hun typen en toegestane waarden. De drie /info-endpoints retourneren de geaccepteerde invoer, de limieten, de kosten in credits en de volledige lijst met rapporttalen. Geen van deze endpoints vereist authenticatie.
Sandbox en asynchrone modus
POST /api/v1/dna-interpretation/sandbox, /api/v1/dna-blood-report/sandbox en /api/v1/dna-supplements/sandbox retourneren een voorbeeldrapport in precies de vorm die /analyze oplevert. Authenticatie is vereist; er wordt geen credit verbruikt.
Een AI-rapport duurt doorgaans één tot drie minuten. Voeg ?async=1 toe (of de header X-Async: 1) en het verzoek antwoordt meteen met 202 en een job_id. Poll GET /api/jobs/<job_id> met dezelfde inloggegevens tot status de waarde completed of failed heeft. De uiteindelijke respons staat in result.response en is identiek aan de synchrone respons.
| Foutcode | HTTP | Betekenis |
|---|---|---|
AUTH_1001 | 401 | Ontbrekende inloggegevens |
AUTH_1002 | 401 | Ongeldige gebruikersnaam of wachtwoord |
QUOTA_1101 | 403 | Onvoldoende API-quotum |
VAL_2001 | 400 | Er ontbreekt een verplicht veld: file of genotype_text, dna_report, blood_test, of een verplicht antwoord |
VAL_2002 | 400 | Onleesbare genotypegegevens, niet-ondersteund bestandstype, ongeldige JSON of een ongeldig dna_report |
VAL_2003 | 400 | Niet-ondersteunde rapporttaal |
VAL_2006 | 400 | Te groot: geplakte tekst, bloedparameters (500) of catalogus (200 producten) |
VAL_2007 | 400 | Ongeldig patient-object |
VAL_2008 | 400 | Geen bruikbare bloedtestparameter (naam en resultaat) |
PROC_3003 | 500 | Het AI-antwoord kon niet worden opgesteld of gevalideerd; probeer het opnieuw. Er wordt geen credit in rekening gebracht. |
RES_4005 | 503 | De DNA-modules zijn uitgeschakeld op deze deployment |
De DNA Health API levert door AI gegenereerde informatie voor de behandelend clinicus. Het is geen diagnose en geen voorschrift. Genotyperingsarrays voor consumenten zijn geen klinische sequencing: bevestig klinisch relevante bevindingen en dragerschapsbevindingen met gevalideerd klinisch genetisch onderzoek voordat u erop handelt.
ICR - Intelligente Tekenherkenning API
De Kantesti ICR (Intelligente Tekenherkenning) API is een geavanceerde documenttekst-extractietechnologie die ver voorbij traditionele OCR gaat. Aangedreven door Kantesti's eigen AI-engine levert ICR gestructureerde JSON-uitvoer van elk documenttype.
Kantesti ICR vs Traditionele OCR
In benchmarktests toonde Kantesti ICR 79% hogere prestaties vergeleken met traditionele OCR-oplossingen. ICR begrijpt de documentstructuur, bewaart tabellay-outs, extraheert metadata en retourneert schoon gestructureerd JSON.
- Gestructureerde JSON-uitvoer — Tabellen, secties, metadata en ruwe tekst in schoon JSON-formaat
- Documenttype-detectie — Herkent automatisch medische rapporten, facturen, formulieren, brieven, enz.
- Tabelextractie — Bewaart koppen en rijgegevens met volledige structuur
- Multi-formaat ondersteuning — PDF, JPG, JPEG, PNG documentverwerking
- Bloedtest-integratie (Kan) — Gespecialiseerd endpoint voor bloedtestdocument-extractie
- Sandbox-modus — Test integratie zonder credits te verbruiken
- Creditsysteem — 0,5 credits per API-aanroep
ICR Endpoints Overzicht
| Endpoint | Methode | Beschrijving | Kosten |
|---|---|---|---|
/api/icr/v1/extract | POST | ICR-tekstextractie | 0,5 credit |
/api/icr/v1/sandbox | POST | ICR sandbox-test | Gratis |
/api/icr/v1/kan | POST | Bloedtestdocument-analyse | 0,5 credit |
/api/icr/v1/kan/sandbox | POST | Bloedtest sandbox-test | Gratis |
/api/icr/info | GET | API-documentatie en functies | Gratis |
/api/icr/health | GET | Gezondheidscontrole-endpoint | Gratis |
/api/icr/v1/quota | POST | Controleer resterende ICR-credits | Gratis |
Extraheert alle tekstinhoud uit geüploade documenten met Kantesti ICR-technologie.
Verzoekparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
username | string | Ja | Uw API-gebruikersnaam |
password | string | Ja | Uw API-wachtwoord |
file | file | Ja | Documentbestand (PDF, JPG, JPEG, PNG) |
language | string | Nee | Uitvoertaal (standaard: en) |
cURL Voorbeeld
curl -X POST "https://app.aibloodtestinterpret.com/api/icr/v1/extract" \
-F "username=UW_GEBRUIKERSNAAM" \
-F "password=UW_WACHTWOORD" \
-F "language=nl" \
-F "[email protected]"
Python Voorbeeld
import requests
def icr_extract(file_path: str, username: str, password: str, language: str = "nl"):
"""
Extraheer tekst uit een document met de Kantesti ICR API.
79% sneller en nauwkeuriger dan traditionele OCR.
"""
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()
result = icr_extract("medisch_rapport.pdf", "gebruikersnaam", "wachtwoord", "nl")
print(f"Documenttype: {result['data']['document_type']}")
print(f"Pagina's: {result['data']['page_count']}")
Voorbeeldrespons
{
"status": "success",
"data": {
"document_type": "blood_test_report",
"page_count": 1,
"pages": [{"page_number": 1, "content": {"raw_text": "Universitair Ziekenhuis Keulen - Bloedbeeld...", "sections": [{"type": "header", "content": "Bloedbeeld"}], "tables": [{"headers": ["Test", "Resultaat", "Eenheid", "Referentiewaarde"], "rows": [["Glucose", "92", "mg/dL", "74 - 100"], ["ALT", "22", "U/L", "< 35"]]}]}}],
"metadata": {"detected_language": "nl", "confidence": "high"},
"icr_metadata": {"engine": "kantesti-icr", "version": "1.0.0"}
},
"credit_cost": 0.5,
"api_version": "icr-v1"
}
ICR Sandbox Endpoints
Test uw ICR-integratie zonder credits te verbruiken. Sandbox endpoints retourneren realistische voorbeeldgegevens.
| API | Sandbox Endpoint | Beschrijving |
|---|---|---|
| ICR Extractie | /api/icr/v1/sandbox | Retourneert voorbeeldgegevens van ICR-extractie |
| ICR Kan | /api/icr/v1/kan/sandbox | Retourneert voorbeeldgegevens van bloedtestparameters |
ICR vs OCR Prestaties
| Metriek | Kantesti ICR | Traditionele OCR | Verbetering |
|---|---|---|---|
| Verwerkingssnelheid | 1,2s gemiddeld | 5,7s gemiddeld | 79% sneller |
| Tekstnauwkeurigheid | 99,7% | 92,1% | +7,6% |
| Tabeldetectie | 98,9% | 71,2% | +27,7% |
| Gestructureerde Uitvoer | JSON met secties, tabellen, metadata | Ruwe ongestructureerde tekst | Volledige structuur |
| Meertalige Ondersteuning | 100+ talen | 30-50 talen | 2x+ dekking |