@startuml
skinparam classAttributeIconSize 0


class RegisterTestUI {
}


class Test {
- client
- createdAt
- parameterList
- nhsCode
- internalCode
+ addParameter(parameter)
+ Test(clientName, testType, parameter)
}


class ParameterStore {
- getParameter(pc)
 }


class TypeOfTestStore {
- getTypeOfTest(typeOfTest)
- getCategoryListByTheTypeOfTest(typeOfTest)
}


class ClientStore {
- getClientThroughCitizenCardNumber(citizenCardNumber)
}


class Company {
- designation
- getClientStore()
- getClinicalAnalysisLaboratoryStore()
- getTestTypeStore()
- getTestStore()
- getParameterStore()
}

class ClinicalAnalysisLaboratoryDto {
+ getLaboratoryId()
}


class ClinicalAnalysisLaboratoryStore {
- getTypeOfTestList()
}


class RegisterTestController {
  + addClient(clientDto)
  + getTypeOfTestList()
  + addTypeOfTest(typeOfTest)
  + getParameter()
  + createTest(pc)
  + saveTest()
}


class TestStore {
    + createTest(clientName, typeOfTest, parameter)
    + validateTest(test)
    + saveTest(test)
}

class TestTypeMapper {
  + List<TestTypeDto> toDTO(List<TestType> list)
  + TestTypeDto toDTO(TestType obj)
}

class ParameterMapper {
  + List<ParameterDto> toDTO(List<Parameter> list)
  + ParameterDto toDTO(Parameter obj)
}


class ParameterStore {
 + getParameter(pc)
}


class TestDTO {
 + getNhsCode()
 + getClientName()
 + getTypeOfTest()
 + getParameterList()
 + getCreatedAt
 + getCitizenCardNumber()
}

RegisterTestUI --> RegisterTestController
RegisterTestController --> Company

RegisterTestController --> ClientStore
RegisterTestController --> Test
RegisterTestController --> ParameterMapper
RegisterTestController --> TestTypeMapper
RegisterTestController --> ClinicalAnalysisLaboratoryStore
RegisterTestController --> TestStore
RegisterTestController --> TypeOfTestStore
RegisterTestController --> TestDTO
RegisterTestController --> ParameterStore
RegisterTestController --> ClinicalAnalysisLaboratoryDto

TestTypeMapper --> TestType
TestStore"1" --> "*"Test : store


Company "1" --> "1" LabStore : use
Company "1" --> "1" ParameterStore : use
Company "1" --> "1" ClientStore : use
Company "1" --> "1" TypeOfTestStore : use
Company "1" --> "1" TestStore : use





@enduml







