Modulo de Mapeo FHIR R4B
Identificador: MTS-FHIR-001
Version: 1.2.0
Fecha: 2025-12-05
Autor: SpecQueen
Decision: ACL8-009 - Opcion B para v1.0, ACL12-014 - Migrar a FHIR R4B (4.3.0), OBS-064 - V1.0 SOLO EXPORTACION
Dependencias: MTS-MED-001, MTS-USR-001, MTS-RX-001
Estado: Borrador
FHIR Version: R4B (4.3.0)
IMPORTANTE - Alcance V1.0 (OBS-064): MedTime V1.0 implementaSOLO EXPORTACION de datos FHIR para portabilidad. NO hay importacion FHIR en V1.0. La importacion de datos (OCR de recetas, etc.) usa formatos internos, no FHIR. La importacion FHIR completa esta planificada para V2.0.
1. Proposito
Este modulo define el mapeo entre las estructuras de datos internas de MedTime y los recursos HL7 FHIR R4B (version 4.3.0). Establece las reglas de transformacion, validacion y exportacion para garantizar interoperabilidad con sistemas de salud estandarizados.
Decision del Director (Iteracion 12 - ACL12-014): La especificacion debe implementar FHIR R4B (4.3.0) en lugar de R4 (4.0.1). R4B es la version estable actual con mejoras en seguridad y recursos clinicos. R5 se evaluara para v2.0+ basado en su estabilidad.
Decision del Director Round 8 (PREG-009):
- v1.0: Recursos completos Patient, Medication, MedicationStatement, MedicationRequest
- v2.0: Full FHIR server con API
2. Alcance por Version
2.1. Version 1.0 (Actual) - SOLO EXPORTACION
Aclaracion OBS-064: V1.0 implementa UNICAMENTE exportacion FHIR para portabilidad de datos. La importacion de recetas via OCR usa formatos internos MedTime, NO FHIR.
| Recurso FHIR |
Direccion |
Estado |
Notas |
| Patient |
Exportacion |
Implementado |
Para portabilidad |
| Medication |
Exportacion |
Implementado |
Lista del paciente |
| MedicationRequest |
Exportacion |
Implementado |
Recetas exportables |
| MedicationStatement |
Exportacion |
Implementado |
Historial de tomas |
| Practitioner |
Exportacion |
Implementado |
Medicos referenciados |
| Organization |
Exportacion |
Implementado |
Instituciones |
| Condition |
Exportacion |
Parcial |
Condiciones del perfil |
2.1.1. Importante V1.0
- OCR de recetas: Usa procesamiento interno, NO importacion FHIR
- Archivo FHIR de otra app: NO soportado en V1.0
- QR medico: Formato interno, NO FHIR
2.2. Version 2.0 (Futuro) - BIDIRECCIONAL COMPLETO
| Recurso FHIR |
Direccion |
Estado |
| Nuevos recursos |
|
|
| Appointment |
Bidireccional |
Planificado |
| Observation |
Bidireccional |
Planificado |
| DiagnosticReport |
Importacion |
Planificado |
| AllergyIntolerance |
Bidireccional |
Planificado |
| CarePlan |
Exportacion |
Planificado |
| Importacion FHIR |
|
|
| Archivo FHIR Bundle |
Importacion |
Planificado |
| QR con datos FHIR |
Importacion |
Planificado |
| Integracion hospital |
Bidireccional |
Planificado |
| Infraestructura |
|
|
| FHIR Server API |
Servidor completo |
Planificado |
3. Recursos FHIR v1.0
3.1. Patient (Paciente)
3.1.1. Mapeo MedTime -> FHIR Patient
| Campo MedTime |
Campo FHIR |
Tipo |
Notas |
| usuario.id |
Patient.identifier |
Identifier |
Sistema: medtime.com |
| usuario.nombre |
Patient.name.given |
HumanName |
|
| usuario.apellidos |
Patient.name.family |
HumanName |
|
| usuario.fecha_nacimiento |
Patient.birthDate |
date |
|
| usuario.genero |
Patient.gender |
code |
Ver mapeo genero |
| usuario.email |
Patient.telecom[email] |
ContactPoint |
|
| usuario.telefono |
Patient.telecom[phone] |
ContactPoint |
|
| usuario.direccion |
Patient.address |
Address |
|
| perfil_medico.tipo_sangre |
Patient.extension[blood-type] |
Extension |
|
| perfil_medico.alergias |
AllergyIntolerance (separado) |
- |
Recurso relacionado |
3.1.2. Mapeo de Genero
| MedTime |
FHIR |
Display |
| M |
male |
Masculino |
| F |
female |
Femenino |
| O |
other |
Otro |
| NS |
unknown |
Prefiere no decir |
3.1.3. Ejemplo Patient FHIR
{
"resourceType": "Patient",
"id": "patient-001",
"meta": {
"profile": ["http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"]
},
"identifier": [
{
"system": "https://medtime.com/patient",
"value": "usr-12345-abcde"
}
],
"name": [
{
"use": "official",
"family": "Garcia Lopez",
"given": ["Maria", "Elena"]
}
],
"gender": "female",
"birthDate": "1985-03-15",
"telecom": [
{
"system": "email",
"value": "maria.garcia@email.com",
"use": "home"
},
{
"system": "phone",
"value": "+52-55-1234-5678",
"use": "mobile"
}
],
"address": [
{
"use": "home",
"line": ["Av. Reforma 123, Col. Centro"],
"city": "Ciudad de Mexico",
"state": "CDMX",
"postalCode": "06600",
"country": "MX"
}
],
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-bloodType",
"valueCodeableConcept": {
"coding": [
{
"system": "http://loinc.org",
"code": "883-9",
"display": "O+"
}
]
}
}
]
}
3.2. Medication (Medicamento)
3.2.1. Mapeo MedTime -> FHIR Medication
| Campo MedTime |
Campo FHIR |
Tipo |
Notas |
| medicamento.id |
Medication.identifier |
Identifier |
Sistema: medtime.com |
| medicamento.nombre_comercial |
Medication.code.text |
string |
|
| medicamento.principio_activo |
Medication.ingredient.itemCodeableConcept |
CodeableConcept |
RxNorm si disponible |
| medicamento.concentracion |
Medication.ingredient.strength |
Ratio |
|
| medicamento.forma_farmaceutica |
Medication.form |
CodeableConcept |
SNOMED CT |
| medicamento.fabricante |
Medication.manufacturer |
Reference(Organization) |
|
| medicamento.lote |
Medication.batch.lotNumber |
string |
|
| medicamento.fecha_expiracion |
Medication.batch.expirationDate |
dateTime |
|
| medicamento.codigo_nacional |
Medication.code.coding |
Coding |
Sistema: SSA Mexico |
| medicamento.ndc |
Medication.code.coding |
Coding |
Sistema: NDC (USA) |
| MedTime |
SNOMED CT Code |
Display |
| tableta |
385055001 |
Tablet |
| capsula |
385049006 |
Capsule |
| jarabe |
385024007 |
Syrup |
| solucion_inyectable |
385219001 |
Solution for injection |
| crema |
385099005 |
Cream |
| gotas |
385023001 |
Drops |
| supositorio |
385194003 |
Suppository |
| parche |
385114002 |
Patch |
| inhalador |
385207009 |
Inhalation |
3.2.3. Ejemplo Medication FHIR
{
"resourceType": "Medication",
"id": "med-001",
"identifier": [
{
"system": "https://medtime.com/medication",
"value": "med-12345"
}
],
"code": {
"coding": [
{
"system": "http://www.nlm.nih.gov/research/umls/rxnorm",
"code": "313782",
"display": "Acetaminophen 500 MG"
},
{
"system": "http://www.cofepris.gob.mx/ssa",
"code": "010.000.0104.00",
"display": "Paracetamol 500mg"
}
],
"text": "Paracetamol 500mg Tabletas"
},
"form": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "385055001",
"display": "Tablet"
}
]
},
"ingredient": [
{
"itemCodeableConcept": {
"coding": [
{
"system": "http://www.nlm.nih.gov/research/umls/rxnorm",
"code": "161",
"display": "Acetaminophen"
}
]
},
"strength": {
"numerator": {
"value": 500,
"unit": "mg",
"system": "http://unitsofmeasure.org",
"code": "mg"
},
"denominator": {
"value": 1,
"unit": "tablet"
}
}
}
],
"batch": {
"lotNumber": "ABC123",
"expirationDate": "2026-12-31"
}
}
3.3. MedicationRequest (Prescripcion/Receta)
3.3.1. Mapeo MedTime -> FHIR MedicationRequest
| Campo MedTime |
Campo FHIR |
Tipo |
Notas |
| receta.id |
MedicationRequest.identifier |
Identifier |
|
| receta.fecha_prescripcion |
MedicationRequest.authoredOn |
dateTime |
|
| receta.estado |
MedicationRequest.status |
code |
active, completed, etc. |
| medicamento_id |
MedicationRequest.medicationReference |
Reference |
|
| paciente_id |
MedicationRequest.subject |
Reference(Patient) |
|
| prescriptor_id |
MedicationRequest.requester |
Reference(Practitioner) |
|
| dosis |
MedicationRequest.dosageInstruction.doseAndRate |
Dosage |
|
| frecuencia |
MedicationRequest.dosageInstruction.timing |
Timing |
|
| via_administracion |
MedicationRequest.dosageInstruction.route |
CodeableConcept |
|
| duracion |
MedicationRequest.dosageInstruction.timing.repeat.boundsDuration |
Duration |
|
| instrucciones |
MedicationRequest.dosageInstruction.additionalInstruction |
CodeableConcept |
|
| cantidad_dispensar |
MedicationRequest.dispenseRequest.quantity |
SimpleQuantity |
|
3.3.2. Mapeo de Estados
| MedTime |
FHIR Status |
Descripcion |
| activa |
active |
Receta vigente |
| completada |
completed |
Tratamiento finalizado |
| cancelada |
cancelled |
Receta cancelada |
| vencida |
stopped |
Receta expirada |
3.3.3. Mapeo de Timing (Frecuencia)
| Descripcion MedTime |
FHIR Timing |
| Cada 6 horas |
frequency: 4, period: 1, periodUnit: "d" |
| Cada 8 horas |
frequency: 3, period: 1, periodUnit: "d" |
| Cada 12 horas |
frequency: 2, period: 1, periodUnit: "d" |
| Una vez al dia |
frequency: 1, period: 1, periodUnit: "d" |
| Dos veces al dia |
frequency: 2, period: 1, periodUnit: "d" |
| Una vez por semana |
frequency: 1, period: 1, periodUnit: "wk" |
| Cada tercer dia |
frequency: 1, period: 3, periodUnit: "d" |
| Segun necesidad |
asNeeded: true |
3.3.4. Mapeo de Via de Administracion
| MedTime |
SNOMED CT Code |
Display |
| oral |
26643006 |
Oral route |
| topica |
6064005 |
Topical route |
| intramuscular |
78421000 |
Intramuscular route |
| intravenosa |
47625008 |
Intravenous route |
| subcutanea |
34206005 |
Subcutaneous route |
| inhalatoria |
447694001 |
Respiratory tract route |
| oftalmica |
54485002 |
Ophthalmic route |
| otica |
10547007 |
Otic route |
| rectal |
37161004 |
Rectal route |
3.4. MedicationStatement (Registro de Toma)
3.4.1. Mapeo MedTime -> FHIR MedicationStatement
| Campo MedTime |
Campo FHIR |
Tipo |
Notas |
| toma.id |
MedicationStatement.identifier |
Identifier |
|
| medicamento_id |
MedicationStatement.medicationReference |
Reference |
|
| paciente_id |
MedicationStatement.subject |
Reference(Patient) |
|
| fecha_hora_toma |
MedicationStatement.effectiveDateTime |
dateTime |
|
| estado_toma |
MedicationStatement.status |
code |
active, completed |
| tomada |
MedicationStatement.taken |
code |
y, n |
| dosis_real |
MedicationStatement.dosage |
Dosage |
|
| notas |
MedicationStatement.note |
Annotation |
|
| fuente |
MedicationStatement.informationSource |
Reference |
Paciente o cuidador |
3.4.2. Mapeo de Estados de Toma
| MedTime |
FHIR Status |
FHIR Taken |
Descripcion |
| tomada |
completed |
y |
Medicamento tomado |
| omitida |
not-taken |
n |
No se tomo |
| pospuesta |
on-hold |
unk |
Reprogramada |
| parcial |
completed |
y |
Toma incompleta |
3.5. Practitioner (Profesional de Salud)
3.5.1. Mapeo MedTime -> FHIR Practitioner
| Campo MedTime |
Campo FHIR |
Tipo |
Notas |
| prescriptor.nombre |
Practitioner.name |
HumanName |
|
| prescriptor.cedula |
Practitioner.identifier |
Identifier |
Sistema segun pais |
| prescriptor.especialidad |
Practitioner.qualification |
Qualification |
|
| prescriptor.telefono |
Practitioner.telecom |
ContactPoint |
|
| prescriptor.email |
Practitioner.telecom |
ContactPoint |
|
| prescriptor.direccion |
Practitioner.address |
Address |
|
3.5.2. Sistemas de Identificacion por Pais
3.6. Organization (Institucion de Salud)
3.6.1. Mapeo MedTime -> FHIR Organization
| Campo MedTime |
Campo FHIR |
Tipo |
Notas |
| institucion.nombre |
Organization.name |
string |
|
| institucion.tipo |
Organization.type |
CodeableConcept |
|
| institucion.direccion |
Organization.address |
Address |
|
| institucion.telefono |
Organization.telecom |
ContactPoint |
|
| institucion.sede |
Organization.partOf |
Reference(Organization) |
|
4. Exportacion de Datos
| Formato |
Extension |
Contenido |
| FHIR Bundle (JSON) |
.json |
Bundle de recursos relacionados |
| FHIR Bundle (XML) |
.xml |
Bundle en formato XML |
| FHIR NDJSON |
.ndjson |
Un recurso por linea |
4.2. Flujo de Exportacion
flowchart TD
A[Usuario solicita exportacion] --> B[Seleccionar datos a exportar]
B --> C[Seleccionar formato]
C --> D[Generar recursos FHIR]
D --> E[Validar contra perfiles]
E --> F{Validacion OK?}
F -->|Si| G[Crear Bundle]
F -->|No| H[Reportar errores]
G --> I[Cifrar si requerido]
I --> J[Generar archivo]
J --> K[Enviar enlace de descarga]
4.3. Bundle de Exportacion
{
"resourceType": "Bundle",
"id": "export-001",
"type": "document",
"timestamp": "2025-12-01T12:00:00Z",
"meta": {
"profile": ["https://medtime.com/fhir/StructureDefinition/export-bundle"]
},
"entry": [
{
"fullUrl": "urn:uuid:patient-001",
"resource": { "resourceType": "Patient", "..." }
},
{
"fullUrl": "urn:uuid:med-001",
"resource": { "resourceType": "Medication", "..." }
},
{
"fullUrl": "urn:uuid:medreq-001",
"resource": { "resourceType": "MedicationRequest", "..." }
}
]
}
5. Importacion de Datos
NOTA V1.0 (OBS-064): La importacion FHIR NO esta disponible en V1.0. Esta seccion documenta la funcionalidad planificada para V2.0.
5.1. Estado de Importacion por Version
| Version |
Estado |
| V1.0 |
NO DISPONIBLE - OCR usa formatos internos |
| V2.0 |
Planificado - Importacion FHIR completa |
5.2. Fuentes de Importacion (V2.0+)
| Fuente |
Recursos |
Validacion |
Version |
| Archivo FHIR Bundle |
Cualquier recurso soportado |
Automatica + usuario |
V2.0 |
| QR con datos FHIR |
MedicationRequest |
Automatica |
V2.0 |
| Integracion hospital |
Bidireccional |
OAuth2 + SMART |
V2.0+ |
5.3. Validacion de Importacion (V2.0+)
- Validar estructura JSON/XML
- Validar contra perfil FHIR R4B
- Verificar referencias internas
- Mapear a estructura MedTime
- Solicitar confirmacion del usuario
5.4. Aclaracion sobre OCR de Recetas (V1.0)
El OCR de recetas en V1.0:
- NO usa FHIR para importacion
- Procesa imagen con IA interna
- Extrae datos a formato interno MedTime
- Usuario confirma y corrige datos
- Datos se almacenan cifrados E2E localmente
6. Perfiles FHIR Personalizados
6.1. MedTime Patient Profile
Extension del perfil US Core Patient para incluir:
- Tipo de sangre
- Preferencias de notificacion
- Zona horaria
6.2. MedTime Medication Profile
Extension para incluir:
- Codigo nacional (Mexico, Brasil)
- Imagen del medicamento
- Nivel de criticidad
7. Terminologias Utilizadas
8. Criterios de Aceptacion
| ID |
Criterio |
| AC-FHIR-001 |
Exportacion Patient genera recurso valido FHIR R4 |
| AC-FHIR-002 |
Exportacion Medication incluye principio activo y forma |
| AC-FHIR-003 |
Exportacion MedicationStatement incluye historial de 30 dias |
| AC-FHIR-004 |
Importacion de receta OCR genera MedicationRequest valido |
| AC-FHIR-005 |
Bundle de exportacion pasa validacion FHIR R4 |
| AC-FHIR-006 |
Mapeo de frecuencias cubre casos comunes (90%) |
| AC-FHIR-007 |
Codigos SNOMED CT usados para formas y vias |
| AC-FHIR-008 |
Exportacion disponible en JSON, XML y NDJSON |
9. Referencias
Documento generado por SpecQueen - "La resistencia es futil. Tus datos seran asimilados al estandar FHIR."