Este tutorial arma un pipeline que combina tres operaciones reales del CLI para resolver un caso de uso clínico habitual: detectar pacientes en riesgo rojo, pedirle a la IA un resumen accionable y exportar el resultado a un Bundle FHIR para interoperabilidad.
El pipeline vive en cli/data/pipeline_examples/triage.yml (con el bug corregido en este documento — el archivo original declaraba los steps con name: en vez del obligatorio id:, lo que hacía que tecsas3 pipe validate fallara con Paso 0 (None) falta: id, resource).

Paso 1 — Inspeccionar el caso de uso

Los tres pasos que necesita el workflow son:
  1. Listar pacientes con nivel de riesgo rojo. El endpoint paciente list acepta el flag --riesgo (color del semáforo) y pagina los resultados con --page-size. La documentación del recurso está en cli/src/tecsas3_cli/resources/paciente.py:165-203.
  2. Pasar la lista a ia ai-query. El recurso ia expone ai-query (ia.py:389-402) que recibe un prompt libre vía --pregunta y devuelve la respuesta del proveedor configurado (Gemini por defecto).
  3. Exportar a FHIR. fhir export (fhir.py:120-138) acepta --formato fhir y opcionalmente --paciente (UUID) o --save para guardar a disco.

Paso 2 — Crear el archivo del pipeline

Copia el bloque siguiente a triage.yml en tu directorio de trabajo:
Tres detalles de la corrección:
  • id: en lugar de name: — el validador (pipeline.py:109-123) exige {"id", "resource", "command"} como mínimo. Renombrar name a id es la primera acción obligatoria.
  • args: como mapa, no como lista — el orquestador expande cada par clave: valor a --clave valor (ver _args_to_argv() en pipeline.py:84-106). Pasar una lista desnuda con strings sueltos no llega al parser de Typer.
  • continue_on_error: true en el export — si el export FHIR falla por un 404 paciente_no_encontrado, queremos que el resumen IA siga siendo entregado.
Este pipeline requiere un tenant con agent y plan configurados para acceder a /api/ia/v2/. Verifica con tecsas3 --json --no-input auth whoami | jq '.tenant, .plan_id' antes de ejecutarlo. Si el plan devuelve null, el backend responderá 403 tenant_context_required en el step ia ai-query.

Paso 3 — Validar antes de ejecutar

Salida esperada:
Si la validación falla, el orquestador imprime qué campo falta y en qué índice. Por ejemplo, mantener name: en vez de id: produce:

Paso 4 — Ejecutar y capturar todos los outputs

Salida de --output-all (recortada):

Paso 5 — Iterar y depurar

Tres flags cubren el 90% de los casos de depuración: Para pipelines largos, --output-all permite pipear la salida completa a jq y filtrar por step, exit code o status:

Errores comunes y cómo se manifiestan

Próximos pasos

  • Combina este pipeline con batch run para ingestar los pacientes resultantes en otro tenant.
  • Versiona los pipelines en git y valídalos en CI con tecsas3 pipe validate.
  • Para prompts ricos, pasa el output completo como string multilínea con YAML | (como en el ejemplo de triage_summary).

Referencias

  • cli/src/tecsas3_cli/resources/pipeline.py:46-65 — resolución de placeholders
  • cli/src/tecsas3_cli/resources/pipeline.py:109-123_validate_steps() (campos mínimos)
  • cli/src/tecsas3_cli/resources/paciente.py:165-203paciente list con --riesgo
  • cli/src/tecsas3_cli/resources/ia.py:389-402ia ai-query
  • cli/src/tecsas3_cli/resources/fhir.py:120-138fhir export con --formato fhir
  • cli/data/pipeline_examples/triage.yml — origen del pipeline (con bug a corregir)