Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#2725 added SwissCOVID-App fields #2801

Merged
merged 1 commit into from
Sep 4, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -989,6 +989,7 @@ public interface Captions {
String Person_causeOfDeathDetails = "Person.causeOfDeathDetails";
String Person_causeOfDeathDisease = "Person.causeOfDeathDisease";
String Person_causeOfDeathDiseaseDetails = "Person.causeOfDeathDiseaseDetails";
String Person_covidCodeDelivered = "Person.covidCodeDelivered";
String Person_deathDate = "Person.deathDate";
String Person_deathPlaceDescription = "Person.deathPlaceDescription";
String Person_deathPlaceType = "Person.deathPlaceType";
Expand All @@ -999,6 +1000,7 @@ public interface Captions {
String Person_fathersName = "Person.fathersName";
String Person_generalPractitionerDetails = "Person.generalPractitionerDetails";
String Person_gestationAgeAtBirth = "Person.gestationAgeAtBirth";
String Person_hasCovidApp = "Person.hasCovidApp";
String Person_healthcare_occupationDetails = "Person.healthcare.occupationDetails";
String Person_lastDisease = "Person.lastDisease";
String Person_matchingCase = "Person.matchingCase";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import de.symeda.sormas.api.utils.Diseases;
import de.symeda.sormas.api.utils.EmbeddedPersonalData;
import de.symeda.sormas.api.utils.EmbeddedSensitiveData;
import de.symeda.sormas.api.utils.HideForCountriesExcept;
import de.symeda.sormas.api.utils.Outbreaks;
import de.symeda.sormas.api.utils.PersonalData;
import de.symeda.sormas.api.utils.Required;
Expand Down Expand Up @@ -107,6 +108,9 @@ public class PersonDto extends PseudonymizableDto {

public static final String SYMPTOM_JOURNAL_STATUS = "symptomJournalStatus";

public static final String HAS_COVID_APP = "hasCovidApp";
public static final String COVID_CODE_DELIVERED = "covidCodeDelivered";

// Fields are declared in the order they should appear in the import template

@Outbreaks
Expand Down Expand Up @@ -265,6 +269,13 @@ public class PersonDto extends PseudonymizableDto {
private String nationalHealthId;
private List<LocationDto> addresses = new ArrayList<>();

@Diseases(Disease.CORONAVIRUS)
@HideForCountriesExcept(countries = "ch")
private boolean hasCovidApp;
@Diseases(Disease.CORONAVIRUS)
@HideForCountriesExcept(countries = "ch")
private boolean covidCodeDelivered;

private SymptomJournalStatus symptomJournalStatus;

public Integer getBirthdateDD() {
Expand Down Expand Up @@ -668,6 +679,22 @@ public void setSymptomJournalStatus(SymptomJournalStatus symptomJournalStatus) {
this.symptomJournalStatus = symptomJournalStatus;
}

public boolean isHasCovidApp() {
return hasCovidApp;
}

public void setHasCovidApp(boolean hasCovidApp) {
this.hasCovidApp = hasCovidApp;
}

public boolean isCovidCodeDelivered() {
return covidCodeDelivered;
}

public void setCovidCodeDelivered(boolean covidCodeDelivered) {
this.covidCodeDelivered = covidCodeDelivered;
}

@Override
public String toString() {
return buildCaption(firstName, lastName);
Expand Down
2 changes: 2 additions & 0 deletions sormas-api/src/main/resources/captions.properties
Original file line number Diff line number Diff line change
Expand Up @@ -1148,6 +1148,8 @@ Person.emailAddress=Email address
Person.passportNumber=Passport number
Person.nationalHealthId=National health ID
Person.uuid=Person ID
Person.hasCovidApp=Has COVID app
Person.covidCodeDelivered=COVID code was generated and delivered

pointOfEntryActivePointsOfEntry=Active points of entry
pointOfEntryArchivedPointsOfEntry=Archived points of entry
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,10 @@
import de.symeda.sormas.api.person.DeathPlaceType;
import de.symeda.sormas.api.person.EducationType;
import de.symeda.sormas.api.person.OccupationType;
import de.symeda.sormas.api.person.SymptomJournalStatus;
import de.symeda.sormas.api.person.PersonDto;
import de.symeda.sormas.api.person.PresentCondition;
import de.symeda.sormas.api.person.Sex;
import de.symeda.sormas.api.person.SymptomJournalStatus;
import de.symeda.sormas.backend.common.AbstractDomainObject;
import de.symeda.sormas.backend.facility.Facility;
import de.symeda.sormas.backend.location.Location;
Expand Down Expand Up @@ -172,6 +172,9 @@ public class Person extends AbstractDomainObject {

private SymptomJournalStatus symptomJournalStatus;

private boolean hasCovidApp;
private boolean covidCodeDelivered;

@Column(nullable = false, length = COLUMN_LENGTH_DEFAULT)
public String getFirstName() {
return firstName;
Expand Down Expand Up @@ -625,6 +628,24 @@ public void setSymptomJournalStatus(SymptomJournalStatus symptomJournalStatus) {
this.symptomJournalStatus = symptomJournalStatus;
}

@Column
public boolean isHasCovidApp() {
return hasCovidApp;
}

public void setHasCovidApp(boolean hasCovidApp) {
this.hasCovidApp = hasCovidApp;
}

@Column
public boolean isCovidCodeDelivered() {
return covidCodeDelivered;
}

public void setCovidCodeDelivered(boolean covidCodeDelivered) {
this.covidCodeDelivered = covidCodeDelivered;
}

@Override
public String toString() {
return PersonDto.buildCaption(firstName, lastName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -487,6 +487,9 @@ public Person fillOrBuildEntity(@NotNull PersonDto source, Person target) {
target.setPlaceOfBirthFacilityType(source.getPlaceOfBirthFacilityType());
target.setSymptomJournalStatus(source.getSymptomJournalStatus());

target.setHasCovidApp(source.isHasCovidApp());
target.setCovidCodeDelivered(source.isCovidCodeDelivered());

return target;
}

Expand Down Expand Up @@ -647,6 +650,9 @@ public static PersonDto toDto(Person source) {
target.setPlaceOfBirthFacilityType(source.getPlaceOfBirthFacilityType());
target.setSymptomJournalStatus(source.getSymptomJournalStatus());

target.setHasCovidApp(source.isHasCovidApp());
target.setCovidCodeDelivered(source.isCovidCodeDelivered());

return target;
}

Expand Down
9 changes: 9 additions & 0 deletions sormas-backend/src/main/resources/sql/sormas_schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -5223,4 +5223,13 @@ ALTER TABLE person_history ADD COLUMN symptomjournalstatus varchar(255);

INSERT INTO schema_version (version_number, comment) VALUES (246, 'Add SymptomJournalStatus to allow status exchange with external journals. #1970');

-- 2020-09-03 - Add "Has COVID app" and "COVID Code generated and delivered" fields on person
ALTER TABLE person ADD COLUMN hasCovidApp boolean DEFAULT false;
ALTER TABLE person_history ADD COLUMN hasCovidApp boolean DEFAULT false;

ALTER TABLE person ADD COLUMN covidCodeDelivered boolean DEFAULT false;
ALTER TABLE person_history ADD COLUMN covidCodeDelivered boolean DEFAULT false;

INSERT INTO schema_version (version_number, comment) VALUES (247, 'SwissCOVID-App fields (for Switzerland and COVID only), #2725');

-- *** Insert new sql commands BEFORE this line ***
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
import de.symeda.sormas.api.utils.DataHelper.Pair;
import de.symeda.sormas.api.utils.DateHelper;
import de.symeda.sormas.api.utils.fieldvisibility.FieldVisibilityCheckers;
import de.symeda.sormas.api.utils.fieldvisibility.checkers.CountryFieldVisibilityChecker;
import de.symeda.sormas.ui.location.LocationEditForm;
import de.symeda.sormas.ui.utils.AbstractEditForm;
import de.symeda.sormas.ui.utils.ApproximateAgeValidator;
Expand Down Expand Up @@ -135,6 +136,8 @@ public class PersonEditForm extends AbstractEditForm<PersonDto> {
) +
fluidRowLocs(PersonDto.PASSPORT_NUMBER, PersonDto.NATIONAL_HEALTH_ID) +

fluidRowLocs(PersonDto.HAS_COVID_APP, PersonDto.COVID_CODE_DELIVERED) +

loc(OCCUPATION_HEADER) +
divsCss(VSPACE_3,
fluidRowLocs(PersonDto.OCCUPATION_TYPE, PersonDto.OCCUPATION_DETAILS),
Expand Down Expand Up @@ -164,7 +167,9 @@ public PersonEditForm(Disease disease, String diseaseDetails, ViewMode viewMode,
PersonDto.class,
PersonDto.I18N_PREFIX,
false,
FieldVisibilityCheckers.withDisease(disease).add(new OutbreakFieldVisibilityChecker(viewMode)),
FieldVisibilityCheckers.withDisease(disease)
.add(new OutbreakFieldVisibilityChecker(viewMode))
.add(new CountryFieldVisibilityChecker(FacadeProvider.getConfigFacade().getCountryLocale())),
UiFieldAccessCheckers.withCheckers(
isInJurisdiction,
FieldHelper.createPersonalDataFieldAccessChecker(),
Expand Down Expand Up @@ -256,6 +261,9 @@ protected void addFields() {
PersonDto.PASSPORT_NUMBER,
PersonDto.NATIONAL_HEALTH_ID);

addField(PersonDto.HAS_COVID_APP).addStyleName(CssStyles.FORCE_CAPTION_CHECKBOX);
addField(PersonDto.COVID_CODE_DELIVERED).addStyleName(CssStyles.FORCE_CAPTION_CHECKBOX);

ComboBox cbPlaceOfBirthRegion = addInfrastructureField(PersonDto.PLACE_OF_BIRTH_REGION);
ComboBox cbPlaceOfBirthDistrict = addInfrastructureField(PersonDto.PLACE_OF_BIRTH_DISTRICT);
ComboBox cbPlaceOfBirthCommunity = addInfrastructureField(PersonDto.PLACE_OF_BIRTH_COMMUNITY);
Expand Down