Saltar a contenido

MTS-RX-001: Modulo de Recetas Medicas

Identificador: MTS-RX-001 Version: 2.0.0 Fecha: 2025-12-05 Ultima Revision: Fusion MTS-RX-001 + MTS-OCR-001 con correcciones del Director Autor: SpecQueen Estado: En Revision



1. Vision General

Este modulo permite la digitalizacion, almacenamiento y gestion de recetas medicas en MedTime. Proporciona dos metodos de captura:

  1. Entrada Manual: Disponible para todos los tiers, permite al usuario ingresar los datos de la receta campo por campo.
  2. OCR Asistido por IA: Disponible para tiers Pro y Perfect, extrae automaticamente los datos de una imagen de receta.

El objetivo principal es facilitar la gestion de tratamientos medicos, vinculando las recetas con el sistema de medicamentos y alertas de MedTime.


2. Actores

Actor Descripcion
Paciente Independiente Usuario adulto que gestiona sus propias recetas
Paciente Dependiente Usuario cuyas recetas son gestionadas por un cuidador
Cuidador Solidario Ayuda a gestionar recetas de un paciente (permisos limitados)
Cuidador Responsable Gestion completa de recetas de pacientes a su cargo
Sistema OCR Motor de reconocimiento optico de caracteres
Motor IA Modelo de lenguaje para interpretacion y estructuracion
Sistema de Validacion Verifica coherencia y formato de datos

3. Disponibilidad por Tier

3.1. Free (Entrada Manual)

Funcionalidad Disponible Notas
Captura de foto de receta Si Solo como referencia visual
Entrada manual de datos Si Todos los campos
OCR y extraccion automatica No Solo entrada manual
Almacenamiento de recetas Local En dispositivo, cifrado
Historial de recetas Si Almacenamiento local
Vinculacion con medicamentos Si Completa
Alertas de vigencia Si Completa

Flujo Free: El usuario captura la foto de la receta como referencia visual y luego ingresa manualmente todos los datos (medico, medicamentos, dosis, frecuencia, etc.).

3.2. Pro (OCR Incluido)

Funcionalidad Disponible Notas
Captura de foto de receta Si Alta calidad
Entrada manual de datos Si Como alternativa o complemento
OCR y extraccion automatica Si Incluido en suscripcion
Interpretacion con IA Si Incluido en suscripcion
Almacenamiento de recetas Cloud Sincronizado
Historial de recetas Si Con busqueda
Vinculacion con medicamentos Si Completa
Alertas de vigencia Si Push + locales
Limite de uso OCR 50/mes Recetas procesadas

3.3. Perfect (OCR Incluido)

Funcionalidad Disponible Notas
Captura de foto de receta Si Alta calidad + multi-pagina
Entrada manual de datos Si Como alternativa o complemento
OCR y extraccion automatica Si Incluido en suscripcion
Interpretacion con IA Si Incluido en suscripcion
Almacenamiento de recetas Cloud Sincronizado
Historial de recetas Si Con busqueda avanzada
Vinculacion con medicamentos Si Completa
Alertas de vigencia Si Push + SMS + locales
Limite de uso OCR Ilimitado Sin restricciones

Nota: El OCR es independiente de la sincronizacion cloud. Un usuario Pro/Perfect puede usar OCR incluso si tiene desactivada la sincronizacion de datos.


4. Funcionalidades

4.1. Registro Manual de Receta (MTS-RX-001-F01)

4.1.1. Descripcion

Permite al usuario ingresar manualmente todos los datos de una receta medica. Disponible para todos los tiers.

4.1.2. Pantalla de Registro Manual

+--------------------------------------------------+
| NUEVA RECETA                              [X]    |
+--------------------------------------------------+

[Foto de referencia]                    [Agregar foto]
(Opcional - solo como referencia visual)

MEDICO PRESCRIPTOR
+--------------------------------------------------+
| Nombre:     [Dr. ____________________________]   |
| Cedula:     [____________________________]       |
| Especialidad: [____________________________]     |
| Telefono:   [____________________________]       |
+--------------------------------------------------+

INSTITUCION EMISORA (Opcional)
+--------------------------------------------------+
| Nombre:     [Hospital/Clinica _______________]   |
| Direccion:  [____________________________]       |
| Telefono:   [____________________________]       |
| Tipo:       [ Publica | Privada | IMSS | ISSSTE ]|
+--------------------------------------------------+

DATOS DE LA RECETA
+--------------------------------------------------+
| Fecha emision:  [__/__/____]                     |
| Diagnostico:    [____________________________]   |
| Notas:          [____________________________]   |
+--------------------------------------------------+

MEDICAMENTOS
+--------------------------------------------------+
| + Agregar medicamento                            |
+--------------------------------------------------+

[Guardar Receta]

4.1.3. Campos del Medicamento (Modal)

Campo Tipo Obligatorio Ejemplo
Nombre Busqueda/texto Si Metformina
Presentacion Select Si Tableta 850mg
Dosis Numero + unidad Si 1 tableta
Frecuencia Selector Si Cada 12 horas
Via administracion Select Si Oral
Duracion Numero + unidad Si si aplica 30 dias
Instrucciones Texto libre No Con alimentos

4.2. Captura y OCR de Receta (MTS-RX-001-F02)

4.2.1. Descripcion

Captura de imagen de receta con procesamiento OCR automatico. Disponible solo para tiers Pro y Perfect.

4.2.2. Metodos de Captura

Metodo Descripcion Disponibilidad
Camara en vivo Captura directa con guias visuales Pro/Perfect
Galeria Seleccionar imagen existente Pro/Perfect
PDF Importar receta digital en PDF Pro/Perfect
Multi-pagina Recetas de multiples paginas Perfect

4.2.3. Requisitos de Imagen

Requisito Especificacion
Resolucion minima 1024x768 px
Formatos JPG, PNG, PDF, HEIC
Tamano maximo 20 MB
Orientacion Auto-correccion

4.2.4. Flujo de Captura con Camara

flowchart TD
    A[Usuario selecciona 'Agregar Receta'] --> B{Tier del usuario?}
    B -->|Free| C[Mostrar opcion solo manual]
    B -->|Pro/Perfect| D[Mostrar opciones: Camara / Galeria / Manual]

    D --> E{Seleccion?}
    E -->|Camara| F[Abrir camara con guias visuales]
    E -->|Galeria| G[Abrir selector de imagen]
    E -->|Manual| C

    F --> H[Mostrar marco de alineacion]
    H --> I{Deteccion automatica de bordes?}
    I -->|Si| J[Captura automatica]
    I -->|No| K[Usuario toma foto manual]

    J --> L[Mostrar preview]
    K --> L
    G --> L

    L --> M{Imagen aceptable?}
    M -->|No| N[Opciones: Recapturar / Galeria]
    N --> F
    N --> G
    M -->|Si| O[Continuar a preprocesamiento]

4.3. Preprocesamiento de Imagen (MTS-RX-001-F03)

4.3.1. Descripcion

Procesamiento local de la imagen antes de enviar al servidor OCR. Se ejecuta en el dispositivo del usuario.

4.3.2. Procesos de Preprocesamiento

Proceso Descripcion Automatico
Deteccion de bordes Identificar limites de la receta Si
Correccion de perspectiva Enderezar imagen inclinada Si
Mejora de contraste Optimizar legibilidad Si
Eliminacion de sombras Limpiar areas oscuras Si
Binarizacion adaptativa Optimizar para OCR Si
Compresion inteligente Reducir tamano manteniendo calidad Si

4.3.3. Indicadores de Calidad

Antes de enviar al servidor, el sistema evalua la imagen:

Indicador Rango Accion
Calidad Alta > 80% Continuar automaticamente
Calidad Media 50-80% Advertir, permitir continuar
Calidad Baja < 50% Recomendar recapturar

4.4. Anonimizacion Manual (MTS-RX-001-F04)

4.4.1. Descripcion

Antes de enviar la imagen al servidor OCR cloud, el usuario puede revisar y redactar (ocultar) datos sensibles que no desea transmitir.

4.4.2. Pantalla de Anonimizacion

+--------------------------------------------------+
| REVISION DE PRIVACIDAD                    [?]    |
+--------------------------------------------------+

[Vista de imagen con herramientas de redaccion]

HERRAMIENTAS:
[Pincel negro] [Rectangulo] [Deshacer] [Rehacer]

+--------------------------------------------------+
| Puede ocultar informacion sensible antes de      |
| enviar la imagen para procesamiento OCR.         |
|                                                  |
| Datos comunmente redactados:                     |
| - CURP / NSS del paciente                        |
| - Direccion del paciente                         |
| - Informacion financiera                         |
+--------------------------------------------------+

[ ] No mostrar esta pantalla nuevamente

[Omitir]                    [Continuar con imagen]

4.4.3. Comportamiento

Accion Resultado
Usuario redacta areas Areas marcadas en negro, no procesadas por OCR
Usuario omite Imagen se envia completa (con disclaimer aceptado)
Checkbox activado Se guarda preferencia, no se muestra en futuras capturas

Nota: La redaccion es opcional pero recomendada para datos no necesarios para el tratamiento medico.


4.5. Extraccion de Datos (MTS-RX-001-F05)

4.5.1. Descripcion

Procesamiento OCR e interpretacion con IA de la imagen de receta.

4.5.2. Motor OCR

Componente Funcion
OCR primario Extraccion de texto con coordenadas
OCR secundario Fallback y validacion
Post-procesamiento Correccion de errores comunes

4.5.3. Motor de IA

Aspecto Especificacion
Proveedor Anthropic Claude
Modelo claude-3-sonnet o superior
Modo API con zero retention (no training)
BAA Requerido antes de produccion
Datos enviados Solo texto OCR extraido, sin PII del paciente

4.5.4. Datos Extraidos

4.5.4.1. Datos del Medicamento
Campo Obligatorio Mapeo FHIR
Nombre medicamento Si Medication.code.text
Principio activo Si si identificable Medication.ingredient
Concentracion Si Medication.ingredient.strength
Forma farmaceutica Si Medication.form
Dosis prescrita Si MedicationRequest.dosageInstruction.doseAndRate
Frecuencia Si MedicationRequest.dosageInstruction.timing
Via administracion Si MedicationRequest.dosageInstruction.route
Duracion tratamiento Si si especificado MedicationRequest.dosageInstruction.timing.repeat.boundsDuration
Cantidad a dispensar Si si especificado MedicationRequest.dispenseRequest.quantity
Instrucciones especiales Si si presente MedicationRequest.dosageInstruction.additionalInstruction
4.5.4.2. Datos del Prescriptor
Campo Obligatorio Mapeo FHIR
Nombre medico Si Practitioner.name
Cedula profesional Si si visible Practitioner.identifier
Especialidad Si si visible Practitioner.qualification
Telefono consultorio Si si visible Practitioner.telecom
Direccion consultorio Si si visible Practitioner.address
Email medico Si si visible Practitioner.telecom
4.5.4.3. Datos de la Institucion Emisora
Campo Obligatorio Mapeo FHIR
Nombre institucion Si si visible Organization.name
Direccion institucion Si si visible Organization.address
Telefono institucion Si si visible Organization.telecom
Tipo institucion Si si identificable Organization.type
Sede/sucursal Si si visible Organization.partOf
4.5.4.4. Datos de la Receta
Campo Obligatorio Mapeo FHIR
Fecha prescripcion Si MedicationRequest.authoredOn
Numero/folio receta Si si visible MedicationRequest.identifier
Vigencia receta Si si visible MedicationRequest.dispenseRequest.validityPeriod
Tipo receta Si MedicationRequest.category
Firma medico Si (detectar presencia) MedicationRequest.requester
Diagnostico Si si visible Condition.code

4.5.5. Indicadores de Confianza

Nivel Rango Accion
Alta >= 95% Auto-completado, verificacion opcional
Media 75-94% Auto-completado, verificacion sugerida
Baja 50-74% Sugerencia, verificacion obligatoria
Muy Baja < 50% Campo vacio, entrada manual requerida

4.5.6. Interpretacion de Frecuencia

Texto Original Interpretacion Formato FHIR
"cada 8 horas" 3 veces al dia frequency: 3, period: 1, periodUnit: "d"
"cada 12 horas" 2 veces al dia frequency: 2, period: 1, periodUnit: "d"
"una vez al dia" 1 vez al dia frequency: 1, period: 1, periodUnit: "d"
"cada tercer dia" Cada 72 horas frequency: 1, period: 3, periodUnit: "d"
"lunes, miercoles, viernes" Dias especificos dayOfWeek: ["mon", "wed", "fri"]
"en ayunas" Antes de comida, manana when: "AC", timing: morning
"con alimentos" Durante comida when: "C"
"al acostarse" Noche, antes de dormir when: "HS"
"PRN" o "si hay dolor" Segun necesidad asNeeded: true

4.5.7. Timeout y Feedback Progresivo

Aspecto Valor Descripcion
Timeout OCR 30 segundos Tiempo maximo para procesamiento OCR
Timeout IA 30 segundos Tiempo maximo para interpretacion IA
Timeout Total 60 segundos Tiempo maximo end-to-end

Feedback Progresivo al Usuario:

flowchart LR
    A["0-3s<br/>Analizando imagen..."] --> B["3-10s<br/>Extrayendo texto...<br/>(30%)"]
    B --> C["10-20s<br/>Interpretando datos...<br/>(60%)"]
    C --> D["20-30s<br/>Estructurando...<br/>(85%)"]
    D --> E["30s+<br/>Procesamiento lento.<br/>Puede cancelar."]

4.6. Revision y Validacion (MTS-RX-001-F06)

4.6.1. Descripcion

Interfaz para que el usuario verifique y corrija los datos extraidos por OCR.

4.6.2. Pantalla de Revision

graph TB
    subgraph PantallaRevision["Pantalla de Revision de Receta"]
        VistaPrevia["Vista previa de imagen"]

        subgraph DatosExtraidos["Datos Extraidos"]
            Medico["Dr. Juan Perez [95%]"]
            Cedula["Cedula: 12345678 [98%]"]
            Fecha["Fecha: 15/11/2025 [99%]"]
            Institucion["Hospital San Angel [92%]"]

            subgraph ListaMedicamentos["Medicamentos"]
                Med1["Metformina 850mg - 92%<br/>1 tableta cada 12 horas"]
                AccionesMed["[Editar] [Verificar]"]
            end

            BotonAnadir["[+ Agregar medicamento]"]
        end

        Acciones["[Guardar Receta] [Cancelar]"]
    end

    VistaPrevia --> DatosExtraidos
    DatosExtraidos --> Acciones

4.6.3. Flujo de Revision

  1. Sistema muestra imagen con datos extraidos lado a lado
  2. Campos con confianza < 90% estan resaltados en amarillo
  3. Campos con confianza < 75% estan resaltados en naranja
  4. Usuario puede:
  5. Confirmar datos correctos
  6. Editar datos incorrectos
  7. Agregar datos faltantes
  8. Tocar imagen para ver zona de extraccion
  9. Sistema valida coherencia al editar
  10. Usuario confirma todos los datos
  11. Sistema guarda receta procesada

4.7. Vinculacion con Medicamentos (MTS-RX-001-F07)

4.7.1. Descripcion

Permite agregar automaticamente los medicamentos de la receta al tratamiento activo del paciente.

4.7.2. Flujo de Vinculacion

  1. Sistema muestra medicamentos extraidos/ingresados de receta
  2. Para cada medicamento, sistema verifica:
  3. Si ya existe en tratamiento activo
  4. Si hay conflicto de dosis
  5. Si hay interacciones potenciales
  6. Sistema muestra resumen:
  7. Medicamentos nuevos a agregar
  8. Medicamentos existentes (actualizar/ignorar)
  9. Advertencias de interaccion
  10. Usuario selecciona medicamentos a agregar
  11. Sistema muestra configuracion de cada uno:
  12. Horarios sugeridos
  13. Duracion del tratamiento
  14. Instrucciones especiales
  15. Usuario confirma configuracion
  16. Sistema:
  17. Agrega medicamentos al tratamiento
  18. Vincula con receta
  19. Programa alertas
  20. Marca receta como SURTIDA

4.8. Vigencia y Alertas (MTS-RX-001-F08)

4.8.1. Reglas de Vigencia por Pais

Pais Receta Normal Receta Controlada
Mexico (MX) 1 ano 30 dias
Estados Unidos (US) 1 ano 90 dias
Brasil (BR) 1 ano 30 dias

4.8.2. Alertas de Receta

Alerta Tiempo Accion
Proxima a vencer 7 dias antes Notificacion informativa
Vencida Dia de vencimiento Notificacion + marcar medicamentos
Resurtido necesario Segun inventario Sugerir consulta medica

5. Flujos de Usuario

5.1. Agregar Receta Manual

flowchart TD
    A[Usuario selecciona 'Agregar Receta'] --> B[Selecciona 'Entrada Manual']
    B --> C[Opcional: Tomar foto de referencia]
    C --> D[Ingresar datos del medico]
    D --> E[Opcional: Ingresar institucion emisora]
    E --> F[Ingresar fecha y diagnostico]
    F --> G[Agregar medicamentos uno por uno]
    G --> H{Mas medicamentos?}
    H -->|Si| G
    H -->|No| I[Revisar resumen]
    I --> J{Datos correctos?}
    J -->|No| K[Editar campos]
    K --> I
    J -->|Si| L[Guardar receta]
    L --> M{Agregar medicamentos al tratamiento?}
    M -->|Si| N[Flujo de vinculacion]
    M -->|No| O[Receta guardada]
    N --> O

5.2. Agregar Receta con OCR

flowchart TD
    A[Usuario selecciona 'Agregar Receta'] --> B{Tier Pro/Perfect?}
    B -->|No| C[Solo opcion manual]
    B -->|Si| D[Mostrar opciones de captura]

    D --> E{Seleccion?}
    E -->|Camara| F[Capturar imagen]
    E -->|Galeria| G[Seleccionar de galeria]
    E -->|Manual| C

    F --> H[Preprocesamiento local]
    G --> H

    H --> I[Mostrar disclaimer de privacidad]
    I --> J{Usuario acepta?}
    J -->|No| C
    J -->|Si| K[Pantalla de anonimizacion opcional]

    K --> L{Redactar datos?}
    L -->|Si| M[Usuario redacta areas sensibles]
    L -->|No/Omitir| N[Continuar]
    M --> N

    N --> O[Enviar a servidor OCR]
    O --> P[Mostrar progreso]
    P --> Q{Exito?}

    Q -->|Si| R[Mostrar datos extraidos]
    Q -->|No/Timeout| S[Opciones de error]

    R --> T[Usuario revisa y corrige]
    T --> U[Guardar receta]
    U --> V{Agregar al tratamiento?}
    V -->|Si| W[Flujo de vinculacion]
    V -->|No| X[Receta guardada]
    W --> X

5.3. Error de OCR (Recaptura/Galeria)

flowchart TD
    A[Error en procesamiento OCR] --> B[Mostrar pantalla de error]

    B --> C{Tipo de error?}
    C -->|Imagen borrosa| D["Imagen poco clara.<br/>Sugerencia: mejor iluminacion"]
    C -->|Timeout| E["Procesamiento muy lento.<br/>Puede reintentar"]
    C -->|OCR fallido| F["No se pudo leer la receta.<br/>Intente con otra imagen"]

    D --> G[Opciones de recuperacion]
    E --> G
    F --> G

    G --> H{Seleccion del usuario?}

    H -->|Recapturar con camara| I[Abrir camara]
    H -->|Seleccionar de galeria| J[Abrir galeria]
    H -->|Entrada manual| K[Formulario manual]
    H -->|Cancelar| L[Volver a inicio]

    I --> M[Reiniciar flujo OCR]
    J --> M
    K --> N[Flujo manual]

Pantalla de Error OCR:

+--------------------------------------------------+
| PROCESAMIENTO DE RECETA                   [X]    |
+--------------------------------------------------+

     [!] No fue posible procesar la imagen

Posibles causas:
- La imagen esta borrosa o mal iluminada
- La receta tiene texto muy pequeno o ilegible
- El formato de la receta no es reconocido

+--------------------------------------------------+
| [Recapturar foto]                                |
| [Seleccionar otra imagen de galeria]             |
| [Ingresar datos manualmente]                     |
+--------------------------------------------------+

[Cancelar]

6. Campos de Receta

6.1. Medicamentos

Campo Tipo Obligatorio Validacion
nombre_medicamento String Si Match con catalogo o texto libre
principio_activo String No Texto libre
concentracion String Si Formato: numero + unidad
forma_farmaceutica Enum Si Lista predefinida
dosis_prescrita String Si Numero + unidad
frecuencia Object Si Estructura timing FHIR
via_administracion Enum Si Lista SNOMED CT
duracion_tratamiento Object No Numero + unidad tiempo
cantidad_dispensar Integer No Numero positivo
instrucciones Text No Texto libre
confianza_ocr Decimal Auto 0.0 - 1.0
verificado_usuario Boolean Auto Default false

6.2. Medico Prescriptor

Campo Tipo Obligatorio Validacion
nombre_completo String Si Min 3 caracteres
cedula_profesional String Recomendado Formato pais
especialidad String No Texto libre
telefono String No Formato telefono
email String No Formato email
direccion String No Texto libre

6.3. Institucion Emisora

Campo Tipo Obligatorio Validacion
nombre_institucion String No Min 3 caracteres
tipo_institucion Enum No PUBLICA, PRIVADA, IMSS, ISSSTE, OTRO
direccion String No Texto libre
telefono String No Formato telefono
email String No Formato email
sede_sucursal String No Texto libre

6.4. Fechas y Vigencia

Campo Tipo Obligatorio Validacion
fecha_emision Date Si No futura, max 1 ano pasado
fecha_vigencia Date Calculado Segun tipo y pais
pais_emision String Si ISO 3166-1 alpha-2 (MX, US, BR)
tipo_receta Enum Si SIMPLE, CONTROLADA, RETENIDA
numero_folio String No Texto libre
diagnostico Text No Texto libre

7. Modelo de Datos

7.1. Entidad Receta

Receta {
  id: UUID (PK)
  usuario_id: UUID (FK)
  perfil_id: UUID (FK, nullable) // Para dependientes

  // Imagen
  imagen_url: string (encrypted)
  imagen_thumbnail_url: string
  imagen_hash: string

  // Medico prescriptor
  medico_nombre: string (encrypted)
  medico_cedula: string (encrypted)
  medico_especialidad: string (encrypted)
  medico_telefono: string (encrypted)
  medico_email: string (encrypted)
  medico_direccion: string (encrypted)

  // Institucion emisora
  institucion_id: UUID (FK, nullable)

  // Datos de la receta
  pais_emision: string (ISO 3166-1 alpha-2)
  fecha_emision: date
  fecha_vigencia: date
  tipo_receta: enum [SIMPLE, CONTROLADA, RETENIDA]
  numero_folio: string (encrypted)
  diagnostico: text (encrypted)
  notas: text (encrypted)

  // Estado y procesamiento
  estado: enum [BORRADOR, ACTIVA, SURTIDA, VENCIDA, ARCHIVADA]
  metodo_captura: enum [MANUAL, OCR]
  confianza_ocr: decimal
  verificada_usuario: boolean

  // Datos OCR (temporales)
  texto_ocr_raw: text (encrypted, TTL 30 days)
  datos_ocr_estructurados: jsonb (encrypted, TTL 30 days)

  // Auditoria
  created_at: timestamp
  updated_at: timestamp
  created_by: UUID (FK)
}

7.2. Entidad MedicamentoReceta

MedicamentoReceta {
  id: UUID (PK)
  receta_id: UUID (FK)
  medicamento_catalogo_id: UUID (FK, nullable)

  // Datos extraidos/ingresados
  nombre_extraido: string (encrypted)
  principio_activo: string (encrypted)
  concentracion: string (encrypted)
  forma_farmaceutica: string
  dosis_prescrita: string (encrypted)
  frecuencia_texto: string (encrypted)
  frecuencia_fhir: jsonb
  via_administracion: string
  duracion_texto: string (encrypted)
  duracion_fhir: jsonb
  cantidad_dispensar: integer
  instrucciones: text (encrypted)

  // OCR
  confianza: decimal
  verificado: boolean

  // Vinculacion
  medicamento_paciente_id: UUID (FK, nullable)
  vinculado_tratamiento: boolean

  // Auditoria
  created_at: timestamp
  updated_at: timestamp
}

7.3. Entidad InstitucionEmisora

InstitucionEmisora {
  id: UUID (PK)
  usuario_id: UUID (FK) // Dueño del registro

  nombre: string (encrypted)
  tipo: enum [PUBLICA, PRIVADA, IMSS, ISSSTE, OTRO]
  direccion: string (encrypted)
  telefono: string (encrypted)
  email: string (encrypted)
  sede_sucursal: string (encrypted)

  // Para reutilizacion
  es_favorita: boolean
  uso_count: integer

  created_at: timestamp
  updated_at: timestamp
}

7.4. Diagrama de Relaciones

erDiagram
    Receta ||--o{ MedicamentoReceta : "contiene"
    Receta }o--|| InstitucionEmisora : "emitida por"
    Receta }o--|| Usuario : "pertenece a"
    MedicamentoReceta }o--|| MedicamentoCatalogo : "referencia"
    MedicamentoReceta }o--|| MedicamentoPaciente : "vinculado a"

    Receta {
        UUID id PK
        UUID usuario_id FK
        UUID institucion_id FK
        string imagen_url
        string medico_nombre
        date fecha_emision
        enum estado
        enum metodo_captura
    }

    MedicamentoReceta {
        UUID id PK
        UUID receta_id FK
        string nombre_extraido
        string dosis_prescrita
        decimal confianza
    }

    InstitucionEmisora {
        UUID id PK
        string nombre
        enum tipo
        string direccion
        string telefono
    }

8. Reglas de Negocio

ID Regla
RN-RX-001 Imagen de receta se cifra en reposo con AES-256
RN-RX-002 Datos OCR crudos se eliminan despues de 30 dias
RN-RX-003 Recetas se mantienen por 7 anos (requisito legal)
RN-RX-004 Vigencia de receta depende del pais de emision
RN-RX-005 Medicamentos controlados requieren verificacion adicional del usuario
RN-RX-006 OCR con confianza < 50% no auto-completa, requiere entrada manual
RN-RX-007 Usuario debe verificar datos extraidos antes de guardar
RN-RX-008 Maximo 10 recetas en cola de procesamiento simultaneo
RN-RX-009 Procesamiento OCR timeout total: 60 segundos
RN-RX-010 Imagenes originales no se modifican, preprocesamiento crea copia
RN-RX-011 OCR incluido en suscripcion para Pro (50/mes) y Perfect (ilimitado)
RN-RX-012 Tier Free puede capturar foto pero debe ingresar datos manualmente
RN-RX-013 OCR es independiente de la sincronizacion cloud
RN-RX-014 Tier Free almacena recetas solo localmente en dispositivo
RN-RX-015 Disclaimer de privacidad obligatorio antes de primer uso OCR
RN-RX-016 Usuario puede revisar y anonimizar imagen antes de enviar a OCR
RN-RX-017 En error de OCR, usuario puede recapturar, usar galeria o entrada manual
RN-RX-018 Institucion emisora es campo opcional pero recomendado
RN-RX-019 Datos del prescriptor se pueden reutilizar entre recetas

9. Consideraciones de Privacidad

9.1. Disclaimer OCR

Antes del primer uso de OCR, el sistema muestra un disclaimer obligatorio:

+--------------------------------------------------+
| PROCESAMIENTO DE RECETAS EN LA NUBE              |
+--------------------------------------------------+

Para extraer automaticamente los datos de su receta,
la imagen sera enviada a servidores seguros para
procesamiento mediante OCR e inteligencia artificial.

MEDIDAS DE PRIVACIDAD:
- Transmision cifrada (TLS 1.3)
- Procesamiento sin retencion (zero retention)
- Datos no utilizados para entrenamiento de IA
- Imagen eliminada inmediatamente tras procesamiento
- Cumplimiento HIPAA/BAA

DATOS PROCESADOS:
- Imagen de la receta
- Texto extraido

DATOS NO PROCESADOS:
- Su nombre o datos de perfil
- Su ubicacion
- Historial medico previo

[ ] Entiendo y acepto el procesamiento

[Cancelar]               [Aceptar y continuar]

Regla: Este disclaimer se muestra:

  • Primera vez que el usuario intenta usar OCR
  • Si han pasado mas de 6 meses desde la ultima aceptacion
  • Si hay cambios en la politica de privacidad

9.2. Anonimizacion

9.2.1. Anonimizacion Manual (Pre-OCR)

El usuario puede redactar visualmente areas sensibles antes de enviar la imagen al servidor OCR (ver seccion 4.4).

9.2.2. Anonimizacion Automatica (Post-OCR)

Antes de enviar el texto OCR al motor de IA:

Dato Tratamiento
Nombre del paciente Removido o reemplazado por [PACIENTE]
CURP/NSS Removido
Direccion del paciente Removido
Fechas especificas Generalizadas (hace X dias) si no relevantes
Datos financieros Removidos

9.3. Cifrado E2E

Dato Cifrado en Transito Cifrado en Reposo
Imagen de receta TLS 1.3 AES-256, clave derivada de usuario
Datos del medico TLS 1.3 AES-256
Diagnostico TLS 1.3 AES-256
Medicamentos TLS 1.3 AES-256
Texto OCR crudo TLS 1.3 AES-256, TTL 30 dias

10. Integraciones

Sistema Tipo Descripcion
MTS-MED-001 Interna Catalogo de medicamentos para busqueda y match
MTS-ALT-001 Interna Sistema de alertas para recordatorios de vigencia
MTS-NOT-001 Interna Notificaciones push/locales
MTS-FHIR-001 Interna Estructuracion de datos en formato FHIR R4
Servicio OCR Externa Google Cloud Vision / AWS Textract
Motor IA Externa Anthropic Claude (con BAA)

Ver documento 07-integraciones.md seccion 5 para detalles de integracion OCR/IA.


11. Criterios de Aceptacion

ID Criterio
AC-RX-001 Usuario Free puede capturar foto de receta como referencia visual
AC-RX-002 Usuario Free puede ingresar todos los datos de receta manualmente
AC-RX-003 Usuario Pro/Perfect puede usar OCR para extraccion automatica
AC-RX-004 Sistema muestra disclaimer de privacidad antes de primer uso OCR
AC-RX-005 Usuario puede anonimizar imagen antes de enviar a OCR
AC-RX-006 Sistema muestra progreso durante procesamiento OCR
AC-RX-007 En error OCR, usuario puede recapturar, usar galeria o entrada manual
AC-RX-008 Sistema muestra confianza de cada dato extraido
AC-RX-009 Usuario puede editar todos los datos extraidos
AC-RX-010 Usuario puede agregar medicamentos manualmente
AC-RX-011 Usuario puede agregar datos de institucion emisora
AC-RX-012 Sistema vincula medicamentos de receta al tratamiento
AC-RX-013 Sistema alerta 7 dias antes de vencimiento de receta
AC-RX-014 Imagenes se almacenan cifradas
AC-RX-015 Historial de recetas disponible por 7 anos
AC-RX-016 Cuidador puede ver/gestionar recetas solo con permiso explicito
AC-RX-017 Procesamiento OCR completo en menos de 60 segundos
AC-RX-018 Precision de extraccion OCR > 90% en recetas legibles

12. Referencias Cruzadas

Documento Relacion
MTS-MED-001 Medicamentos se vinculan desde recetas
MTS-ALT-001 Alertas de vigencia de receta
MTS-CAT-001 Catalogo de medicamentos para match
MTS-FHIR-001 Estructuracion FHIR de datos
MTS-PRI-001 Politicas de privacidad
MTS-AUTH-001 Roles de Paciente/Cuidador
02-requisitos-regulatorios Cumplimiento HIPAA, FDA, LGPD
07-integraciones Integracion OCR/IA (seccion 5)

Documento generado por SpecQueen - Fusion MTS-RX-001 + MTS-OCR-001 "La resistencia es futil. Tus recetas seran digitalizadas y estructuradas perfectamente."