use of de.symeda.sormas.api.symptoms.SymptomState in project SORMAS-Project by hzi-braunschweig.
the class ClassificationAllSymptomsCriteriaDto method eval.
@Override
public boolean eval(CaseDataDto caze, PersonDto person, List<PathogenTestDto> pathogenTests, List<EventDto> events, Date lastVaccinationDate) {
for (Field field : SymptomsDto.class.getDeclaredFields()) {
SymptomsDto symptomsDto = caze.getSymptoms();
if (field.getType() == SymptomState.class && fieldVisibilityCheckers.isVisible(SymptomsDto.class, field.getName())) {
field.setAccessible(true);
try {
boolean matchedFieldState = field.get(symptomsDto) == symptomState;
field.setAccessible(false);
if (!matchedFieldState) {
return false;
}
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}
return true;
}
use of de.symeda.sormas.api.symptoms.SymptomState in project SORMAS-Project by hzi-braunschweig.
the class ClassificationAllSymptomsCriteriaDto method buildDescription.
@Override
public String buildDescription() {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("<b> ").append(I18nProperties.getString(Strings.classificationSymptomsAllOf).toUpperCase()).append("</b>");
stringBuilder.append(" ").append(I18nProperties.getString(Strings.setTo)).append(" ");
if (symptomState == null) {
stringBuilder.append("<b>").append(I18nProperties.getString(Strings.none).toUpperCase()).append("</b>").append("</br>");
} else {
stringBuilder.append("<b>").append(symptomState.toString().toUpperCase()).append("</b>").append("</br>");
}
for (Field field : SymptomsDto.class.getDeclaredFields()) {
if (field.getType() == SymptomState.class && fieldVisibilityCheckers.isVisible(SymptomsDto.class, field.getName())) {
stringBuilder.append(I18nProperties.getPrefixCaption(SymptomsDto.I18N_PREFIX, field.getName())).append("; ");
}
}
return stringBuilder.toString();
}
use of de.symeda.sormas.api.symptoms.SymptomState in project SORMAS-Project by hzi-braunschweig.
the class ClassificationAnyOfSymptomsCriteriaDto method buildDescription.
@Override
public String buildDescription() {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("<b> ").append(I18nProperties.getString(Strings.classificationSymptomsAnyOf).toUpperCase()).append("</b>").append(" ").append(I18nProperties.getString(Strings.setTo)).append(" ");
if (symptomState == null) {
stringBuilder.append("<b>").append(I18nProperties.getString(Strings.none).toUpperCase()).append("</b>").append("</br>");
} else {
stringBuilder.append("<b>").append(symptomState.toString().toUpperCase()).append("</b>").append("</br>");
}
for (Field field : SymptomsDto.class.getDeclaredFields()) {
if (field.getType() == SymptomState.class && fieldVisibilityCheckers.isVisible(SymptomsDto.class, field.getName())) {
stringBuilder.append(I18nProperties.getPrefixCaption(SymptomsDto.I18N_PREFIX, field.getName())).append("; ");
}
}
if (stringBuilder.length() > 0 && stringBuilder.charAt(stringBuilder.length() - 2) == ';') {
stringBuilder.delete(stringBuilder.length() - 2, stringBuilder.length() - 1);
}
return stringBuilder.toString();
}
use of de.symeda.sormas.api.symptoms.SymptomState in project SORMAS-Project by hzi-braunschweig.
the class ControlSwitchField method createRadioButton.
private RadioButton createRadioButton(int index, int lastIndex, Item item) {
RadioButton button = new RadioButton(getContext());
button.setId(index);
LayoutParams params = new LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 1);
int borderSize = getResources().getDimensionPixelSize(R.dimen.defaultControlStrokeWidth);
if (index == 0) {
params.setMargins(borderSize, borderSize, 0, borderSize);
} else if (index == lastIndex) {
params.setMargins(0, borderSize, borderSize, borderSize);
} else {
params.setMargins(0, borderSize, 0, borderSize);
}
float textSize;
int heightInPixel;
if (isSlim()) {
textSize = getContext().getResources().getDimension(R.dimen.slimControlTextSize);
heightInPixel = getContext().getResources().getDimensionPixelSize(R.dimen.slimControlHeight);
} else {
textSize = getContext().getResources().getDimension(R.dimen.switchControlTextSize);
heightInPixel = getContext().getResources().getDimensionPixelSize(R.dimen.maxSwitchButtonHeight);
}
button.setHeight(heightInPixel);
button.setMinHeight(heightInPixel);
button.setMaxHeight(heightInPixel);
button.setPadding(0, 0, 0, 0);
button.setBackground(getButtonDrawable(index == lastIndex, hasError));
button.setButtonDrawable(null);
button.setGravity(Gravity.CENTER);
button.setTypeface(Typeface.create(RADIO_BUTTON_FONT_FAMILY, Typeface.NORMAL));
button.setTextColor(textColor);
button.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
button.setIncludeFontPadding(false);
button.setLayoutParams(params);
Object btnValue = item.getValue();
String btnKey = item.getKey();
if (useAbbreviations) {
if (btnValue instanceof YesNoUnknown && btnKey.equals(YesNoUnknown.UNKNOWN.toString())) {
btnKey = btnKey.substring(0, 3);
}
if (btnValue instanceof SymptomState && btnKey.equals(SymptomState.UNKNOWN.toString())) {
btnKey = btnKey.substring(0, 3);
}
}
if (btnKey != null) {
button.setText(btnKey);
}
setUpOnClickListener(button, this);
return button;
}
use of de.symeda.sormas.api.symptoms.SymptomState in project SORMAS-Project by hzi-braunschweig.
the class DtoHelperTest method testFillDto.
@Test
public void testFillDto() {
RDCFEntities rdcf = creator.createRDCFEntities();
RDCFEntities rdcf2 = creator.createRDCFEntities();
rdcf2.facility.setType(FacilityType.LABORATORY);
UserDto user = creator.createUser(rdcf, UserRole.ADMIN);
// Test simple values
{
HealthConditionsDto targetDto = new HealthConditionsDto();
HealthConditionsDto sourceDto = new HealthConditionsDto();
// lead and other have different values
targetDto.setTuberculosis(YesNoUnknown.YES);
sourceDto.setTuberculosis(YesNoUnknown.NO);
// lead has value, other has not
targetDto.setAsplenia(YesNoUnknown.YES);
// lead has no value, other has
sourceDto.setDiabetes(YesNoUnknown.YES);
DtoHelper.copyDtoValues(targetDto, sourceDto, false);
// Check no values
assertNull(targetDto.getHiv());
// Check 'lead and other have different values'
assertNotEquals(sourceDto.getTuberculosis(), targetDto.getTuberculosis());
// Check 'lead has value, other has not'
assertEquals(YesNoUnknown.YES, targetDto.getAsplenia());
assertNull(sourceDto.getAsplenia());
// Check 'lead has no value, other has'
assertEquals(sourceDto.getDiabetes(), targetDto.getDiabetes());
}
// Test complex subDto
{
PersonDto person = creator.createPerson("First", "Last");
CaseDataDto targetDto = creator.createCase(user.toReference(), person.toReference(), rdcf);
CaseDataDto sourceDto = creator.createCase(user.toReference(), person.toReference(), rdcf);
SymptomsDto targetSymptomsDto = targetDto.getSymptoms();
SymptomsDto sourceSymptomsDto = sourceDto.getSymptoms();
// lead and other have different values
SymptomState abdominalPain = SymptomState.NO;
targetSymptomsDto.setAbdominalPain(abdominalPain);
sourceSymptomsDto.setAbdominalPain(SymptomState.UNKNOWN);
// lead has value, other has not
SymptomState alteredConsciousness = SymptomState.YES;
targetSymptomsDto.setAlteredConsciousness(alteredConsciousness);
// lead has no value, other has
SymptomState anorexiaAppetiteLoss = SymptomState.UNKNOWN;
sourceSymptomsDto.setAnorexiaAppetiteLoss(anorexiaAppetiteLoss);
targetDto.setSymptoms(targetSymptomsDto);
sourceDto.setSymptoms(sourceSymptomsDto);
DtoHelper.copyDtoValues(targetDto, sourceDto, false);
// Check no values
assertNull(targetDto.getSymptoms().getBackache());
// Check 'lead and other have different values'
assertEquals(abdominalPain, targetDto.getSymptoms().getAbdominalPain());
// Check 'lead has value, other has not'
assertEquals(alteredConsciousness, targetDto.getSymptoms().getAlteredConsciousness());
// Check 'lead has no value, other has'
assertEquals(anorexiaAppetiteLoss, targetDto.getSymptoms().getAnorexiaAppetiteLoss());
}
// Test List
{
PersonDto person = creator.createPerson("First", "Last");
CaseDataDto targetDto = creator.createCase(user.toReference(), person.toReference(), rdcf);
CaseDataDto sourceDto = creator.createCase(user.toReference(), person.toReference(), rdcf);
ExposureDto subDto1 = ExposureDto.build(ExposureType.TRAVEL);
ExposureDto subDto2 = ExposureDto.build(ExposureType.TRAVEL);
// lead and other have different values
ArrayList<ExposureDto> targetList1 = new ArrayList<>();
targetList1.add(subDto1);
ArrayList<ExposureDto> sourceList1 = new ArrayList<>();
sourceList1.add(subDto2);
// lead has values, other has not
ArrayList<ExposureDto> targetList2 = new ArrayList<>();
targetList2.add(subDto1);
targetList2.add(subDto2);
// lead has no values, other has
ArrayList<ExposureDto> sourceList2 = new ArrayList<>();
sourceList2.add(subDto1);
sourceList2.add(subDto2);
// Check no values
DtoHelper.copyDtoValues(targetDto, sourceDto, false);
assertTrue(targetDto.getEpiData().getExposures().isEmpty());
// Check 'lead has still same entries'
targetDto.getEpiData().setExposures(targetList1);
sourceDto.getEpiData().setExposures(sourceList1);
String existingUuid = targetList1.get(0).getUuid();
DtoHelper.copyDtoValues(targetDto, sourceDto, false);
assertEquals(targetList1.size(), targetDto.getEpiData().getExposures().size());
assertNotNull(targetDto.getEpiData().getExposures().get(0).getUuid());
assertEquals(existingUuid, targetDto.getEpiData().getExposures().get(0).getUuid());
assertNotEquals(existingUuid, sourceDto.getEpiData().getExposures().get(0).getUuid());
// Check 'lead has value, other has not'
targetDto.getEpiData().setExposures(targetList2);
sourceDto.getEpiData().setExposures(null);
DtoHelper.copyDtoValues(targetDto, sourceDto, false);
assertNotNull(targetDto.getEpiData().getExposures().get(0).getUuid());
assertEquals(targetList2.size(), targetDto.getEpiData().getExposures().size());
assertEquals(targetList2.get(0).getUuid(), targetDto.getEpiData().getExposures().get(0).getUuid());
assertEquals(targetList2.get(1).getUuid(), targetDto.getEpiData().getExposures().get(1).getUuid());
// Check 'lead has no value, other has'
targetDto.getEpiData().setExposures(null);
sourceDto.getEpiData().setExposures(sourceList2);
DtoHelper.copyDtoValues(targetDto, sourceDto, false);
assertNotNull(targetDto.getEpiData().getExposures().get(0).getUuid());
assertEquals(sourceList2.size(), targetDto.getEpiData().getExposures().size());
assertNotEquals(sourceList2.get(0).getUuid(), targetDto.getEpiData().getExposures().get(0).getUuid());
assertNotEquals(sourceList2.get(1).getUuid(), targetDto.getEpiData().getExposures().get(1).getUuid());
}
// test non-entity list
{
PersonDto person = creator.createPerson("First", "Last");
CaseDataDto targetCaseDto = creator.createCase(user.toReference(), person.toReference(), rdcf);
CaseDataDto sourceCaseDto = creator.createCase(user.toReference(), person.toReference(), rdcf);
SampleDto sourceDto = creator.createSample(sourceCaseDto.toReference(), user.toReference(), rdcf2.facility);
sourceDto.setPathogenTestingRequested(true);
sourceDto.getRequestedPathogenTests().add(PathogenTestType.ANTIGEN_DETECTION);
sourceDto.getRequestedPathogenTests().add(PathogenTestType.NEUTRALIZING_ANTIBODIES);
SampleDto targetDto = SampleDto.build(user.toReference(), targetCaseDto.toReference());
DtoHelper.copyDtoValues(targetDto, sourceDto, false);
assertEquals(2, targetDto.getRequestedPathogenTests().size());
}
// test map
{
TestDataCreator.RDCF caseRdcf = creator.createRDCF();
Map<ReinfectionDetail, Boolean> map1 = new EnumMap<>(ReinfectionDetail.class);
map1.put(ReinfectionDetail.GENOME_SEQUENCE_CURRENT_INFECTION_KNOWN, true);
map1.put(ReinfectionDetail.PREVIOUS_ASYMPTOMATIC_INFECTION, true);
map1.put(ReinfectionDetail.LAST_PCR_DETECTION_NOT_RECENT, false);
PersonDto person = creator.createPerson();
CaseDataDto sourceCase = creator.createCase(user.toReference(), person.toReference(), caseRdcf);
CaseDataDto targetCase = creator.createCase(user.toReference(), person.toReference(), caseRdcf);
// Map must not be persisted because H2 can't map it to JSON
sourceCase.setReinfectionDetails(map1);
DtoHelper.copyDtoValues(targetCase, sourceCase, false);
assertEquals(3, targetCase.getReinfectionDetails().size());
sourceCase.getReinfectionDetails().put(ReinfectionDetail.PREVIOUS_ASYMPTOMATIC_INFECTION, false);
sourceCase.getReinfectionDetails().put(ReinfectionDetail.TESTED_NEGATIVE_AFTER_PREVIOUS_INFECTION, true);
DtoHelper.copyDtoValues(targetCase, sourceCase, false);
assertEquals(4, targetCase.getReinfectionDetails().size());
assertTrue(targetCase.getReinfectionDetails().get(ReinfectionDetail.PREVIOUS_ASYMPTOMATIC_INFECTION));
DtoHelper.copyDtoValues(targetCase, sourceCase, true);
assertEquals(4, targetCase.getReinfectionDetails().size());
assertFalse(targetCase.getReinfectionDetails().get(ReinfectionDetail.PREVIOUS_ASYMPTOMATIC_INFECTION));
sourceCase.setReinfectionDetails(null);
DtoHelper.copyDtoValues(targetCase, sourceCase, false);
assertEquals(4, targetCase.getReinfectionDetails().size());
DtoHelper.copyDtoValues(targetCase, sourceCase, true);
assertEquals(4, targetCase.getReinfectionDetails().size());
}
}
Aggregations