Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit 61ea1c0

Browse files
lgallgal
authored andcommitted
SORMAS-Foundation#2959 added case fields for Switzerland
1 parent 431b647 commit 61ea1c0

26 files changed

Lines changed: 885 additions & 68 deletions

File tree

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

Lines changed: 109 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
*******************************************************************************/
1818
package de.symeda.sormas.api.caze;
1919

20+
import java.util.Date;
21+
2022
import de.symeda.sormas.api.Disease;
2123
import de.symeda.sormas.api.ImportIgnore;
2224
import de.symeda.sormas.api.PseudonymizableDto;
@@ -43,15 +45,14 @@
4345
import de.symeda.sormas.api.utils.DataHelper;
4446
import de.symeda.sormas.api.utils.Diseases;
4547
import de.symeda.sormas.api.utils.EmbeddedPersonalData;
48+
import de.symeda.sormas.api.utils.HideForCountries;
4649
import de.symeda.sormas.api.utils.HideForCountriesExcept;
4750
import de.symeda.sormas.api.utils.Outbreaks;
4851
import de.symeda.sormas.api.utils.PersonalData;
4952
import de.symeda.sormas.api.utils.Required;
5053
import de.symeda.sormas.api.utils.SensitiveData;
5154
import de.symeda.sormas.api.utils.YesNoUnknown;
5255

53-
import java.util.Date;
54-
5556
public class CaseDataDto extends PseudonymizableDto {
5657

5758
private static final long serialVersionUID = 5007131477733638086L;
@@ -146,6 +147,16 @@ public class CaseDataDto extends PseudonymizableDto {
146147
public static final String VISITS = "visits";
147148
public static final String FACILITY_TYPE = "facilityType";
148149

150+
public static final String CASE_ID_ISM = "caseIdIsm";
151+
public static final String COVID_TEST_REASON = "covidTestReason";
152+
public static final String COVID_TEST_REASON_DETAILS = "covidTestReasonDetails";
153+
public static final String CONTACT_TRACING_FIRST_CONTACT_TYPE = "contactTracingFirstContactType";
154+
public static final String CONTACT_TRACING_FIRST_CONTACT_DATE = "contactTracingFirstContactDate";
155+
public static final String QUARANTINE_REASON_BEFORE_ISOLATION = "quarantineReasonBeforeIsolation";
156+
public static final String QUARANTINE_REASON_BEFORE_ISOLATION_DETAILS = "quarantineReasonBeforeIsolationDetails";
157+
public static final String END_OF_ISOLATION_REASON = "endOfIsolationReason";
158+
public static final String END_OF_ISOLATION_REASON_DETAILS = "endOfIsolationReasonDetails";
159+
149160
// Fields are declared in the order they should appear in the import template
150161

151162
@Outbreaks
@@ -169,6 +180,7 @@ public class CaseDataDto extends PseudonymizableDto {
169180
@EmbeddedPersonalData
170181
private PersonReferenceDto person;
171182
@Outbreaks
183+
@HideForCountries()
172184
private String epidNumber;
173185
@Outbreaks
174186
@Required
@@ -337,6 +349,7 @@ public class CaseDataDto extends PseudonymizableDto {
337349
private String pointOfEntryDetails;
338350
@SensitiveData
339351
private String additionalDetails;
352+
@HideForCountriesExcept
340353
private String externalID;
341354
private boolean sharedToCountry;
342355
private QuarantineType quarantine;
@@ -390,6 +403,28 @@ public class CaseDataDto extends PseudonymizableDto {
390403
private Date followUpUntil;
391404
private boolean overwriteFollowUpUntil;
392405

406+
@HideForCountriesExcept(countries = "ch")
407+
private Integer caseIdIsm;
408+
@HideForCountriesExcept(countries = "ch")
409+
private CovidTestReason covidTestReason;
410+
@HideForCountriesExcept(countries = "ch")
411+
@SensitiveData
412+
private String covidTestReasonDetails;
413+
@HideForCountriesExcept(countries = "ch")
414+
private ContactTracingContactType contactTracingFirstContactType;
415+
@HideForCountriesExcept(countries = "ch")
416+
private Date contactTracingFirstContactDate;
417+
@HideForCountriesExcept(countries = "ch")
418+
private QuarantineReason quarantineReasonBeforeIsolation;
419+
@HideForCountriesExcept(countries = "ch")
420+
@SensitiveData
421+
private String quarantineReasonBeforeIsolationDetails;
422+
@HideForCountriesExcept(countries = "ch")
423+
private EndOfIsolationReason endOfIsolationReason;
424+
@HideForCountriesExcept(countries = "ch")
425+
@SensitiveData
426+
private String endOfIsolationReasonDetails;
427+
393428
public static CaseDataDto build(PersonReferenceDto person, Disease disease) {
394429
return build(person, disease, null);
395430
}
@@ -1153,4 +1188,76 @@ public FacilityType getFacilityType() {
11531188
public void setFacilityType(FacilityType facilityType) {
11541189
this.facilityType = facilityType;
11551190
}
1191+
1192+
public Integer getCaseIdIsm() {
1193+
return caseIdIsm;
1194+
}
1195+
1196+
public void setCaseIdIsm(Integer caseIdIsm) {
1197+
this.caseIdIsm = caseIdIsm;
1198+
}
1199+
1200+
public CovidTestReason getCovidTestReason() {
1201+
return covidTestReason;
1202+
}
1203+
1204+
public void setCovidTestReason(CovidTestReason covidTestReason) {
1205+
this.covidTestReason = covidTestReason;
1206+
}
1207+
1208+
public String getCovidTestReasonDetails() {
1209+
return covidTestReasonDetails;
1210+
}
1211+
1212+
public void setCovidTestReasonDetails(String covidTestReasonDetails) {
1213+
this.covidTestReasonDetails = covidTestReasonDetails;
1214+
}
1215+
1216+
public ContactTracingContactType getContactTracingFirstContactType() {
1217+
return contactTracingFirstContactType;
1218+
}
1219+
1220+
public void setContactTracingFirstContactType(ContactTracingContactType contactTracingFirstContactType) {
1221+
this.contactTracingFirstContactType = contactTracingFirstContactType;
1222+
}
1223+
1224+
public Date getContactTracingFirstContactDate() {
1225+
return contactTracingFirstContactDate;
1226+
}
1227+
1228+
public void setContactTracingFirstContactDate(Date contactTracingFirstContactDate) {
1229+
this.contactTracingFirstContactDate = contactTracingFirstContactDate;
1230+
}
1231+
1232+
public QuarantineReason getQuarantineReasonBeforeIsolation() {
1233+
return quarantineReasonBeforeIsolation;
1234+
}
1235+
1236+
public void setQuarantineReasonBeforeIsolation(QuarantineReason quarantineReasonBeforeIsolation) {
1237+
this.quarantineReasonBeforeIsolation = quarantineReasonBeforeIsolation;
1238+
}
1239+
1240+
public String getQuarantineReasonBeforeIsolationDetails() {
1241+
return quarantineReasonBeforeIsolationDetails;
1242+
}
1243+
1244+
public void setQuarantineReasonBeforeIsolationDetails(String quarantineReasonBeforeIsolationDetails) {
1245+
this.quarantineReasonBeforeIsolationDetails = quarantineReasonBeforeIsolationDetails;
1246+
}
1247+
1248+
public EndOfIsolationReason getEndOfIsolationReason() {
1249+
return endOfIsolationReason;
1250+
}
1251+
1252+
public void setEndOfIsolationReason(EndOfIsolationReason endOfIsolationReason) {
1253+
this.endOfIsolationReason = endOfIsolationReason;
1254+
}
1255+
1256+
public String getEndOfIsolationReasonDetails() {
1257+
return endOfIsolationReasonDetails;
1258+
}
1259+
1260+
public void setEndOfIsolationReasonDetails(String endOfIsolationReasonDetails) {
1261+
this.endOfIsolationReasonDetails = endOfIsolationReasonDetails;
1262+
}
11561263
}
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-2020 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
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+
16+
package de.symeda.sormas.api.caze;
17+
18+
import de.symeda.sormas.api.i18n.I18nProperties;
19+
20+
public enum ContactTracingContactType {
21+
22+
TELEPHONE,
23+
SMS,
24+
EMAIL;
25+
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-2020 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
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+
16+
package de.symeda.sormas.api.caze;
17+
18+
import de.symeda.sormas.api.i18n.I18nProperties;
19+
20+
public enum CovidTestReason {
21+
22+
PRESENCE_OF_SYMPTOMS,
23+
OUTBREAK_INVESTIGATION_SCREENING,
24+
COHORT_SCREENING,
25+
REQUIREMENT_OF_EMPLOYER,
26+
DURING_QUARANTINE,
27+
AFTER_CONTACT_TRACING,
28+
SWISS_COVID_APP_NOTIFICATION,
29+
OTHER_REASON;
30+
31+
public String toString() {
32+
return I18nProperties.getEnumCaption(this);
33+
}
34+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* SORMAS® - Surveillance Outbreak Response Management & Analysis System
3+
* Copyright © 2016-2020 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
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+
16+
package de.symeda.sormas.api.caze;
17+
18+
import de.symeda.sormas.api.i18n.I18nProperties;
19+
20+
public enum EndOfIsolationReason {
21+
22+
RECOVERED,
23+
DIED,
24+
LOST_TO_FOLLOW_UP,
25+
OTHER;
26+
27+
public String toString() {
28+
return I18nProperties.getEnumCaption(this);
29+
}
30+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* SORMAS® - Surveillance Outbreak Response Management & Analysis System
3+
* Copyright © 2016-2020 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
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+
16+
package de.symeda.sormas.api.caze;
17+
18+
import de.symeda.sormas.api.i18n.I18nProperties;
19+
20+
public enum QuarantineReason {
21+
22+
IDENTIFIED_BY_CONTACT_TRACING,
23+
ENTRY_FROM_RISK_AREA,
24+
SWISS_COVID_APP_NOTIFICATION,
25+
OTHER_REASON;
26+
27+
public String toString() {
28+
return I18nProperties.getEnumCaption(this);
29+
}
30+
}

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ public interface Captions {
162162
String CaseData = "CaseData";
163163
String CaseData_additionalDetails = "CaseData.additionalDetails";
164164
String CaseData_caseClassification = "CaseData.caseClassification";
165+
String CaseData_caseIdIsm = "CaseData.caseIdIsm";
165166
String CaseData_caseOfficer = "CaseData.caseOfficer";
166167
String CaseData_caseOrigin = "CaseData.caseOrigin";
167168
String CaseData_classificationComment = "CaseData.classificationComment";
@@ -176,11 +177,17 @@ public interface Captions {
176177
String CaseData_community = "CaseData.community";
177178
String CaseData_completeness = "CaseData.completeness";
178179
String CaseData_contactOfficer = "CaseData.contactOfficer";
180+
String CaseData_contactTracingFirstContactDate = "CaseData.contactTracingFirstContactDate";
181+
String CaseData_contactTracingFirstContactType = "CaseData.contactTracingFirstContactType";
182+
String CaseData_covidTestReason = "CaseData.covidTestReason";
183+
String CaseData_covidTestReasonDetails = "CaseData.covidTestReasonDetails";
179184
String CaseData_dengueFeverType = "CaseData.dengueFeverType";
180185
String CaseData_diseaseDetails = "CaseData.diseaseDetails";
181186
String CaseData_district = "CaseData.district";
182187
String CaseData_districtLevelDate = "CaseData.districtLevelDate";
183188
String CaseData_doses = "CaseData.doses";
189+
String CaseData_endOfIsolationReason = "CaseData.endOfIsolationReason";
190+
String CaseData_endOfIsolationReasonDetails = "CaseData.endOfIsolationReasonDetails";
184191
String CaseData_epiData = "CaseData.epiData";
185192
String CaseData_epidemiologicalConfirmation = "CaseData.epidemiologicalConfirmation";
186193
String CaseData_epidNumber = "CaseData.epidNumber";
@@ -230,6 +237,8 @@ public interface Captions {
230237
String CaseData_quarantineOrderedOfficialDocumentDate = "CaseData.quarantineOrderedOfficialDocumentDate";
231238
String CaseData_quarantineOrderedVerbally = "CaseData.quarantineOrderedVerbally";
232239
String CaseData_quarantineOrderedVerballyDate = "CaseData.quarantineOrderedVerballyDate";
240+
String CaseData_quarantineReasonBeforeIsolation = "CaseData.quarantineReasonBeforeIsolation";
241+
String CaseData_quarantineReasonBeforeIsolationDetails = "CaseData.quarantineReasonBeforeIsolationDetails";
233242
String CaseData_quarantineReduced = "CaseData.quarantineReduced";
234243
String CaseData_quarantineTo = "CaseData.quarantineTo";
235244
String CaseData_quarantineTypeDetails = "CaseData.quarantineTypeDetails";

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ public interface Strings {
211211
String headingContactsInQuarantine = "headingContactsInQuarantine";
212212
String headingContactsPerCase = "headingContactsPerCase";
213213
String headingContactsPlacedInQuarantine = "headingContactsPlacedInQuarantine";
214+
String headingContactTracingFirstContact = "headingContactTracingFirstContact";
214215
String headingCreateAdditionalTest = "headingCreateAdditionalTest";
215216
String headingCreateCampaignDataForm = "headingCreateCampaignDataForm";
216217
String headingCreateEntry = "headingCreateEntry";

sormas-api/src/main/resources/captions.properties

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,15 @@ CaseData.followUpComment=Follow-up status comment
350350
CaseData.followUpStatus=Follow-up status
351351
CaseData.followUpUntil=Follow-up until
352352
CaseData.overwriteFollowUpUntil=Overwrite follow-up until date
353+
CaseData.caseIdIsm=Case-ID ISM
354+
CaseData.covidTestReason=Reason for COVID-19-Test
355+
CaseData.covidTestReasonDetails=Other reason
356+
CaseData.contactTracingFirstContactType=Type of contact
357+
CaseData.contactTracingFirstContactDate=Date of Contact
358+
CaseData.quarantineReasonBeforeIsolation=Reason why the case was in quarantine before this isolation
359+
CaseData.quarantineReasonBeforeIsolationDetails=Other reason
360+
CaseData.endOfIsolationReason=Reason for end of isolation
361+
CaseData.endOfIsolationReasonDetails=Other reason
353362

354363
# CaseExport
355364
CaseExport.address=Address

sormas-api/src/main/resources/captions_de-CH.properties

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,15 @@ CaseData.followUpComment=Kommentar zum Stand der Nachverfolgung
349349
CaseData.followUpStatus=Stand der Nachverfolgung
350350
CaseData.followUpUntil=Nachverfolgung bis
351351
CaseData.overwriteFollowUpUntil=Enddatum der Nachverfolgung überschreiben
352+
CaseData.caseIdIsm=Fall-ID ISM
353+
CaseData.covidTestReason=Grund für COVID-19-Test
354+
CaseData.covidTestReasonDetails=Anderer Grund für den COVID-19-Test
355+
CaseData.contactTracingFirstContactType=Art des Kontaktes
356+
CaseData.contactTracingFirstContactDate=Datum des Kontaktes
357+
CaseData.quarantineReasonBeforeIsolation=Grund weshalb der COVID-19-Fall vor der Isolation in Quarantäne war
358+
CaseData.quarantineReasonBeforeIsolationDetails=Anderer Grund
359+
CaseData.endOfIsolationReason=Grund des Ende der Isolation
360+
CaseData.endOfIsolationReasonDetails=Anderer Grund
352361

353362
# CaseExport
354363
CaseExport.address=Adresse

sormas-api/src/main/resources/enum.properties

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1070,4 +1070,24 @@ JurisdictionLevel.POINT_OF_ENTRY = Point of entry
10701070

10711071
#CampaignFormElementImportance
10721072
CampaignFormElementImportance.ALL = All columns
1073-
CampaignFormElementImportance.IMPORTANT = Important
1073+
CampaignFormElementImportance.IMPORTANT = Important
1074+
1075+
CovidTestReason.PRESENCE_OF_SYMPTOMS=Presence of symptoms
1076+
CovidTestReason.OUTBREAK_INVESTIGATION_SCREENING=Screening during outbreak investigation
1077+
CovidTestReason.COHORT_SCREENING=Cohort Screening
1078+
CovidTestReason.REQUIREMENT_OF_EMPLOYER=Requirement of employer
1079+
CovidTestReason.DURING_QUARANTINE=During quarantine, as requested by the Canton
1080+
CovidTestReason.AFTER_CONTACT_TRACING=After first contact with Contact Tracing (already symptomatic)
1081+
CovidTestReason.SWISS_COVID_APP_NOTIFICATION=Due to SwissCovidApp notification
1082+
CovidTestReason.OTHER_REASON=Other reason
1083+
ContactTracingContactType.TELEPHONE=Telephone
1084+
ContactTracingContactType.SMS=SMS
1085+
ContactTracingContactType.EMAIL=E-Mail
1086+
QuarantineReason.IDENTIFIED_BY_CONTACT_TRACING=Identified by contact tracing
1087+
QuarantineReason.ENTRY_FROM_RISK_AREA=Entry from risk area
1088+
QuarantineReason.SWISS_COVID_APP_NOTIFICATION=SwissCovidApp notification
1089+
QuarantineReason.OTHER_REASON=Other reason
1090+
EndOfIsolationReason.RECOVERED=Recovered
1091+
EndOfIsolationReason.DIED=Died
1092+
EndOfIsolationReason.LOST_TO_FOLLOW_UP=Lost to Follow-up
1093+
EndOfIsolationReason.OTHER=Other

0 commit comments

Comments
 (0)