Calculateur ACR TI-RADS
ACR TI-RADS, le Thyroid Imaging Reporting and Data System de l'American College of Radiology, attribue des points entiers à un nodule thyroïdien à partir de cinq descripteurs échographiques : composition, échogénicité, forme, contours et foyers échogènes.
Lancer gratuitement
Ce calculateur applique le tableau de l'article blanc de Tessler de 2017, additionne ces points et situe le total de TR1 à TR5, avec le libellé de risque et les seuils de FNA ou de surveillance selon la taille qui accompagnent chaque catégorie. Chaque caractéristique est obligatoire ; une valeur manquante ou non reconnue échoue avec invalid_input au lieu d'inventer un score. La même consultation pure alimente le widget gratuit du navigateur et l'API prépayée, de sorte que dossiers pédagogiques et automatisation ne divergent jamais. Les éléments API réussis coûtent $0.002. C'est une aide pédagogique de compte rendu, non un diagnostic ni un substitut du radiologue.
Comment l’utiliser
Saisissez vos données dans le formulaire ci-dessus. L’outil les vérifie avant le calcul et affiche le résultat sur la même page.
Vérifiez vos données
Suivez les libellés et les unités de chaque champ. Si une valeur manque ou sort de la plage autorisée, la page indique quoi corriger.
Relancez le calcul ou automatisez-le
Utilisez l’outil web pour les vérifications ponctuelles et l’API pour intégrer la même capacité à un flux automatisé.
Cas d’usage
Obtenez une réponse maintenant
Saisissez un jeu de valeurs et consultez le résultat sans créer de feuille de calcul ni de script.
Comparez des scénarios
Modifiez une valeur à la fois et relancez le calcul pour voir ce qui influence le résultat.
Automatisez les tâches répétées
Utilisez l’API lorsque le même calcul doit s’exécuter dans votre produit ou votre flux.
Questions fréquentes
Comment le score ACR TI-RADS est-il calculé ?
ACR TI-RADS additionne des points publiés de cinq caractéristiques échographiques : composition, échogénicité, forme, contours et foyers échogènes. Si plusieurs types de foyers sont présents, les points s'additionnent. Le total entier se situe de TR1 à TR5.
Que se passe-t-il si une caractéristique manque ?
La requête échoue avec invalid_input en nommant le champ manquant. Un total TI-RADS sans les cinq descripteurs n'est pas un total TI-RADS, et cet échec n'est pas facturé.
Comment les niveaux TR se relient-ils aux seuils de taille pour la FNA ?
TR1 et TR2 n'ont pas de recommandation de FNA. TR3 utilise FNA à 2.5 cm et surveillance à 1.5 cm ; TR4 utilise 1.5 cm et 1.0 cm ; TR5 utilise 1.0 cm et 0.5 cm. Le diamètre du nodule n'est pas une entrée ici.
Puis-je envoyer plus d'un type de foyers échogènes ?
Oui. Envoyez un array ou une chaîne séparée par des virgules ; les points des macrocalcifications, des calcifications périphériques et des foyers ponctués s'additionnent, comme dans l'article blanc de 2017.
Est-ce un diagnostic, et que coûte le calculateur TI-RADS ?
Non. C'est une aide pédagogique de compte rendu, non un dispositif médical. L'outil du navigateur s'exécute gratuitement sur votre appareil. Les appels API utilisent le solde KIT prépayé à $0.002 par élément réussi ; les échecs de validation ne sont pas facturés.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/health/tirads \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"composition":"solid","echogenicity":"hypoechoic","shape":"wider_than_tall","margin":"smooth","echogenic_foci":"none_or_large_comet_tail"}'const res = await fetch("https://api.kit.forhosting.com/health/tirads", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"composition": "solid",
"echogenicity": "hypoechoic",
"shape": "wider_than_tall",
"margin": "smooth",
"echogenic_foci": "none_or_large_comet_tail"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/tirads",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"composition": "solid",
"echogenicity": "hypoechoic",
"shape": "wider_than_tall",
"margin": "smooth",
"echogenic_foci": "none_or_large_comet_tail"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/tirads", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"composition":"solid","echogenicity":"hypoechoic","shape":"wider_than_tall","margin":"smooth","echogenic_foci":"none_or_large_comet_tail"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"composition":"solid","echogenicity":"hypoechoic","shape":"wider_than_tall","margin":"smooth","echogenic_foci":"none_or_large_comet_tail"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/tirads", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"composition": "solid",
"echogenicity": "hypoechoic",
"shape": "wider_than_tall",
"margin": "smooth",
"echogenic_foci": "none_or_large_comet_tail"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.tirads",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |