@startuml

class ShowClientListUI

class ShowClientListController{
+getClientList()
+getClientTestList()
+displayTestResults(testCode)


}

class Client {
- name
- cardNumber
- nhsId
- dateBirth
- TIN
- phoneNumber
- email
- sex
}

class Company{
-designation

+getClientStore()
}

interface Sortable{
+sortByTin(clientList)
+sortByName(clientList)
}

class ClientStore {
+ getClientByEmail(email)
+ getClientsWithValTstList()
}

class ClientMapper{
+ toDtoList(clientList)
}

class ClientDTO

class ShowTestResultsUI

class ShowTestResultsController

class TestStore {
+ getValidatedTestsByClient(client)
+ getTestByCode(testCode)
}

class Test {
- testCode
- nhsCode
- dateOfCreation
- dateReport
- timeReport
- dateResults
- timeResults
- dateValidation
- timeValidation
+ getTestParamResults()
}

class TestMapper {
+ toDtoList(tests)
}

class TestParamList {
+ getTestParamResults()
}

class TestParameter {
+ getTestParamResult()
}

class TestParameterResult {
- value
- metric
- refValue
}

ShowClientListUI ..> ShowClientListController
ShowClientListController ..> Company
ShowClientListController ..> Sortable
ShowClientListController ..> ClientMapper
Client --> Sortable : is
ClientStore --> Client : contains
ClientMapper ..> ClientDTO
ShowClientListUI ..> ClientDTO
ShowTestResultsUI ..> ShowTestResultsController
ShowTestResultsUI ..> TestDTO
ShowTestResultsController ..> TestMapper
TestMapper .left.> TestDTO
ShowTestResultsController ..> Company
Company --> ClientStore : uses
Company --> TestStore : uses
TestStore --> Test : contains
Test --> TestParamList : uses
TestParamList --> TestParameter : contains
TestParameter --> TestParameterResult : contains

@enduml