Skip to content

Commit 1b83f81

Browse files
Merge pull request #13912 from SORMAS-Foundation/feature-13837-malaria-doctors-declarations
Malaria & Dengue Doctors declaration and lab message changes
2 parents af2503d + e2f07f5 commit 1b83f81

38 files changed

Lines changed: 905 additions & 132 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/activityascase/ActivityAsCaseType.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ public enum ActivityAsCaseType {
4141
@HideForCountriesExcept
4242
CARED_FOR,
4343
OTHER,
44+
BLOOD_DONATION,
45+
BONE_MARROW_DONATION,
4446
UNKNOWN;
4547

4648
@Override

sormas-api/src/main/java/de/symeda/sormas/api/epidata/EpiDataDto.java

Lines changed: 63 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
package de.symeda.sormas.api.epidata;
1919

2020
import java.util.ArrayList;
21-
import java.util.Date;
2221
import java.util.List;
2322

2423
import javax.validation.Valid;
@@ -70,6 +69,10 @@ public class EpiDataDto extends PseudonymizableDto {
7069
public static final String IMPORTED_CASE = "importedCase";
7170
public static final String COUNTRY = "country";
7271
public static final String OTHER_DETAILS = "otherDetails";
72+
public static final String AIRPORT_WORKER = "airportWorker";
73+
public static final String HEALTHCARE_PROFESSIONAL = "healthcareProfessional";
74+
public static final String PLACE_OF_INFECTION = "placeOfInfection";
75+
public static final String RESIDENCE_AT_ONSET = "residenceAtOnset";
7376

7477
private YesNoUnknown exposureDetailsKnown;
7578
private YesNoUnknown activityAsCaseDetailsKnown;
@@ -114,12 +117,14 @@ public class EpiDataDto extends PseudonymizableDto {
114117

115118
@Diseases({
116119
Disease.GIARDIASIS,
117-
Disease.CRYPTOSPORIDIOSIS })
120+
Disease.CRYPTOSPORIDIOSIS,
121+
Disease.MALARIA })
118122
private ModeOfTransmission modeOfTransmission;
119123

120124
@Diseases({
121125
Disease.GIARDIASIS,
122-
Disease.CRYPTOSPORIDIOSIS })
126+
Disease.CRYPTOSPORIDIOSIS,
127+
Disease.MALARIA })
123128
@Size(max = FieldConstraints.CHARACTER_LIMIT_DEFAULT, message = Validations.textTooLong)
124129
private String modeOfTransmissionType;
125130

@@ -143,6 +148,29 @@ public class EpiDataDto extends PseudonymizableDto {
143148
private List<ActivityAsCaseDto> activitiesAsCase = new ArrayList<>();
144149

145150
private String otherDetails;
151+
// airport worker should be applicable for all countries and diseases.
152+
@Diseases
153+
@HideForCountriesExcept
154+
private YesNoUnknown airportWorker;
155+
@Diseases({
156+
Disease.MALARIA })
157+
@HideForCountriesExcept(countries = {
158+
CountryHelper.COUNTRY_CODE_LUXEMBOURG })
159+
private YesNoUnknown healthcareProfessional;
160+
161+
@Diseases({
162+
Disease.DENGUE })
163+
@HideForCountriesExcept(countries = {
164+
CountryHelper.COUNTRY_CODE_LUXEMBOURG })
165+
@Size(max = 255, message = Validations.textTooLong)
166+
private String placeOfInfection;
167+
168+
@Diseases({
169+
Disease.DENGUE })
170+
@HideForCountriesExcept(countries = {
171+
CountryHelper.COUNTRY_CODE_LUXEMBOURG })
172+
@Size(max = 255, message = Validations.textTooLong)
173+
private String residenceAtOnset;
146174

147175
public YesNoUnknown getExposureDetailsKnown() {
148176
return exposureDetailsKnown;
@@ -305,6 +333,38 @@ public void setOtherDetails(String otherDetails) {
305333
this.otherDetails = otherDetails;
306334
}
307335

336+
public YesNoUnknown getAirportWorker() {
337+
return airportWorker;
338+
}
339+
340+
public void setAirportWorker(YesNoUnknown airportWorker) {
341+
this.airportWorker = airportWorker;
342+
}
343+
344+
public YesNoUnknown getHealthcareProfessional() {
345+
return healthcareProfessional;
346+
}
347+
348+
public void setHealthcareProfessional(YesNoUnknown healthcareProfessional) {
349+
this.healthcareProfessional = healthcareProfessional;
350+
}
351+
352+
public String getPlaceOfInfection() {
353+
return placeOfInfection;
354+
}
355+
356+
public void setPlaceOfInfection(String placeOfInfection) {
357+
this.placeOfInfection = placeOfInfection;
358+
}
359+
360+
public String getResidenceAtOnset() {
361+
return residenceAtOnset;
362+
}
363+
364+
public void setResidenceAtOnset(String residenceAtOnset) {
365+
this.residenceAtOnset = residenceAtOnset;
366+
}
367+
308368
@Override
309369
public EpiDataDto clone() throws CloneNotSupportedException {
310370
EpiDataDto clone = (EpiDataDto) super.clone();

sormas-api/src/main/java/de/symeda/sormas/api/exposure/ExposureCategory.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,13 @@ public enum ExposureCategory {
2828
FOOD_BORNE,
2929
VECTOR_BORNE,
3030
VERTICAL_TRANSMISSION,
31-
WATER_BORNE;
31+
WATER_BORNE,
32+
MEDICAL_CARE,
33+
LAB,
34+
OTHER;
3235

3336
public boolean hasNoSetting() {
34-
return EnumSet.of(ANIMAL_CONTACT, FOMITE_TRANSMISSION, FOOD_BORNE).contains(this);
37+
return EnumSet.of(ANIMAL_CONTACT, FOMITE_TRANSMISSION, FOOD_BORNE, MEDICAL_CARE, LAB, OTHER).contains(this);
3538
}
3639

3740
public boolean hasNoSubSetting() {

sormas-api/src/main/java/de/symeda/sormas/api/exposure/ExposureDto.java

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,10 @@ public class ExposureDto extends PseudonymizableDto {
135135
public static final String SUB_SETTINGS = "subSettings";
136136
public static final String CONTACT_FACTORS = "contactFactors";
137137
public static final String PROTECTIVE_MEASURES = "protectiveMeasures";
138+
public static final String PROPHYLAXIS_ADHERENCE = "prophylaxisAdherence";
139+
public static final String PROPHYLAXIS_ADHERENCE_DETAILS = "prophylaxisAdherenceDetails";
140+
public static final String TRAVEL_PURPOSE = "travelPurpose";
141+
public static final String TRAVEL_PURPOSE_DETAILS = "travelPurposeDetails";
138142

139143
@SensitiveData
140144
private UserReferenceDto reportingUser;
@@ -432,6 +436,24 @@ public class ExposureDto extends PseudonymizableDto {
432436
private Set<ExposureSubSetting> subSettings;
433437
private Set<ExposureContactFactor> contactFactors;
434438
private Set<ExposureProtectiveMeasure> protectiveMeasures;
439+
@Diseases({
440+
Disease.MALARIA,
441+
Disease.DENGUE })
442+
private ProphylaxisAdherence prophylaxisAdherence;
443+
@Diseases({
444+
Disease.MALARIA,
445+
Disease.DENGUE })
446+
@Size(max = FieldConstraints.CHARACTER_LIMIT_TEXT, message = Validations.textTooLong)
447+
private String prophylaxisAdherenceDetails;
448+
@Diseases({
449+
Disease.MALARIA,
450+
Disease.DENGUE })
451+
private TravelPurpose travelPurpose;
452+
@Diseases({
453+
Disease.MALARIA,
454+
Disease.DENGUE })
455+
@Size(max = FieldConstraints.CHARACTER_LIMIT_TEXT, message = Validations.textTooLong)
456+
private String travelPurposeDetails;
435457

436458
public static ExposureDto build(ExposureType exposureType) {
437459

@@ -1096,6 +1118,38 @@ public void setProtectiveMeasures(Set<ExposureProtectiveMeasure> protectiveMeasu
10961118
this.protectiveMeasures = protectiveMeasures;
10971119
}
10981120

1121+
public TravelPurpose getTravelPurpose() {
1122+
return travelPurpose;
1123+
}
1124+
1125+
public void setTravelPurpose(TravelPurpose travelPurpose) {
1126+
this.travelPurpose = travelPurpose;
1127+
}
1128+
1129+
public String getTravelPurposeDetails() {
1130+
return travelPurposeDetails;
1131+
}
1132+
1133+
public void setTravelPurposeDetails(String travelPurposeDetails) {
1134+
this.travelPurposeDetails = travelPurposeDetails;
1135+
}
1136+
1137+
public ProphylaxisAdherence getProphylaxisAdherence() {
1138+
return prophylaxisAdherence;
1139+
}
1140+
1141+
public void setProphylaxisAdherence(ProphylaxisAdherence prophylaxisAdherence) {
1142+
this.prophylaxisAdherence = prophylaxisAdherence;
1143+
}
1144+
1145+
public String getProphylaxisAdherenceDetails() {
1146+
return prophylaxisAdherenceDetails;
1147+
}
1148+
1149+
public void setProphylaxisAdherenceDetails(String prophylaxisAdherenceDetails) {
1150+
this.prophylaxisAdherenceDetails = prophylaxisAdherenceDetails;
1151+
}
1152+
10991153
@Override
11001154
public ExposureDto clone() throws CloneNotSupportedException {
11011155
ExposureDto clone = (ExposureDto) super.clone();

sormas-api/src/main/java/de/symeda/sormas/api/exposure/ExposureSetting.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public enum ExposureSetting {
3030
OUTDOOR(ExposureCategory.AIR_BORNE, ExposureCategory.VECTOR_BORNE),
3131

3232
PERSON_TO_PERSON(ExposureCategory.DIRECT_CONTACT),
33+
OTHER_DIRECT_CONTACT(ExposureCategory.DIRECT_CONTACT),
3334

3435
MOSQUITO_BORNE(ExposureCategory.VECTOR_BORNE),
3536
TICK_BORNE(ExposureCategory.VECTOR_BORNE),

sormas-api/src/main/java/de/symeda/sormas/api/exposure/ExposureSubSetting.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,12 @@ public enum ExposureSubSetting {
3737
HIGH_TOUCH_ENVIRONMENTS(ExposureCategory.DIRECT_CONTACT, ExposureSetting.PERSON_TO_PERSON),
3838
SEXUAL_ACTIVITY(ExposureCategory.DIRECT_CONTACT, ExposureSetting.PERSON_TO_PERSON),
3939

40+
BLOOD_TRANSFUSION_RECIPIENT(ExposureCategory.DIRECT_CONTACT, ExposureSetting.OTHER_DIRECT_CONTACT),
41+
BONE_MARROW_TRANSPLANT_RECIPIENT(ExposureCategory.DIRECT_CONTACT, ExposureSetting.OTHER_DIRECT_CONTACT),
42+
4043
STANDING_WATER_AREAS(ExposureCategory.VECTOR_BORNE, ExposureSetting.MOSQUITO_BORNE),
4144
HIGH_MOSQUITO_ACTIVITY_REGIONS(ExposureCategory.VECTOR_BORNE, ExposureSetting.MOSQUITO_BORNE),
45+
TRAVELED_ABROAD(ExposureCategory.VECTOR_BORNE, ExposureSetting.MOSQUITO_BORNE),
4246

4347
FORESTED_GRASSY_RURAL(ExposureCategory.VECTOR_BORNE, ExposureSetting.TICK_BORNE),
4448
WILDLIFE_RESERVOIR_AREAS(ExposureCategory.VECTOR_BORNE, ExposureSetting.TICK_BORNE),

sormas-api/src/main/java/de/symeda/sormas/api/exposure/ModeOfTransmission.java

Lines changed: 63 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,84 @@
1414
*/
1515
package de.symeda.sormas.api.exposure;
1616

17+
import de.symeda.sormas.api.Disease;
1718
import de.symeda.sormas.api.i18n.I18nProperties;
19+
import de.symeda.sormas.api.utils.Diseases;
1820

1921
public enum ModeOfTransmission {
2022

23+
@Diseases({
24+
Disease.GIARDIASIS,
25+
Disease.CRYPTOSPORIDIOSIS })
2126
ANIMAL_TO_HUMAN,
27+
@Diseases({
28+
Disease.GIARDIASIS,
29+
Disease.CRYPTOSPORIDIOSIS })
2230
FOOD_OR_WATER,
31+
@Diseases({
32+
Disease.GIARDIASIS,
33+
Disease.CRYPTOSPORIDIOSIS })
2334
PERSON_TO_PERSON,
35+
@Diseases({
36+
Disease.GIARDIASIS,
37+
Disease.CRYPTOSPORIDIOSIS })
2438
RECREATIONAL_WATER,
39+
@Diseases({
40+
Disease.GIARDIASIS,
41+
Disease.CRYPTOSPORIDIOSIS })
2542
HEALTHCARE_ASSOCIATED,
43+
@Diseases({
44+
Disease.GIARDIASIS,
45+
Disease.CRYPTOSPORIDIOSIS })
2646
INJECTING_DRUG_USERS,
47+
@Diseases({
48+
Disease.GIARDIASIS,
49+
Disease.CRYPTOSPORIDIOSIS })
2750
LAB_OCCUPATIONAL_EXPOSURE,
51+
@Diseases({
52+
Disease.GIARDIASIS,
53+
Disease.CRYPTOSPORIDIOSIS })
2854
MOTHER_TO_CHILD,
55+
@Diseases({
56+
Disease.GIARDIASIS,
57+
Disease.CRYPTOSPORIDIOSIS })
2958
SEXUAL,
59+
@Diseases({
60+
Disease.GIARDIASIS,
61+
Disease.CRYPTOSPORIDIOSIS })
3062
TRANSFUSION_RECIPIENT,
63+
@Diseases({
64+
Disease.GIARDIASIS,
65+
Disease.CRYPTOSPORIDIOSIS })
3166
ORGAN_RECIPIENT,
32-
UNKNOWN,
33-
OTHER;
67+
68+
@Diseases(value = {
69+
Disease.MALARIA })
70+
MOSQUITOES_FROM_ENDEMIC_COUNTRY,
71+
@Diseases(value = {
72+
Disease.MALARIA })
73+
MOSQUITOES_BY_AIR,
74+
@Diseases(value = {
75+
Disease.MALARIA })
76+
MEDICAL_CARE,
77+
@Diseases(value = {
78+
Disease.MALARIA })
79+
MOSQUITOES_WITH_STRONG_EPI_EVIDENCE,
80+
@Diseases(value = {
81+
Disease.MALARIA })
82+
MOSQUITOES_WITHOUT_EVIDENCE,
83+
@Diseases(value = {
84+
Disease.MALARIA })
85+
FROM_MOTHER_TO_CHILD,
86+
@Diseases(value = {
87+
Disease.MALARIA })
88+
BY_LAB,
89+
@Diseases(value = {
90+
Disease.MALARIA })
91+
TRANSFUSION_TRANSPLANT_RECIPIENT,
92+
93+
OTHER,
94+
UNKNOWN;
3495

3596
@Override
3697
public String toString() {

sormas-api/src/main/java/de/symeda/sormas/api/epidata/DiseaseTransmission.java renamed to sormas-api/src/main/java/de/symeda/sormas/api/exposure/ProphylaxisAdherence.java

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,26 @@
1212
* You should have received a copy of the GNU General Public License
1313
* along with this program. If not, see <https://www.gnu.org/licenses/>.
1414
*/
15-
package de.symeda.sormas.api.epidata;
15+
package de.symeda.sormas.api.exposure;
1616

1717
import de.symeda.sormas.api.i18n.I18nProperties;
1818

19-
public enum DiseaseTransmission {
19+
/**
20+
* Enumeration of Prophylaxis Adherence.
21+
* To be used for prophylaxis drug and its adherence to treatment.
22+
*/
23+
public enum ProphylaxisAdherence {
24+
25+
PROPHYLAXIS_COMPLETED,
26+
PROPHYLAXIS_PARTIAL,
27+
PROPHYLAXIS_NOT_STARTED,
28+
PROPHYLAXIS_NOT_PRESCRIBED,
29+
OTHER,
30+
UNKNOWN;
2031

21-
TRANSMITTED_WITH_MOSQUITOES_FROM_ENDEMIC_COUNTRY,
22-
TRANSMITTED_WITH_MOSQUITOES_BY_AIR,
23-
TRANSMITTED_THROUGH_MEDICAL_CARE,
24-
TRANSMITTED_WITH_STRONG_EPI_EVIDENCE,
25-
TRANSMITTED_WITHOUT_EVIDENCE,
26-
TRANSMITTED_FROM_MOTHER_TO_CHILD,
27-
TRANSMITTED_BY_LAB,
28-
TRANSFUSION_TRANSPLANT_RECIPIENT,
29-
OTHER,
30-
UNKNOWN;
32+
@Override
33+
public String toString() {
34+
return I18nProperties.getEnumCaption(this);
35+
}
3136

32-
@Override
33-
public String toString() {
34-
return I18nProperties.getEnumCaption(this);
35-
}
3637
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
* SORMAS® - Surveillance Outbreak Response Management & Analysis System
3+
* Copyright © 2016-2026 SORMAS Foundation gGmbH
4+
* This program is free software: you can redistribute it and/or modify
5+
* it under the terms of the GNU General Public License as published by
6+
* the Free Software Foundation, either version 3 of the License, or
7+
* (at your option) any later version.
8+
* This program is distributed in the hope that it will be useful,
9+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+
* GNU General Public License for more details.
12+
* You should have received a copy of the GNU General Public License
13+
* along with this program. If not, see <https://www.gnu.org/licenses/>.
14+
*/
15+
package de.symeda.sormas.api.exposure;
16+
17+
import de.symeda.sormas.api.i18n.I18nProperties;
18+
19+
/**
20+
* Enumeration of travel purpose.
21+
* To be used for specific travel and its purpose.
22+
*/
23+
public enum TravelPurpose {
24+
25+
BUSINESS,
26+
VISITING_FAMILY_FRIENDS,
27+
MIGRATION,
28+
MILITARY,
29+
HUMANITARIAN_MISSION,
30+
TRAVELER_FROM_ENDEMIC_COUNTRY,
31+
STUDENT,
32+
TOURISM,
33+
OTHER,
34+
UNKNOWN;
35+
36+
@Override
37+
public String toString() {
38+
return I18nProperties.getEnumCaption(this);
39+
}
40+
}

0 commit comments

Comments
 (0)