Determinar automáticamente valores críticos/anormales para parámetros de selección múltiple #75

Open
opened 2025-07-21 23:33:33 +00:00 by luis_portillo · 1 comment

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:

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:

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:

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.

# 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.
Author
Owner

Implementación completada

Se ha implementado la funcionalidad para determinar automáticamente valores críticos/anormales para parámetros de selección múltiple.

Solución implementada

Se optó por la Opción 2 propuesta en el issue: crear un modelo relacionado que permite definir cada opción de selección con sus propiedades.

Cambios realizados

  1. **Nuevo modelo **:

    • Campo : El valor de la opción (ej: Positivo, Negativo)
    • Campo : Indica si el valor es normal
    • Campo : Indica si el valor requiere atención inmediata
    • Campo : Plantilla de notas que se autocompleta cuando se selecciona un valor crítico
    • Campo : Para ordenar las opciones
  2. **Actualización del modelo **:

    • Agregado campo One2many para la configuración detallada
    • Método para sincronizar desde el campo de texto
    • Método para actualización automática
  3. **Actualización del modelo **:

    • Modificada la lógica de para incluir valores de selección
    • Actualizado para manejar todos los tipos de parámetros
    • Extendido para autocompletar notas en valores de selección críticos
  4. Interfaz de usuario:

    • Nueva pestaña "Configuración de Valores" en el formulario de parámetros
    • Vista de lista editable para configurar cada valor de selección
    • Indicadores visuales (badges) para mostrar el estado de cada valor
    • Botón para sincronizar valores desde el campo de texto
  5. Datos demo incluidos:

    • Parámetros de tipo selección: HIV, Hepatitis B, VDRL, Prueba de embarazo, Grupo sanguíneo, Factor Rh
    • Configuración de valores críticos para cada parámetro
    • Plantillas de notas médicas específicas para valores críticos

Beneficios

  • Determinación automática de valores críticos para TODOS los tipos de parámetros
  • Flexibilidad total para configurar qué valores son normales/anormales/críticos
  • Autocompletado de notas médicas según el valor seleccionado
  • Interfaz intuitiva para la configuración
  • Compatible con el sistema actual sin cambios disruptivos

Script de prueba

Se incluye que genera órdenes con resultados críticos de selección para validar la funcionalidad.

Próximos pasos

La implementación está lista para pruebas. Se recomienda:

  1. Probar la configuración de valores críticos en diferentes parámetros
  2. Verificar el autocompletado de notas médicas
  3. Validar los indicadores visuales en las vistas de resultados

Branch:
Commit: 54a23a5

## Implementación completada Se ha implementado la funcionalidad para determinar automáticamente valores críticos/anormales para parámetros de selección múltiple. ### Solución implementada Se optó por la **Opción 2** propuesta en el issue: crear un modelo relacionado que permite definir cada opción de selección con sus propiedades. ### Cambios realizados 1. **Nuevo modelo **: - Campo : El valor de la opción (ej: Positivo, Negativo) - Campo : Indica si el valor es normal - Campo : Indica si el valor requiere atención inmediata - Campo : Plantilla de notas que se autocompleta cuando se selecciona un valor crítico - Campo : Para ordenar las opciones 2. **Actualización del modelo **: - Agregado campo One2many para la configuración detallada - Método para sincronizar desde el campo de texto - Método para actualización automática 3. **Actualización del modelo **: - Modificada la lógica de para incluir valores de selección - Actualizado para manejar todos los tipos de parámetros - Extendido para autocompletar notas en valores de selección críticos 4. **Interfaz de usuario**: - Nueva pestaña "Configuración de Valores" en el formulario de parámetros - Vista de lista editable para configurar cada valor de selección - Indicadores visuales (badges) para mostrar el estado de cada valor - Botón para sincronizar valores desde el campo de texto 5. **Datos demo incluidos**: - Parámetros de tipo selección: HIV, Hepatitis B, VDRL, Prueba de embarazo, Grupo sanguíneo, Factor Rh - Configuración de valores críticos para cada parámetro - Plantillas de notas médicas específicas para valores críticos ### Beneficios - ✅ Determinación automática de valores críticos para TODOS los tipos de parámetros - ✅ Flexibilidad total para configurar qué valores son normales/anormales/críticos - ✅ Autocompletado de notas médicas según el valor seleccionado - ✅ Interfaz intuitiva para la configuración - ✅ Compatible con el sistema actual sin cambios disruptivos ### Script de prueba Se incluye que genera órdenes con resultados críticos de selección para validar la funcionalidad. ### Próximos pasos La implementación está lista para pruebas. Se recomienda: 1. Probar la configuración de valores críticos en diferentes parámetros 2. Verificar el autocompletado de notas médicas 3. Validar los indicadores visuales en las vistas de resultados Branch: Commit: 54a23a5
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Grupo-Consiti/clinical_laboratory#75
No description provided.