Skip to content

VAHub Back End Services

Kantemir Tvorogov edited this page Aug 9, 2023 · 1 revision

Overview

Services contain the most part of data transformation and presentation logic. Normally, a dataset contains some set of events data of a given kind (e.g., medical histories, or lung function data, or conmeds data, etc... from now on, they are named events). Through data providers, services can get access to events in form of domain objects (instances of classes MedicalHistory, or LungFunction, or Conmed etc). Services are stored in vahub-model module, in package com.acuity.visualisations.rawdatamodel.service and its subpackages. Typical service is an ordinary Spring @Service.

Types of services

  • Filter services calculate filter values basing on enriched data from data providers and apply filters to the events.
  • Plot services filter data accordingly with received filters settings, prepare data for visual presentation on different plot types etc. Also, plot services normally provide details-on-demand (DoD) data — it's the transformed enriched data from data providers that may be requested by user to get additional information about the data drawn on the plot itself DoD logic is mostly common and included in parent BaseEventService.
  • Metadata
  • Other services: there is also several more special services, e.g., for most domain entities a Timeline service exists.

Filter services

Based on the available set of domain objects, a filter service generates filter values for each presentable field of them: for numeric fields, it is normally a range between highest and lowest values available in at least one of received domain objects, for enumerable fields, it's just a list of available values, for boolean fields, it's just true and false (or one of them) etc. After that, these filter values are returned to the frontend, and then user can filter the presented data using them (e. g., only several of some enumerable values are chosen as allowed). Such a request is then sent again to the backend. Filter service performs the filtration itself (this logic is mostly common and located in AbstractFilterService. After that it generates filter values again, based on the filtered data, so the resulting filter values sets/ranges become narrower. All filter services inherit AbstractFilterService class — either through AbstractEventFilterService (most part of them; these services return diverse event filters) or directly (PopulartionRawDataFilterService; this one returns subject filters that a quite special and are applied to any kind of events — through these event subjects data). Their package is com.acuity.visualisations.rawdatamodel.service.filters.

Plot/event services

Plot services perform two main tasks:

  • prepare data for presentation on different kinds of plots
  • provide details-on-demand data
Clone this wiki locally