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
Status models links - BAT-1818Getting issue details... STATUS
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
Period of events provided in the response of method cannot exceed value of EVENTS_LIST_MAX_PERIOD_HOURS variable (if variable is not specified, the default value is 1 hour) specified in configuration of Event Manager
if date and date_to parameters are set, the following condition must be met: date - date_to <= EVENTS_LIST_MAX_PERIOD_HOURS
in case of error return 422 ("Period must be less than or equal to {period} hours. Please set allowed period to the query")
if date and date_to parameters are not set, use date_to as now() and the following condition must be met: date - date_to = EVENTS_LIST_MAX_PERIOD_HOURS
if date_to parameter is set and date is not set, the following condition must be met: date - date_to = EVENTS_LIST_MAX_PERIOD_HOURS
if date parameter is set and date_to is not set, the following condition must be met: date - date_to = EVENTS_LIST_MAX_PERIOD_HOURS
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
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"