# Determinar automáticamente valores críticos/anormales para parámetros de selección múltiple ## Descripción Actualmente, el sistema puede determinar automáticamente si un valor numérico es crítico basándose en rangos mínimos y máximos. Sin embargo, para parámetros de tipo selección (como Positivo/Negativo, Reactivo/No Reactivo), no existe una forma dinámica de determinar cuándo un valor es crítico o anormal. ## Problema actual Los parámetros de selección múltiple no tienen forma de indicar qué valores son: - Normales - Anormales - Críticos Ejemplos de parámetros afectados: - Prueba de embarazo: Positivo/Negativo - HIV: Reactivo/No Reactivo/Indeterminado - Hepatitis: Reactivo/No Reactivo - Otros marcadores infecciosos ## Solución propuesta ### Opción 1: Agregar campos al modelo `lims.analysis.parameter` Agregar campos que permitan definir qué valores de selección son críticos: ```python critical_values = fields.Text( string="Valores Críticos", help="Lista de valores separados por coma que se consideran críticos" ) abnormal_values = fields.Text( string="Valores Anormales", help="Lista de valores separados por coma que se consideran anormales" ) ``` ### Opción 2: Crear modelo relacionado `lims.parameter.selection.value` Crear un modelo que defina cada opción de selección con sus propiedades: ```python class LimsParameterSelectionValue(models.Model): _name = 'lims.parameter.selection.value' parameter_id = fields.Many2one('lims.analysis.parameter') value = fields.Char(string="Valor") is_normal = fields.Boolean(string="Es Normal", default=True) is_critical = fields.Boolean(string="Es Crítico", default=False) sequence = fields.Integer(string="Secuencia") notes_template = fields.Text(string="Plantilla de Notas") ``` ### Opción 3: Usar configuración JSON Almacenar la configuración en un campo JSON: ```python selection_config = fields.Json( string="Configuración de Valores", help="Configuración de valores normales, anormales y críticos" ) ``` ## Beneficios esperados 1. **Automatización completa**: El sistema podrá determinar automáticamente si cualquier tipo de resultado es crítico 2. **Flexibilidad**: Cada laboratorio podrá configurar qué valores considera críticos según sus protocolos 3. **Consistencia**: Aplicación uniforme de criterios en todos los resultados 4. **Alertas mejoradas**: Mejor identificación de resultados que requieren atención inmediata ## Casos de uso 1. **Prueba de embarazo**: - Normal: Negativo (para pacientes no embarazadas) - Anormal: Positivo (puede requerir seguimiento) - Crítico: Indeterminado (requiere repetición) 2. **HIV**: - Normal: No Reactivo - Crítico: Reactivo, Indeterminado 3. **Marcadores tumorales**: - Normal: Negativo, No Detectado - Anormal: Débilmente Positivo - Crítico: Positivo, Fuertemente Positivo ## Consideraciones técnicas - Mantener compatibilidad con el sistema actual - Permitir migración de datos existentes - Interfaz de usuario intuitiva para configuración - Integración con el autocompletado de notas críticas existente ## Tareas propuestas 1. Análisis de la mejor opción de implementación 2. Diseño del modelo de datos 3. Implementación de campos/modelos necesarios 4. Actualización de la lógica de `is_critical` en `lims.result` 5. Creación de interfaz de configuración 6. Migración de parámetros existentes 7. Pruebas exhaustivas 8. Documentación ## Prioridad Media-Alta: Esta mejora completaría la funcionalidad de detección automática de valores críticos para todos los tipos de parámetros.