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:
- Entrada Manual: Disponible para todos los tiers, permite al usuario ingresar los datos de la receta campo por campo.
- 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.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.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
- Sistema muestra imagen con datos extraidos lado a lado
- Campos con confianza < 90% estan resaltados en amarillo
- Campos con confianza < 75% estan resaltados en naranja
- Usuario puede:
- Confirmar datos correctos
- Editar datos incorrectos
- Agregar datos faltantes
- Tocar imagen para ver zona de extraccion
- Sistema valida coherencia al editar
- Usuario confirma todos los datos
- 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
- Sistema muestra medicamentos extraidos/ingresados de receta
- Para cada medicamento, sistema verifica:
- Si ya existe en tratamiento activo
- Si hay conflicto de dosis
- Si hay interacciones potenciales
- Sistema muestra resumen:
- Medicamentos nuevos a agregar
- Medicamentos existentes (actualizar/ignorar)
- Advertencias de interaccion
- Usuario selecciona medicamentos a agregar
- Sistema muestra configuracion de cada uno:
- Horarios sugeridos
- Duracion del tratamiento
- Instrucciones especiales
- Usuario confirma configuracion
- Sistema:
- Agrega medicamentos al tratamiento
- Vincula con receta
- Programa alertas
- 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 generado por SpecQueen - Fusion MTS-RX-001 + MTS-OCR-001
"La resistencia es futil. Tus recetas seran digitalizadas y estructuradas perfectamente."