ЕСОЗ - публічна документація

Event Manager

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

Save data to Event DB

N

Step

Description

Owner

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

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

Apiary

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

  1. if date and date_to parameters are set, the following condition must be met: date - date_to <= EVENTS_LIST_MAX_PERIOD_HOURS

    1. in case of error return 422 ("Period must be less than or equal to {period} hours. Please set allowed period to the query")

  2. 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

  3. 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

  4. 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
  1. Verify the validity of access token

  2. Check user scopes in order to perform this action (scope = 'event:read')

    1. 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

  1. Check user scopes in order to perform this action (scope = 'event:read')

    1. return 403 in case invalid scope(s)

 

Get by ID

Apiary

Input parameters
  • id

Logic WS
  1. Verify the validity of access token

  2. Check user scopes in order to perform this action (scope = 'event:read')

    1. return 403 in case invalid scope(s)

Event termination

N

Step

Description

Owner

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

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"

 

ЕСОЗ - публічна документація