...
Requiere Python 3.*
Instalar dependencias
Code Block pip3 install Flask
Crear un archivo main.py
Code Block language py from flask import Flask, request app = Flask(__name__) @app.route('/subscriptions', methods=['POST', 'PUT']) def simple_subscription(): print(request.method) print(request.headers) if request.is_json: print(request.json) return 'Done Simple Subscription' @app.route('/subscriptions/Patient/<string:id>', methods=['POST', 'PUT']) def patient(id): print("id: %s", id) print(request.method) print(request.headers) if request.is_json: print(request.json) return 'Done advanced subscription'
Ejecutar servicio
Code Block language bash export FLASK_ENV=development export FLASK_APP=main.py flask run --host=0.0.0.0
...
Se creará una subscripción para cualquier creación o modificación de Pacientes varones.
Crear un recurso Subscription para notificación sin contenido
Code Block language json { "resourceType": "Subscription", "status": "active", "criteria": "Patient?gender=male", "channel": { "type": "rest-hook", "endpoint": "http://localhost:5000/subscriptions", "header": [ "Authorization: Bearer secret-token-abc-123" ] } }
Crear un paciente para generar una notificación
Code Block language json { "resourceType": "Patient", "identifier": [ { "use": "usual", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0203", "code": "MR" } ] }, "system": "urn:oid:1.2.36.146.595.217.0.1", "value": "12345", "period": { "start": "2001-05-16" }, "assigner": { "display": "Acme Healthcare" } } ], "active": true, "name": [ { "use": "official", "family": "Chalmers", "given": [ "Peter", "James" ] } ], "telecom": [ { "system": "phone", "value": "(03) 5555 6473", "use": "work", "rank": 1 }, { "system": "phone", "value": "(03) 3410 5613", "use": "mobile", "rank": 2 } ], "gender": "male", "birthDate": "1974-12-28" }
Debería llegar al servicio lo siguiente
Code Block language text POST Authorization: Bearer secret-token-abc-123 User-Agent: HAPI-FHIR/5.3.0 (FHIR Client; FHIR 4.0.1/R4; apache) Accept-Charset: utf-8 Accept-Encoding: gzip If-None-Exist: http://localhost:5000/subscriptions,http://localhost:5000/subscriptions? Accept: application/fhir+xml;q=1.0, application/fhir+json;q=1.0, application/xml+fhir;q=0.9, application/json+fhir;q=0.9 Content-Length: 0 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Host: localhost:5000 Connection: Keep-Alive
Peticion POST sin contenido a http://localhost:5000/subscriptions
...
Peticion PUT con contenido a http://localhost:5000/subscriptions/Patient/<id>
Servicio para Eventos del tipo WebSocket
...