feat(deliverynote): snapshot clínico (ExtraInfo) desde presupuesto #41

Closed
opened 2026-03-24 22:45:25 +00:00 by leandro · 0 comments
Owner

Objetivo

Implementar la construcción automática del snapshot clínico (ExtrainfoJson) en la emisión de Delivery Note a partir del presupuesto seleccionado, siguiendo el mismo patrón que Expeditions.

Contexto funcional

Actualmente, el Delivery Note ya soporta el campo ExtrainfoJson en todas las capas (Data, Domain, Core, API y UI), pero no se está construyendo correctamente.

En el módulo de Expeditions, este campo se utiliza para almacenar un snapshot clínico (Professional, Institution, Patient, SurgeryDate) en formato JSON plano, desacoplado de las entidades relacionales.

Se busca replicar exactamente este comportamiento en Delivery Note para asegurar consistencia futura, especialmente para la generación de PDF.

Alcance

  • Construcción del ExtrainfoJson en la UI (DeliveryNoteCreate.razor)
  • Generación automática del snapshot al seleccionar un presupuesto (OnQuoteSelected)
  • Serialización del snapshot a JSON plano (string)
  • Asignación del JSON a Model.ExtraInfoJson
  • Limpieza del snapshot al deseleccionar o cambiar presupuesto

Fuera de alcance

  • Parsing del JSON en PDF
  • Cambios en Core, Domain, Data o API
  • Nuevos endpoints
  • Validaciones complejas o normalización de datos
  • Refactor de QuoteDto

Criterios de aceptación

  • Al seleccionar un presupuesto:
    • Se construye automáticamente el ExtrainfoJson
    • Contiene las claves:
      • Professional
      • Institution
      • Patient
      • SurgeryDate
  • El JSON se persiste correctamente al emitir el Delivery Note
  • El formato es consistente con Expeditions
  • No se rompe ningún contrato existente
  • Al cambiar o limpiar el presupuesto, el snapshot se actualiza o se limpia

Decisiones de diseño

  • El snapshot se construye en la UI (no en Core)
  • Se utiliza JSON plano (string)
  • No se agregan propiedades nuevas a DTOs
  • Se mantiene simetría exacta con Expeditions
  • Se utiliza System.Text.Json para serialización
  • Se define un modelo interno liviano para el snapshot

Entregable esperado

Modificación en DeliveryNoteCreate.razor:

  • Método BuildExtraInfoJson(QuoteDto quote)
  • Invocación desde OnQuoteSelected
  • Snapshot correctamente enviado en el request de creación
  • Persistencia validada en DB (PhSDeliveryNote.extrainfo_json)
  • Sin impacto en otras funcionalidades

Formato esperado del JSON:

{
  "Professional": "...",
  "Institution": "...",
  "Patient": "...",
  "SurgeryDate": "..."
}
## Objetivo Implementar la construcción automática del snapshot clínico (`ExtrainfoJson`) en la emisión de Delivery Note a partir del presupuesto seleccionado, siguiendo el mismo patrón que Expeditions. ## Contexto funcional Actualmente, el Delivery Note ya soporta el campo `ExtrainfoJson` en todas las capas (Data, Domain, Core, API y UI), pero no se está construyendo correctamente. En el módulo de Expeditions, este campo se utiliza para almacenar un snapshot clínico (Professional, Institution, Patient, SurgeryDate) en formato JSON plano, desacoplado de las entidades relacionales. Se busca replicar exactamente este comportamiento en Delivery Note para asegurar consistencia futura, especialmente para la generación de PDF. ## Alcance - Construcción del `ExtrainfoJson` en la UI (`DeliveryNoteCreate.razor`) - Generación automática del snapshot al seleccionar un presupuesto (`OnQuoteSelected`) - Serialización del snapshot a JSON plano (string) - Asignación del JSON a `Model.ExtraInfoJson` - Limpieza del snapshot al deseleccionar o cambiar presupuesto ## Fuera de alcance - Parsing del JSON en PDF - Cambios en Core, Domain, Data o API - Nuevos endpoints - Validaciones complejas o normalización de datos - Refactor de `QuoteDto` ## Criterios de aceptación - Al seleccionar un presupuesto: - Se construye automáticamente el `ExtrainfoJson` - Contiene las claves: - `Professional` - `Institution` - `Patient` - `SurgeryDate` - El JSON se persiste correctamente al emitir el Delivery Note - El formato es consistente con Expeditions - No se rompe ningún contrato existente - Al cambiar o limpiar el presupuesto, el snapshot se actualiza o se limpia ## Decisiones de diseño - El snapshot se construye en la UI (no en Core) - Se utiliza JSON plano (`string`) - No se agregan propiedades nuevas a DTOs - Se mantiene simetría exacta con Expeditions - Se utiliza `System.Text.Json` para serialización - Se define un modelo interno liviano para el snapshot ## Entregable esperado Modificación en DeliveryNoteCreate.razor: - Método BuildExtraInfoJson(QuoteDto quote) - Invocación desde OnQuoteSelected - Snapshot correctamente enviado en el request de creación - Persistencia validada en DB (PhSDeliveryNote.extrainfo_json) - Sin impacto en otras funcionalidades Formato esperado del JSON: ```json { "Professional": "...", "Institution": "...", "Patient": "...", "SurgeryDate": "..." }
leandro added the
STORY
label 2026-04-29 01:40:44 +00:00
leandro added this to the Sales (Ventas, Facturación y Remitos) milestone 2026-04-29 01:40:52 +00:00
leandro added this to the phronCare: Tablero DEV project 2026-04-29 01:40:57 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: leandro/phronCare#41
No description provided.