Documentos + Homepage rediseñada
Build & Push Docker Images / test-backend (push) Successful in 24s
Build & Push Docker Images / test-frontend (push) Successful in 23s
Build & Push Docker Images / build-backend (push) Successful in 2m22s
Build & Push Docker Images / build-frontend (push) Successful in 57s

This commit is contained in:
Antoni Nuñez Romeu
2026-06-26 16:59:20 +02:00
parent 14e9c16310
commit 2c1b3cfca6
36 changed files with 4665 additions and 372 deletions
+709
View File
@@ -0,0 +1,709 @@
# Memoria tecnica FarmaFinder
## 1. Resumen ejecutivo
FarmaFinder es una aplicacion web/PWA para buscar medicamentos en la base oficial de CIMA (AEMPS), localizar farmacias que los comercializan y administrar el catalogo de farmacias y sus relaciones con medicamentos. La aplicacion tambien incluye perfil de usuario con ubicacion guardada, geocodificacion, ordenacion por distancia, estados de apertura de farmacias, notificaciones push para medicamentos y un panel de administracion para altas/bajas/importacion de farmacias.
La base funcional actual esta repartida en cuatro capas principales:
- `frontend/`: interfaz React + Vite, tambien preparada para PWA y empaquetado Capacitor.
- `backend/`: API Express con sesion, autenticacion, persistencia SQLite/PG y notificaciones push.
- `API/`: helpers de importacion y normalizacion de farmacias desde fuentes externas.
- `android/` e `ios/`: shells nativos generados por Capacitor.
## 2. Stack tecnologico
### Frontend
- React 18
- Vite 5
- Leaflet + React Leaflet para el mapa
- Vitest + Testing Library + JSDOM para tests de UI
- PWA con `vite-plugin-pwa`
- Capacitor 6 para envoltorio nativo
### Backend
- Node.js en modo ESM
- Express 4
- SQLite como almacenamiento base local
- PostgreSQL opcional para usuarios y sesiones cuando `PG_URL` esta definido
- Redis para cache de CIMA
- `express-session` para sesion de usuario
- `bcrypt` para hash de contrasenas
- `web-push` para notificaciones push web
- `express-rate-limit` para proteccion de endpoints sensibles
### Integraciones externas
- CIMA API de la AEMPS para busqueda y detalle de medicamentos
- Nominatim / OpenStreetMap para geocodificacion
- OpenStreetMap Overpass u otras fuentes JSON para importacion de farmacias
- Webhooks externos tipo n8n para importacion de farmacias
## 3. Estructura del repositorio
- `frontend/`: SPA principal
- `backend/`: API principal y scripts de mantenimiento
- `API/`: libreria de importacion de farmacias desde fuentes externas
- `scraper/`: utilidades de scraping con Puppeteer
- `android/` y `ios/`: proyectos nativos Capacitor
- `docker-compose.yml`: entorno completo con backend, frontend, Redis y PostgreSQL
## 4. Arquitectura funcional
### Flujo publico
1. El usuario escribe un medicamento en el buscador.
2. El frontend llama a `GET /api/medicines/search`.
3. El backend consulta CIMA, filtra resultados y los cachea en Redis.
4. Al seleccionar un medicamento, el frontend llama a `GET /api/medicines/:id/pharmacies`.
5. El backend devuelve farmacias enlazadas en SQLite/PG con precio, stock, coordenadas y horario.
6. La UI permite ordenar por distancia si el usuario tiene ubicacion guardada o concede geolocalizacion.
### Flujo de administracion
1. Un admin inicia sesion.
2. El panel permite gestionar farmacias, buscar medicamentos en CIMA e importar farmacias externas.
3. El admin enlaza medicamentos a farmacias con precio y stock.
4. Al crear un nuevo enlace de farmacia-medicamento, el backend dispara notificaciones push a usuarios suscritos.
### Flujo de perfil y ubicacion
1. Un usuario autenticado puede editar su perfil.
2. Puede guardar direccion y coordenadas manualmente.
3. Tambien puede geocodificar su direccion via Nominatim o usar la geolocalizacion del navegador.
4. Esa ubicacion se usa en el ordenamiento por distancia en la vista publica.
## 5. Frontend
### Punto de entrada
- `frontend/src/main.jsx` monta `<App />` en `#root`.
- Se inicializa el shell nativo con `initNativeShell()`.
### Componente raiz
`frontend/src/App.jsx` controla tres vistas:
- `public`
- `admin`
- `profile`
Tambien gestiona:
- comprobacion de sesion con `GET /api/auth/check`
- apertura/cierre del modal de login
- cierre de sesion con `POST /api/auth/logout`
- panel de notificaciones guardadas
### Vistas principales
#### PublicView
`frontend/src/views/PublicView.jsx`
Responsabilidades:
- busqueda de medicamentos con debounce
- consulta de farmacias asociadas al medicamento
- mapa de farmacias
- lista de farmacias con precio, stock, horario y notificaciones
- ordenacion por distancia usando ubicacion guardada o geolocalizacion del navegador
Caracteristicas clave:
- Si el usuario tiene coordenadas en el perfil, se priorizan sobre la geolocalizacion del navegador.
- La lista y el mapa usan la misma ordenacion.
- Si no hay coordenadas o el navegador falla, se muestra un mensaje de error contextual.
#### AdminView
`frontend/src/views/AdminView.jsx`
Responsabilidades:
- autenticar acceso al panel
- mostrar tabs de:
- farmacias
- medicamentos
- enlace farmacia-medicamento
- logout de admin
#### ProfileView
`frontend/src/views/ProfileView.jsx`
Responsabilidades:
- editar direccion y coordenadas del usuario
- geocodificar la direccion con `/api/geocode`
- obtener ubicacion actual del dispositivo
- abrir la vista de notificaciones guardadas
- cerrar sesion
## 6. Componentes de UI
### Busqueda y resultados
- `frontend/src/components/SearchBar.jsx`
- `frontend/src/components/MedicineResults.jsx`
- `frontend/src/components/PharmacyList.jsx`
- `frontend/src/components/PharmacyMap.jsx`
#### MedicineResults
- Lista resultados de CIMA.
- Cada card incluye boton de notificaciones para ese medicamento.
- Al pulsar la card se abre el detalle de farmacias asociadas.
#### PharmacyList
- Muestra farmacias enlazadas al medicamento.
- Incluye:
- distancia al usuario si existe ubicacion
- estado de apertura calculado a partir de `opening_hours`
- direccion
- telefono
- precio
- stock
- boton de notificacion por farmacia cuando el stock esta agotado
#### PharmacyMap
- Muestra farmacias sobre Leaflet.
- Usa coordenadas de cada farmacia para ubicarlas en el mapa.
### Admin components
- `frontend/src/components/admin/PharmacyManagement.jsx`
- `frontend/src/components/admin/MedicineManagement.jsx`
- `frontend/src/components/admin/PharmacyMedicineLink.jsx`
- `frontend/src/components/admin/LoginForm.jsx`
#### PharmacyManagement
- Lista farmacias existentes.
- Permite crear, editar y borrar farmacias.
- Integra importacion por:
- webhook externo
- OpenStreetMap / Overpass
- URL de open data JSON/GeoJSON
- Permite filtrar farmacias por radio geografico.
- Permite geocodificar una ciudad para obtener lat/lon/radio de trabajo.
- Gestiona horario semanal estructurado.
#### MedicineManagement
- Busca medicamentos en CIMA desde el panel admin.
- Solo sirve para exploracion y seleccion previa al enlace.
#### PharmacyMedicineLink
- Permite seleccionar farmacia y medicamento.
- Crea o actualiza el enlace con precio y stock.
- Permite editar y eliminar relaciones ya existentes.
## 7. Utilidades de frontend
### Geolocalizacion
`frontend/src/utils/geo.js`
- `haversineKm()`: calcula distancia entre dos puntos GPS.
- `getUserPosition()`: obtiene ubicacion del navegador con validaciones de contexto seguro.
- `formatDistance()`: da formato a metros/kilometros.
### Horarios
`frontend/src/utils/hours.js`
- `getOpenStatus()`: interpreta el horario semanal y devuelve un estado legible.
- Soporta:
- abierto
- cerrado
- abre a una hora concreta
- abre el siguiente dia habil
- El formato almacenado es JSON con claves `sun`, `mon`, `tue`, `wed`, `thu`, `fri`, `sat`.
### Notificaciones
`frontend/src/utils/notifications.js`
- comprueba soporte de Push API y Service Worker
- obtiene la VAPID public key del backend
- registra suscripciones push del navegador
- guarda una huella local en `localStorage`
- permite suscripcion global por medicamento o por medicamento + farmacia
### Service worker
`frontend/src/sw.js`
- precache de assets PWA
- muestra notificaciones al recibir eventos `push`
- navega a la URL asociada al click en la notificacion
## 8. Backend
### Arranque
`backend/server.js` es el nucleo de la API. Expone:
- la aplicacion Express
- `initDatabase()`
- la conexion `db`
Si `NODE_ENV !== test`, inicializa DB y levanta el servidor en `PORT` o `3001`.
### Configuracion basica
- CORS con credenciales
- `express.json()`
- session middleware
- rate limiting en:
- busqueda
- login
- registro
- geocoding
### Persistencia
#### SQLite
Se usa como base local principal:
- farmacias
- relaciones farmacia-medicamento
- subscripciones push
- fallback de usuarios cuando no hay PostgreSQL
#### PostgreSQL opcional
Si existe `PG_URL`, la tabla `users` y el store de sesiones se montan sobre PostgreSQL.
Esto genera una arquitectura mixta:
- SQLite para catalogo/relaciones
- PostgreSQL para usuarios y sesiones, si se configura
### Capa de sesion
- `express-session`
- store SQLite o PostgreSQL segun entorno
- cookie httpOnly con maxAge de 24h
- `trust proxy` configurable con `TRUST_PROXY`
## 9. Modelo de datos
### `pharmacies`
Campos:
- `id`
- `name`
- `address`
- `phone`
- `latitude`
- `longitude`
- `opening_hours`
### `pharmacy_medicines`
Relacion farmacia-medicamento.
Campos:
- `id`
- `pharmacy_id`
- `medicine_nregistro`
- `medicine_name`
- `price`
- `stock`
Restriccion:
- `UNIQUE(pharmacy_id, medicine_nregistro)`
### `users`
Campos actuales:
- `id`
- `username`
- `password_hash`
- `is_admin`
- `address`
- `latitude`
- `longitude`
- `created_at`
### `push_subscriptions`
Subscripciones push globales por medicamento.
Campos:
- `id`
- `medicine_nregistro`
- `medicine_name`
- `endpoint`
- `p256dh`
- `auth`
- `user_id`
- `created_at`
### `push_subscriptions_pharmacy`
Subscripciones push por medicamento y farmacia.
Campos:
- `id`
- `medicine_nregistro`
- `medicine_name`
- `pharmacy_id`
- `endpoint`
- `p256dh`
- `auth`
- `user_id`
- `created_at`
## 10. API backend
### Medicamentos
- `GET /api/medicines/search?q=...`
- busca en CIMA con cache Redis
- devuelve una lista normalizada
- `GET /api/medicines/:medicineId`
- devuelve detalle de un medicamento por `nregistro`
- `GET /api/medicines/:medicineId/pharmacies`
- devuelve farmacias que tienen ese medicamento
### Farmacias
- `GET /api/pharmacies`
- lista completa de farmacias
### Autenticacion
- `POST /api/auth/login`
- `POST /api/auth/register`
- `POST /api/auth/logout`
- `GET /api/auth/check`
### Perfil
- `GET /api/users/me`
- `PUT /api/users/me`
### Geocoding
- `GET /api/geocode?q=...`
- autenticado
- usa Nominatim
- devuelve lat/lon y texto de resultado
- `GET /api/admin/geocode?q=...`
- solo admin
- ademas calcula radio sugerido
### Admin: farmacias
- `POST /api/admin/pharmacies`
- `PUT /api/admin/pharmacies/:id`
- `DELETE /api/admin/pharmacies/:id`
- `POST /api/admin/pharmacies/import-webhook`
- `POST /api/admin/pharmacies/import-external`
### Admin: medicamentos y relaciones
- `GET /api/admin/medicines`
- `GET /api/admin/pharmacies/:pharmacyId/medicines`
- `POST /api/admin/pharmacy-medicines`
- `PUT /api/admin/pharmacy-medicines/:id`
- `DELETE /api/admin/pharmacy-medicines/:id`
### Notificaciones
- `GET /api/notifications/vapid-public-key`
- `POST /api/notifications/subscribe`
- `DELETE /api/notifications/unsubscribe`
- `GET /api/notifications/mine`
- `DELETE /api/notifications/mine`
## 11. Capa de importacion externa
La carpeta `API/` no expone un servidor HTTP propio, sino funciones reutilizables para importar farmacias desde distintas fuentes.
### `API/index.js`
- `fetchPharmaciesExternal(opts)`
- `source = 'osm'`
- `source = 'openData'`
- decide el extractor adecuado segun la fuente
### `API/normalize.js`
- `buildAddressFromOsmTags()`
- `osmElementToPharmacy()`
- normaliza nodos Overpass a un formato comun de farmacia
- parsea horarios OSM si existen
### `API/opening-hours-osm.js`
- parser de un subconjunto de `opening_hours`
- soporta:
- `24/7`
- rangos semanales
- dias multiples
- `off` / `closed`
- franjas partidas resumidas
### `backend/farmacias-webhook-import.js`
- importa datos desde un webhook HTTP
- normaliza campos en espanol o ingles
- acepta ubicacion en distintas variantes
- extrae horarios si vienen en formato OSM
- inserta o salta duplicados con estadisticas
## 12. CIMA y cache
`backend/cima-service.js` implementa la integracion con CIMA.
### Busqueda
- consulta `https://cima.aemps.es/cima/rest/medicamentos`
- usa el parametro `nombre`
- normaliza el resultado a campos internos:
- `id`
- `nregistro`
- `name`
- `active_ingredient`
- `dosage`
- `form`
- `formSimplified`
- `laboratory`
- `prescription`
- `commercialized`
- `generic`
- `photos`
- `docs`
### Detalle
- consulta `GET /medicamento/:nregistro`
- cachea por mas tiempo que la busqueda
### Cache
- Redis guarda resultados de busqueda y detalle
- si CIMA falla, se intenta devolver cache obsoleto si existe
## 13. Notificaciones push
### Estado actual
La app ya soporta notificaciones push web completas.
### Backend
- usa VAPID si `VAPID_PUBLIC_KEY` y `VAPID_PRIVATE_KEY` existen
- si faltan, push queda desactivado con respuesta `503`
- al crear una relacion nueva farmacia-medicamento, se ejecuta `sendPushForMedicine()`
- se deduplican endpoints para evitar notificacion doble global + farmacia
- si el endpoint devuelve `404` o `410`, la suscripcion se limpia
### Frontend
- permite suscripcion global por medicamento
- permite suscripcion por medicamento + farmacia
- el icono de campana refleja el estado local
- la vista `Saved notifications` permite ver y borrar suscripciones guardadas del usuario
## 14. PWA y capa nativa
### PWA
- existe `frontend/src/sw.js`
- hay assets publicos de icono
- la app esta pensada para funcionar como PWA instalable
### Capacitor
- `capacitor.config.json`
- `android/`
- `ios/`
El proyecto esta preparado para empaquetarse como app nativa. La documentacion de `NATIVE.md` indica que no hay una base de codigo separada para Android e iOS; la UI real vive en `frontend/`.
## 15. Scripts y comandos
### Raiz
- `npm run dev`: backend + frontend en paralelo
- `npm run start`: backend + preview frontend
- `npm run install:all`: instala dependencias raiz, backend y frontend
- `npm run build:web`: build de frontend
- `npm run cap:sync`: build web + sync Capacitor
### Backend
- `npm start`
- `npm run dev`
- `npm run seed`
- `npm run create-admin`
- `npm run migrate`
- `npm run import-farmacias`
- `npm test`
### Frontend
- `npm run dev`
- `npm run build`
- `npm run preview`
- `npm run test`
## 16. Docker
`docker-compose.yml` levanta:
- `redis`
- `postgres`
- `backend`
- `frontend`
Puertos:
- frontend: `3000`
- backend: `3001`
Persistencia:
- `backend_data` para la DB SQLite del backend
- `postgres_data` para PostgreSQL
## 17. Variables de entorno
### Backend
- `PORT`
- `SESSION_SECRET`
- `CORS_ORIGIN`
- `FARMACIAS_WEBHOOK_URL`
- `REDIS_HOST`
- `REDIS_PORT`
- `REDIS_PASSWORD`
- `DATABASE_PATH`
- `PG_URL`
- `TRUST_PROXY`
- `VAPID_PUBLIC_KEY`
- `VAPID_PRIVATE_KEY`
- `VAPID_SUBJECT`
- `NODE_ENV`
### App
- en produccion, el frontend debe poder resolver la URL del backend segun despliegue
- en native shell, el manual `NATIVE.md` indica que conviene usar URL absoluta o servir el PWA desplegado
## 18. Seeds, migraciones y administracion
### `backend/seed.js`
- crea tablas basicas
- inserta farmacias y medicamentos de ejemplo
- genera relaciones ficticias usando `EXAMPLE_...`
- actualmente es util para demos, no como dato real
### `backend/create-admin.js`
- crea usuario admin en SQLite o PostgreSQL segun `PG_URL`
- por defecto:
- usuario: `admin`
- password: `admin123`
### `backend/migrate.js`
- migracion para el cambio historico de `medicine_id` a `medicine_nregistro`
- la tabla `medicines` antigua se conserva como referencia si existe
## 19. Tests
### Backend
- `backend/__tests__/server.test.js`
- valida busqueda vacia
- valida login incorrecto
- valida proteccion de rutas admin
- valida creacion de farmacia autenticado
- `backend/__tests__/opening-hours-osm.test.js`
- cubre parser de horarios OSM
### Frontend
- existe configuracion de Vitest
- hay `frontend/src/App.test.jsx`
- la cobertura visible en el repo parece enfocada a smoke tests y utilidades
## 20. Observaciones tecnicas y limites actuales
1. El backend mezcla SQLite y PostgreSQL segun entorno. Esto funciona, pero introduce dos rutas de persistencia para usuarios y sesiones.
2. Los medicamentos no se guardan localmente como catalogo propio; se consumen desde CIMA en tiempo real y se cachean en Redis.
3. Los enlaces farmacia-medicamento dependen de `nregistro` de CIMA, no de un ID interno de medicamentos.
4. Las notificaciones push son web push; en shells nativos siguen la logica del navegador/PWA, no una integracion FCM/APNs independiente.
5. La importacion de farmacias depende de la calidad de la fuente externa y de la normalizacion de campos.
6. El seed actual contiene datos de ejemplo y relaciones ficticias; no representa datos de produccion.
## 21. Conclusiones
El estado actual de FarmaFinder es el de una plataforma funcional orientada a consulta y administracion de farmacias y medicamentos, con un backend ya bastante consolidado: autentica usuarios, controla roles, persiste relaciones, geocodifica, importa fuentes externas, cachea CIMA y dispara push notifications. La parte de frontend acompana ese backend con un flujo publico de busqueda, un perfil con ubicacion y un panel admin operativo.
Si quieres, el siguiente paso puede ser convertir esta memoria en una version formal de entrega, con estilo academico o empresarial, o bien en un documento mas tecnico con diagramas de arquitectura y secuencia.
## 22. Next steps propuestos
El siguiente paso funcional natural para FarmaFinder seria incorporar el escaneo de la TSI, de forma que el usuario pueda identificar rapidamente su perfil asistencial y, a partir de ahi, cruzar su necesidad con el stock real disponible en farmacias.
### Objetivo
- Capturar la informacion de la tarjeta sanitaria individual mediante escaneo.
- Asociar esa informacion al perfil del usuario de manera segura.
- Recuperar o inferir los medicamentos relevantes para el usuario.
- Contrastar esos medicamentos con el stock de farmacias cercanas.
- Permitir actuar si no hay stock disponible, por ejemplo:
- reservar una farmacia concreta
- generar una solicitud de pedido
- iniciar un flujo de aviso o sustitucion
### Flujo funcional propuesto
1. El usuario abre el escaner de TSI desde la app.
2. La app lee la tarjeta y extrae los identificadores necesarios.
3. El backend valida la informacion y la vincula al usuario autenticado.
4. Se obtiene la lista de medicamentos asociados o derivados del contexto del usuario.
5. El sistema cruza esa lista con:
- farmacias cercanas
- stock disponible
- precio
- horario
6. Si no existe stock suficiente, la app muestra alternativas y acciones posibles.
### Consideraciones tecnicas
- Esta funcionalidad requiere definir el formato exacto de lectura de la TSI y las fuentes de datos sanitarias a consultar.
- Debe tratarse como una funcionalidad sensible, con control de acceso estricto y minimizacion de datos.
- El escaneo deberia integrarse con el mismo modelo de ubicacion, autenticacion y notificaciones que ya existe.
- La logica de contraste stock/medicamento encaja bien con el modelo actual de `pharmacy_medicines`, pero probablemente exigiria ampliar la capa de negocio para soportar reservas, pedidos o estados intermedios.
### Riesgos y dependencias
- Dependencia de la integracion real con sistemas sanitarios externos.
- Posible necesidad de cumplimiento legal adicional por el tipo de dato tratado.
- Definicion de si el sistema solo informa de disponibilidad o si tambien permite operar pedidos/reservas.
- Necesidad de auditar trazabilidad, consentimiento y control de uso de datos.
### Resultado esperado
Esta ampliacion convertiria FarmaFinder de un buscador de disponibilidad a un asistente operativo de acceso al medicamento, capaz de ayudar al usuario a pasar de la consulta del stock a la accion cuando no exista disponibilidad inmediata.
@@ -0,0 +1,95 @@
%PDF-1.4
1 0 obj
<< /Type /Font /Subtype /Type1 /BaseFont /Times-Roman /Encoding /WinAnsiEncoding >>
endobj
2 0 obj
<< /Type /Font /Subtype /Type1 /BaseFont /Times-Bold /Encoding /WinAnsiEncoding >>
endobj
3 0 obj
<< /Type /Font /Subtype /Type1 /BaseFont /Times-Italic /Encoding /WinAnsiEncoding >>
endobj
4 0 obj
<< /Length 645 >>
stream
BT /F2 18 Tf 126 783.89 Td (DOCUMENTO DE PRECONVERSION) Tj ET
BT /F1 12 Tf 111 754.85 Td (Oficina Española de Patentes y Marcas \(OEPM\)) Tj ET
BT /F3 12 Tf 136 723.49 Td (Hoja de preparacion para expediente de patente) Tj ET
0.8 w 56 630.13 483.28 66 re S
BT /F1 11 Tf 66 696.13 Td (Solicitante: Antoni Nuñez Romeu) Tj ET
BT /F1 11 Tf 66 682.05 Td (DNI/NIF: 45858029P) Tj ET
BT /F1 11 Tf 66 667.9699999999999 Td (Domicilio: C/ Font Vella 12, 1, Terrassa, Barcelona, 08221) Tj ET
BT /F1 11 Tf 66 653.8899999999999 Td (Inventor: Antoni Nuñez Romeu) Tj ET
BT /F3 10 Tf 126 631.8099999999998 Td (Documento de apoyo para expediente de patente) Tj ET
endstream
endobj
5 0 obj
<< /Length 3202 >>
stream
BT /F2 13 Tf 56 783.89 Td (1. Identificacion del expediente) Tj ET
0.2 w 56 763.25 m 539.28 763.25 l S
BT /F1 11.2 Tf 56 753.25 Td (Solicitante: Antoni Nuñez Romeu) Tj ET
BT /F1 11.2 Tf 56 737.914 Td (NIF/NIE/DNI: 45858029P) Tj ET
BT /F1 11.2 Tf 56 722.578 Td (Domicilio: C/ Font Vella 12, 1, Terrassa, Barcelona, 08221) Tj ET
BT /F1 11.2 Tf 56 707.242 Td (Titulo de la invencion: Sistema y procedimiento implementados por ordenador para) Tj ET
BT /F1 11.2 Tf 56 692.906 Td (la identificacion de necesidades terapeuticas mediante escaneo de tarjeta) Tj ET
BT /F1 11.2 Tf 56 678.5699999999999 Td (sanitaria individual, contraste con stock farmacutico geolocalizado y generacion) Tj ET
BT /F1 11.2 Tf 56 664.2339999999999 Td (de acciones de suministro.) Tj ET
BT /F2 13 Tf 56 648.8979999999999 Td (2. Objeto de este documento) Tj ET
0.2 w 56 628.2579999999999 m 539.28 628.2579999999999 l S
BT /F1 11.2 Tf 56 618.2579999999999 Td (Este documento se emite como hoja interna de preparacion y control del expediente) Tj ET
BT /F1 11.2 Tf 56 603.9219999999999 Td (antes de su presentacion ante la Oficina Española de Patentes y Marcas \(OEPM\). Su) Tj ET
BT /F1 11.2 Tf 56 589.5859999999999 Td (finalidad es reunir en un unico soporte los datos de identificacion, la referencia) Tj ET
BT /F1 11.2 Tf 56 575.2499999999999 Td (del objeto tecnico y la declaracion de que la documentacion principal del) Tj ET
BT /F1 11.2 Tf 56 560.9139999999999 Td (expediente ha sido preparada para su presentacion.) Tj ET
BT /F2 13 Tf 56 545.5779999999999 Td (3. Contenido del expediente) Tj ET
0.2 w 56 524.9379999999999 m 539.28 524.9379999999999 l S
BT /F1 11.1 Tf 64 514.9379999999999 Td (" Solicitud de patente.) Tj ET
BT /F1 11.1 Tf 64 500.72999999999985 Td (" Memoria descriptiva.) Tj ET
BT /F1 11.1 Tf 64 486.5219999999998 Td (" Reivindicaciones.) Tj ET
BT /F1 11.1 Tf 64 472.3139999999998 Td (" Resumen.) Tj ET
BT /F1 11.1 Tf 64 458.10599999999977 Td (" Anexo de dibujos.) Tj ET
BT /F1 11.1 Tf 64 443.89799999999974 Td (" Solicitud de reduccion de tasas para persona fisica.) Tj ET
BT /F2 13 Tf 56 429.6899999999997 Td (4. Declaracion) Tj ET
0.2 w 56 409.0499999999997 m 539.28 409.0499999999997 l S
BT /F1 11.2 Tf 56 399.0499999999997 Td (El solicitante declara que la documentacion aportada se corresponde con una unica) Tj ET
BT /F1 11.2 Tf 56 384.7139999999997 Td (invencion, que la descripcion y las reivindicaciones han sido redactadas de forma) Tj ET
BT /F1 11.2 Tf 56 370.3779999999997 Td (coherente y que el material adjunto se presenta a efectos de tramitacion ante la) Tj ET
BT /F1 11.2 Tf 56 356.0419999999997 Td (OEPM.) Tj ET
BT /F2 13 Tf 56 340.7059999999997 Td (5. Firma) Tj ET
0.2 w 56 320.0659999999997 m 539.28 320.0659999999997 l S
BT /F1 11.2 Tf 56 310.0659999999997 Td (En Terrassa, a 22 de junio de 2026.) Tj ET
BT /F1 11.2 Tf 56 294.7299999999997 Td (Fdo.: Antoni Nuñez Romeu) Tj ET
BT /F1 11.2 Tf 56 279.39399999999966 Td (DNI/NIF: 45858029P) Tj ET
BT /F1 11.2 Tf 56 264.05799999999965 Td (Documento de apoyo interno. Revisar con agente de propiedad industrial antes de) Tj ET
BT /F1 11.2 Tf 56 249.72199999999964 Td (presentar.) Tj ET
BT /F1 9 Tf 495.28 234.38599999999963 Td (Pagina 2) Tj ET
endstream
endobj
6 0 obj
<< /Type /Pages /Kids [7 0 R 8 0 R] /Count 2 >>
endobj
7 0 obj
<< /Type /Page /Parent 6 0 R /MediaBox [0 0 595.28 841.89] /Resources << /Font << /F1 1 0 R /F2 2 0 R /F3 3 0 R >> >> /Contents 4 0 R >>
endobj
8 0 obj
<< /Type /Page /Parent 6 0 R /MediaBox [0 0 595.28 841.89] /Resources << /Font << /F1 1 0 R /F2 2 0 R /F3 3 0 R >> >> /Contents 5 0 R >>
endobj
9 0 obj
<< /Type /Catalog /Pages 6 0 R >>
endobj
xref
0 10
0000000000 65535 f
0000000009 00000 n
0000000108 00000 n
0000000206 00000 n
0000000306 00000 n
0000001002 00000 n
0000004256 00000 n
0000004319 00000 n
0000004471 00000 n
0000004623 00000 n
trailer << /Size 10 /Root 9 0 R >>
startxref
4672
%%EOF
@@ -0,0 +1,92 @@
%PDF-1.4
1 0 obj
<< /Type /Font /Subtype /Type1 /BaseFont /Times-Roman /Encoding /WinAnsiEncoding >>
endobj
2 0 obj
<< /Type /Font /Subtype /Type1 /BaseFont /Times-Bold /Encoding /WinAnsiEncoding >>
endobj
3 0 obj
<< /Type /Font /Subtype /Type1 /BaseFont /Times-Italic /Encoding /WinAnsiEncoding >>
endobj
4 0 obj
<< /Length 618 >>
stream
BT /F2 18 Tf 126 783.89 Td (SOLICITUD DE REDUCCION DE TASAS) Tj ET
BT /F1 12 Tf 111 754.85 Td (Oficina Española de Patentes y Marcas \(OEPM\)) Tj ET
BT /F3 12 Tf 136 723.49 Td (Persona fisica) Tj ET
0.8 w 56 630.13 483.28 66 re S
BT /F1 11 Tf 66 696.13 Td (Solicitante: Antoni Nuñez Romeu) Tj ET
BT /F1 11 Tf 66 682.05 Td (DNI/NIF: 45858029P) Tj ET
BT /F1 11 Tf 66 667.9699999999999 Td (Domicilio: C/ Font Vella 12, 1, Terrassa, Barcelona, 08221) Tj ET
BT /F1 11 Tf 66 653.8899999999999 Td (Inventor: Antoni Nuñez Romeu) Tj ET
BT /F3 10 Tf 126 631.8099999999998 Td (Documento de apoyo para expediente de patente) Tj ET
endstream
endobj
5 0 obj
<< /Length 3068 >>
stream
BT /F2 13 Tf 56 783.89 Td (1. Datos del solicitante) Tj ET
0.2 w 56 763.25 m 539.28 763.25 l S
BT /F1 11.2 Tf 56 753.25 Td (Nombre y apellidos: Antoni Nuñez Romeu) Tj ET
BT /F1 11.2 Tf 56 737.914 Td (DNI/NIF: 45858029P) Tj ET
BT /F1 11.2 Tf 56 722.578 Td (Domicilio: C/ Font Vella 12, 1, Terrassa, Barcelona, 08221) Tj ET
BT /F2 13 Tf 56 707.242 Td (2. Expediente al que se refiere) Tj ET
0.2 w 56 686.602 m 539.28 686.602 l S
BT /F1 11.2 Tf 56 676.602 Td (Titulo de la invencion: Sistema y procedimiento implementados por ordenador para) Tj ET
BT /F1 11.2 Tf 56 662.266 Td (la identificacion de necesidades terapeuticas mediante escaneo de tarjeta) Tj ET
BT /F1 11.2 Tf 56 647.93 Td (sanitaria individual, contraste con stock farmacutico geolocalizado y generacion) Tj ET
BT /F1 11.2 Tf 56 633.5939999999999 Td (de acciones de suministro.) Tj ET
BT /F2 13 Tf 56 618.2579999999999 Td (3. Solicitud) Tj ET
0.2 w 56 597.6179999999999 m 539.28 597.6179999999999 l S
BT /F1 11.2 Tf 56 587.6179999999999 Td (Por medio del presente escrito, el solicitante, en su condicion de persona fisica,) Tj ET
BT /F1 11.2 Tf 56 573.2819999999999 Td (solicita que se le aplique la reduccion de tasas que resulte procedente conforme a) Tj ET
BT /F1 11.2 Tf 56 558.9459999999999 Td (la normativa vigente de la Oficina Española de Patentes y Marcas \(OEPM\) para) Tj ET
BT /F1 11.2 Tf 56 544.6099999999999 Td (personas fisicas.) Tj ET
BT /F1 11.2 Tf 56 529.2739999999999 Td (A tal efecto, manifiesta que la solicitud de patente se presenta a su nombre como) Tj ET
BT /F1 11.2 Tf 56 514.9379999999999 Td (persona fisica y pide que la oficina tramite esta peticion de conformidad con los) Tj ET
BT /F1 11.2 Tf 56 500.60199999999986 Td (requisitos y porcentajes de reduccion establecidos en la normativa aplicable al) Tj ET
BT /F1 11.2 Tf 56 486.26599999999985 Td (momento de la presentacion.) Tj ET
BT /F2 13 Tf 56 470.92999999999984 Td (4. Declaracion responsable) Tj ET
0.2 w 56 450.28999999999985 m 539.28 450.28999999999985 l S
BT /F1 11.2 Tf 56 440.28999999999985 Td (El solicitante declara bajo su responsabilidad que los datos consignados en este) Tj ET
BT /F1 11.2 Tf 56 425.95399999999984 Td (documento son ciertos y que aportara, en su caso, la documentacion adicional que) Tj ET
BT /F1 11.2 Tf 56 411.6179999999998 Td (la OEPM pudiera requerir para acreditar la condicion de persona fisica y la) Tj ET
BT /F1 11.2 Tf 56 397.2819999999998 Td (procedencia de la reduccion solicitada.) Tj ET
BT /F2 13 Tf 56 381.9459999999998 Td (5. Firma) Tj ET
0.2 w 56 361.3059999999998 m 539.28 361.3059999999998 l S
BT /F1 11.2 Tf 56 351.3059999999998 Td (En Terrassa, a 22 de junio de 2026.) Tj ET
BT /F1 11.2 Tf 56 335.9699999999998 Td (Fdo.: Antoni Nuñez Romeu) Tj ET
BT /F1 11.2 Tf 56 320.6339999999998 Td (DNI/NIF: 45858029P) Tj ET
BT /F1 11.2 Tf 56 305.2979999999998 Td (Nota: revisar con agente o con la OEPM el formulario exacto y los requisitos) Tj ET
BT /F1 11.2 Tf 56 290.96199999999976 Td (vigentes antes de presentar.) Tj ET
BT /F1 9 Tf 495.28 275.62599999999975 Td (Pagina 2) Tj ET
endstream
endobj
6 0 obj
<< /Type /Pages /Kids [7 0 R 8 0 R] /Count 2 >>
endobj
7 0 obj
<< /Type /Page /Parent 6 0 R /MediaBox [0 0 595.28 841.89] /Resources << /Font << /F1 1 0 R /F2 2 0 R /F3 3 0 R >> >> /Contents 4 0 R >>
endobj
8 0 obj
<< /Type /Page /Parent 6 0 R /MediaBox [0 0 595.28 841.89] /Resources << /Font << /F1 1 0 R /F2 2 0 R /F3 3 0 R >> >> /Contents 5 0 R >>
endobj
9 0 obj
<< /Type /Catalog /Pages 6 0 R >>
endobj
xref
0 10
0000000000 65535 f
0000000009 00000 n
0000000108 00000 n
0000000206 00000 n
0000000306 00000 n
0000000975 00000 n
0000004095 00000 n
0000004158 00000 n
0000004310 00000 n
0000004462 00000 n
trailer << /Size 10 /Root 9 0 R >>
startxref
4511
%%EOF
@@ -0,0 +1,288 @@
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>Solicitud de patente OEPM - FarmaFinder</title>
<style>
@page {
size: A4;
margin: 22mm 20mm 22mm 20mm;
}
body {
font-family: "Liberation Serif", Georgia, serif;
font-size: 11.5pt;
line-height: 1.45;
color: #111;
margin: 0;
}
.page {
page-break-after: always;
}
.page:last-child {
page-break-after: auto;
}
h1, h2, h3 {
margin: 0 0 8px 0;
font-weight: 700;
}
h1 {
font-size: 18pt;
text-align: center;
margin-top: 42mm;
letter-spacing: 0.2px;
}
h2 {
font-size: 13.5pt;
margin-top: 18px;
border-bottom: 1px solid #444;
padding-bottom: 3px;
}
h3 {
font-size: 11.8pt;
margin-top: 14px;
}
.center { text-align: center; }
.meta {
margin-top: 22mm;
font-size: 12pt;
text-align: center;
}
.meta p { margin: 6px 0; }
.box {
border: 1px solid #444;
padding: 10px 12px;
margin: 12px 0;
}
.label {
font-weight: 700;
}
ul, ol {
margin: 6px 0 10px 24px;
padding: 0;
}
li { margin: 3px 0; }
.small {
font-size: 10pt;
}
.claims p {
margin: 6px 0 10px 0;
text-align: justify;
}
.claims .claim {
margin-bottom: 12px;
}
.indent {
margin-left: 18px;
}
.spaced p {
margin: 0 0 8px 0;
text-align: justify;
}
.footer-note {
margin-top: 14mm;
font-size: 10pt;
text-align: center;
}
</style>
</head>
<body>
<div class="page">
<h1>SOLICITUD DE PATENTE</h1>
<div class="meta">
<p><span class="label">Oficina:</span> Oficina Española de Patentes y Marcas (OEPM)</p>
<p><span class="label">Título de la invención:</span><br>
Sistema y procedimiento implementados por ordenador para la identificación de necesidades terapéuticas mediante escaneo de tarjeta sanitaria individual, contraste con stock farmacéutico geolocalizado y generación de acciones de suministro.</p>
</div>
<div class="box">
<p><span class="label">Solicitante:</span> Antoni Nuñez Romeu</p>
<p><span class="label">NIF/CIF:</span> 45858029P</p>
<p><span class="label">Domicilio:</span> C/ Font Vella 12, 1, Terrassa, Barcelona, 08221</p>
<p><span class="label">Inventor o inventores:</span> Antoni Nuñez Romeu</p>
</div>
<div class="footer-note">
Memoria descriptiva, reivindicaciones, resumen y referencia a dibujos
</div>
</div>
<div class="page">
<h2>1. Campo técnico de la invención</h2>
<div class="spaced">
<p>La invención se encuadra en los sistemas informáticos aplicados al sector sanitario y farmacéutico, en particular en soluciones de captura de identificadores sanitarios, comparación automatizada de disponibilidad de medicamentos y asistencia digital a la dispensación y suministro.</p>
</div>
<h2>2. Antecedentes de la invención</h2>
<div class="spaced">
<p>Las soluciones actuales de búsqueda de medicamentos y farmacias permiten localizar productos y mostrar stock aproximado, pero normalmente operan a partir de una búsqueda manual por nombre de medicamento o principio activo. También existen sistemas de geolocalización y de gestión de inventario, pero suelen estar desacoplados del contexto sanitario del usuario y no integran, en una única cadena técnica, la identificación mediante tarjeta sanitaria individual, la inferencia de necesidades terapéuticas y la comparación en tiempo real con disponibilidad farmacéutica local.</p>
<p>Además, cuando no existe stock en la farmacia más próxima, el usuario debe iniciar manualmente nuevos procesos de búsqueda o desplazamiento, sin que el sistema proponga de forma automatizada acciones técnicas de reserva, pedido o derivación basadas en la disponibilidad real.</p>
</div>
<h2>3. Problema técnico a resolver</h2>
<div class="spaced">
<p>La invención resuelve el problema técnico de reducir el tiempo y la fricción entre la identificación de una necesidad terapéutica y la localización de una farmacia que disponga del medicamento adecuado, integrando:</p>
<ul>
<li>lectura segura de identificadores sanitarios,</li>
<li>obtención de referencias de medicamento asociadas,</li>
<li>comparación automatizada con inventarios de farmacias,</li>
<li>priorización por proximidad y disponibilidad,</li>
<li>generación de acciones técnicas de suministro cuando no exista stock inmediato.</li>
</ul>
</div>
<h2>4. Resumen de la invención</h2>
<div class="spaced">
<p>La invención propone un sistema y procedimiento implementados por ordenador que operan sobre un terminal móvil o dispositivo de lectura. El sistema captura la información de una tarjeta sanitaria individual mediante escaneo, valida la información mediante un módulo de verificación, asocia el resultado al perfil del usuario autenticado y obtiene una lista de medicamentos o necesidades terapéuticas relevantes. Posteriormente, un motor de contraste consulta un repositorio de stock de farmacias geolocalizadas y determina la coincidencia entre la necesidad detectada y la disponibilidad real en cada establecimiento. Si existe stock, el sistema prioriza las farmacias adecuadas y presenta una ruta de acceso o reserva. Si no existe stock, el sistema genera automáticamente una acción de aviso, pedido, reserva o derivación, conservando trazabilidad técnica del evento. La invención no se limita a una búsqueda manual, sino que integra captura, validación, georreferenciación, consulta de stock y respuesta automática en una única arquitectura técnica.</p>
</div>
</div>
<div class="page">
<h2>5. Breve descripción de los dibujos</h2>
<div class="spaced">
<p><span class="label">Figura 1.</span> Diagrama de bloques general del sistema.</p>
<p><span class="label">Figura 2.</span> Flujo de captura y validación del escaneo de la TSI.</p>
<p><span class="label">Figura 3.</span> Flujo de contraste entre necesidad terapéutica y stock de farmacias.</p>
<p><span class="label">Figura 4.</span> Flujo de acción cuando no existe stock disponible.</p>
</div>
<h2>6. Descripción detallada de la invención</h2>
<h3>6.1 Arquitectura general</h3>
<div class="spaced">
<p>El sistema comprende al menos los siguientes módulos:</p>
<ol>
<li>un módulo de captura de imagen o lectura óptica para escanear la tarjeta sanitaria individual;</li>
<li>un módulo de extracción de datos para identificar los campos relevantes de la tarjeta;</li>
<li>un módulo de verificación de identidad y autorización, vinculado al usuario autenticado;</li>
<li>un módulo de obtención de necesidades terapéuticas o medicamentos asociados;</li>
<li>un módulo de geolocalización para obtener la posición del usuario o una posición de referencia;</li>
<li>un módulo de consulta de inventario para recuperar stock, precio y horario de farmacias;</li>
<li>un módulo de contraste y priorización para ordenar farmacias según disponibilidad y cercanía;</li>
<li>un módulo de generación de acciones para crear reserva, aviso, pedido o derivación;</li>
<li>un módulo de trazabilidad y auditoría.</li>
</ol>
</div>
<h3>6.2 Funcionamiento</h3>
<div class="spaced">
<p>En una realización preferida, el usuario abre la aplicación y solicita el escaneo de su tarjeta sanitaria individual. El terminal captura la imagen o el código de la tarjeta y el módulo de extracción identifica los datos técnicos necesarios para enlazar el contexto sanitario del usuario con un conjunto de medicamentos o referencias de tratamiento.</p>
<p>El sistema valida que la operación se ejecuta sobre un usuario autenticado y autorizado. A continuación, el motor de contraste consulta el inventario de farmacias cercanas, recuperando para cada farmacia al menos su ubicación, horario, stock y, opcionalmente, precio.</p>
<p>El módulo de priorización calcula una orden de resultados en base a criterios técnicos tales como:</p>
<ul>
<li>existencia de stock,</li>
<li>nivel de stock,</li>
<li>distancia geográfica,</li>
<li>horario de apertura,</li>
<li>capacidad de reserva o solicitud de pedido.</li>
</ul>
<p>Cuando existe disponibilidad, el sistema muestra una lista priorizada de farmacias y puede iniciar una reserva o una indicación de recogida. Cuando no existe disponibilidad, el sistema no se limita a informar de la falta de stock, sino que genera una acción técnica adicional, por ejemplo:</p>
<ul>
<li>alerta a la farmacia seleccionada,</li>
<li>solicitud de pedido a distribución o proveedor,</li>
<li>derivación automática a otra farmacia con stock,</li>
<li>registro de una lista de espera o interés de suministro.</li>
</ul>
</div>
<h3>6.3 Tratamiento de datos y seguridad</h3>
<div class="spaced">
<p>La invención prevé que la información derivada del escaneo de la TSI se trate con medidas de minimización de datos, control de acceso, cifrado en tránsito y registro de eventos. El sistema no expone innecesariamente los datos de la tarjeta sanitaria y solo conserva los elementos imprescindibles para la operación descrita.</p>
</div>
<h3>6.4 Integración con la plataforma FarmaFinder</h3>
<div class="spaced">
<p>En una implementación concreta, el sistema puede integrarse con una plataforma que ya disponga de:</p>
<ul>
<li>catálogo de farmacias,</li>
<li>geolocalización,</li>
<li>stock por medicamento,</li>
<li>autenticación de usuario,</li>
<li>notificaciones push,</li>
<li>histórico de acciones y preferencias.</li>
</ul>
<p>La integración permite que el resultado del escaneo de la TSI no se limite a una consulta pasiva, sino que se convierta en un disparador de decisiones técnicas sobre disponibilidad y suministro.</p>
</div>
</div>
<div class="page">
<h2>7. Ejemplo de realización</h2>
<div class="spaced">
<ol>
<li>El usuario inicia sesión en la aplicación.</li>
<li>El usuario escanea su TSI con la cámara del terminal.</li>
<li>El sistema extrae el identificador necesario y lo vincula al perfil autorizado.</li>
<li>El motor terapéutico asocia una necesidad de medicamento o tratamiento.</li>
<li>El sistema consulta farmacias cercanas con stock del medicamento.</li>
<li>Si hay stock, ordena las farmacias por proximidad y disponibilidad.</li>
<li>Si no hay stock, genera una reserva, una alerta o una solicitud de pedido.</li>
</ol>
</div>
<h2>8. Reivindicaciones</h2>
<div class="claims">
<div class="claim">
<p><span class="label">Reivindicación 1.</span> Sistema implementado por ordenador para identificar una necesidad terapéutica a partir del escaneo de una tarjeta sanitaria individual, caracterizado porque comprende medios de captura para obtener datos de la tarjeta sanitaria individual; medios de verificación para asociar dichos datos a un usuario autenticado; medios de obtención de una referencia de medicamento o necesidad terapéutica; medios de consulta de inventario para recuperar stock de farmacias geolocalizadas; medios de contraste para comparar la referencia de medicamento o necesidad terapéutica con el stock disponible; y medios de generación de acciones para producir una reserva, aviso, pedido o derivación cuando el stock disponible sea insuficiente.</p>
</div>
<div class="claim">
<p><span class="label">Reivindicación 2.</span> Sistema según la reivindicación 1, en el que los medios de consulta de inventario ordenan las farmacias según una combinación de stock disponible, proximidad geográfica y horario de apertura.</p>
</div>
<div class="claim">
<p><span class="label">Reivindicación 3.</span> Sistema según cualquiera de las reivindicaciones anteriores, en el que los datos de la tarjeta sanitaria individual son tratados mediante un módulo de minimización y cifrado para limitar su almacenamiento a los campos técnicamente necesarios.</p>
</div>
<div class="claim">
<p><span class="label">Reivindicación 4.</span> Sistema según cualquiera de las reivindicaciones anteriores, en el que la generación de acciones comprende la creación de una reserva, la emisión de una notificación a la farmacia o la solicitud de pedido a un circuito de suministro.</p>
</div>
<div class="claim">
<p><span class="label">Reivindicación 5.</span> Sistema según cualquiera de las reivindicaciones anteriores, en el que la comparación de stock se realiza contra un repositorio de farmacias enlazadas con medicamentos mediante un identificador de registro farmacológico.</p>
</div>
<div class="claim">
<p><span class="label">Reivindicación 6.</span> Sistema según cualquiera de las reivindicaciones anteriores, en el que la geolocalización del usuario se obtiene a partir de coordenadas almacenadas en un perfil autenticado o a partir del dispositivo de lectura.</p>
</div>
<div class="claim">
<p><span class="label">Reivindicación 7.</span> Procedimiento implementado por ordenador para asistir en la localización y suministro de medicamentos, caracterizado porque comprende escanear una tarjeta sanitaria individual; verificar la autorización del usuario; derivar una necesidad terapéutica o referencia de medicamento; consultar stock de farmacias geolocalizadas; comparar la necesidad con el stock disponible; y generar una acción técnica de reserva, aviso, pedido o derivación cuando no exista disponibilidad suficiente.</p>
</div>
<div class="claim">
<p><span class="label">Reivindicación 8.</span> Procedimiento según la reivindicación 7, en el que la comparación y priorización se ejecutan en tiempo real o cuasi tiempo real durante la interacción del usuario con la aplicación.</p>
</div>
<div class="claim">
<p><span class="label">Reivindicación 9.</span> Dispositivo móvil, terminal o sistema de lectura que comprende una cámara o lector óptico y que está configurado para ejecutar el sistema de cualquiera de las reivindicaciones 1 a 6.</p>
</div>
</div>
</div>
<div class="page">
<h2>9. Aplicación industrial</h2>
<div class="spaced">
<p>La invención es susceptible de aplicación industrial en plataformas de asistencia farmacéutica, sistemas de gestión de inventario, servicios de reserva o pedido de medicamentos y terminales de consulta sanitaria.</p>
</div>
<h2>10. Resumen</h2>
<div class="spaced">
<p>La presente invención se refiere a un sistema y procedimiento implementados por ordenador que permiten, a partir del escaneo de una tarjeta sanitaria individual mediante un terminal móvil o dispositivo equivalente, asociar de forma segura un contexto de paciente a una necesidad terapéutica, obtener una referencia de medicamentos relevantes, comparar dicha necesidad con el stock disponible en farmacias geolocalizadas y generar, en caso de falta de disponibilidad, una acción de reserva, aviso, solicitud de pedido o derivación a una farmacia alternativa. El sistema integra captura de datos, verificación de identidad, geolocalización, consulta de disponibilidad, gestión de stock y generación de eventos de suministro en una única cadena técnica de procesamiento.</p>
</div>
<h2>11. Notas para presentación en OEPM</h2>
<h2>11. Anexo de dibujos</h2>
<div class="spaced">
<p>Las figuras indicadas en la presente memoria tienen carácter esquemático y se incorporan a efectos ilustrativos de la arquitectura, del flujo de captura, del contraste de stock y de la generación de acciones. En una presentación definitiva, dichas figuras podrán acompañarse como láminas separadas numeradas de forma consecutiva.</p>
</div>
<h2>12. Firma del solicitante</h2>
<div class="spaced">
<p>En Terrassa, a 22 de junio de 2026.</p>
<p>Fdo.: Antoni Nuñez Romeu</p>
<p>DNI/NIF: 45858029P</p>
</div>
<h2>13. Notas para presentación en OEPM</h2>
<div class="spaced small">
<ul>
<li>La solicitud debe presentarse como una única invención o un único concepto inventivo general.</li>
<li>La descripción, reivindicaciones y dibujos deben ser coherentes entre sí.</li>
<li>La protección en patente debe apoyarse en un efecto técnico concreto y no en una mera regla comercial o método abstracto.</li>
<li>Esta redacción evita formular una reivindicación independiente de "programa de ordenador como tal" y se centra en un sistema y un procedimiento implementados por ordenador con interacción técnica sobre captura, contraste de inventario y generación de acciones.</li>
<li>Antes de presentar la solicitud conviene una búsqueda de anterioridades y una revisión por agente de propiedad industrial.</li>
</ul>
</div>
</div>
</body>
</html>
@@ -0,0 +1,176 @@
# Solicitud de patente
## Titulo de la invencion
Sistema y procedimiento implementados por ordenador para la identificacion de necesidades terapeuticas mediante escaneo de tarjeta sanitaria individual, contraste con stock farmacutico geolocalizado y generacion de acciones de suministro.
## Solicitante
- Nombre / razon social: Antoni Nuñez Romeu
- NIF/CIF: 45858029P
- Domicilio: C/ Font Vella 12, 1, Terrassa, Barcelona, 08221
## Inventor o inventores
- Nombre y apellidos: Antoni Nuñez Romeu
- Direccion de contacto: C/ Font Vella 12, 1, Terrassa, Barcelona, 08221
## Resumen
La invencion se refiere a un sistema y un procedimiento implementados por ordenador que permiten, a partir del escaneo de una tarjeta sanitaria individual mediante un terminal movil o dispositivo equivalente, asociar de forma segura un contexto de paciente a una necesidad terapeutica, obtener una referencia de medicamentos relevantes, comparar dicha necesidad con el stock disponible en farmacias geolocalizadas y generar, en caso de falta de disponibilidad, una accion de reserva, aviso, solicitud de pedido o derivacion a una farmacia alternativa. El sistema integra captura de datos, verificacion de identidad, geolocalizacion, consulta de disponibilidad, gestion de stock y generacion de eventos de suministro en una unica cadena tecnica de procesamiento.
## Campo tecnico de la invencion
La invencion se encuadra en los sistemas informaticos aplicados al sector sanitario y farmaceutico, en particular en soluciones de captura de identificadores sanitarios, comparacion automatizada de disponibilidad de medicamentos y asistencia digital a la dispensacion y suministro.
## Antecedentes de la invencion
Las soluciones actuales de busqueda de medicamentos y farmacias permiten localizar productos y mostrar stock aproximado, pero normalmente operan a partir de una busqueda manual por nombre de medicamento o principio activo. Tambien existen sistemas de geolocalizacion y de gestion de inventario, pero suelen estar desacoplados del contexto sanitario del usuario y no integran, en una unica cadena tecnica, la identificacion mediante tarjeta sanitaria individual, la inferencia de necesidades terapeuticas y la comparacion en tiempo real con disponibilidad farmaceutica local.
Ademas, cuando no existe stock en la farmacia mas proxima, el usuario debe iniciar manualmente nuevos procesos de busqueda o desplazamiento, sin que el sistema proponga de forma automatizada acciones tecnicas de reserva, pedido o derivacion basadas en la disponibilidad real.
## Problema tecnico a resolver
La invencion resuelve el problema tecnico de reducir el tiempo y la friccion entre la identificacion de una necesidad terapeutica y la localizacion de una farmacia que disponga del medicamento adecuado, integrando:
- lectura segura de identificadores sanitarios,
- obtencion de referencias de medicamento asociadas,
- comparacion automatizada con inventarios de farmacias,
- priorizacion por proximidad y disponibilidad,
- generacion de acciones tecnicas de suministro cuando no exista stock inmediato.
## Resumen de la invencion
La invencion propone un sistema y procedimiento implementados por ordenador que operan sobre un terminal movil o dispositivo de lectura. El sistema captura la informacion de una tarjeta sanitaria individual mediante escaneo, valida la informacion mediante un modulo de verificacion, asocia el resultado al perfil del usuario autenticado y obtiene una lista de medicamentos o necesidades terapeuticas relevantes. Posteriormente, un motor de contraste consulta un repositorio de stock de farmacias geolocalizadas y determina la coincidencia entre la necesidad detectada y la disponibilidad real en cada establecimiento. Si existe stock, el sistema prioriza las farmacias adecuadas y presenta una ruta de acceso o reserva. Si no existe stock, el sistema genera automaticamente una accion de aviso, pedido, reserva o derivacion, conservando trazabilidad tecnica del evento. La invencion no se limita a una busqueda manual, sino que integra captura, validacion, georreferenciacion, consulta de stock y respuesta automatica en una unica arquitectura tecnica.
## Breve descripcion de los dibujos
**Figura 1.** Diagrama de bloques general del sistema.
**Figura 2.** Flujo de captura y validacion del escaneo de la TSI.
**Figura 3.** Flujo de contraste entre necesidad terapeutica y stock de farmacias.
**Figura 4.** Flujo de accion cuando no existe stock disponible.
## Descripcion detallada de la invencion
### 1. Arquitectura general
El sistema comprende al menos los siguientes modulos:
1. Un modulo de captura de imagen o lectura optica para escanear la tarjeta sanitaria individual.
2. Un modulo de extraccion de datos para identificar los campos relevantes de la tarjeta.
3. Un modulo de verificacion de identidad y autorizacion, vinculado al usuario autenticado.
4. Un modulo de obtencion de necesidades terapeuticas o medicamentos asociados.
5. Un modulo de geolocalizacion para obtener la posicion del usuario o una posicion de referencia.
6. Un modulo de consulta de inventario para recuperar stock, precio y horario de farmacias.
7. Un modulo de contraste y priorizacion para ordenar farmacias segun disponibilidad y cercania.
8. Un modulo de generacion de acciones para crear reserva, aviso, pedido o derivacion.
9. Un modulo de trazabilidad y auditoria.
### 2. Funcionamiento
En una realizacion preferida, el usuario abre la aplicacion y solicita el escaneo de su tarjeta sanitaria individual. El terminal captura la imagen o el codigo de la tarjeta y el modulo de extraccion identifica los datos tecnicos necesarios para enlazar el contexto sanitario del usuario con un conjunto de medicamentos o referencias de tratamiento.
El sistema valida que la operacion se ejecuta sobre un usuario autenticado y autorizado. A continuacion, el motor de contraste consulta el inventario de farmacias cercanas, recuperando para cada farmacia al menos su ubicacion, horario, stock y, opcionalmente, precio.
El modulo de priorizacion calcula una orden de resultados en base a criterios tecnicos tales como:
- existencia de stock,
- nivel de stock,
- distancia geografica,
- horario de apertura,
- capacidad de reserva o solicitud de pedido.
Cuando existe disponibilidad, el sistema muestra una lista priorizada de farmacias y puede iniciar una reserva o una indicacion de recogida. Cuando no existe disponibilidad, el sistema no se limita a informar de la falta de stock, sino que genera una accion tecnica adicional, por ejemplo:
- alerta a la farmacia seleccionada,
- solicitud de pedido a distribucion o proveedor,
- derivacion automatica a otra farmacia con stock,
- registro de una lista de espera o interes de suministro.
### 3. Tratamiento de datos y seguridad
La invencion prevé que la informacion derivada del escaneo de la TSI se trate con medidas de minimizacion de datos, control de acceso, cifrado en transito y registro de eventos. El sistema no expone innecesariamente los datos de la tarjeta sanitaria y solo conserva los elementos imprescindibles para la operacion descrita.
### 4. Integracion con la plataforma FarmaFinder
En una implementacion concreta, el sistema puede integrarse con una plataforma que ya disponga de:
- catalogo de farmacias,
- geolocalizacion,
- stock por medicamento,
- autenticacion de usuario,
- notificaciones push,
- historico de acciones y preferencias.
La integracion permite que el resultado del escaneo de la TSI no se limite a una consulta pasiva, sino que se convierta en un disparador de decisiones tecnicas sobre disponibilidad y suministro.
## Ejemplo de realizacion
1. El usuario inicia sesion en la aplicacion.
2. El usuario escanea su TSI con la camara del terminal.
3. El sistema extrae el identificador necesario y lo vincula al perfil autorizado.
4. El motor terapeutico asocia una necesidad de medicamento o tratamiento.
5. El sistema consulta farmacias cercanas con stock del medicamento.
6. Si hay stock, ordena las farmacias por proximidad y disponibilidad.
7. Si no hay stock, genera una reserva, una alerta o una solicitud de pedido.
## Reivindicaciones
### Reivindicacion 1
Sistema implementado por ordenador para identificar una necesidad terapeutica a partir del escaneo de una tarjeta sanitaria individual, caracterizado porque comprende:
- medios de captura para obtener datos de la tarjeta sanitaria individual;
- medios de verificacion para asociar dichos datos a un usuario autenticado;
- medios de obtencion de una referencia de medicamento o necesidad terapeutica;
- medios de consulta de inventario para recuperar stock de farmacias geolocalizadas;
- medios de contraste para comparar la referencia de medicamento o necesidad terapeutica con el stock disponible; y
- medios de generacion de acciones para producir una reserva, aviso, pedido o derivacion cuando el stock disponible sea insuficiente.
### Reivindicacion 2
Sistema segun la reivindicacion 1, en el que los medios de consulta de inventario ordenan las farmacias segun una combinacion de stock disponible, proximidad geografica y horario de apertura.
### Reivindicacion 3
Sistema segun cualquiera de las reivindicaciones anteriores, en el que los datos de la tarjeta sanitaria individual son tratados mediante un modulo de minimizacion y cifrado para limitar su almacenamiento a los campos tecnicamente necesarios.
### Reivindicacion 4
Procedimiento implementado por ordenador para asistir en la localizacion y suministro de medicamentos, caracterizado porque comprende:
1. escanear una tarjeta sanitaria individual;
2. verificar la autorizacion del usuario;
3. derivar una necesidad terapeutica o referencia de medicamento;
4. consultar stock de farmacias geolocalizadas;
5. comparar la necesidad con el stock disponible; y
6. generar una accion tecnica de reserva, aviso, pedido o derivacion cuando no exista disponibilidad suficiente.
### Reivindicacion 5
Dispositivo movil, terminal o sistema de lectura que comprende una camara o lector optico y que esta configurado para ejecutar el sistema de cualquiera de las reivindicaciones anteriores.
## Aplicacion industrial
La invencion es susceptible de aplicacion industrial en plataformas de asistencia farmaceutica, sistemas de gestion de inventario, servicios de reserva o pedido de medicamentos y terminales de consulta sanitaria.
## Notas para presentacion en OEPM
- La solicitud debe presentarse como una unica invencion o un unico concepto inventivo general.
- La descripcion, reivindicaciones y dibujos deben ser coherentes entre si.
- La proteccion en patente debe apoyarse en un efecto tecnico concreto y no en una mera regla comercial o metodo abstracto.
- Esta redaccion evita formular una reivindicacion independiente de "programa de ordenador como tal" y se centra en un sistema y un procedimiento implementados por ordenador con interaccion tecnica sobre captura, contraste de inventario y generacion de acciones.
- Las figuras deben presentarse como laminas separadas si se aportan al expediente.
- Conviene incluir firma del solicitante y fecha de presentacion en el juego documental final.
- Antes de presentar la solicitud conviene una busqueda de anterioridades y una revision por agente de propiedad industrial.
## Firma
En Terrassa, a 22 de junio de 2026.
Fdo.: Antoni Nuñez Romeu
DNI/NIF: 45858029P
@@ -0,0 +1,290 @@
%PDF-1.4
1 0 obj
<< /Type /Font /Subtype /Type1 /BaseFont /Times-Roman /Encoding /WinAnsiEncoding >>
endobj
2 0 obj
<< /Type /Font /Subtype /Type1 /BaseFont /Times-Bold /Encoding /WinAnsiEncoding >>
endobj
3 0 obj
<< /Type /Font /Subtype /Type1 /BaseFont /Times-Italic /Encoding /WinAnsiEncoding >>
endobj
4 0 obj
<< /Length 1104 >>
stream
BT /F2 18 Tf 141 783.89 Td (SOLICITUD DE PATENTE) Tj ET
BT /F1 12 Tf 111 754.85 Td (Oficina Española de Patentes y Marcas \(OEPM\)) Tj ET
BT /F2 12 Tf 176 725.49 Td (Título de la invención:) Tj ET
BT /F1 12 Tf 66 710.13 Td (Sistema y procedimiento implementados por ordenador para la identificación de) Tj ET
BT /F1 12 Tf 66 694.77 Td (necesidades terapéuticas mediante escaneo de tarjeta sanitaria individual,) Tj ET
BT /F1 12 Tf 66 679.41 Td (contraste con stock farmacéutico geolocalizado y generación de acciones de) Tj ET
BT /F1 12 Tf 66 664.05 Td (suministro.) Tj ET
0.8 w 56 580.6899999999999 483.28 68 re S
BT /F1 11 Tf 66 636.6899999999999 Td (Solicitante: Antoni Nuñez Romeu) Tj ET
BT /F1 11 Tf 66 622.6099999999999 Td (NIF/CIF: 45858029P) Tj ET
BT /F1 11 Tf 66 608.5299999999999 Td (Domicilio: C/ Font Vella 12, 1, Terrassa, Barcelona, 08221) Tj ET
BT /F1 11 Tf 66 594.4499999999998 Td (Inventor o inventores: Antoni Nuñez Romeu) Tj ET
BT /F3 10 Tf 124 568.3699999999998 Td (Memoria descriptiva, reivindicaciones, resumen y referencia a dibujos) Tj ET
BT /F1 9 Tf 495.28 24 Td (Pagina 1) Tj ET
endstream
endobj
5 0 obj
<< /Length 4950 >>
stream
BT /F2 13 Tf 56 781.89 Td (1. Campo técnico de la invención) Tj ET
0.2 w 56 761.25 m 539.28 761.25 l S
BT /F1 11.5 Tf 56 751.25 Td (La invención se encuadra en los sistemas informáticos aplicados al sector sanitario) Tj ET
BT /F1 11.5 Tf 56 736.53 Td (y farmacéutico, en particular en soluciones de captura de identificadores) Tj ET
BT /F1 11.5 Tf 56 721.81 Td (sanitarios, comparación automatizada de disponibilidad de medicamentos y asistencia) Tj ET
BT /F1 11.5 Tf 56 707.0899999999999 Td (digital a la dispensación y suministro.) Tj ET
BT /F2 13 Tf 56 688.3699999999999 Td (2. Antecedentes de la invención) Tj ET
0.2 w 56 667.7299999999999 m 539.28 667.7299999999999 l S
BT /F1 11.5 Tf 56 657.7299999999999 Td (Las soluciones actuales de búsqueda de medicamentos y farmacias permiten localizar) Tj ET
BT /F1 11.5 Tf 56 643.0099999999999 Td (productos y mostrar stock aproximado, pero normalmente operan a partir de una) Tj ET
BT /F1 11.5 Tf 56 628.2899999999998 Td (búsqueda manual por nombre de medicamento o principio activo. También existen) Tj ET
BT /F1 11.5 Tf 56 613.5699999999998 Td (sistemas de geolocalización y de gestión de inventario, pero suelen estar) Tj ET
BT /F1 11.5 Tf 56 598.8499999999998 Td (desacoplados del contexto sanitario del usuario y no integran, en una única cadena) Tj ET
BT /F1 11.5 Tf 56 584.1299999999998 Td (técnica, la identificación mediante tarjeta sanitaria individual, la inferencia de) Tj ET
BT /F1 11.5 Tf 56 569.4099999999997 Td (necesidades terapéuticas y la comparación en tiempo real con disponibilidad) Tj ET
BT /F1 11.5 Tf 56 554.6899999999997 Td (farmacéutica local.) Tj ET
BT /F1 11.5 Tf 56 537.9699999999997 Td (Además, cuando no existe stock en la farmacia más próxima, el usuario debe iniciar) Tj ET
BT /F1 11.5 Tf 56 523.2499999999997 Td (manualmente nuevos procesos de búsqueda o desplazamiento, sin que el sistema) Tj ET
BT /F1 11.5 Tf 56 508.52999999999963 Td (proponga de forma automatizada acciones técnicas de reserva, pedido o derivación) Tj ET
BT /F1 11.5 Tf 56 493.8099999999996 Td (basadas en la disponibilidad real.) Tj ET
BT /F2 13 Tf 56 475.0899999999996 Td (3. Problema técnico a resolver) Tj ET
0.2 w 56 454.4499999999996 m 539.28 454.4499999999996 l S
BT /F1 11.5 Tf 56 444.4499999999996 Td (La invención resuelve el problema técnico de reducir el tiempo y la fricción entre) Tj ET
BT /F1 11.5 Tf 56 429.72999999999956 Td (la identificación de una necesidad terapéutica y la localización de una farmacia que) Tj ET
BT /F1 11.5 Tf 56 415.00999999999954 Td (disponga del medicamento adecuado, integrando:) Tj ET
BT /F1 11.2 Tf 64 398.2899999999995 Td (" lectura segura de identificadores sanitarios,) Tj ET
BT /F1 11.2 Tf 64 383.9539999999995 Td (" obtención de referencias de medicamento asociadas,) Tj ET
BT /F1 11.2 Tf 64 369.6179999999995 Td (" comparación automatizada con inventarios de farmacias,) Tj ET
BT /F1 11.2 Tf 64 355.28199999999947 Td (" priorización por proximidad y disponibilidad,) Tj ET
BT /F1 11.2 Tf 64 340.94599999999946 Td (" generación de acciones técnicas de suministro cuando no exista stock inmediato.) Tj ET
BT /F2 13 Tf 56 324.60999999999945 Td (4. Resumen de la invención) Tj ET
0.2 w 56 303.96999999999946 m 539.28 303.96999999999946 l S
BT /F1 11.5 Tf 56 293.96999999999946 Td (La invención propone un sistema y procedimiento implementados por ordenador que) Tj ET
BT /F1 11.5 Tf 56 279.24999999999943 Td (operan sobre un terminal móvil o dispositivo de lectura. El sistema captura la) Tj ET
BT /F1 11.5 Tf 56 264.5299999999994 Td (información de una tarjeta sanitaria individual mediante escaneo, valida la) Tj ET
BT /F1 11.5 Tf 56 249.8099999999994 Td (información mediante un módulo de verificación, asocia el resultado al perfil del) Tj ET
BT /F1 11.5 Tf 56 235.0899999999994 Td (usuario autenticado y obtiene una lista de medicamentos o necesidades terapéuticas) Tj ET
BT /F1 11.5 Tf 56 220.3699999999994 Td (relevantes. Posteriormente, un motor de contraste consulta un repositorio de stock) Tj ET
BT /F1 11.5 Tf 56 205.6499999999994 Td (de farmacias geolocalizadas y determina la coincidencia entre la necesidad detectada) Tj ET
BT /F1 11.5 Tf 56 190.9299999999994 Td (y la disponibilidad real en cada establecimiento. Si existe stock, el sistema) Tj ET
BT /F1 11.5 Tf 56 176.2099999999994 Td (prioriza las farmacias adecuadas y presenta una ruta de acceso o reserva. Si no) Tj ET
BT /F1 11.5 Tf 56 161.4899999999994 Td (existe stock, el sistema genera automáticamente una acción de aviso, pedido, reserva) Tj ET
BT /F1 11.5 Tf 56 146.7699999999994 Td (o derivación, conservando trazabilidad técnica del evento. La invención no se limita) Tj ET
BT /F1 11.5 Tf 56 132.04999999999941 Td (a una búsqueda manual, sino que integra captura, validación, georreferenciación,) Tj ET
BT /F1 11.5 Tf 56 117.32999999999942 Td (consulta de stock y respuesta automática en una única arquitectura técnica.) Tj ET
BT /F1 9 Tf 495.28 24 Td (Pagina 2) Tj ET
endstream
endobj
6 0 obj
<< /Length 3436 >>
stream
BT /F2 13 Tf 56 781.89 Td (5. Breve descripción de los dibujos) Tj ET
0.2 w 56 761.25 m 539.28 761.25 l S
BT /F1 11.5 Tf 56 751.25 Td (Figura 1. Diagrama de bloques general del sistema.) Tj ET
BT /F1 11.5 Tf 56 734.53 Td (Figura 2. Flujo de captura y validación del escaneo de la TSI.) Tj ET
BT /F1 11.5 Tf 56 717.81 Td (Figura 3. Flujo de contraste entre necesidad terapéutica y stock de farmacias.) Tj ET
BT /F1 11.5 Tf 56 701.0899999999999 Td (Figura 4. Flujo de acción cuando no existe stock disponible.) Tj ET
BT /F2 13 Tf 56 682.3699999999999 Td (6. Descripción detallada de la invención) Tj ET
0.2 w 56 661.7299999999999 m 539.28 661.7299999999999 l S
BT /F2 11.5 Tf 56 651.7299999999999 Td (6.1 Arquitectura general) Tj ET
BT /F1 11.5 Tf 56 637.0099999999999 Td (El sistema comprende al menos los siguientes módulos:) Tj ET
BT /F1 11.2 Tf 64 620.2899999999998 Td (1. un módulo de captura de imagen o lectura óptica para escanear la tarjeta sanitaria) Tj ET
BT /F1 11.2 Tf 64 605.9539999999998 Td ( individual;) Tj ET
BT /F1 11.2 Tf 64 591.6179999999998 Td (2. un módulo de extracción de datos para identificar los campos relevantes de la tarjeta;) Tj ET
BT /F1 11.2 Tf 64 577.2819999999998 Td (3. un módulo de verificación de identidad y autorización, vinculado al usuario) Tj ET
BT /F1 11.2 Tf 64 562.9459999999998 Td ( autenticado;) Tj ET
BT /F1 11.2 Tf 64 548.6099999999998 Td (4. un módulo de obtención de necesidades terapéuticas o medicamentos asociados;) Tj ET
BT /F1 11.2 Tf 64 534.2739999999998 Td (5. un módulo de geolocalización para obtener la posición del usuario o una posición de) Tj ET
BT /F1 11.2 Tf 64 519.9379999999998 Td ( referencia;) Tj ET
BT /F1 11.2 Tf 64 505.60199999999975 Td (6. un módulo de consulta de inventario para recuperar stock, precio y horario de) Tj ET
BT /F1 11.2 Tf 64 491.26599999999974 Td ( farmacias;) Tj ET
BT /F1 11.2 Tf 64 476.9299999999997 Td (7. un módulo de contraste y priorización para ordenar farmacias según disponibilidad y) Tj ET
BT /F1 11.2 Tf 64 462.5939999999997 Td ( cercanía;) Tj ET
BT /F1 11.2 Tf 64 448.2579999999997 Td (8. un módulo de generación de acciones para crear reserva, aviso, pedido o derivación;) Tj ET
BT /F1 11.2 Tf 64 433.9219999999997 Td (9. un módulo de trazabilidad y auditoría.) Tj ET
BT /F2 11.5 Tf 56 419.5859999999997 Td (6.2 Funcionamiento) Tj ET
BT /F1 11.5 Tf 56 404.86599999999964 Td (En una realización preferida, el usuario abre la aplicación y solicita el escaneo de) Tj ET
BT /F1 11.5 Tf 56 390.1459999999996 Td (su tarjeta sanitaria individual. El terminal captura la imagen o el código de la) Tj ET
BT /F1 11.5 Tf 56 375.4259999999996 Td (tarjeta y el módulo de extracción identifica los datos técnicos necesarios para) Tj ET
BT /F1 11.5 Tf 56 360.70599999999956 Td (enlazar el contexto sanitario del usuario con un conjunto de medicamentos o) Tj ET
BT /F1 11.5 Tf 56 345.98599999999954 Td (referencias de tratamiento.) Tj ET
BT /F1 11.5 Tf 56 329.2659999999995 Td (El sistema valida que la operación se ejecuta sobre un usuario autenticado y) Tj ET
BT /F1 11.5 Tf 56 314.5459999999995 Td (autorizado. A continuación, el motor de contraste consulta el inventario de) Tj ET
BT /F1 11.5 Tf 56 299.82599999999945 Td (farmacias cercanas, recuperando para cada farmacia al menos su ubicación, horario,) Tj ET
BT /F1 11.5 Tf 56 285.1059999999994 Td (stock y, opcionalmente, precio.) Tj ET
BT /F1 9 Tf 495.28 24 Td (Pagina 3) Tj ET
endstream
endobj
7 0 obj
<< /Length 3271 >>
stream
BT /F2 11.5 Tf 56 783.89 Td (6.2 Funcionamiento \(continuación\)) Tj ET
BT /F1 11.5 Tf 56 769.17 Td (El módulo de priorización calcula una orden de resultados en base a criterios) Tj ET
BT /F1 11.5 Tf 56 754.4499999999999 Td (técnicos tales como existencia de stock, nivel de stock, distancia geográfica,) Tj ET
BT /F1 11.5 Tf 56 739.7299999999999 Td (horario de apertura y capacidad de reserva o solicitud de pedido.) Tj ET
BT /F1 11.5 Tf 56 723.0099999999999 Td (Cuando existe disponibilidad, el sistema muestra una lista priorizada de farmacias y) Tj ET
BT /F1 11.5 Tf 56 708.2899999999998 Td (puede iniciar una reserva o una indicación de recogida. Cuando no existe) Tj ET
BT /F1 11.5 Tf 56 693.5699999999998 Td (disponibilidad, el sistema no se limita a informar de la falta de stock, sino que) Tj ET
BT /F1 11.5 Tf 56 678.8499999999998 Td (genera una acción técnica adicional, por ejemplo alerta a la farmacia seleccionada,) Tj ET
BT /F1 11.5 Tf 56 664.1299999999998 Td (solicitud de pedido a distribución o proveedor, derivación automática a otra) Tj ET
BT /F1 11.5 Tf 56 649.4099999999997 Td (farmacia con stock o registro de una lista de espera o interés de suministro.) Tj ET
BT /F2 11.5 Tf 56 632.6899999999997 Td (6.3 Tratamiento de datos y seguridad) Tj ET
BT /F1 11.5 Tf 56 617.9699999999997 Td (La invención prevé que la información derivada del escaneo de la TSI se trate con) Tj ET
BT /F1 11.5 Tf 56 603.2499999999997 Td (medidas de minimización de datos, control de acceso, cifrado en tránsito y registro) Tj ET
BT /F1 11.5 Tf 56 588.5299999999996 Td (de eventos. El sistema no expone innecesariamente los datos de la tarjeta sanitaria) Tj ET
BT /F1 11.5 Tf 56 573.8099999999996 Td (y solo conserva los elementos imprescindibles para la operación descrita.) Tj ET
BT /F2 11.5 Tf 56 557.0899999999996 Td (6.4 Integración con la plataforma FarmaFinder) Tj ET
BT /F1 11.5 Tf 56 542.3699999999995 Td (En una implementación concreta, el sistema puede integrarse con una plataforma que) Tj ET
BT /F1 11.5 Tf 56 527.6499999999995 Td (ya disponga de catálogo de farmacias, geolocalización, stock por medicamento,) Tj ET
BT /F1 11.5 Tf 56 512.9299999999995 Td (autenticación de usuario, notificaciones push e histórico de acciones y) Tj ET
BT /F1 11.5 Tf 56 498.20999999999947 Td (preferencias.) Tj ET
BT /F1 11.5 Tf 56 481.48999999999944 Td (La integración permite que el resultado del escaneo de la TSI no se limite a una) Tj ET
BT /F1 11.5 Tf 56 466.7699999999994 Td (consulta pasiva, sino que se convierta en un disparador de decisiones técnicas sobre) Tj ET
BT /F1 11.5 Tf 56 452.0499999999994 Td (disponibilidad y suministro.) Tj ET
BT /F2 13 Tf 56 433.32999999999936 Td (7. Ejemplo de realización) Tj ET
0.2 w 56 412.6899999999994 m 539.28 412.6899999999994 l S
BT /F1 11.2 Tf 64 402.6899999999994 Td (1. El usuario inicia sesión en la aplicación.) Tj ET
BT /F1 11.2 Tf 64 388.35399999999936 Td (2. El usuario escanea su TSI con la cámara del terminal.) Tj ET
BT /F1 11.2 Tf 64 374.01799999999935 Td (3. El sistema extrae el identificador necesario y lo vincula al perfil autorizado.) Tj ET
BT /F1 11.2 Tf 64 359.68199999999933 Td (4. El motor terapéutico asocia una necesidad de medicamento o tratamiento.) Tj ET
BT /F1 9 Tf 495.28 24 Td (Pagina 4) Tj ET
endstream
endobj
8 0 obj
<< /Length 3689 >>
stream
BT /F2 13 Tf 56 781.89 Td (7. Ejemplo de realización \(continuación\)) Tj ET
0.2 w 56 761.25 m 539.28 761.25 l S
BT /F1 11.2 Tf 64 751.25 Td (1. El sistema consulta farmacias cercanas con stock del medicamento.) Tj ET
BT /F1 11.2 Tf 64 736.914 Td (2. Si hay stock, ordena las farmacias por proximidad y disponibilidad.) Tj ET
BT /F1 11.2 Tf 64 722.578 Td (3. Si no hay stock, genera una reserva, una alerta o una solicitud de pedido.) Tj ET
BT /F2 13 Tf 56 706.242 Td (8. Reivindicaciones) Tj ET
0.2 w 56 685.602 m 539.28 685.602 l S
BT /F1 11.2 Tf 56 675.602 Td (Reivindicación 1. Sistema implementado por ordenador para identificar una necesidad) Tj ET
BT /F1 11.2 Tf 56 661.266 Td (terapéutica a partir del escaneo de una tarjeta sanitaria individual, caracterizado) Tj ET
BT /F1 11.2 Tf 56 646.93 Td (porque comprende medios de captura para obtener datos de la tarjeta sanitaria) Tj ET
BT /F1 11.2 Tf 56 632.5939999999999 Td (individual; medios de verificación para asociar dichos datos a un usuario autenticado;) Tj ET
BT /F1 11.2 Tf 56 618.2579999999999 Td (medios de obtención de una referencia de medicamento o necesidad terapéutica; medios) Tj ET
BT /F1 11.2 Tf 56 603.9219999999999 Td (de consulta de inventario para recuperar stock de farmacias geolocalizadas; medios de) Tj ET
BT /F1 11.2 Tf 56 589.5859999999999 Td (contraste para comparar la referencia de medicamento o necesidad terapéutica con el) Tj ET
BT /F1 11.2 Tf 56 575.2499999999999 Td (stock disponible; y medios de generación de acciones para producir una reserva, aviso,) Tj ET
BT /F1 11.2 Tf 56 560.9139999999999 Td (pedido o derivación cuando el stock disponible sea insuficiente.) Tj ET
BT /F1 11.2 Tf 56 544.5779999999999 Td (Reivindicación 2. Sistema según la reivindicación 1, en el que los medios de consulta) Tj ET
BT /F1 11.2 Tf 56 530.2419999999998 Td (de inventario ordenan las farmacias según una combinación de stock disponible,) Tj ET
BT /F1 11.2 Tf 56 515.9059999999998 Td (proximidad geográfica y horario de apertura.) Tj ET
BT /F1 11.2 Tf 56 499.5699999999998 Td (Reivindicación 3. Sistema según cualquiera de las reivindicaciones anteriores, en el) Tj ET
BT /F1 11.2 Tf 56 485.2339999999998 Td (que los datos de la tarjeta sanitaria individual son tratados mediante un módulo de) Tj ET
BT /F1 11.2 Tf 56 470.8979999999998 Td (minimización y cifrado para limitar su almacenamiento a los campos técnicamente) Tj ET
BT /F1 11.2 Tf 56 456.5619999999998 Td (necesarios.) Tj ET
BT /F1 11.2 Tf 56 440.2259999999998 Td (Reivindicación 4. Procedimiento implementado por ordenador para asistir en la) Tj ET
BT /F1 11.2 Tf 56 425.88999999999976 Td (localización y suministro de medicamentos, caracterizado porque comprende escanear una) Tj ET
BT /F1 11.2 Tf 56 411.55399999999975 Td (tarjeta sanitaria individual; verificar la autorización del usuario; derivar una) Tj ET
BT /F1 11.2 Tf 56 397.21799999999973 Td (necesidad terapéutica o referencia de medicamento; consultar stock de farmacias) Tj ET
BT /F1 11.2 Tf 56 382.8819999999997 Td (geolocalizadas; comparar la necesidad con el stock disponible; y generar una acción) Tj ET
BT /F1 11.2 Tf 56 368.5459999999997 Td (técnica de reserva, aviso, pedido o derivación cuando no exista disponibilidad) Tj ET
BT /F1 11.2 Tf 56 354.2099999999997 Td (suficiente.) Tj ET
BT /F1 11.2 Tf 56 337.8739999999997 Td (Reivindicación 5. Dispositivo móvil, terminal o sistema de lectura que comprende una) Tj ET
BT /F1 11.2 Tf 56 323.53799999999967 Td (cámara o lector óptico y que está configurado para ejecutar el sistema de cualquiera) Tj ET
BT /F1 11.2 Tf 56 309.20199999999966 Td (de las reivindicaciones anteriores.) Tj ET
BT /F1 9 Tf 495.28 24 Td (Pagina 5) Tj ET
endstream
endobj
9 0 obj
<< /Length 4216 >>
stream
BT /F2 13 Tf 56 781.89 Td (9. Aplicación industrial) Tj ET
0.2 w 56 761.25 m 539.28 761.25 l S
BT /F1 11.5 Tf 56 751.25 Td (La invención es susceptible de aplicación industrial en plataformas de asistencia) Tj ET
BT /F1 11.5 Tf 56 736.53 Td (farmacéutica, sistemas de gestión de inventario, servicios de reserva o pedido de) Tj ET
BT /F1 11.5 Tf 56 721.81 Td (medicamentos y terminales de consulta sanitaria.) Tj ET
BT /F2 13 Tf 56 703.0899999999999 Td (10. Resumen) Tj ET
0.2 w 56 682.4499999999999 m 539.28 682.4499999999999 l S
BT /F1 11.5 Tf 56 672.4499999999999 Td (La presente invención se refiere a un sistema y procedimiento implementados por) Tj ET
BT /F1 11.5 Tf 56 657.7299999999999 Td (ordenador que permiten, a partir del escaneo de una tarjeta sanitaria individual) Tj ET
BT /F1 11.5 Tf 56 643.0099999999999 Td (mediante un terminal móvil o dispositivo equivalente, asociar de forma segura un) Tj ET
BT /F1 11.5 Tf 56 628.2899999999998 Td (contexto de paciente a una necesidad terapéutica, obtener una referencia de) Tj ET
BT /F1 11.5 Tf 56 613.5699999999998 Td (medicamentos relevantes, comparar dicha necesidad con el stock disponible en) Tj ET
BT /F1 11.5 Tf 56 598.8499999999998 Td (farmacias geolocalizadas y generar, en caso de falta de disponibilidad, una acción) Tj ET
BT /F1 11.5 Tf 56 584.1299999999998 Td (de reserva, aviso, solicitud de pedido o derivación a una farmacia alternativa. El) Tj ET
BT /F1 11.5 Tf 56 569.4099999999997 Td (sistema integra captura de datos, verificación de identidad, geolocalización,) Tj ET
BT /F1 11.5 Tf 56 554.6899999999997 Td (consulta de disponibilidad, gestión de stock y generación de eventos de suministro) Tj ET
BT /F1 11.5 Tf 56 539.9699999999997 Td (en una única cadena técnica de procesamiento.) Tj ET
BT /F2 13 Tf 56 521.2499999999997 Td (11. Anexo de dibujos) Tj ET
0.2 w 56 500.6099999999997 m 539.28 500.6099999999997 l S
BT /F1 11.5 Tf 56 490.6099999999997 Td (Las figuras indicadas en la presente memoria tienen carácter esquemático y se) Tj ET
BT /F1 11.5 Tf 56 475.88999999999965 Td (incorporan a efectos ilustrativos de la arquitectura, del flujo de captura, del) Tj ET
BT /F1 11.5 Tf 56 461.1699999999996 Td (contraste de stock y de la generación de acciones. En una presentación definitiva,) Tj ET
BT /F1 11.5 Tf 56 446.4499999999996 Td (dichas figuras podrán acompañarse como láminas separadas numeradas de forma) Tj ET
BT /F1 11.5 Tf 56 431.72999999999956 Td (consecutiva.) Tj ET
BT /F2 13 Tf 56 413.00999999999954 Td (12. Firma del solicitante) Tj ET
0.2 w 56 392.36999999999955 m 539.28 392.36999999999955 l S
BT /F1 11.5 Tf 56 382.36999999999955 Td (En Terrassa, a 22 de junio de 2026.) Tj ET
BT /F1 11.5 Tf 56 365.6499999999995 Td (Fdo.: Antoni Nuñez Romeu) Tj ET
BT /F1 11.5 Tf 56 348.9299999999995 Td (DNI/NIF: 45858029P) Tj ET
BT /F2 13 Tf 56 330.20999999999947 Td (13. Notas para presentación en OEPM) Tj ET
0.2 w 56 309.5699999999995 m 539.28 309.5699999999995 l S
BT /F1 11.2 Tf 64 299.5699999999995 Td (" La solicitud debe presentarse como una única invención o un único concepto inventivo) Tj ET
BT /F1 11.2 Tf 64 285.23399999999947 Td ( general.) Tj ET
BT /F1 11.2 Tf 64 270.89799999999946 Td (" La descripción, reivindicaciones y dibujos deben ser coherentes entre sí.) Tj ET
BT /F1 11.2 Tf 64 256.56199999999944 Td (" La protección en patente debe apoyarse en un efecto técnico concreto y no en una mera) Tj ET
BT /F1 11.2 Tf 64 242.22599999999943 Td ( regla comercial o método abstracto.) Tj ET
BT /F1 11.2 Tf 64 227.88999999999942 Td (" Esta redacción evita formular una reivindicación independiente de "programa de) Tj ET
BT /F1 11.2 Tf 64 213.5539999999994 Td ( ordenador como tal" y se centra en un sistema y un procedimiento implementados por) Tj ET
BT /F1 11.2 Tf 64 199.2179999999994 Td ( ordenador con interacción técnica sobre captura, contraste de inventario y generación) Tj ET
BT /F1 11.2 Tf 64 184.88199999999938 Td ( de acciones.) Tj ET
BT /F1 11.2 Tf 64 170.54599999999937 Td (" Antes de presentar la solicitud conviene una búsqueda de anterioridades y una revisión) Tj ET
BT /F1 11.2 Tf 64 156.20999999999935 Td ( por agente de propiedad industrial.) Tj ET
BT /F1 9 Tf 495.28 24 Td (Pagina 6) Tj ET
endstream
endobj
10 0 obj
<< /Type /Pages /Kids [11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R] /Count 6 >>
endobj
11 0 obj
<< /Type /Page /Parent 10 0 R /MediaBox [0 0 595.28 841.89] /Resources << /Font << /F1 1 0 R /F2 2 0 R /F3 3 0 R >> >> /Contents 4 0 R >>
endobj
12 0 obj
<< /Type /Page /Parent 10 0 R /MediaBox [0 0 595.28 841.89] /Resources << /Font << /F1 1 0 R /F2 2 0 R /F3 3 0 R >> >> /Contents 5 0 R >>
endobj
13 0 obj
<< /Type /Page /Parent 10 0 R /MediaBox [0 0 595.28 841.89] /Resources << /Font << /F1 1 0 R /F2 2 0 R /F3 3 0 R >> >> /Contents 6 0 R >>
endobj
14 0 obj
<< /Type /Page /Parent 10 0 R /MediaBox [0 0 595.28 841.89] /Resources << /Font << /F1 1 0 R /F2 2 0 R /F3 3 0 R >> >> /Contents 7 0 R >>
endobj
15 0 obj
<< /Type /Page /Parent 10 0 R /MediaBox [0 0 595.28 841.89] /Resources << /Font << /F1 1 0 R /F2 2 0 R /F3 3 0 R >> >> /Contents 8 0 R >>
endobj
16 0 obj
<< /Type /Page /Parent 10 0 R /MediaBox [0 0 595.28 841.89] /Resources << /Font << /F1 1 0 R /F2 2 0 R /F3 3 0 R >> >> /Contents 9 0 R >>
endobj
17 0 obj
<< /Type /Catalog /Pages 10 0 R >>
endobj
xref
0 18
0000000000 65535 f
0000000009 00000 n
0000000108 00000 n
0000000206 00000 n
0000000306 00000 n
0000001462 00000 n
0000006464 00000 n
0000009952 00000 n
0000013275 00000 n
0000017016 00000 n
0000021284 00000 n
0000021378 00000 n
0000021532 00000 n
0000021686 00000 n
0000021840 00000 n
0000021994 00000 n
0000022148 00000 n
0000022302 00000 n
trailer << /Size 18 /Root 17 0 R >>
startxref
22353
%%EOF