Skip to content

Commit 0b0af99

Browse files
Merge pull request #13582 from SORMAS-Foundation/feature-13365-enhance-case-data-form-for-measles
Feature 13365 enhance case data form for measles
2 parents 143f82f + ac9aafa commit 0b0af99

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+957
-84
lines changed

sormas-api/src/main/java/de/symeda/sormas/api/caze/VaccinationStatus.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,22 @@
1717
*******************************************************************************/
1818
package de.symeda.sormas.api.caze;
1919

20+
import de.symeda.sormas.api.CountryHelper;
21+
import de.symeda.sormas.api.Disease;
2022
import de.symeda.sormas.api.i18n.I18nProperties;
23+
import de.symeda.sormas.api.utils.Diseases;
24+
import de.symeda.sormas.api.utils.HideForCountriesExcept;
2125

2226
public enum VaccinationStatus {
2327

2428
VACCINATED,
2529
UNVACCINATED,
30+
@Diseases(value = {Disease.MEASLES})
31+
VACCINATED_ONE_DOSE,
32+
@Diseases(value = {Disease.MEASLES})
33+
VACCINATED_TWO_DOSE,
34+
@Diseases(value = {Disease.MEASLES})
35+
RECOVERED,
2636
UNKNOWN;
2737

2838
@Override

sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactDto.java

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,11 @@ public class ContactDto extends SormasToSormasShareableDto implements IsContact
154154
public static final String PROPHYLAXIS_PRESCRIBED = "prophylaxisPrescribed";
155155
public static final String PRESCRIBED_DRUG = "prescribedDrug";
156156
public static final String PRESCRIBED_DRUG_TEXT = "prescribedDrugText";
157+
public static final String VACCINATION_PROPOSED = "vaccinationProposed";
158+
public static final String IMMUNE_GLOBULIN_PROPOSED = "immuneGlobulinProposed";
159+
160+
public static final String VACCINATION_DOSE_ONE_DATE = "vaccinationDoseOneDate";
161+
public static final String VACCINATION_DOSE_TWO_DATE = "vaccinationDoseTwoDate";
157162

158163
@EmbeddedPersonalData
159164
private CaseReferenceDto caze;
@@ -365,6 +370,13 @@ public class ContactDto extends SormasToSormasShareableDto implements IsContact
365370
@Outbreaks
366371
private VaccinationStatus vaccinationStatus;
367372

373+
@Diseases(value = {Disease.MEASLES})
374+
@HideForCountriesExcept(countries = {COUNTRY_CODE_LUXEMBOURG})
375+
private Date vaccinationDoseOneDate;
376+
@Diseases(value = {Disease.MEASLES})
377+
@HideForCountriesExcept(countries = {COUNTRY_CODE_LUXEMBOURG})
378+
private Date vaccinationDoseTwoDate;
379+
368380
private Date previousQuarantineTo;
369381
@SensitiveData
370382
@Size(max = CHARACTER_LIMIT_BIG, message = Validations.textTooLong)
@@ -385,6 +397,12 @@ public class ContactDto extends SormasToSormasShareableDto implements IsContact
385397
@SensitiveData
386398
@Diseases(Disease.INVASIVE_MENINGOCOCCAL_INFECTION)
387399
private String prescribedDrugText;
400+
@Diseases(value = {Disease.MEASLES})
401+
@HideForCountriesExcept(countries = {COUNTRY_CODE_LUXEMBOURG})
402+
private boolean vaccinationProposed;
403+
@Diseases(value = {Disease.MEASLES})
404+
@HideForCountriesExcept(countries = {COUNTRY_CODE_LUXEMBOURG})
405+
private boolean immuneGlobulinProposed;
388406

389407
public static ContactDto build() {
390408
final ContactDto contact = new ContactDto();
@@ -1109,4 +1127,35 @@ public void setPrescribedDrugText(String prescribedDrugText) {
11091127
this.prescribedDrugText = prescribedDrugText;
11101128
}
11111129

1130+
public Date getVaccinationDoseOneDate() {
1131+
return vaccinationDoseOneDate;
1132+
}
1133+
1134+
public void setVaccinationDoseOneDate(Date vaccinationDoseOneDate) {
1135+
this.vaccinationDoseOneDate = vaccinationDoseOneDate;
1136+
}
1137+
1138+
public Date getVaccinationDoseTwoDate() {
1139+
return vaccinationDoseTwoDate;
1140+
}
1141+
1142+
public void setVaccinationDoseTwoDate(Date vaccinationDoseTwoDate) {
1143+
this.vaccinationDoseTwoDate = vaccinationDoseTwoDate;
1144+
}
1145+
1146+
public boolean isVaccinationProposed() {
1147+
return vaccinationProposed;
1148+
}
1149+
1150+
public void setVaccinationProposed(boolean vaccinationProposed) {
1151+
this.vaccinationProposed = vaccinationProposed;
1152+
}
1153+
1154+
public boolean isImmuneGlobulinProposed() {
1155+
return immuneGlobulinProposed;
1156+
}
1157+
1158+
public void setImmuneGlobulinProposed(boolean immuneGlobulinProposed) {
1159+
this.immuneGlobulinProposed = immuneGlobulinProposed;
1160+
}
11121161
}

sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactProximity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ public static ContactProximity[] getValues(Disease disease, String serverLocale)
8989
if(disease != null && serverLocale != null && StringUtils.endsWithIgnoreCase(serverLocale,CountryHelper.COUNTRY_CODE_LUXEMBOURG)){
9090
switch (disease) {
9191
case INVASIVE_MENINGOCOCCAL_INFECTION:
92+
case MEASLES:
9293
return new ContactProximity[] {
9394
PHYSICAL_CONTACT,
9495
CLOSE_CONTACT,
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
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.epidata;
16+
17+
import de.symeda.sormas.api.i18n.I18nProperties;
18+
19+
public enum CaseImportedStatus {
20+
IMPORTED_CASE,
21+
IMPORT_RELATED_CASE,
22+
UNKNOWN_IMPORTATION_STATUS,
23+
NOT_IMPORTED_CASE;
24+
25+
@Override
26+
public String toString() {
27+
return I18nProperties.getEnumCaption(this);
28+
}
29+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
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.epidata;
16+
17+
import de.symeda.sormas.api.i18n.I18nProperties;
18+
19+
public enum ClusterType {
20+
KINDERGARTEN_OR_CHILDCARE,
21+
FAMILY,
22+
MILITARY,
23+
NOSOCOMIAL,
24+
SCHOOL,
25+
SPORTS_TEAM,
26+
UNIVERSITY,
27+
OTHER;
28+
29+
@Override
30+
public String toString() {
31+
return I18nProperties.getEnumCaption(this);
32+
}
33+
34+
}

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

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import javax.validation.Valid;
2424

25+
import de.symeda.sormas.api.CountryHelper;
2526
import de.symeda.sormas.api.Disease;
2627
import de.symeda.sormas.api.ImportIgnore;
2728
import de.symeda.sormas.api.activityascase.ActivityAsCaseDto;
@@ -31,6 +32,7 @@
3132
import de.symeda.sormas.api.utils.DataHelper;
3233
import de.symeda.sormas.api.utils.DependingOnFeatureType;
3334
import de.symeda.sormas.api.utils.Diseases;
35+
import de.symeda.sormas.api.utils.HideForCountriesExcept;
3436
import de.symeda.sormas.api.utils.YesNoUnknown;
3537
import de.symeda.sormas.api.utils.pseudonymization.PseudonymizableDto;
3638

@@ -51,12 +53,29 @@ public class EpiDataDto extends PseudonymizableDto {
5153
public static final String AREA_INFECTED_ANIMALS = "areaInfectedAnimals";
5254
public static final String HIGH_TRANSMISSION_RISK_AREA = "highTransmissionRiskArea";
5355
public static final String LARGE_OUTBREAKS_AREA = "largeOutbreaksArea";
56+
public static final String CASE_IMPORTED_STATUS = "caseImportedStatus";
57+
public static final String CLUSTER_TYPE = "clusterType";
58+
public static final String CLUSTER_TYPE_TEXT = "clusterTypeText";
5459

5560
private YesNoUnknown exposureDetailsKnown;
5661
private YesNoUnknown activityAsCaseDetailsKnown;
5762
private YesNoUnknown contactWithSourceCaseKnown;
5863
private YesNoUnknown highTransmissionRiskArea;
5964
private YesNoUnknown largeOutbreaksArea;
65+
@Diseases({
66+
Disease.MEASLES})
67+
@HideForCountriesExcept(countries = {CountryHelper.COUNTRY_CODE_LUXEMBOURG})
68+
private CaseImportedStatus caseImportedStatus;
69+
@Diseases({
70+
Disease.MEASLES})
71+
@HideForCountriesExcept(countries = {CountryHelper.COUNTRY_CODE_LUXEMBOURG})
72+
private ClusterType clusterType;
73+
74+
@HideForCountriesExcept(countries = {CountryHelper.COUNTRY_CODE_LUXEMBOURG})
75+
@Diseases({
76+
Disease.MEASLES})
77+
private String clusterTypeText;
78+
6079
@Diseases({
6180
Disease.AFP,
6281
Disease.GUINEA_WORM,
@@ -146,6 +165,30 @@ public static EpiDataDto build() {
146165
return epiData;
147166
}
148167

168+
public CaseImportedStatus getCaseImportedStatus() {
169+
return caseImportedStatus;
170+
}
171+
172+
public void setCaseImportedStatus(CaseImportedStatus caseImportedStatus) {
173+
this.caseImportedStatus = caseImportedStatus;
174+
}
175+
176+
public ClusterType getClusterType() {
177+
return clusterType;
178+
}
179+
180+
public void setClusterType(ClusterType clusterType) {
181+
this.clusterType = clusterType;
182+
}
183+
184+
public String getClusterTypeText() {
185+
return clusterTypeText;
186+
}
187+
188+
public void setClusterTypeText(String clusterTypeText) {
189+
this.clusterTypeText = clusterTypeText;
190+
}
191+
149192
@Override
150193
public EpiDataDto clone() throws CloneNotSupportedException {
151194
EpiDataDto clone = (EpiDataDto) super.clone();

sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/labmessage/TestReportDto.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import de.symeda.sormas.api.feature.FeatureType;
1212
import de.symeda.sormas.api.i18n.Validations;
1313
import de.symeda.sormas.api.infrastructure.country.CountryReferenceDto;
14+
import de.symeda.sormas.api.sample.GenoTypeResult;
1415
import de.symeda.sormas.api.sample.PCRTestSpecification;
1516
import de.symeda.sormas.api.sample.PathogenTestResultType;
1617
import de.symeda.sormas.api.sample.PathogenTestType;
@@ -130,6 +131,8 @@ public class TestReportDto extends EntityDto {
130131
private String prescriberCity;
131132
@HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG)
132133
private CountryReferenceDto prescriberCountry;
134+
@HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG)
135+
private GenoTypeResult genoTypeResult;
133136

134137
public SampleReportReferenceDto getSampleReport() {
135138
return sampleReport;
@@ -408,4 +411,12 @@ public CountryReferenceDto getPrescriberCountry() {
408411
public void setPrescriberCountry(CountryReferenceDto prescriberCountry) {
409412
this.prescriberCountry = prescriberCountry;
410413
}
414+
415+
public GenoTypeResult getGenoTypeResult() {
416+
return genoTypeResult;
417+
}
418+
419+
public void setGenoTypeResult(GenoTypeResult genoTypeResult) {
420+
this.genoTypeResult = genoTypeResult;
421+
}
411422
}

sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/ExternalMessageMapper.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,12 @@ public List<String[]> mapToPathogenTest(TestReportDto sourceTestReport, Pathogen
334334
pathogenTest::setPrescriberCountry,
335335
pathogenTest.getPrescriberCountry(),
336336
sourceTestReport.getPrescriberCountry(),
337-
PathogenTestDto.PRESCRIBER_COUNTRY))));
337+
PathogenTestDto.PRESCRIBER_COUNTRY),
338+
Mapping.of(
339+
pathogenTest::setGenoTypeResult,
340+
pathogenTest.getGenoTypeResult(),
341+
sourceTestReport.getGenoTypeResult(),
342+
PathogenTestDto.GENOTYPE_RESULT))));
338343
}
339344

340345
changedFields.addAll(

sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,6 +1043,7 @@ public interface Captions {
10431043
String Contact_followUpStatusChangeUser = "Contact.followUpStatusChangeUser";
10441044
String Contact_followUpUntil = "Contact.followUpUntil";
10451045
String Contact_highPriority = "Contact.highPriority";
1046+
String Contact_immuneGlobulinProposed = "Contact.immuneGlobulinProposed";
10461047
String Contact_immunosuppressiveTherapyBasicDisease = "Contact.immunosuppressiveTherapyBasicDisease";
10471048
String Contact_immunosuppressiveTherapyBasicDiseaseDetails = "Contact.immunosuppressiveTherapyBasicDiseaseDetails";
10481049
String Contact_internalToken = "Contact.internalToken";
@@ -1098,6 +1099,9 @@ public interface Captions {
10981099
String Contact_tracingApp = "Contact.tracingApp";
10991100
String Contact_tracingAppDetails = "Contact.tracingAppDetails";
11001101
String Contact_uuid = "Contact.uuid";
1102+
String Contact_vaccinationDoseOneDate = "Contact.vaccinationDoseOneDate";
1103+
String Contact_vaccinationDoseTwoDate = "Contact.vaccinationDoseTwoDate";
1104+
String Contact_vaccinationProposed = "Contact.vaccinationProposed";
11011105
String Contact_vaccinationStatus = "Contact.vaccinationStatus";
11021106
String Contact_visits = "Contact.visits";
11031107
String contactActiveContacts = "contactActiveContacts";
@@ -1556,6 +1560,9 @@ public interface Captions {
15561560
String EpiData_activitiesAsCase = "EpiData.activitiesAsCase";
15571561
String EpiData_activityAsCaseDetailsKnown = "EpiData.activityAsCaseDetailsKnown";
15581562
String EpiData_areaInfectedAnimals = "EpiData.areaInfectedAnimals";
1563+
String EpiData_caseImportedStatus = "EpiData.caseImportedStatus";
1564+
String EpiData_clusterType = "EpiData.clusterType";
1565+
String EpiData_clusterTypeText = "EpiData.clusterTypeText";
15591566
String EpiData_contactWithSourceCaseKnown = "EpiData.contactWithSourceCaseKnown";
15601567
String EpiData_exposureDetailsKnown = "EpiData.exposureDetailsKnown";
15611568
String EpiData_exposures = "EpiData.exposures";
@@ -2228,6 +2235,8 @@ public interface Captions {
22282235
String PathogenTest_externalId = "PathogenTest.externalId";
22292236
String PathogenTest_externalOrderId = "PathogenTest.externalOrderId";
22302237
String PathogenTest_fourFoldIncreaseAntibodyTiter = "PathogenTest.fourFoldIncreaseAntibodyTiter";
2238+
String PathogenTest_genoTypeResult = "PathogenTest.genoTypeResult";
2239+
String PathogenTest_genoTypeResultText = "PathogenTest.genoTypeResultText";
22312240
String PathogenTest_isoniazidResistant = "PathogenTest.isoniazidResistant";
22322241
String PathogenTest_lab = "PathogenTest.lab";
22332242
String PathogenTest_labDetails = "PathogenTest.labDetails";
@@ -2810,6 +2819,7 @@ public interface Captions {
28102819
String Symptoms = "Symptoms";
28112820
String Symptoms_abdominalPain = "Symptoms.abdominalPain";
28122821
String Symptoms_abnormalLungXrayFindings = "Symptoms.abnormalLungXrayFindings";
2822+
String Symptoms_acuteEncephalitis = "Symptoms.acuteEncephalitis";
28132823
String Symptoms_acuteRespiratoryDistressSyndrome = "Symptoms.acuteRespiratoryDistressSyndrome";
28142824
String Symptoms_aerophobia = "Symptoms.aerophobia";
28152825
String Symptoms_agitation = "Symptoms.agitation";
@@ -2997,6 +3007,8 @@ public interface Captions {
29973007
String Symptoms_sidePain = "Symptoms.sidePain";
29983008
String Symptoms_skinBruising = "Symptoms.skinBruising";
29993009
String Symptoms_skinRash = "Symptoms.skinRash";
3010+
String Symptoms_skinRash_lu_MEASLES = "Symptoms.skinRash.lu-MEASLES";
3011+
String Symptoms_skinRashOnsetDate = "Symptoms.skinRashOnsetDate";
30003012
String Symptoms_skinUlcers = "Symptoms.skinUlcers";
30013013
String Symptoms_soreThroat = "Symptoms.soreThroat";
30023014
String Symptoms_splenomegaly = "Symptoms.splenomegaly";

sormas-api/src/main/java/de/symeda/sormas/api/i18n/Strings.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,7 @@ public interface Strings {
498498
String headingClinicalMeasurements = "headingClinicalMeasurements";
499499
String headingClinicalPresentation = "headingClinicalPresentation";
500500
String headingClinicalVisitsDeleted = "headingClinicalVisitsDeleted";
501+
String headingClusterType = "headingClusterType";
501502
String headingComparisonCase = "headingComparisonCase";
502503
String headingCompleteness = "headingCompleteness";
503504
String headingComplications = "headingComplications";
@@ -637,6 +638,7 @@ public interface Strings {
637638
String headingEnvironmentSamplesNotDeleted = "headingEnvironmentSamplesNotDeleted";
638639
String headingEnvironmentSamplesNotRestored = "headingEnvironmentSamplesNotRestored";
639640
String headingEnvironmentSamplesRestored = "headingEnvironmentSamplesRestored";
641+
String headingEpiCaseImport = "headingEpiCaseImport";
640642
String headingEpiCurve = "headingEpiCurve";
641643
String headingEpiDataSourceCaseContacts = "headingEpiDataSourceCaseContacts";
642644
String headingErrorReportNotAvailable = "headingErrorReportNotAvailable";

0 commit comments

Comments
 (0)