Evaluación de severidad automática local
POST /severity-assessment/automatic/local evalúa la severidad de una condición conocida en un único sitio corporal. La mayoría de las subpuntuaciones se derivan de la imagen mediante inteligencia artificial; la petición también incluye cualquier dato clínico que la imagen no puede proporcionar (edad del paciente, síntomas reportados por el paciente, porcentaje de área corporal de la región). El conjunto de estas entradas está fijo por sistema de puntuación y se lista en la tabla de campos de petición a continuación.
Petición
- Python
- JavaScript
- cURL
import requests
import base64
base_url = "<base_url>"
url = f"{base_url}/severity-assessment/automatic/local"
image_path = "<path_to_image>"
with open(image_path, "rb") as f:
image_data = base64.b64encode(f.read()).decode("utf-8")
# bodySite, scoringSystem code, and questionnaireResponse.item are discovered from
# helper endpoints at integration time see "Shared schema".
json_payload = {
"payload": {
"contentAttachment": {
"data": image_data,
"contentType": "image/jpeg"
}
},
"bodySite": "<body_site_code>",
"knownCondition": {
"conclusion": { "text": "<plain-text condition>" }
},
"scoringSystem": {
"<scoring_system_code>": {
"questionnaireResponse": {
"item": { "<item_code>": "<answer_value>" }
}
}
}
}
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer <access_token>"
}
response = requests.post(url, json=json_payload, headers=headers)
result = response.json()
const fs = require("fs");
const baseUrl = "<base_url>";
const imagePath = "<path_to_image>";
const imageData = fs.readFileSync(imagePath).toString("base64");
// bodySite, scoringSystem code, and questionnaireResponse.item are discovered from
// helper endpoints at integration time see "Shared schema".
const json_payload = {
payload: {
contentAttachment: { data: imageData, contentType: "image/jpeg" },
},
bodySite: "<body_site_code>",
knownCondition: { conclusion: { text: "<plain-text condition>" } },
scoringSystem: {
"<scoring_system_code>": {
questionnaireResponse: {
item: { "<item_code>": "<answer_value>" },
},
},
},
};
const response = await fetch(`${baseUrl}/severity-assessment/automatic/local`, {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer <access_token>",
},
body: JSON.stringify(json_payload),
});
const result = await response.json();
# Replace placeholders with values discovered from the helper endpoints
# (see "Shared schema" for body-site, scoring-system, and item).
curl -X POST "<base_url>/severity-assessment/automatic/local" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <access_token>" \
-d '{
"payload": { "contentAttachment": { "data": "<base64_encoded_image_data>" } },
"bodySite": "<body_site_code>",
"knownCondition": { "conclusion": { "text": "<plain-text condition>" } },
"scoringSystem": {
"<scoring_system_code>": {
"questionnaireResponse": {
"item": { "<item_code>": "<answer_value>" }
}
}
}
}'
Campos de la petición
payload.contentAttachment(requerido) envoltorio de imagen; ver Datos adjuntos de imagen.bodySite(requerido) ver Sitio corporal.knownCondition.conclusion.text(requerido) ver Condición conocida.scoringSystem.<code>(requerido) y.questionnaireResponse.itemver Sistema de puntuación (scoringSystemyquestionnaireResponse).
La cabecera Authorization es el token portador estándar; ver Cabecera de autenticación.
Respuesta
{
"resourceType": "DiagnosticReport",
"identifier": {
"use": "official",
"value": "f426f15d-fcea-4bd0-942e-7528bf163c5d"
},
"status": "preliminary",
"issued": "2026-01-29T13:16:38.666795",
"analysisDuration": 0.19751,
"mediaValidity": { /* see the "Image quality assessment" common building block */ },
"patientEvolution": {
// Only the scoring system you requested is populated; the keys for all
// other supported scorers are present with a `null` value.
"<scoring_system_code>": {
"score": {
"value": 1.6,
"interpretation": {
"category": "Mild",
"intensity": 1
},
"additionalData": {
"globalScoreContribution": { "value": 1.6 }
}
},
"item": {
// The set of components varies by scoring system; their full definitions
// are returned by GET /questionnaires?code=<scoring_system_code>.
"<component_code>": {
"code": { "text": "<human-readable component name>" },
"value": 2,
"additionalData": { "aiConfidence": { "value": 95.4 } }
}
},
"media": {
"attachment": {
"maskRaw": { /* raw probability mask, base64-encoded image */ },
"maskBinary": { /* binarised mask */ },
"segmentation": { /* coloured segmentation overlay */ }
}
}
}
}
}
Campos de nivel superior
Los campos FHIR de nivel superior siguen la envoltorio de respuesta FHIR compartida, y el bloque mediaValidity sigue la sección compartida Evaluación de calidad de imagen.
patientEvolutionobjeto con clave según código de sistema de puntuación. Solo se popula el sistema de puntuación que solicitaste; todos los demás sonnull.
patientEvolution.<scoringSystem>.score
"score": {
"value": 1.6,
"interpretation": {
"category": "Mild",
"intensity": 1
},
"additionalData": {
"globalScoreContribution": { "value": 1.6 }
}
}
score.valuepuntuación numérica de severidad, específica de la escala según el sistema de puntuación.score.interpretation.categoryetiqueta categórica (p. ej.None,Mild,Moderate,Severe).score.interpretation.intensitycódigo de intensidad categórica:1(baja),2(moderada),3(alta).score.additionalData.globalScoreContribution.valuela contribución de este sitio corporal a la puntuación global (cuerpo completo). Útil cuando posteriormente combines múltiples llamadas aautomatic/localen una severidad general única.
patientEvolution.<scoringSystem>.item
Cada item.<component> es una subpuntuación que contribuyó a score.value. El conjunto de componentes varía según el sistema de puntuación y es devuelto por GET /questionnaires?code=<scoring_system_code>.
item.<component>.code.textnombre legible del componente.item.<component>.valuepuntuación numérica del componente, en el rango definido por el sistema de puntuación (típicamente 0–4).item.<component>.additionalData.aiConfidence.valueconfianza de la IA (0–100) en la subpuntuación. Los componentes que suministraste como datos clínicos en la petición no incluyen un campoaiConfidence, porque el valor provino de tu entrada en lugar del modelo.
patientEvolution.<scoringSystem>.media.attachment
Máscaras de imagen para visualización; no las uses para decisiones clínicas por sí solas.
maskRawMáscara de probabilidad codificada en Base64. La intensidad del píxel corresponde a la confianza del modelo en que el píxel pertenece a la lesión.maskBinaryMáscara binaria codificada en Base64 (lesión vs. fondo) obtenida mediante el umbralizado demaskRaw.segmentationSuperposición coloreada codificada en Base64 sobre la imagen original, adecuada para visualización directa en tu interfaz de usuario.
maskRaw | maskBinary | segmentation |
|---|---|---|
![]() | ![]() | ![]() |


