feat(#44): Agregar relación entre análisis y tipos de muestra #45

Merged
luis_portillo merged 9 commits from feature/44-test-sample-relationship into dev 2025-07-15 04:16:03 +00:00

Resumen

Este Pull Request implementa la relación entre análisis y tipos de muestra (Issue #44), estableciendo la base necesaria para la automatización de generación de muestras (Issue #32).

Cambios principales

1. Modelos

  • ProductTemplate: Añadidos campos required_sample_type_id y sample_volume_ml para definir requisitos de muestra en análisis
  • StockLot: Añadido campo sample_type_product_id manteniendo compatibilidad con container_type

2. Vistas

  • Actualización de vistas de análisis para mostrar campos de tipo de muestra
  • Actualización de vistas de stock.lot con nuevo campo de tipo de muestra
  • Visualización de relaciones test-muestra en listas y formularios

3. Datos

  • Creación de 10 tipos de muestra comunes (Tubo Suero, EDTA, Orina, etc.)
  • Actualización de análisis demo con tipos de muestra requeridos
  • Actualización de muestras demo con referencias a productos tipo muestra

4. Herramientas

  • Script de verificación verify_sample_relationships.py para validar la implementación
  • Documentación completa en ISSUE44_IMPLEMENTATION.md

Compatibilidad

  • Mantiene compatibilidad total con el campo legacy container_type
  • Sincronización automática entre campos viejos y nuevos
  • Sin ruptura de funcionalidad existente

Pruebas

Todas las tareas fueron probadas individualmente con reinicio de instancia efímera y verificación de logs sin errores.

Próximos pasos

Con esta base implementada, el Issue #32 puede proceder con la automatización de generación de muestras al confirmar órdenes de laboratorio.

## Resumen Este Pull Request implementa la relación entre análisis y tipos de muestra (Issue #44), estableciendo la base necesaria para la automatización de generación de muestras (Issue #32). ## Cambios principales ### 1. Modelos - **ProductTemplate**: Añadidos campos `required_sample_type_id` y `sample_volume_ml` para definir requisitos de muestra en análisis - **StockLot**: Añadido campo `sample_type_product_id` manteniendo compatibilidad con `container_type` ### 2. Vistas - Actualización de vistas de análisis para mostrar campos de tipo de muestra - Actualización de vistas de stock.lot con nuevo campo de tipo de muestra - Visualización de relaciones test-muestra en listas y formularios ### 3. Datos - Creación de 10 tipos de muestra comunes (Tubo Suero, EDTA, Orina, etc.) - Actualización de análisis demo con tipos de muestra requeridos - Actualización de muestras demo con referencias a productos tipo muestra ### 4. Herramientas - Script de verificación `verify_sample_relationships.py` para validar la implementación - Documentación completa en `ISSUE44_IMPLEMENTATION.md` ## Compatibilidad - Mantiene compatibilidad total con el campo legacy `container_type` - Sincronización automática entre campos viejos y nuevos - Sin ruptura de funcionalidad existente ## Pruebas Todas las tareas fueron probadas individualmente con reinicio de instancia efímera y verificación de logs sin errores. ## Próximos pasos Con esta base implementada, el Issue #32 puede proceder con la automatización de generación de muestras al confirmar órdenes de laboratorio.
luis_portillo added 9 commits 2025-07-15 03:15:04 +00:00
- Created detailed implementation plan for adding relationship between analyses and sample types
- Includes tasks for model updates, view modifications, data migration, and demo data
- Addresses compatibility concerns and preparation for automatic sample generation (Issue #32)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Added required_sample_type_id Many2one field to link analyses with sample types
- Added sample_volume_ml field to specify required sample volume
- Added validation constraints to ensure fields are only used for analysis products
- Import api and ValidationError for field validations

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Added sample_type_product_id Many2one field to reference sample type products
- Kept container_type field for backward compatibility (marked as legacy)
- Added @api.onchange method to synchronize fields
- Added get_container_name() method to retrieve container name from either field

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Added required_sample_type_id and sample_volume_ml fields to analysis configuration page
- Created list view for analysis products showing sample type relationship
- Created list view for sample type products
- Added is_sample_type field to product form view
- Made sample_volume_ml visible only when sample type is selected

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Added critical rule requiring ephemeral instance testing after every task
- Specified exact commands to run for testing
- Emphasized checking logs for errors before proceeding

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Added sample_type_product_id to list view
- Added sample_type_product_id to form view with proper readonly states
- Made container_type optional in list view and invisible when product is selected
- Both fields synchronized through model's @api.onchange method

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Created sample_types.xml with 10 common laboratory sample containers
- Added product category for sample containers
- Defined sample types: serum, EDTA, citrate, heparin, glucose, urine, stool, swab, blood culture, CSF
- All sample types marked as consumable products with purchase_ok=True, sale_ok=False
- Added sample_types.xml to module manifest

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Added required_sample_type_id and sample_volume_ml to all demo analyses
- Updated demo samples to use new sample_type_product_id field
- Added demo_patient_3 for complete demo data
- Mapped analyses to appropriate sample types:
  - Hemograma → EDTA tube (3ml)
  - Perfil Lipídico → Serum tube (2ml)
  - Glucosa → Glucose tube (1ml)
  - Urocultivo → Urine container (20ml)
  - TP → Citrate tube (2.7ml)
  - Hemocultivo → Blood culture bottle (10ml)
  - Coprocultivo → Stool container (5ml)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Created verify_sample_relationships.py script to validate implementation
- Updated ISSUE44_PLAN.md marking completed tasks
- Created ISSUE44_IMPLEMENTATION.md with complete summary
- Script verifies:
  - Analyses have sample type assignments
  - Sample types are properly configured
  - Stock.lot samples use new fields correctly
  - Field synchronization works properly

All tasks for Issue #44 completed successfully.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
luis_portillo merged commit 9241cbad79 into dev 2025-07-15 04:16:03 +00:00
Sign in to join this conversation.
No reviewers
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#45
No description provided.