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

Commit cc3e4a1

Browse files
author
barnabartha
committed
Merge branch 'development' into feature-2753-CampaignDiagram
# Conflicts: # sormas-backend/src/main/resources/sql/sormas_schema.sql
2 parents 721a5e6 + 267c853 commit cc3e4a1

294 files changed

Lines changed: 7360 additions & 1243 deletions

File tree

Some content is hidden

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

DEVELOPMENT_ENVIRONMENT.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
# SORMAS Development Environment
33

44
## Server
5-
- Install [your local server](SERVER_SETUP.md) or [a more dev specific one](SERVER_DEV_SETUP.md) (Docker is needed to run Postgresql image)
5+
- Install [your local server](SERVER_SETUP.md).
6+
- Alternatively [SERVER_DEV_SETUP.md](SERVER_DEV_SETUP.md) could be used (at this time not recommended)
67

78
## Git
89
- Install [Git for your OS](https://git-scm.com/downloads)

sormas-api/src/main/java/de/symeda/sormas/api/ConfigFacade.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ public interface ConfigFacade {
6868

6969
String getCustomBrandingLogoPath();
7070

71+
boolean isUseLoginSidebar();
72+
73+
String getLoginBackgroundPath();
74+
7175
String getSormasInstanceName();
7276

7377
double getNameSimilarityThreshold();
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
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;
17+
18+
public final class CountryHelper {
19+
20+
public static final String COUNTRY_CODE_GERMANY = "de";
21+
public static final String COUNTRY_CODE_SWITZERLAND = "ch";
22+
23+
}

sormas-api/src/main/java/de/symeda/sormas/api/Language.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public enum Language {
1313
EN(new Locale("en"), "M/d/yyyy", "M/d/yyyy h:mm a", "M/d"),
1414
EN_NG(new Locale("en", "NG"), "dd/MM/yyyy", "dd/MM/yyyy h:mm a", "dd/MM"),
1515
EN_GH(new Locale("en", "GH"), "dd/MM/yyyy", "dd/MM/yyyy h:mm a", "dd/MM"),
16+
EN_AF(new Locale("en", "AF"), "dd/MM/yyyy", "dd/MM/yyyy h:mm a", "dd/MM"),
1617
FR(new Locale("fr", "FR"), "dd/MM/yyyy", "dd/MM/yyyy HH:mm", "dd/MM"),
1718
FR_CH(new Locale("fr", "CH"), "dd/MM/yyyy", "dd/MM/yyyy HH:mm", "dd/MM"),
1819
DE(new Locale("de", "DE"), "dd.MM.yyyy", "dd.MM.yyyy HH:mm", "dd.MM"),

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

Lines changed: 45 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,7 @@
1717
*******************************************************************************/
1818
package de.symeda.sormas.api.caze;
1919

20-
import java.beans.IntrospectionException;
21-
import java.beans.Introspector;
22-
import java.beans.PropertyDescriptor;
23-
import java.lang.reflect.InvocationTargetException;
24-
import java.util.Date;
25-
2620
import de.symeda.sormas.api.Disease;
27-
import de.symeda.sormas.api.EntityDto;
2821
import de.symeda.sormas.api.ImportIgnore;
2922
import de.symeda.sormas.api.PseudonymizableDto;
3023
import de.symeda.sormas.api.caze.maternalhistory.MaternalHistoryDto;
@@ -56,7 +49,8 @@
5649
import de.symeda.sormas.api.utils.Required;
5750
import de.symeda.sormas.api.utils.SensitiveData;
5851
import de.symeda.sormas.api.utils.YesNoUnknown;
59-
import de.symeda.sormas.api.visit.VisitDto;
52+
53+
import java.util.Date;
6054

6155
public class CaseDataDto extends PseudonymizableDto {
6256

@@ -139,6 +133,8 @@ public class CaseDataDto extends PseudonymizableDto {
139133
public static final String QUARANTINE_HOME_SUPPLY_ENSURED = "quarantineHomeSupplyEnsured";
140134
public static final String QUARANTINE_HOME_SUPPLY_ENSURED_COMMENT = "quarantineHomeSupplyEnsuredComment";
141135
public static final String QUARANTINE_EXTENDED = "quarantineExtended";
136+
public static final String QUARANTINE_OFFICIAL_ORDER_SENT = "quarantineOfficialOrderSent";
137+
public static final String QUARANTINE_OFFICIAL_ORDER_SENT_DATE = "quarantineOfficialOrderSentDate";
142138
public static final String REPORTING_TYPE = "reportingType";
143139
public static final String POSTPARTUM = "postpartum";
144140
public static final String TRIMESTER = "trimester";
@@ -349,9 +345,21 @@ public class CaseDataDto extends PseudonymizableDto {
349345
private Date quarantineTo;
350346
@SensitiveData
351347
private String quarantineHelpNeeded;
348+
@HideForCountriesExcept(countries = {
349+
"de",
350+
"ch" })
352351
private boolean quarantineOrderedVerbally;
352+
@HideForCountriesExcept(countries = {
353+
"de",
354+
"ch" })
353355
private boolean quarantineOrderedOfficialDocument;
356+
@HideForCountriesExcept(countries = {
357+
"de",
358+
"ch" })
354359
private Date quarantineOrderedVerballyDate;
360+
@HideForCountriesExcept(countries = {
361+
"de",
362+
"ch" })
355363
private Date quarantineOrderedOfficialDocumentDate;
356364
@HideForCountriesExcept
357365
private YesNoUnknown quarantineHomePossible;
@@ -364,6 +372,14 @@ public class CaseDataDto extends PseudonymizableDto {
364372
@SensitiveData
365373
private String quarantineHomeSupplyEnsuredComment;
366374
private boolean quarantineExtended;
375+
@HideForCountriesExcept(countries = {
376+
"de",
377+
"ch" })
378+
private boolean quarantineOfficialOrderSent;
379+
@HideForCountriesExcept(countries = {
380+
"de",
381+
"ch" })
382+
private Date quarantineOfficialOrderSentDate;
367383
private ReportingType reportingType;
368384
private YesNoUnknown postpartum;
369385
private Trimester trimester;
@@ -401,43 +417,22 @@ public static CaseDataDto build(PersonReferenceDto person, Disease disease, Heal
401417
return caze;
402418
}
403419

404-
public static CaseDataDto buildFromContact(ContactDto contact, VisitDto lastVisit) {
420+
public static CaseDataDto buildFromContact(ContactDto contact) {
405421

406422
CaseDataDto cazeData = CaseDataDto.build(contact.getPerson(), contact.getDisease(), contact.getHealthConditions());
407-
migratesAttributes(contact, cazeData, lastVisit);
423+
migratesAttributes(contact, cazeData);
408424
return cazeData;
409425
}
410426

411-
public static CaseDataDto buildFromUnrelatedContact(ContactDto contact, VisitDto lastVisit, Disease disease) {
427+
public static CaseDataDto buildFromUnrelatedContact(ContactDto contact, Disease disease) {
412428

413429
CaseDataDto cazeData = CaseDataDto.build(contact.getPerson(), disease);
414-
migratesAttributes(contact, cazeData, lastVisit);
430+
migratesAttributes(contact, cazeData);
415431
return cazeData;
416432
}
417433

418-
private static void migratesAttributes(ContactDto contact, CaseDataDto cazeData, VisitDto lastVisit) {
434+
private static void migratesAttributes(ContactDto contact, CaseDataDto cazeData) {
419435
cazeData.setEpiData(contact.getEpiData());
420-
SymptomsDto newSymptoms = cazeData.getSymptoms();
421-
if (lastVisit != null) {
422-
SymptomsDto oldSymptoms = lastVisit.getSymptoms();
423-
424-
try {
425-
// reflection to call the setters of the new symptoms object with the getters
426-
// from the one in the visit
427-
for (PropertyDescriptor pd : Introspector.getBeanInfo(SymptomsDto.class, EntityDto.class).getPropertyDescriptors()) {
428-
if (pd.getWriteMethod() != null) {
429-
try {
430-
pd.getWriteMethod().invoke(newSymptoms, pd.getReadMethod().invoke(oldSymptoms));
431-
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
432-
throw new RuntimeException(e);
433-
}
434-
}
435-
}
436-
} catch (IntrospectionException e) {
437-
throw new RuntimeException(e);
438-
}
439-
}
440-
cazeData.setSymptoms(newSymptoms);
441436
}
442437

443438
public static CaseDataDto buildFromEventParticipant(EventParticipantDto eventParticipant, Disease eventDisease) {
@@ -1069,6 +1064,22 @@ public void setQuarantineExtended(boolean quarantineExtended) {
10691064
this.quarantineExtended = quarantineExtended;
10701065
}
10711066

1067+
public boolean isQuarantineOfficialOrderSent() {
1068+
return quarantineOfficialOrderSent;
1069+
}
1070+
1071+
public void setQuarantineOfficialOrderSent(boolean quarantineOfficialOrderSent) {
1072+
this.quarantineOfficialOrderSent = quarantineOfficialOrderSent;
1073+
}
1074+
1075+
public Date getQuarantineOfficialOrderSentDate() {
1076+
return quarantineOfficialOrderSentDate;
1077+
}
1078+
1079+
public void setQuarantineOfficialOrderSentDate(Date quarantineOfficialOrderSentDate) {
1080+
this.quarantineOfficialOrderSentDate = quarantineOfficialOrderSentDate;
1081+
}
1082+
10721083
public ReportingType getReportingType() {
10731084
return reportingType;
10741085
}

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

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

20-
import java.io.Serializable;
21-
import java.util.ArrayList;
22-
import java.util.Date;
23-
import java.util.List;
24-
2520
import de.symeda.sormas.api.Disease;
2621
import de.symeda.sormas.api.DiseaseHelper;
2722
import de.symeda.sormas.api.clinicalcourse.ClinicalCourseDto;
@@ -59,6 +54,11 @@
5954
import de.symeda.sormas.api.utils.pseudonymization.Pseudonymizer;
6055
import de.symeda.sormas.api.utils.pseudonymization.valuepseudonymizers.PostalCodePseudonymizer;
6156

57+
import java.io.Serializable;
58+
import java.util.ArrayList;
59+
import java.util.Date;
60+
import java.util.List;
61+
6262
/**
6363
* A DTO class that contains the properties that are exported during a detailed case export. These
6464
* properties are also those that users can select when creating a custom export configuration.
@@ -202,6 +202,8 @@ public class CaseExportDto implements Serializable {
202202
private Date quarantineOrderedVerballyDate;
203203
private Date quarantineOrderedOfficialDocumentDate;
204204
private boolean quarantineExtended;
205+
private boolean quarantineOfficialOrderSent;
206+
private Date quarantineOfficialOrderSentDate;
205207

206208
private YesNoUnknown postpartum;
207209
private Trimester trimester;
@@ -230,6 +232,7 @@ public CaseExportDto(long id, long personId, long personAddressId, long epiDataI
230232
QuarantineType quarantine, String quarantineTypeDetails, Date quarantineFrom, Date quarantineTo,
231233
boolean quarantineOrderedVerbally, boolean quarantineOrderedOfficialDocument, Date quarantineOrderedVerballyDate,
232234
Date quarantineOrderedOfficialDocumentDate, boolean quarantineExtended,
235+
boolean quarantineOfficialOrderSent, Date quarantineOfficialOrderSentDate,
233236
YesNoUnknown admittedToHealthFacility, Date admissionDate, Date dischargeDate, YesNoUnknown leftAgainstAdvice, PresentCondition presentCondition,
234237
Date deathDate, Date burialDate, BurialConductor burialConductor, String burialPlaceDescription,
235238
String addressRegion, String addressDistrict, String city, String street, String houseNumber, String additionalInformation, String postalCode,
@@ -277,6 +280,8 @@ public CaseExportDto(long id, long personId, long personAddressId, long epiDataI
277280
this.quarantineOrderedVerballyDate = quarantineOrderedVerballyDate;
278281
this.quarantineOrderedOfficialDocumentDate = quarantineOrderedOfficialDocumentDate;
279282
this.quarantineExtended = quarantineExtended;
283+
this.quarantineOfficialOrderSent = quarantineOfficialOrderSent;
284+
this.quarantineOfficialOrderSentDate = quarantineOfficialOrderSentDate;
280285
this.healthFacility = FacilityHelper.buildFacilityString(healthFacilityUuid, healthFacility, healthFacilityDetails);
281286
this.pointOfEntry = InfrastructureHelper.buildPointOfEntryString(pointOfEntryUuid, pointOfEntry, pointOfEntryDetails);
282287
this.admittedToHealthFacility = admittedToHealthFacility;
@@ -633,7 +638,9 @@ public Date getQuarantineTo() {
633638
CaseExportType.CASE_MANAGEMENT })
634639
@ExportProperty(value = QUARANTINE_INFORMATION, combined = true)
635640
@ExportGroup(ExportGroupType.ADDITIONAL)
636-
@HideForCountriesExcept
641+
@HideForCountriesExcept(countries = {
642+
"de",
643+
"ch" })
637644
public boolean isQuarantineOrderedVerbally() {
638645
return quarantineOrderedVerbally;
639646
}
@@ -644,7 +651,9 @@ public boolean isQuarantineOrderedVerbally() {
644651
CaseExportType.CASE_MANAGEMENT })
645652
@ExportProperty(value = QUARANTINE_INFORMATION, combined = true)
646653
@ExportGroup(ExportGroupType.ADDITIONAL)
647-
@HideForCountriesExcept
654+
@HideForCountriesExcept(countries = {
655+
"de",
656+
"ch" })
648657
public boolean isQuarantineOrderedOfficialDocument() {
649658
return quarantineOrderedOfficialDocument;
650659
}
@@ -655,7 +664,9 @@ public boolean isQuarantineOrderedOfficialDocument() {
655664
CaseExportType.CASE_MANAGEMENT })
656665
@ExportProperty(value = QUARANTINE_INFORMATION, combined = true)
657666
@ExportGroup(ExportGroupType.ADDITIONAL)
658-
@HideForCountriesExcept
667+
@HideForCountriesExcept(countries = {
668+
"de",
669+
"ch" })
659670
public Date getQuarantineOrderedVerballyDate() {
660671
return quarantineOrderedVerballyDate;
661672
}
@@ -666,7 +677,9 @@ public Date getQuarantineOrderedVerballyDate() {
666677
CaseExportType.CASE_MANAGEMENT })
667678
@ExportProperty(value = QUARANTINE_INFORMATION, combined = true)
668679
@ExportGroup(ExportGroupType.ADDITIONAL)
669-
@HideForCountriesExcept
680+
@HideForCountriesExcept(countries = {
681+
"de",
682+
"ch" })
670683
public Date getQuarantineOrderedOfficialDocumentDate() {
671684
return quarantineOrderedOfficialDocumentDate;
672685
}
@@ -677,11 +690,37 @@ public Date getQuarantineOrderedOfficialDocumentDate() {
677690
CaseExportType.CASE_MANAGEMENT })
678691
@ExportProperty(value = QUARANTINE_INFORMATION, combined = true)
679692
@ExportGroup(ExportGroupType.ADDITIONAL)
693+
@HideForCountriesExcept(countries = {
694+
"de",
695+
"ch" })
696+
public boolean isQuarantineOfficialOrderSent() {
697+
return quarantineOfficialOrderSent;
698+
}
699+
700+
@Order(42)
701+
@ExportTarget(caseExportTypes = {
702+
CaseExportType.CASE_SURVEILLANCE,
703+
CaseExportType.CASE_MANAGEMENT })
704+
@ExportProperty(value = QUARANTINE_INFORMATION, combined = true)
705+
@ExportGroup(ExportGroupType.ADDITIONAL)
706+
@HideForCountriesExcept(countries = {
707+
"de",
708+
"ch" })
709+
public Date getQuarantineOfficialOrderSentDate() {
710+
return quarantineOfficialOrderSentDate;
711+
}
712+
713+
@Order(43)
714+
@ExportTarget(caseExportTypes = {
715+
CaseExportType.CASE_SURVEILLANCE,
716+
CaseExportType.CASE_MANAGEMENT })
717+
@ExportProperty(value = QUARANTINE_INFORMATION, combined = true)
718+
@ExportGroup(ExportGroupType.ADDITIONAL)
680719
public boolean isQuarantineExtended() {
681720
return quarantineExtended;
682721
}
683722

684-
@Order(42)
723+
@Order(44)
685724
@ExportTarget(caseExportTypes = {
686725
CaseExportType.CASE_SURVEILLANCE })
687726
@ExportProperty(MAX_SOURCE_CASE_CLASSIFICATION)
@@ -690,7 +729,7 @@ public CaseClassification getMaxSourceCaseClassification() {
690729
return maxSourceCaseClassification;
691730
}
692731

693-
@Order(43)
732+
@Order(45)
694733
@ExportTarget(caseExportTypes = {
695734
CaseExportType.CASE_SURVEILLANCE })
696735
@ExportProperty(ASSOCIATED_WITH_OUTBREAK)
@@ -703,7 +742,7 @@ public void setMaxSourceCaseClassification(CaseClassification maxSourceCaseClass
703742
this.maxSourceCaseClassification = maxSourceCaseClassification;
704743
}
705744

706-
@Order(44)
745+
@Order(46)
707746
@ExportTarget(caseExportTypes = {
708747
CaseExportType.CASE_SURVEILLANCE,
709748
CaseExportType.CASE_MANAGEMENT })
@@ -713,7 +752,7 @@ public YesNoUnknown getAdmittedToHealthFacility() {
713752
return admittedToHealthFacility;
714753
}
715754

716-
@Order(45)
755+
@Order(47)
717756
@ExportTarget(caseExportTypes = {
718757
CaseExportType.CASE_SURVEILLANCE,
719758
CaseExportType.CASE_MANAGEMENT })
@@ -723,7 +762,7 @@ public Date getAdmissionDate() {
723762
return admissionDate;
724763
}
725764

726-
@Order(46)
765+
@Order(48)
727766
@ExportTarget(caseExportTypes = {
728767
CaseExportType.CASE_SURVEILLANCE,
729768
CaseExportType.CASE_MANAGEMENT })
@@ -737,7 +776,7 @@ public void setDischargeDate(Date dischargeDate) {
737776
this.dischargeDate = dischargeDate;
738777
}
739778

740-
@Order(47)
779+
@Order(49)
741780
@ExportTarget(caseExportTypes = {
742781
CaseExportType.CASE_SURVEILLANCE,
743782
CaseExportType.CASE_MANAGEMENT })

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ List<CaseExportDto> getExportList(
7070

7171
void setSampleAssociations(EventParticipantReferenceDto sourceEventParticipant, CaseReferenceDto cazeRef);
7272

73+
void setSampleAssociationsUnrelatedDisease(EventParticipantReferenceDto sourceEventParticipant, CaseReferenceDto cazeRef);
74+
7375
void validate(CaseDataDto dto) throws ValidationRuntimeException;
7476

7577
CaseReferenceDto getReferenceByUuid(String uuid);

0 commit comments

Comments
 (0)