ЕСОЗ - публічна документація
Event Manager Deprecated_CSI January-April
Event Manager is used to collect different events (like ATTRIBUTE_CHANGED, OBJECT_ADDED etc) from different sources and store them in one place.
Overview
- The monitoring of changed statuses will be implemented to the code
- Event manager reflects statuses of different objects
- In case status was changed the information is sent to EventDB to be stored
- This method does not guarantee the fact of storing data in EventDB
- At the moment only statuses are monitored. Other events can be added in future, but they are not in a scope today.
- This manager is used by MIS.
- Context is not used to obtain data from DB.
- Only changed statuses should be stored to EventDB, not new.\
- events are transferred to event manager via Kafka
StatusChangeEvent
Statuses to collect
employee request status changed
employee status changed
declaration status changed
medication request status changed
medication dispense status changed
contract_request status change
contract status change
person status change
preperson status change
care plan status change
activity status change
approval status change
Status models links
- Capitation statuses
- Reimbursement statuses
- Contract request and Contract statuses
- Preperson merge request status model
Save data to Event DB
N | Step | Description | Owner |
---|---|---|---|
1 | Status was changed | Status was changed on the one of events that are monitores | system |
2 | Collect Data | After changing status System collect all necessary data in the required format | system |
3 | Save Data to EDB | Collected data are saved to EventDB. Save Data directly to EventDB | system |
Employee status changed
Save also employee_id value to EventDB
{ "id": "df9f70ee-4b12-4740-b0f5-bb5aea116863", "event_type": "StatusChangeEvent", "entity_type": "EmployeeRequest", "entity_id": "df9f70ee-4b12-4740-b0f5-bb5aea116863", "properties": { "status": { "new_value": "APPROVED" }, "employee_id": { "new_value": "e1453f4c-1077-4e85-8c98-c13ffca0063e" } }, "event_time": "2017-04-20T19:14:13Z", "changed_by": "df9f70ee-4b12-4740-b0f5-bb5aea116863" }
Data format | |
---|---|
id | PK |
event_type | string, the name of event (ex. StatusChangeEvent) |
entity_type | string, the name on entity that was changed (ex. Medication_request) |
entity_id | uuid, id of changed object |
properties | json, consists of datas that describe changed element (status: new_value) |
event_time | datetime, date and time of event |
changed_by | uuid, id of a person |
Obtain data from EventDB
Get list
GET https://dev.ehealth.world/api/events
Input parameters (optional)
- date
- event_type
- entity_type
- attribute_name
- attribute_name & new_value
- page
- page_size
Logic WS
- Verify the validity of access token
- Check user scopes in order to perform this action (scope = 'event:read')
- return 403 in case invalid scope(s)
Validate EventType
Each event type can be filtered by scopes. At the moment we have only one event - StatusChangeEvent
- Check user scopes in order to perform this action (scope = 'event:read')
- return 403 in case invalid scope(s)
Get by ID
GET https://dev.ehealth.world/api/events/ID
Input parameters
- id
Logic WS
- Verify the validity of access token
- Check user scopes in order to perform this action (scope = 'event:read')
- return 403 in case invalid scope(s)
Event termination
N | Step | Description | Owner |
---|---|---|---|
1 | Once in 24H timer starts | system | |
2 | Check amount of data in DB | The number of data in DB should be checked. amount of data in DB > event_max_number | system |
3 | Delete data in DB | all data > event_max_number should be deleted | system |
N | Step | Description | Owner |
---|---|---|---|
1 | Once in 24H timer starts | system | |
2 | Check amount of data in DB | the Insert_at date in DB sould be checked insert_at > event_max_time | system |
3 | Delete data in DB | All data with (inserted_at>event_max_time) should be deleted | system |
Event termination starts with cron sqedule filtered by
- time (event_max_time)
- amount of data (event_max_number)
All filteres are parametrized. By default event_max_time=month, event_max_number=50.000
Cron starts once in 24H and delete data if events.id > "amount of data" OR events.event_time > "time"
ЕСОЗ - публічна документація