Documentación

Referencia técnica de la API REST del Traductor médico semántico Colombiano.

# Ejemplo — traducir "yeyo" (síncope en dialecto colombiano)

curl -X POST https://traductor-medico-semantico-alpha.vercel.app/api/v1/translate \

-H "Authorization: Bearer mst_<tu_key>" \

-H "Content-Type: application/json" \

-d '{"term": "yeyo"}'

{
  "input": "yeyo",
  "normalized": "yeyo",
  "snomed_code": "271594007",
  "snomed_display": "Syncope",
  "resolved": true,
  "dialect": "común",
  "match_type": "exact",
  "validated": false,
  "dictionary_version": "2026.07"
}

POST /api/v1/translate

Traduce un término individual a SNOMED-CT. Si el término no se resuelve, queda registrado automáticamente en la cola de investigación para futuras versiones del diccionario.

Request body

{
  "term": "rasquiña"
}

Response (match)

{
  "input": "rasquiña",
  "normalized": "rasquina",
  "snomed_code": "418290006",
  "snomed_display": "Pruritus",
  "resolved": true,
  "dialect": "costeño",
  "match_type": "exact",
  "validated": true,
  "dictionary_version": "2026.07"
}
  • match_type: nivel de la cascada que resolvió el término — exact, token o substring (confianza decreciente).
  • validated: false indica mapeo pendiente de validación médica formal.
  • dictionary_version: versión del diccionario usada — permite reproducibilidad de los mapeos.
  • Las frases con negación ("no me duele el pecho") no se resuelven en los niveles inexactos.

Batch — hasta 50 términos por request

curl -X POST /api/v1/translate \
  -H "Authorization: Bearer mst_<tu_key>" \
  -H "Content-Type: application/json" \
  -d '{"terms": ["rasquiña", "guayabo", "yeyo"]}'

Devuelve { results: [...] } con la misma estructura por elemento. Cuenta como 1 request del rate limit.

Salida FHIR R4 — ?format=fhir

Con POST /api/v1/translate?format=fhir, los términos resueltos se devuelven como recurso FHIR R4 Observation con coding SNOMED-CT, listo para insertar en sistemas de HCE (compatible con el mandato colombiano de interoperabilidad). Sin subject: el MST nunca conoce al paciente.

{
  "resourceType": "Observation",
  "status": "final",
  "code": {
    "coding": [
      {
        "system": "http://snomed.info/sct",
        "code": "418290006",
        "display": "Pruritus"
      }
    ],
    "text": "rasquiña"
  }
}

GET /api/v1/dictionary — Metadata pública

Sin API key. Devuelve versión del diccionario y conteos por región dialectal.

curl /api/v1/dictionary

Obtener y gestionar tu API key

Las keys se crean y revocan desde tu cuenta, no de forma anónima: crea una cuenta, inicia sesión y gestiona tus keys en /account (máximo 5 keys activas por cuenta).

GET /api/v1/usage — Consultar consumo

curl /api/v1/usage -H "Authorization: Bearer mst_<tu_key>"
Límites: 100 req/min por key · Gratis en el MVP.
Privacidad: envía solo el término o la frase del síntoma — nunca incluyas nombres, documentos de identidad ni datos que identifiquen al paciente. Los términos consultados se registran (retención: 180 días) para estadísticas de uso y mejora del diccionario.