diff --git a/sormas-api/pom.xml b/sormas-api/pom.xml
index 3096708844c..8c30a302954 100644
--- a/sormas-api/pom.xml
+++ b/sormas-api/pom.xml
@@ -2,7 +2,7 @@
de.symeda.sormas
sormas-base
- 1.99.0-SNAPSHOT
+ 1.101.0-SNAPSHOT
../sormas-base
4.0.0
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/ConfigFacade.java b/sormas-api/src/main/java/de/symeda/sormas/api/ConfigFacade.java
index a27d409517e..415200b29e2 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/ConfigFacade.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/ConfigFacade.java
@@ -161,4 +161,6 @@ public interface ConfigFacade {
CaseClassificationCalculationMode getCaseClassificationCalculationMode(Disease disease);
boolean isAnyCaseClassificationCalculationEnabled();
+
+ Integer getNegaiveCovidTestsMaxAgeDays();
}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/Disease.java b/sormas-api/src/main/java/de/symeda/sormas/api/Disease.java
index e1c5c9f7349..f257bcbe37b 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/Disease.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/Disease.java
@@ -69,8 +69,9 @@ public enum Disease
YAWS_ENDEMIC_SYPHILIS(true, false, false, true, false, 0, true, false, false),
MATERNAL_DEATHS(true, false, false, true, false, 0, true, false, false),
PERINATAL_DEATHS(true, false, false, true, false, 0, true, false, false),
- INFLUENZA_A(true, false, true, false, false, 0, true, false, false),
- INFLUENZA_B(true, false, true, false, false, 0, true, false, false),
+ INFLUENZA(true, true, true, false, false, 0, true, false, false),
+ INFLUENZA_A(false, false, true, false, false, 0, true, false, false),
+ INFLUENZA_B(false, false, true, false, false, 0, true, false, false),
H_METAPNEUMOVIRUS(true, false, true, false, false, 0, true, false, false),
RESPIRATORY_SYNCYTIAL_VIRUS(true, false, true, false, false, 0, true, false, false),
PARAINFLUENZA_1_4(true, false, true, false, false, 0, true, false, false),
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/FacadeProvider.java b/sormas-api/src/main/java/de/symeda/sormas/api/FacadeProvider.java
index e731a9dd8e0..bf85edda351 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/FacadeProvider.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/FacadeProvider.java
@@ -19,6 +19,8 @@
import javax.naming.NamingException;
import de.symeda.sormas.api.action.ActionFacade;
+import de.symeda.sormas.api.adverseeventsfollowingimmunization.AefiFacade;
+import de.symeda.sormas.api.adverseeventsfollowingimmunization.AefiInvestigationFacade;
import de.symeda.sormas.api.audit.AuditLoggerFacade;
import de.symeda.sormas.api.bagexport.BAGExportFacade;
import de.symeda.sormas.api.campaign.CampaignFacade;
@@ -38,6 +40,7 @@
import de.symeda.sormas.api.contact.ContactFacade;
import de.symeda.sormas.api.customizableenum.CustomizableEnumFacade;
import de.symeda.sormas.api.dashboard.DashboardFacade;
+import de.symeda.sormas.api.dashboard.adverseeventsfollowingimmunization.AefiDashboardFacade;
import de.symeda.sormas.api.dashboard.sample.SampleDashboardFacade;
import de.symeda.sormas.api.deletionconfiguration.DeletionConfigurationFacade;
import de.symeda.sormas.api.disease.DiseaseConfigurationFacade;
@@ -148,6 +151,14 @@ public static ImmunizationFacade getImmunizationFacade() {
return get().lookupEjbRemote(ImmunizationFacade.class);
}
+ public static AefiFacade getAefiFacade() {
+ return get().lookupEjbRemote(AefiFacade.class);
+ }
+
+ public static AefiInvestigationFacade getAefiInvestigationFacade() {
+ return get().lookupEjbRemote(AefiInvestigationFacade.class);
+ }
+
public static VaccinationFacade getVaccinationFacade() {
return get().lookupEjbRemote(VaccinationFacade.class);
}
@@ -320,6 +331,10 @@ public static SampleDashboardFacade getSampleDashboardFacade() {
return get().lookupEjbRemote(SampleDashboardFacade.class);
}
+ public static AefiDashboardFacade getAefiDashboardFacade() {
+ return get().lookupEjbRemote(AefiDashboardFacade.class);
+ }
+
public static DiseaseConfigurationFacade getDiseaseConfigurationFacade() {
return get().lookupEjbRemote(DiseaseConfigurationFacade.class);
}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AdverseEventState.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AdverseEventState.java
new file mode 100644
index 00000000000..73d64393393
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AdverseEventState.java
@@ -0,0 +1,33 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum AdverseEventState {
+
+ YES,
+ NO,
+ UNKNOWN;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AdverseEventsDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AdverseEventsDto.java
new file mode 100644
index 00000000000..94551919c89
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AdverseEventsDto.java
@@ -0,0 +1,186 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.feature.FeatureType;
+import de.symeda.sormas.api.utils.DataHelper;
+import de.symeda.sormas.api.utils.DependingOnFeatureType;
+import de.symeda.sormas.api.utils.Order;
+import de.symeda.sormas.api.utils.pseudonymization.PseudonymizableDto;
+
+@DependingOnFeatureType(featureType = {
+ FeatureType.IMMUNIZATION_MANAGEMENT,
+ FeatureType.ADVERSE_EVENTS_FOLLOWING_IMMUNIZATION_MANAGEMENT })
+public class AdverseEventsDto extends PseudonymizableDto {
+
+ private static final long serialVersionUID = 8081578717541472008L;
+
+ public static final String I18N_PREFIX = "AdverseEvents";
+
+ public static final String SEVERE_LOCAL_REACTION = "severeLocalReaction";
+ public static final String SEVERE_LOCAL_REACTION_MORE_THAN_THREE_DAYS = "severeLocalReactionMoreThanThreeDays";
+ public static final String SEVERE_LOCAL_REACTION_BEYOND_NEAREST_JOINT = "severeLocalReactionBeyondNearestJoint";
+ public static final String SEIZURES = "seizures";
+ public static final String SEIZURE_TYPE = "seizureType";
+ public static final String ABSCESS = "abscess";
+ public static final String SEPSIS = "sepsis";
+ public static final String ENCEPHALOPATHY = "encephalopathy";
+ public static final String TOXIC_SHOCK_SYNDROME = "toxicShockSyndrome";
+ public static final String THROMBOCYTOPENIA = "thrombocytopenia";
+ public static final String ANAPHYLAXIS = "anaphylaxis";
+ public static final String FEVERISH_FEELING = "feverishFeeling";
+ public static final String OTHER_ADVERSE_EVENT_DETAILS = "otherAdverseEventDetails";
+
+ private AdverseEventState severeLocalReaction;
+ private boolean severeLocalReactionMoreThanThreeDays;
+ private boolean severeLocalReactionBeyondNearestJoint;
+ private AdverseEventState seizures;
+ private SeizureType seizureType;
+ private AdverseEventState abscess;
+ private AdverseEventState sepsis;
+ private AdverseEventState encephalopathy;
+ private AdverseEventState toxicShockSyndrome;
+ private AdverseEventState thrombocytopenia;
+ private AdverseEventState anaphylaxis;
+ private AdverseEventState feverishFeeling;
+ private String otherAdverseEventDetails;
+
+ public static AdverseEventsDto build() {
+ AdverseEventsDto adverseEvents = new AdverseEventsDto();
+ adverseEvents.setUuid(DataHelper.createUuid());
+ return adverseEvents;
+ }
+
+ @Order(1)
+ public AdverseEventState getSevereLocalReaction() {
+ return severeLocalReaction;
+ }
+
+ public void setSevereLocalReaction(AdverseEventState severeLocalReaction) {
+ this.severeLocalReaction = severeLocalReaction;
+ }
+
+ @Order(2)
+ public boolean isSevereLocalReactionMoreThanThreeDays() {
+ return severeLocalReactionMoreThanThreeDays;
+ }
+
+ public void setSevereLocalReactionMoreThanThreeDays(boolean severeLocalReactionMoreThanThreeDays) {
+ this.severeLocalReactionMoreThanThreeDays = severeLocalReactionMoreThanThreeDays;
+ }
+
+ @Order(3)
+ public boolean isSevereLocalReactionBeyondNearestJoint() {
+ return severeLocalReactionBeyondNearestJoint;
+ }
+
+ public void setSevereLocalReactionBeyondNearestJoint(boolean severeLocalReactionBeyondNearestJoint) {
+ this.severeLocalReactionBeyondNearestJoint = severeLocalReactionBeyondNearestJoint;
+ }
+
+ @Order(4)
+ public AdverseEventState getSeizures() {
+ return seizures;
+ }
+
+ public void setSeizures(AdverseEventState seizures) {
+ this.seizures = seizures;
+ }
+
+ @Order(5)
+ public SeizureType getSeizureType() {
+ return seizureType;
+ }
+
+ public void setSeizureType(SeizureType seizureType) {
+ this.seizureType = seizureType;
+ }
+
+ @Order(6)
+ public AdverseEventState getAbscess() {
+ return abscess;
+ }
+
+ public void setAbscess(AdverseEventState abscess) {
+ this.abscess = abscess;
+ }
+
+ @Order(7)
+ public AdverseEventState getSepsis() {
+ return sepsis;
+ }
+
+ public void setSepsis(AdverseEventState sepsis) {
+ this.sepsis = sepsis;
+ }
+
+ @Order(7)
+ public AdverseEventState getEncephalopathy() {
+ return encephalopathy;
+ }
+
+ public void setEncephalopathy(AdverseEventState encephalopathy) {
+ this.encephalopathy = encephalopathy;
+ }
+
+ @Order(8)
+ public AdverseEventState getToxicShockSyndrome() {
+ return toxicShockSyndrome;
+ }
+
+ public void setToxicShockSyndrome(AdverseEventState toxicShockSyndrome) {
+ this.toxicShockSyndrome = toxicShockSyndrome;
+ }
+
+ @Order(9)
+ public AdverseEventState getThrombocytopenia() {
+ return thrombocytopenia;
+ }
+
+ public void setThrombocytopenia(AdverseEventState thrombocytopenia) {
+ this.thrombocytopenia = thrombocytopenia;
+ }
+
+ @Order(10)
+ public AdverseEventState getAnaphylaxis() {
+ return anaphylaxis;
+ }
+
+ public void setAnaphylaxis(AdverseEventState anaphylaxis) {
+ this.anaphylaxis = anaphylaxis;
+ }
+
+ @Order(11)
+ public AdverseEventState getFeverishFeeling() {
+ return feverishFeeling;
+ }
+
+ public void setFeverishFeeling(AdverseEventState feverishFeeling) {
+ this.feverishFeeling = feverishFeeling;
+ }
+
+ @Order(12)
+ public String getOtherAdverseEventDetails() {
+ return otherAdverseEventDetails;
+ }
+
+ public void setOtherAdverseEventDetails(String otherAdverseEventDetails) {
+ this.otherAdverseEventDetails = otherAdverseEventDetails;
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiAgeGroup.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiAgeGroup.java
new file mode 100644
index 00000000000..4e57132ea70
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiAgeGroup.java
@@ -0,0 +1,35 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum AefiAgeGroup {
+
+ ZERO_TO_ONE,
+ ONE_TO_FIVE,
+ FIVE_TO_EIGHTEEN,
+ EIGHTEEN_TO_SIXTY,
+ SIXY_AND_ABOVE;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiCausality.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiCausality.java
new file mode 100644
index 00000000000..c29b81af2a7
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiCausality.java
@@ -0,0 +1,29 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum AefiCausality {
+
+ CONFIRMED,
+ INCONCLUSIVE;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiClassification.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiClassification.java
new file mode 100644
index 00000000000..8f8771c4c18
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiClassification.java
@@ -0,0 +1,30 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum AefiClassification {
+
+ RELATED_TO_VACCINE_OR_VACCINATION,
+ COINCIDENTAL_ADVERSE_EVENT,
+ UNDETERMINED;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiClassificationSubType.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiClassificationSubType.java
new file mode 100644
index 00000000000..e94d6a7010b
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiClassificationSubType.java
@@ -0,0 +1,39 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import static de.symeda.sormas.api.adverseeventsfollowingimmunization.AefiClassification.RELATED_TO_VACCINE_OR_VACCINATION;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum AefiClassificationSubType {
+
+ VACCINE_PRODUCT_RELATED(RELATED_TO_VACCINE_OR_VACCINATION),
+ VACCINE_QUALITY_DEFECT_RELATED(RELATED_TO_VACCINE_OR_VACCINATION),
+ IMMUNIZATION_ERROR_RELATED(RELATED_TO_VACCINE_OR_VACCINATION),
+ IMMUNIZATION_ANXIETY_RELATED(RELATED_TO_VACCINE_OR_VACCINATION);
+
+ private AefiClassification aefiClassification;
+
+ AefiClassificationSubType(AefiClassification aefiClassification) {
+ this.aefiClassification = aefiClassification;
+ }
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiCriteria.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiCriteria.java
new file mode 100644
index 00000000000..4edcde120d6
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiCriteria.java
@@ -0,0 +1,229 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import de.symeda.sormas.api.Disease;
+import de.symeda.sormas.api.EntityRelevanceStatus;
+import de.symeda.sormas.api.caze.Vaccine;
+import de.symeda.sormas.api.caze.VaccineManufacturer;
+import de.symeda.sormas.api.infrastructure.community.CommunityReferenceDto;
+import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto;
+import de.symeda.sormas.api.infrastructure.facility.FacilityReferenceDto;
+import de.symeda.sormas.api.infrastructure.facility.FacilityType;
+import de.symeda.sormas.api.infrastructure.facility.FacilityTypeGroup;
+import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto;
+import de.symeda.sormas.api.utils.DateFilterOption;
+import de.symeda.sormas.api.utils.criteria.BaseCriteria;
+
+public class AefiCriteria extends BaseCriteria implements Serializable {
+
+ public static final String I18N_PREFIX = "AefiCriteria";
+
+ public static final String DISEASE = "disease";
+ public static final String PERSON_LIKE = "personLike";
+ public static final String AEFI_TYPE = "aefiType";
+ public static final String VACCINE_NAME = "vaccineName";
+ public static final String VACCINE_MANUFACTURER = "vaccineManufacturer";
+ public static final String REGION = "region";
+ public static final String DISTRICT = "district";
+ public static final String COMMUNITY = "community";
+ public static final String OUTCOME = "outcome";
+ public static final String FACILITY_TYPE_GROUP = "facilityTypeGroup";
+ public static final String FACILITY_TYPE = "facilityType";
+ public static final String HEALTH_FACILITY = "healthFacility";
+ public static final String DATE_FILTER_OPTION = "dateFilterOption";
+ public static final String AEFI_DATE_TYPE = "aefiDateType";
+ public static final String FROM_DATE = "fromDate";
+ public static final String TO_DATE = "toDate";
+ public static final String RELEVANCE_STATUS = "relevanceStatus";
+
+ private Disease disease;
+ private String personLike;
+ private AefiType aefiType;
+ private Vaccine vaccineName;
+ private VaccineManufacturer vaccineManufacturer;
+ private RegionReferenceDto region;
+ private DistrictReferenceDto district;
+ private CommunityReferenceDto community;
+ private AefiOutcome outcome;
+ private FacilityTypeGroup facilityTypeGroup;
+ private FacilityType facilityType;
+ private FacilityReferenceDto healthFacility;
+ private DateFilterOption dateFilterOption = DateFilterOption.DATE;
+ private AefiDateType aefiDateType;
+ private Date fromDate;
+ private Date toDate;
+ private EntityRelevanceStatus relevanceStatus;
+
+ public Disease getDisease() {
+ return disease;
+ }
+
+ public void setDisease(Disease disease) {
+ this.disease = disease;
+ }
+
+ public String getPersonLike() {
+ return personLike;
+ }
+
+ public void setPersonLike(String personLike) {
+ this.personLike = personLike;
+ }
+
+ public AefiType getAefiType() {
+ return aefiType;
+ }
+
+ public void setAefiType(AefiType aefiType) {
+ this.aefiType = aefiType;
+ }
+
+ public Vaccine getVaccineName() {
+ return vaccineName;
+ }
+
+ public void setVaccineName(Vaccine vaccineName) {
+ this.vaccineName = vaccineName;
+ }
+
+ public VaccineManufacturer getVaccineManufacturer() {
+ return vaccineManufacturer;
+ }
+
+ public void setVaccineManufacturer(VaccineManufacturer vaccineManufacturer) {
+ this.vaccineManufacturer = vaccineManufacturer;
+ }
+
+ public RegionReferenceDto getRegion() {
+ return region;
+ }
+
+ public void setRegion(RegionReferenceDto region) {
+ this.region = region;
+ }
+
+ public DistrictReferenceDto getDistrict() {
+ return district;
+ }
+
+ public void setDistrict(DistrictReferenceDto district) {
+ this.district = district;
+ }
+
+ public CommunityReferenceDto getCommunity() {
+ return community;
+ }
+
+ public void setCommunity(CommunityReferenceDto community) {
+ this.community = community;
+ }
+
+ public AefiOutcome getOutcome() {
+ return outcome;
+ }
+
+ public void setOutcome(AefiOutcome outcome) {
+ this.outcome = outcome;
+ }
+
+ public FacilityTypeGroup getFacilityTypeGroup() {
+ return facilityTypeGroup;
+ }
+
+ public void setFacilityTypeGroup(FacilityTypeGroup facilityTypeGroup) {
+ this.facilityTypeGroup = facilityTypeGroup;
+ }
+
+ public FacilityType getFacilityType() {
+ return facilityType;
+ }
+
+ public void setFacilityType(FacilityType facilityType) {
+ this.facilityType = facilityType;
+ }
+
+ public FacilityReferenceDto getHealthFacility() {
+ return healthFacility;
+ }
+
+ public void setHealthFacility(FacilityReferenceDto healthFacility) {
+ this.healthFacility = healthFacility;
+ }
+
+ public DateFilterOption getDateFilterOption() {
+ return dateFilterOption;
+ }
+
+ public void setDateFilterOption(DateFilterOption dateFilterOption) {
+ this.dateFilterOption = dateFilterOption;
+ }
+
+ public AefiDateType getAefiDateType() {
+ return aefiDateType;
+ }
+
+ public void setAefiDateType(AefiDateType aefiDateType) {
+ this.aefiDateType = aefiDateType;
+ }
+
+ public Date getFromDate() {
+ return fromDate;
+ }
+
+ public void setFromDate(Date fromDate) {
+ this.fromDate = fromDate;
+ }
+
+ public Date getToDate() {
+ return toDate;
+ }
+
+ public void setToDate(Date toDate) {
+ this.toDate = toDate;
+ }
+
+ public EntityRelevanceStatus getRelevanceStatus() {
+ return relevanceStatus;
+ }
+
+ public void setRelevanceStatus(EntityRelevanceStatus relevanceStatus) {
+ this.relevanceStatus = relevanceStatus;
+ }
+
+ public AefiCriteria disease(Disease disease) {
+ this.disease = disease;
+ return this;
+ }
+
+ public AefiCriteria region(RegionReferenceDto region) {
+ this.region = region;
+ return this;
+ }
+
+ public AefiCriteria district(DistrictReferenceDto district) {
+ this.district = district;
+ return this;
+ }
+
+ public AefiCriteria aefiType(AefiType aefiType) {
+ this.aefiType = aefiType;
+ return this;
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiDashboardFilterDateType.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiDashboardFilterDateType.java
new file mode 100644
index 00000000000..984641a06e5
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiDashboardFilterDateType.java
@@ -0,0 +1,32 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum AefiDashboardFilterDateType {
+
+ REPORT_DATE,
+ START_DATE;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiDateType.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiDateType.java
new file mode 100644
index 00000000000..9eef385ce9c
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiDateType.java
@@ -0,0 +1,33 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum AefiDateType {
+
+ REPORT_DATE,
+ START_DATE,
+ VACCINATION_DATE;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiDto.java
new file mode 100644
index 00000000000..e98c7ca0d9e
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiDto.java
@@ -0,0 +1,611 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+
+import de.symeda.sormas.api.caze.Trimester;
+import de.symeda.sormas.api.common.DeletionReason;
+import de.symeda.sormas.api.feature.FeatureType;
+import de.symeda.sormas.api.i18n.Validations;
+import de.symeda.sormas.api.immunization.ImmunizationReferenceDto;
+import de.symeda.sormas.api.infrastructure.community.CommunityReferenceDto;
+import de.symeda.sormas.api.infrastructure.country.CountryReferenceDto;
+import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto;
+import de.symeda.sormas.api.infrastructure.facility.FacilityReferenceDto;
+import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto;
+import de.symeda.sormas.api.location.LocationDto;
+import de.symeda.sormas.api.person.PersonReferenceDto;
+import de.symeda.sormas.api.user.UserReferenceDto;
+import de.symeda.sormas.api.utils.DataHelper;
+import de.symeda.sormas.api.utils.DependingOnFeatureType;
+import de.symeda.sormas.api.utils.FieldConstraints;
+import de.symeda.sormas.api.utils.YesNoUnknown;
+import de.symeda.sormas.api.utils.pseudonymization.PseudonymizableDto;
+import de.symeda.sormas.api.vaccination.VaccinationDto;
+
+@DependingOnFeatureType(featureType = {
+ FeatureType.IMMUNIZATION_MANAGEMENT,
+ FeatureType.ADVERSE_EVENTS_FOLLOWING_IMMUNIZATION_MANAGEMENT })
+public class AefiDto extends PseudonymizableDto {
+
+ private static final long serialVersionUID = 5023410664970514090L;
+
+ public static final long APPROXIMATE_JSON_SIZE_IN_BYTES = 25455;
+
+ public static final String I18N_PREFIX = "Aefi";
+
+ public static final String IMMUNIZATION = "immunization";
+ public static final String ADDRESS = "address";
+ public static final String VACCINATIONS = "vaccinations";
+ public static final String PRIMARY_SUSPECT_VACCINE = "primarySuspectVaccine";
+ public static final String ADVERSE_EVENTS = "adverseEvents";
+ public static final String PERSON = "person";
+ public static final String REPORT_DATE = "reportDate";
+ public static final String REPORTING_USER = "reportingUser";
+ public static final String EXTERNAL_ID = "externalId";
+ public static final String RESPONSIBLE_REGION = "responsibleRegion";
+ public static final String RESPONSIBLE_DISTRICT = "responsibleDistrict";
+ public static final String RESPONSIBLE_COMMUNITY = "responsibleCommunity";
+ public static final String COUNTRY = "country";
+ public static final String REPORTING_ID_NUMBER = "reportingIdNumber";
+ public static final String PHONE_NUMBER = "phoneNumber";
+ public static final String PREGNANT = "pregnant";
+ public static final String TRIMESTER = "trimester";
+ public static final String LACTATING = "lactating";
+ public static final String ONSET_AGE_YEARS = "onsetAgeYears";
+ public static final String ONSET_AGE_MONTHS = "onsetAgeMonths";
+ public static final String ONSET_AGE_DAYS = "onsetAgeDays";
+ public static final String AGE_GROUP = "ageGroup";
+ public static final String HEALTH_FACILITY = "healthFacility";
+ public static final String HEALTH_FACILITY_DETAILS = "healthFacilityDetails";
+ public static final String REPORTING_OFFICER_NAME = "reportingOfficerName";
+ public static final String REPORTING_OFFICER_FACILITY = "reportingOfficerFacility";
+ public static final String REPORTING_OFFICER_DESIGNATION = "reportingOfficerDesignation";
+ public static final String REPORTING_OFFICER_DEPARTMENT = "reportingOfficerDepartment";
+ public static final String REPORTING_OFFICER_ADDRESS = "reportingOfficerAddress";
+ public static final String REPORTING_OFFICER_PHONE_NUMBER = "reportingOfficerPhoneNumber";
+ public static final String REPORTING_OFFICER_EMAIL = "reportingOfficerEmail";
+ public static final String TODAYS_DATE = "todaysDate";
+ public static final String START_DATE_TIME = "startDateTime";
+ public static final String AEFI_DESCRIPTION = "aefiDescription";
+ public static final String SERIOUS = "serious";
+ public static final String SERIOUS_REASON = "seriousReason";
+ public static final String SERIOUS_REASON_DETAILS = "seriousReasonDetails";
+ public static final String OUTCOME = "outcome";
+ public static final String DEATH_DATE = "deathDate";
+ public static final String AUTOPSY_DONE = "autopsyDone";
+ public static final String PAST_MEDICAL_HISTORY = "pastMedicalHistory";
+ public static final String INVESTIGATION_NEEDED = "investigationNeeded";
+ public static final String INVESTIGATION_PLANNED_DATE = "investigationPlannedDate";
+ public static final String RECEIVED_AT_NATIONAL_LEVEL_DATE = "receivedAtNationalLevelDate";
+ public static final String WORLD_WIDE_ID = "worldwideId";
+ public static final String NATIONAL_LEVEL_COMMENT = "nationalLevelComment";
+ public static final String DELETION_REASON = "deletionReason";
+ public static final String OTHER_DELETION_REASON = "otherDeletionReason";
+
+ @NotNull(message = Validations.validImmunization)
+ private ImmunizationReferenceDto immunization;
+ private PersonReferenceDto person;
+ private LocationDto address;
+ @NotEmpty(message = Validations.aefiWithoutSuspectVaccines)
+ private List vaccinations = new ArrayList<>();
+ @NotNull(message = Validations.aefiWithoutPrimarySuspectVaccine)
+ private VaccinationDto primarySuspectVaccine;
+ @NotNull(message = Validations.aefiWithoutAdverseEvents)
+ private AdverseEventsDto adverseEvents;
+ @NotNull(message = Validations.validReportDateTime)
+ private Date reportDate;
+ private UserReferenceDto reportingUser;
+ @Size(max = FieldConstraints.CHARACTER_LIMIT_SMALL, message = Validations.textTooLong)
+ private String externalId;
+ private RegionReferenceDto responsibleRegion;
+ private DistrictReferenceDto responsibleDistrict;
+ private CommunityReferenceDto responsibleCommunity;
+ private CountryReferenceDto country;
+ @Size(max = FieldConstraints.CHARACTER_LIMIT_DEFAULT, message = Validations.textTooLong)
+ private String reportingIdNumber;
+ private String phoneNumber;
+ private YesNoUnknown pregnant;
+ private Trimester trimester;
+ private YesNoUnknown lactating;
+ private Integer onsetAgeYears;
+ private Integer onsetAgeMonths;
+ private Integer onsetAgeDays;
+ private AefiAgeGroup ageGroup;
+ private FacilityReferenceDto healthFacility;
+ @Size(max = FieldConstraints.CHARACTER_LIMIT_DEFAULT, message = Validations.textTooLong)
+ private String healthFacilityDetails;
+ @Size(max = FieldConstraints.CHARACTER_LIMIT_SMALL, message = Validations.textTooLong)
+ private String reportingOfficerName;
+ private FacilityReferenceDto reportingOfficerFacility;
+ @Size(max = FieldConstraints.CHARACTER_LIMIT_SMALL, message = Validations.textTooLong)
+ private String reportingOfficerDesignation;
+ @Size(max = FieldConstraints.CHARACTER_LIMIT_SMALL, message = Validations.textTooLong)
+ private String reportingOfficerDepartment;
+ private LocationDto reportingOfficerAddress;
+ @Size(max = FieldConstraints.CHARACTER_LIMIT_SMALL, message = Validations.textTooLong)
+ private String reportingOfficerPhoneNumber;
+ @Size(max = FieldConstraints.CHARACTER_LIMIT_SMALL, message = Validations.textTooLong)
+ private String reportingOfficerEmail;
+ private Date todaysDate;
+ private Date startDateTime;
+ @Size(max = FieldConstraints.CHARACTER_LIMIT_TEXT, message = Validations.textTooLong)
+ private String aefiDescription;
+ private YesNoUnknown serious;
+ private SeriousAefiReason seriousReason;
+ @Size(max = FieldConstraints.CHARACTER_LIMIT_SMALL, message = Validations.textTooLong)
+ private String seriousReasonDetails;
+ private AefiOutcome outcome;
+ private Date deathDate;
+ private YesNoUnknown autopsyDone;
+ @Size(max = FieldConstraints.CHARACTER_LIMIT_TEXT, message = Validations.textTooLong)
+ private String pastMedicalHistory;
+ private YesNoUnknown investigationNeeded;
+ private Date investigationPlannedDate;
+ private Date receivedAtNationalLevelDate;
+ @Size(max = FieldConstraints.CHARACTER_LIMIT_SMALL, message = Validations.textTooLong)
+ private String worldwideId;
+ @Size(max = FieldConstraints.CHARACTER_LIMIT_TEXT, message = Validations.textTooLong)
+ private String nationalLevelComment;
+ private boolean archived;
+ private boolean deleted;
+ private DeletionReason deletionReason;
+ @Size(max = FieldConstraints.CHARACTER_LIMIT_TEXT, message = Validations.textTooLong)
+ private String otherDeletionReason;
+
+ public static AefiDto build(UserReferenceDto user) {
+
+ final AefiDto aefiDto = new AefiDto();
+ aefiDto.setUuid(DataHelper.createUuid());
+ aefiDto.setReportingUser(user);
+ aefiDto.setReportDate(new Date());
+ aefiDto.setAdverseEvents(AdverseEventsDto.build());
+
+ return aefiDto;
+ }
+
+ public static AefiDto build(ImmunizationReferenceDto immunization) {
+
+ final AefiDto aefiDto = new AefiDto();
+ aefiDto.setUuid(DataHelper.createUuid());
+ aefiDto.setImmunization(immunization);
+ aefiDto.setReportDate(new Date());
+ aefiDto.setAdverseEvents(AdverseEventsDto.build());
+
+ return aefiDto;
+ }
+
+ public static AefiDto build(AefiReferenceDto aefiReferenceDto) {
+
+ final AefiDto aefiDto = new AefiDto();
+ aefiDto.setUuid(aefiReferenceDto.getUuid());
+ aefiDto.setReportDate(new Date());
+ aefiDto.setAdverseEvents(AdverseEventsDto.build());
+
+ return aefiDto;
+ }
+
+ public AefiReferenceDto toReference() {
+ return new AefiReferenceDto(getUuid(), getExternalId());
+ }
+
+ public ImmunizationReferenceDto getImmunization() {
+ return immunization;
+ }
+
+ public void setImmunization(ImmunizationReferenceDto immunization) {
+ this.immunization = immunization;
+ }
+
+ public PersonReferenceDto getPerson() {
+ return person;
+ }
+
+ public void setPerson(PersonReferenceDto person) {
+ this.person = person;
+ }
+
+ public LocationDto getAddress() {
+ return address;
+ }
+
+ public void setAddress(LocationDto address) {
+ this.address = address;
+ }
+
+ public List getVaccinations() {
+ return vaccinations;
+ }
+
+ public void setVaccinations(List vaccinations) {
+ this.vaccinations = vaccinations;
+ }
+
+ public AdverseEventsDto getAdverseEvents() {
+ return adverseEvents;
+ }
+
+ public VaccinationDto getPrimarySuspectVaccine() {
+ return primarySuspectVaccine;
+ }
+
+ public void setPrimarySuspectVaccine(VaccinationDto primarySuspectVaccine) {
+ this.primarySuspectVaccine = primarySuspectVaccine;
+ }
+
+ public void setAdverseEvents(AdverseEventsDto adverseEvents) {
+ this.adverseEvents = adverseEvents;
+ }
+
+ public Date getReportDate() {
+ return reportDate;
+ }
+
+ public void setReportDate(Date reportDate) {
+ this.reportDate = reportDate;
+ }
+
+ public UserReferenceDto getReportingUser() {
+ return reportingUser;
+ }
+
+ public void setReportingUser(UserReferenceDto reportingUser) {
+ this.reportingUser = reportingUser;
+ }
+
+ public String getExternalId() {
+ return externalId;
+ }
+
+ public void setExternalId(String externalId) {
+ this.externalId = externalId;
+ }
+
+ public RegionReferenceDto getResponsibleRegion() {
+ return responsibleRegion;
+ }
+
+ public void setResponsibleRegion(RegionReferenceDto responsibleRegion) {
+ this.responsibleRegion = responsibleRegion;
+ }
+
+ public DistrictReferenceDto getResponsibleDistrict() {
+ return responsibleDistrict;
+ }
+
+ public void setResponsibleDistrict(DistrictReferenceDto responsibleDistrict) {
+ this.responsibleDistrict = responsibleDistrict;
+ }
+
+ public CommunityReferenceDto getResponsibleCommunity() {
+ return responsibleCommunity;
+ }
+
+ public void setResponsibleCommunity(CommunityReferenceDto responsibleCommunity) {
+ this.responsibleCommunity = responsibleCommunity;
+ }
+
+ public CountryReferenceDto getCountry() {
+ return country;
+ }
+
+ public void setCountry(CountryReferenceDto country) {
+ this.country = country;
+ }
+
+ public String getReportingIdNumber() {
+ return reportingIdNumber;
+ }
+
+ public void setReportingIdNumber(String reportingIdNumber) {
+ this.reportingIdNumber = reportingIdNumber;
+ }
+
+ public String getPhoneNumber() {
+ return phoneNumber;
+ }
+
+ public void setPhoneNumber(String phoneNumber) {
+ this.phoneNumber = phoneNumber;
+ }
+
+ public YesNoUnknown getPregnant() {
+ return pregnant;
+ }
+
+ public void setPregnant(YesNoUnknown pregnant) {
+ this.pregnant = pregnant;
+ }
+
+ public Trimester getTrimester() {
+ return trimester;
+ }
+
+ public void setTrimester(Trimester trimester) {
+ this.trimester = trimester;
+ }
+
+ public YesNoUnknown getLactating() {
+ return lactating;
+ }
+
+ public void setLactating(YesNoUnknown lactating) {
+ this.lactating = lactating;
+ }
+
+ public Integer getOnsetAgeYears() {
+ return onsetAgeYears;
+ }
+
+ public void setOnsetAgeYears(Integer onsetAgeYears) {
+ this.onsetAgeYears = onsetAgeYears;
+ }
+
+ public Integer getOnsetAgeMonths() {
+ return onsetAgeMonths;
+ }
+
+ public void setOnsetAgeMonths(Integer onsetAgeMonths) {
+ this.onsetAgeMonths = onsetAgeMonths;
+ }
+
+ public Integer getOnsetAgeDays() {
+ return onsetAgeDays;
+ }
+
+ public void setOnsetAgeDays(Integer onsetAgeDays) {
+ this.onsetAgeDays = onsetAgeDays;
+ }
+
+ public AefiAgeGroup getAgeGroup() {
+ return ageGroup;
+ }
+
+ public void setAgeGroup(AefiAgeGroup ageGroup) {
+ this.ageGroup = ageGroup;
+ }
+
+ public FacilityReferenceDto getHealthFacility() {
+ return healthFacility;
+ }
+
+ public void setHealthFacility(FacilityReferenceDto healthFacility) {
+ this.healthFacility = healthFacility;
+ }
+
+ public String getHealthFacilityDetails() {
+ return healthFacilityDetails;
+ }
+
+ public void setHealthFacilityDetails(String healthFacilityDetails) {
+ this.healthFacilityDetails = healthFacilityDetails;
+ }
+
+ public String getReportingOfficerName() {
+ return reportingOfficerName;
+ }
+
+ public void setReportingOfficerName(String reportingOfficerName) {
+ this.reportingOfficerName = reportingOfficerName;
+ }
+
+ public FacilityReferenceDto getReportingOfficerFacility() {
+ return reportingOfficerFacility;
+ }
+
+ public void setReportingOfficerFacility(FacilityReferenceDto reportingOfficerFacility) {
+ this.reportingOfficerFacility = reportingOfficerFacility;
+ }
+
+ public String getReportingOfficerDesignation() {
+ return reportingOfficerDesignation;
+ }
+
+ public void setReportingOfficerDesignation(String reportingOfficerDesignation) {
+ this.reportingOfficerDesignation = reportingOfficerDesignation;
+ }
+
+ public String getReportingOfficerDepartment() {
+ return reportingOfficerDepartment;
+ }
+
+ public void setReportingOfficerDepartment(String reportingOfficerDepartment) {
+ this.reportingOfficerDepartment = reportingOfficerDepartment;
+ }
+
+ public LocationDto getReportingOfficerAddress() {
+ return reportingOfficerAddress;
+ }
+
+ public void setReportingOfficerAddress(LocationDto reportingOfficerAddress) {
+ this.reportingOfficerAddress = reportingOfficerAddress;
+ }
+
+ public String getReportingOfficerPhoneNumber() {
+ return reportingOfficerPhoneNumber;
+ }
+
+ public void setReportingOfficerPhoneNumber(String reportingOfficerPhoneNumber) {
+ this.reportingOfficerPhoneNumber = reportingOfficerPhoneNumber;
+ }
+
+ public String getReportingOfficerEmail() {
+ return reportingOfficerEmail;
+ }
+
+ public void setReportingOfficerEmail(String reportingOfficerEmail) {
+ this.reportingOfficerEmail = reportingOfficerEmail;
+ }
+
+ public Date getTodaysDate() {
+ return todaysDate;
+ }
+
+ public void setTodaysDate(Date todaysDate) {
+ this.todaysDate = todaysDate;
+ }
+
+ public Date getStartDateTime() {
+ return startDateTime;
+ }
+
+ public void setStartDateTime(Date startDateTime) {
+ this.startDateTime = startDateTime;
+ }
+
+ public String getAefiDescription() {
+ return aefiDescription;
+ }
+
+ public void setAefiDescription(String aefiDescription) {
+ this.aefiDescription = aefiDescription;
+ }
+
+ public YesNoUnknown getSerious() {
+ return serious;
+ }
+
+ public void setSerious(YesNoUnknown serious) {
+ this.serious = serious;
+ }
+
+ public SeriousAefiReason getSeriousReason() {
+ return seriousReason;
+ }
+
+ public void setSeriousReason(SeriousAefiReason seriousReason) {
+ this.seriousReason = seriousReason;
+ }
+
+ public String getSeriousReasonDetails() {
+ return seriousReasonDetails;
+ }
+
+ public void setSeriousReasonDetails(String seriousReasonDetails) {
+ this.seriousReasonDetails = seriousReasonDetails;
+ }
+
+ public AefiOutcome getOutcome() {
+ return outcome;
+ }
+
+ public void setOutcome(AefiOutcome outcome) {
+ this.outcome = outcome;
+ }
+
+ public Date getDeathDate() {
+ return deathDate;
+ }
+
+ public void setDeathDate(Date deathDate) {
+ this.deathDate = deathDate;
+ }
+
+ public YesNoUnknown getAutopsyDone() {
+ return autopsyDone;
+ }
+
+ public void setAutopsyDone(YesNoUnknown autopsyDone) {
+ this.autopsyDone = autopsyDone;
+ }
+
+ public String getPastMedicalHistory() {
+ return pastMedicalHistory;
+ }
+
+ public void setPastMedicalHistory(String pastMedicalHistory) {
+ this.pastMedicalHistory = pastMedicalHistory;
+ }
+
+ public YesNoUnknown getInvestigationNeeded() {
+ return investigationNeeded;
+ }
+
+ public void setInvestigationNeeded(YesNoUnknown investigationNeeded) {
+ this.investigationNeeded = investigationNeeded;
+ }
+
+ public Date getInvestigationPlannedDate() {
+ return investigationPlannedDate;
+ }
+
+ public void setInvestigationPlannedDate(Date investigationPlannedDate) {
+ this.investigationPlannedDate = investigationPlannedDate;
+ }
+
+ public Date getReceivedAtNationalLevelDate() {
+ return receivedAtNationalLevelDate;
+ }
+
+ public void setReceivedAtNationalLevelDate(Date receivedAtNationalLevelDate) {
+ this.receivedAtNationalLevelDate = receivedAtNationalLevelDate;
+ }
+
+ public String getWorldwideId() {
+ return worldwideId;
+ }
+
+ public void setWorldwideId(String worldwideId) {
+ this.worldwideId = worldwideId;
+ }
+
+ public String getNationalLevelComment() {
+ return nationalLevelComment;
+ }
+
+ public void setNationalLevelComment(String nationalLevelComment) {
+ this.nationalLevelComment = nationalLevelComment;
+ }
+
+ public boolean isArchived() {
+ return archived;
+ }
+
+ public void setArchived(boolean archived) {
+ this.archived = archived;
+ }
+
+ public boolean isDeleted() {
+ return deleted;
+ }
+
+ public void setDeleted(boolean deleted) {
+ this.deleted = deleted;
+ }
+
+ public DeletionReason getDeletionReason() {
+ return deletionReason;
+ }
+
+ public void setDeletionReason(DeletionReason deletionReason) {
+ this.deletionReason = deletionReason;
+ }
+
+ public String getOtherDeletionReason() {
+ return otherDeletionReason;
+ }
+
+ public void setOtherDeletionReason(String otherDeletionReason) {
+ this.otherDeletionReason = otherDeletionReason;
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiExportDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiExportDto.java
new file mode 100644
index 00000000000..2c41a8827ac
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiExportDto.java
@@ -0,0 +1,568 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import org.apache.commons.lang3.StringUtils;
+
+import de.symeda.sormas.api.caze.BirthDateDto;
+import de.symeda.sormas.api.caze.Vaccine;
+import de.symeda.sormas.api.caze.VaccineManufacturer;
+import de.symeda.sormas.api.person.Sex;
+import de.symeda.sormas.api.utils.Order;
+import de.symeda.sormas.api.utils.YesNoUnknown;
+import de.symeda.sormas.api.utils.pseudonymization.PseudonymizableIndexDto;
+
+public class AefiExportDto extends PseudonymizableIndexDto implements Serializable {
+
+ private static final long serialVersionUID = 4568112808032880384L;
+
+ public static final String I18N_PREFIX = "AefiExport";
+
+ public static final String RECEIVED_AT_NATIONAL_LEVEL_DATE = "receivedAtNationalLevelDate";
+ public static final String VACCINATION_FACILITY_NAME = "vaccinationFacilityName";
+ public static final String VACCINATION_FACILITY_REGION = "vaccinationFacilityRegion";
+ public static final String VACCINATION_FACILITY_DISTRICT = "vaccinationFacilityDistrict";
+ public static final String VACCINATION_FACILITY_COMMUNITY = "vaccinationFacilityCommunity";
+ public static final String REPORTING_OFFICER_ADDRESS_COUNTRY_NAME = "reportingOfficerAddressCountryName";
+ public static final String PATIENT_ADDRESS_REGION = "patientAddressRegion";
+ public static final String PATIENT_ADDRESS_DISTRICT = "patientAddressDistrict";
+ public static final String PATIENT_ADDRESS_COMMUNITY = "patientAddressCommunity";
+ public static final String PATIENT_ADDRESS_DETAILS = "patientAddressDetails";
+ public static final String REPORTING_ID_NUMBER = "reportingIdNumber";
+ public static final String WORLDWIDE_ID = "worldWideId";
+ public static final String FIRST_NAME = "firstName";
+ public static final String LAST_NAME = "lastName";
+ public static final String BIRTH_DATE = "birthDate";
+ public static final String ONSET_AGE_YEARS = "onsetAgeYears";
+ public static final String ONSET_AGE_MONTHS = "onsetAgeMonths";
+ public static final String ONSET_AGE_DAYS = "onsetAgeDays";
+ public static final String ONSET_AGE_GROUP = "onsetAgeGroup";
+ public static final String SEX = "sex";
+ public static final String AEFI_DESCRIPTION = "aefiDescription";
+ public static final String PRIMARY_SUSPECT_VACCINE_NAME = "primarySuspectVaccineName";
+ public static final String PRIMARY_SUSPECT_VACCINE_OTHER_NAME = "primarySuspectVaccineOtherName";
+ public static final String PRIMARY_SUSPECT_VACCINE_BRAND = "primarySuspectVaccineBrand";
+ public static final String PRIMARY_SUSPECT_VACCINE_MANUFACTURER = "primarySuspectVaccineManufacturer";
+ public static final String PRIMARY_SUSPECT_VACCINE_BATCH_NUMBER = "primarySuspectVaccineBatchNumber";
+ public static final String PRIMARY_SUSPECT_VACCINE_DOSE = "primarySuspectVaccineDose";
+ public static final String PRIMARY_SUSPECT_VACCINE_DILUENT_BATCH_NUMBER = "primarySuspectVaccineDiluentBatchNumber";
+ public static final String PRIMARY_SUSPECT_VACCINE_VACCINATION_DATE = "primarySuspectVaccineVaccinationDate";
+ public static final String START_DATE_TIME = "startDateTime";
+ public static final String SEVERE_LOCAL_REACTION = "severeLocalReaction";
+ public static final String SEVERE_LOCAL_REACTION_MORE_THAN_THREE_DAYS = "severeLocalReactionMoreThanThreeDays";
+ public static final String SEVERE_LOCAL_REACTION_BEYOND_NEAREST_JOINT = "severeLocalReactionBeyondNearestJoint";
+ public static final String SEIZURES = "seizures";
+ public static final String SEIZURE_TYPE = "seizureType";
+ public static final String ABSCESS = "abscess";
+ public static final String SEPSIS = "sepsis";
+ public static final String ENCEPHALOPATHY = "encephalopathy";
+ public static final String TOXIC_SHOCK_SYNDROME = "toxicShockSyndrome";
+ public static final String THROMBOCYTOPENIA = "thrombocytopenia";
+ public static final String ANAPHYLAXIS = "anaphylaxis";
+ public static final String FEVERISH_FEELING = "feverishFeeling";
+ public static final String OTHER_ADVERSE_EVENT_DETAILS = "otherAdverseEventDetails";
+ public static final String OUTCOME = "outcome";
+ public static final String SERIOUS = "serious";
+ public static final String REPORTING_OFFICER_NAME = "reportingOfficerName";
+ public static final String REPORTING_OFFICER_FACILITY_NAME = "reportingOfficerFacilityName";
+ public static final String REPORTING_OFFICER_FACILITY_REGION = "reportingOfficerFacilityRegion";
+ public static final String REPORTING_OFFICER_FACILITY_DISTRICT = "reportingOfficerFacilityDistrict";
+ public static final String REPORTING_OFFICER_FACILITY_COMMUNITY = "reportingOfficerFacilityCommunity";
+ public static final String REPORTING_OFFICER_DESIGNATION = "reportingOfficerDesignation";
+ public static final String REPORTING_OFFICER_DEPARTMENT = "reportingOfficerDepartment";
+ public static final String REPORTING_OFFICER_EMAIL = "reportingOfficerEmail";
+ public static final String REPORTING_OFFICER_PHONE_NUMBER = "reportingOfficerPhoneNumber";
+ public static final String REPORT_DATE = "reportDate";
+ public static final String NATIONAL_LEVEL_COMMENT = "nationalLevelComment";
+
+ private Date receivedAtNationalLevelDate;
+ private String vaccinationFacilityName;
+ private String vaccinationFacilityRegion;
+ private String vaccinationFacilityDistrict;
+ private String vaccinationFacilityCommunity;
+ private String reportingOfficerAddressCountryName;
+ private String patientAddressRegion;
+ private String patientAddressDistrict;
+ private String patientAddressCommunity;
+ private String patientAddressDetails;
+ private String reportingIdNumber;
+ private String worldWideId;
+ private String firstName;
+ private String lastName;
+ private BirthDateDto birthDate;
+ private Integer onsetAgeYears;
+ private Integer onsetAgeMonths;
+ private Integer onsetAgeDays;
+ private AefiAgeGroup onsetAgeGroup;
+ private Sex sex;
+ private String aefiDescription;
+ private Vaccine primarySuspectVaccineName;
+ private String primarySuspectVaccineOtherName;
+ private String primarySuspectVaccineBrandName;
+ private VaccineManufacturer primarySuspectVaccineManufacturer;
+ private String primarySuspectVaccineBatchNumber;
+ private String primarySuspectVaccineDose;
+ private String primarySuspectVaccineDiluentBatchNumber;
+ private Date primarySuspectVaccineVaccinationDate;
+ private Date startDateTime;
+ private AdverseEventState severeLocalReaction;
+ private boolean severeLocalReactionMoreThanThreeDays;
+ private boolean severeLocalReactionBeyondNearestJoint;
+ private AdverseEventState seizures;
+ private SeizureType seizureType;
+ private AdverseEventState abscess;
+ private AdverseEventState sepsis;
+ private AdverseEventState encephalopathy;
+ private AdverseEventState toxicShockSyndrome;
+ private AdverseEventState thrombocytopenia;
+ private AdverseEventState anaphylaxis;
+ private AdverseEventState feverishFeeling;
+ private String otherAdverseEventDetails;
+ private AefiOutcome outcome;
+ private YesNoUnknown serious;
+ private String reportingOfficerName;
+ private String reportingOfficerFacilityName;
+ private String reportingOfficerFacilityRegion;
+ private String reportingOfficerFacilityDistrict;
+ private String reportingOfficerFacilityCommunity;
+ private String reportingOfficerDesignation;
+ private String reportingOfficerDepartment;
+ private String reportingOfficerEmail;
+ private String reportingOfficerPhoneNumber;
+ private Date reportDate;
+ private String nationalLevelComment;
+ private Boolean isInJurisdiction;
+
+ public AefiExportDto(
+ String uuid,
+ Date receivedAtNationalLevelDate,
+ String vaccinationFacilityName,
+ String vaccinationFacilityRegion,
+ String vaccinationFacilityDistrict,
+ String vaccinationFacilityCommunity,
+ String reportingOfficerAddressCountryName,
+ String patientAddressRegion,
+ String patientAddressDistrict,
+ String patientAddressCommunity,
+ String street,
+ String houseNumber,
+ String postalCode,
+ String city,
+ String reportingIdNumber,
+ String worldWideId,
+ String firstName,
+ String lastName,
+ Integer birthdateDD,
+ Integer birthdateMM,
+ Integer birthdateYYYY,
+ Integer onsetAgeYears,
+ Integer onsetAgeMonths,
+ Integer onsetAgeDays,
+ AefiAgeGroup onsetAgeGroup,
+ Sex sex,
+ String aefiDescription,
+ Vaccine primarySuspectVaccineName,
+ String primarySuspectVaccineOtherName,
+ VaccineManufacturer primarySuspectVaccineManufacturer,
+ String primarySuspectVaccineBatchNumber,
+ String primarySuspectVaccineDose,
+ Date primarySuspectVaccineVaccinationDate,
+ Date startDateTime,
+ AdverseEventState severeLocalReaction,
+ boolean severeLocalReactionMoreThanThreeDays,
+ boolean severeLocalReactionBeyondNearestJoint,
+ AdverseEventState seizures,
+ SeizureType seizureType,
+ AdverseEventState abscess,
+ AdverseEventState sepsis,
+ AdverseEventState encephalopathy,
+ AdverseEventState toxicShockSyndrome,
+ AdverseEventState thrombocytopenia,
+ AdverseEventState anaphylaxis,
+ AdverseEventState feverishFeeling,
+ String otherAdverseEventDetails,
+ AefiOutcome outcome,
+ YesNoUnknown serious,
+ String reportingOfficerFirstName,
+ String reportingOfficerLastName,
+ String reportingOfficerFacilityName,
+ String reportingOfficerFacilityRegion,
+ String reportingOfficerFacilityDistrict,
+ String reportingOfficerFacilityCommunity,
+ String reportingOfficerEmail,
+ String reportingOfficerPhoneNumber,
+ Date reportDate,
+ String nationalLevelComment,
+ boolean isInJurisdiction) {
+ super(uuid);
+ this.receivedAtNationalLevelDate = receivedAtNationalLevelDate;
+ this.vaccinationFacilityName = vaccinationFacilityName;
+ this.vaccinationFacilityRegion = vaccinationFacilityRegion;
+ this.vaccinationFacilityDistrict = vaccinationFacilityDistrict;
+ this.vaccinationFacilityCommunity = vaccinationFacilityCommunity;
+ this.reportingOfficerAddressCountryName = reportingOfficerAddressCountryName;
+ this.patientAddressRegion = patientAddressRegion;
+ this.patientAddressDistrict = patientAddressDistrict;
+ this.patientAddressCommunity = patientAddressCommunity;
+
+ StringBuilder patientAddressBuilder = new StringBuilder();
+ if (!StringUtils.isBlank(houseNumber)) {
+ patientAddressBuilder.append(houseNumber);
+ }
+ if (!StringUtils.isBlank(street)) {
+ patientAddressBuilder.append(", ").append(street);
+ }
+ if (!StringUtils.isBlank(postalCode)) {
+ patientAddressBuilder.append(", ").append(postalCode);
+ }
+ if (!StringUtils.isBlank(city)) {
+ patientAddressBuilder.append(", ").append(city);
+ }
+
+ this.patientAddressDetails = patientAddressBuilder.toString();
+
+ this.reportingIdNumber = reportingIdNumber;
+ this.worldWideId = worldWideId;
+ this.firstName = firstName;
+ this.lastName = lastName;
+ this.birthDate = new BirthDateDto(birthdateDD, birthdateMM, birthdateYYYY);
+ this.onsetAgeYears = onsetAgeYears;
+ this.onsetAgeMonths = onsetAgeMonths;
+ this.onsetAgeDays = onsetAgeDays;
+ this.onsetAgeGroup = onsetAgeGroup;
+ this.sex = sex;
+ this.aefiDescription = aefiDescription;
+ this.primarySuspectVaccineName = primarySuspectVaccineName;
+ this.primarySuspectVaccineOtherName = primarySuspectVaccineOtherName;
+ this.primarySuspectVaccineManufacturer = primarySuspectVaccineManufacturer;
+ this.primarySuspectVaccineBatchNumber = primarySuspectVaccineBatchNumber;
+ this.primarySuspectVaccineDose = primarySuspectVaccineDose;
+ this.primarySuspectVaccineVaccinationDate = primarySuspectVaccineVaccinationDate;
+ this.startDateTime = startDateTime;
+ this.severeLocalReaction = severeLocalReaction;
+ this.severeLocalReactionMoreThanThreeDays = severeLocalReactionMoreThanThreeDays;
+ this.severeLocalReactionBeyondNearestJoint = severeLocalReactionBeyondNearestJoint;
+ this.seizures = seizures;
+ this.seizureType = seizureType;
+ this.abscess = abscess;
+ this.sepsis = sepsis;
+ this.encephalopathy = encephalopathy;
+ this.toxicShockSyndrome = toxicShockSyndrome;
+ this.thrombocytopenia = thrombocytopenia;
+ this.anaphylaxis = anaphylaxis;
+ this.feverishFeeling = feverishFeeling;
+ this.otherAdverseEventDetails = otherAdverseEventDetails;
+ this.outcome = outcome;
+ this.serious = serious;
+ this.reportingOfficerName = reportingOfficerFirstName + " " + reportingOfficerLastName;
+ this.reportingOfficerFacilityName = reportingOfficerFacilityName;
+ this.reportingOfficerFacilityRegion = reportingOfficerFacilityRegion;
+ this.reportingOfficerFacilityDistrict = reportingOfficerFacilityDistrict;
+ this.reportingOfficerFacilityCommunity = reportingOfficerFacilityCommunity;
+ this.reportingOfficerEmail = reportingOfficerEmail;
+ this.reportingOfficerPhoneNumber = reportingOfficerPhoneNumber;
+ this.reportDate = reportDate;
+ this.nationalLevelComment = nationalLevelComment;
+ this.isInJurisdiction = isInJurisdiction;
+ }
+
+ @Order(0)
+ public Date getReceivedAtNationalLevelDate() {
+ return receivedAtNationalLevelDate;
+ }
+
+ @Order(1)
+ public String getVaccinationFacilityName() {
+ return vaccinationFacilityName;
+ }
+
+ @Order(2)
+ public String getVaccinationFacilityRegion() {
+ return vaccinationFacilityRegion;
+ }
+
+ @Order(3)
+ public String getVaccinationFacilityDistrict() {
+ return vaccinationFacilityDistrict;
+ }
+
+ @Order(4)
+ public String getVaccinationFacilityCommunity() {
+ return vaccinationFacilityCommunity;
+ }
+
+ @Order(5)
+ public String getReportingOfficerAddressCountryName() {
+ return reportingOfficerAddressCountryName;
+ }
+
+ @Order(6)
+ public String getPatientAddressRegion() {
+ return patientAddressRegion;
+ }
+
+ @Order(7)
+ public String getPatientAddressDistrict() {
+ return patientAddressDistrict;
+ }
+
+ @Order(8)
+ public String getPatientAddressCommunity() {
+ return patientAddressCommunity;
+ }
+
+ @Order(9)
+ public String getPatientAddressDetails() {
+ return patientAddressDetails;
+ }
+
+ @Order(10)
+ public String getReportingIdNumber() {
+ return reportingIdNumber;
+ }
+
+ @Order(11)
+ public String getWorldWideId() {
+ return worldWideId;
+ }
+
+ @Order(12)
+ public String getFirstName() {
+ return firstName;
+ }
+
+ @Order(13)
+ public String getLastName() {
+ return lastName;
+ }
+
+ @Order(14)
+ public BirthDateDto getBirthDate() {
+ return birthDate;
+ }
+
+ @Order(15)
+ public Integer getOnsetAgeYears() {
+ return onsetAgeYears;
+ }
+
+ @Order(16)
+ public Integer getOnsetAgeMonths() {
+ return onsetAgeMonths;
+ }
+
+ @Order(17)
+ public Integer getOnsetAgeDays() {
+ return onsetAgeDays;
+ }
+
+ @Order(18)
+ public AefiAgeGroup getOnsetAgeGroup() {
+ return onsetAgeGroup;
+ }
+
+ @Order(19)
+ public Sex getSex() {
+ return sex;
+ }
+
+ @Order(20)
+ public String getAefiDescription() {
+ return aefiDescription;
+ }
+
+ @Order(21)
+ public Vaccine getPrimarySuspectVaccineName() {
+ return primarySuspectVaccineName;
+ }
+
+ @Order(22)
+ public String getPrimarySuspectVaccineOtherName() {
+ return primarySuspectVaccineOtherName;
+ }
+
+ @Order(23)
+ public String getPrimarySuspectVaccineBrandName() {
+ return primarySuspectVaccineBrandName;
+ }
+
+ @Order(24)
+ public VaccineManufacturer getPrimarySuspectVaccineManufacturer() {
+ return primarySuspectVaccineManufacturer;
+ }
+
+ @Order(25)
+ public String getPrimarySuspectVaccineBatchNumber() {
+ return primarySuspectVaccineBatchNumber;
+ }
+
+ @Order(26)
+ public String getPrimarySuspectVaccineDose() {
+ return primarySuspectVaccineDose;
+ }
+
+ @Order(27)
+ public String getPrimarySuspectVaccineDiluentBatchNumber() {
+ return primarySuspectVaccineDiluentBatchNumber;
+ }
+
+ @Order(28)
+ public Date getPrimarySuspectVaccineVaccinationDate() {
+ return primarySuspectVaccineVaccinationDate;
+ }
+
+ @Order(29)
+ public Date getStartDateTime() {
+ return startDateTime;
+ }
+
+ @Order(30)
+ public AdverseEventState getSevereLocalReaction() {
+ return severeLocalReaction;
+ }
+
+ @Order(31)
+ public boolean isSevereLocalReactionMoreThanThreeDays() {
+ return severeLocalReactionMoreThanThreeDays;
+ }
+
+ @Order(32)
+ public boolean isSevereLocalReactionBeyondNearestJoint() {
+ return severeLocalReactionBeyondNearestJoint;
+ }
+
+ @Order(33)
+ public AdverseEventState getSeizures() {
+ return seizures;
+ }
+
+ @Order(34)
+ public SeizureType getSeizureType() {
+ return seizureType;
+ }
+
+ @Order(35)
+ public AdverseEventState getAbscess() {
+ return abscess;
+ }
+
+ @Order(36)
+ public AdverseEventState getSepsis() {
+ return sepsis;
+ }
+
+ @Order(37)
+ public AdverseEventState getEncephalopathy() {
+ return encephalopathy;
+ }
+
+ @Order(38)
+ public AdverseEventState getToxicShockSyndrome() {
+ return toxicShockSyndrome;
+ }
+
+ @Order(39)
+ public AdverseEventState getThrombocytopenia() {
+ return thrombocytopenia;
+ }
+
+ @Order(40)
+ public AdverseEventState getAnaphylaxis() {
+ return anaphylaxis;
+ }
+
+ @Order(41)
+ public AdverseEventState getFeverishFeeling() {
+ return feverishFeeling;
+ }
+
+ @Order(42)
+ public String getOtherAdverseEventDetails() {
+ return otherAdverseEventDetails;
+ }
+
+ @Order(43)
+ public AefiOutcome getOutcome() {
+ return outcome;
+ }
+
+ @Order(44)
+ public YesNoUnknown getSerious() {
+ return serious;
+ }
+
+ @Order(45)
+ public String getReportingOfficerName() {
+ return reportingOfficerName;
+ }
+
+ @Order(46)
+ public String getReportingOfficerFacilityName() {
+ return reportingOfficerFacilityName;
+ }
+
+ @Order(47)
+ public String getReportingOfficerFacilityRegion() {
+ return reportingOfficerFacilityRegion;
+ }
+
+ @Order(48)
+ public String getReportingOfficerFacilityDistrict() {
+ return reportingOfficerFacilityDistrict;
+ }
+
+ @Order(49)
+ public String getReportingOfficerFacilityCommunity() {
+ return reportingOfficerFacilityCommunity;
+ }
+
+ @Order(50)
+ public String getReportingOfficerDesignation() {
+ return reportingOfficerDesignation;
+ }
+
+ @Order(51)
+ public String getReportingOfficerDepartment() {
+ return reportingOfficerDepartment;
+ }
+
+ @Order(52)
+ public String getReportingOfficerEmail() {
+ return reportingOfficerEmail;
+ }
+
+ @Order(53)
+ public String getReportingOfficerPhoneNumber() {
+ return reportingOfficerPhoneNumber;
+ }
+
+ @Order(54)
+ public Date getReportDate() {
+ return reportDate;
+ }
+
+ @Order(55)
+ public String getNationalLevelComment() {
+ return nationalLevelComment;
+ }
+
+ public Boolean getInJurisdiction() {
+ return isInJurisdiction;
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiFacade.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiFacade.java
new file mode 100644
index 00000000000..a7ed73ac4bb
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiFacade.java
@@ -0,0 +1,31 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import java.util.Collection;
+import java.util.List;
+
+import javax.ejb.Remote;
+
+import de.symeda.sormas.api.CoreFacade;
+
+@Remote
+public interface AefiFacade extends CoreFacade {
+
+ List getEntriesList(AefiListCriteria criteria, Integer first, Integer max);
+
+ List getExportList(AefiCriteria criteria, Collection selectedRows, int first, int max);
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiHelper.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiHelper.java
new file mode 100644
index 00000000000..2d4d2b80395
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiHelper.java
@@ -0,0 +1,127 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public final class AefiHelper {
+
+ private AefiHelper() {
+
+ }
+
+ public static String buildAdverseEventsString(AdverseEventsDto adverseEventsDto) {
+
+ List adverseEventsList = new ArrayList<>();
+
+ if (adverseEventsDto.getSevereLocalReaction() == AdverseEventState.YES) {
+ adverseEventsList.add(I18nProperties.getPrefixCaption(AdverseEventsDto.I18N_PREFIX, AdverseEventsDto.SEVERE_LOCAL_REACTION));
+ }
+
+ if (adverseEventsDto.getSeizures() == AdverseEventState.YES) {
+ adverseEventsList.add(I18nProperties.getPrefixCaption(AdverseEventsDto.I18N_PREFIX, AdverseEventsDto.SEIZURES));
+ }
+
+ if (adverseEventsDto.getAbscess() == AdverseEventState.YES) {
+ adverseEventsList.add(I18nProperties.getPrefixCaption(AdverseEventsDto.I18N_PREFIX, AdverseEventsDto.ABSCESS));
+ }
+
+ if (adverseEventsDto.getSepsis() == AdverseEventState.YES) {
+ adverseEventsList.add(I18nProperties.getPrefixCaption(AdverseEventsDto.I18N_PREFIX, AdverseEventsDto.SEPSIS));
+ }
+
+ if (adverseEventsDto.getEncephalopathy() == AdverseEventState.YES) {
+ adverseEventsList.add(I18nProperties.getPrefixCaption(AdverseEventsDto.I18N_PREFIX, AdverseEventsDto.ENCEPHALOPATHY));
+ }
+
+ if (adverseEventsDto.getToxicShockSyndrome() == AdverseEventState.YES) {
+ adverseEventsList.add(I18nProperties.getPrefixCaption(AdverseEventsDto.I18N_PREFIX, AdverseEventsDto.TOXIC_SHOCK_SYNDROME));
+ }
+
+ if (adverseEventsDto.getThrombocytopenia() == AdverseEventState.YES) {
+ adverseEventsList.add(I18nProperties.getPrefixCaption(AdverseEventsDto.I18N_PREFIX, AdverseEventsDto.THROMBOCYTOPENIA));
+ }
+
+ if (adverseEventsDto.getAnaphylaxis() == AdverseEventState.YES) {
+ adverseEventsList.add(I18nProperties.getPrefixCaption(AdverseEventsDto.I18N_PREFIX, AdverseEventsDto.ANAPHYLAXIS));
+ }
+
+ if (adverseEventsDto.getFeverishFeeling() == AdverseEventState.YES) {
+ adverseEventsList.add(I18nProperties.getPrefixCaption(AdverseEventsDto.I18N_PREFIX, AdverseEventsDto.FEVERISH_FEELING));
+ }
+
+ return String.join(", ", adverseEventsList);
+ }
+
+ public static String buildAdverseEventsString(
+ AdverseEventState severeLocalReaction,
+ boolean severeLocalReactionMoreThanThreeDays,
+ boolean severeLocalReactionBeyondNearestJoint,
+ AdverseEventState seizures,
+ SeizureType seizureType,
+ AdverseEventState abscess,
+ AdverseEventState sepsis,
+ AdverseEventState encephalopathy,
+ AdverseEventState toxicShockSyndrome,
+ AdverseEventState thrombocytopenia,
+ AdverseEventState anaphylaxis,
+ AdverseEventState feverishFeeling,
+ String otherAdverseEventDetails) {
+
+ List adverseEventsList = new ArrayList<>();
+
+ if (severeLocalReaction == AdverseEventState.YES) {
+ adverseEventsList.add(I18nProperties.getPrefixCaption(AdverseEventsDto.I18N_PREFIX, AdverseEventsDto.SEVERE_LOCAL_REACTION));
+ }
+
+ if (seizures == AdverseEventState.YES) {
+ adverseEventsList.add(I18nProperties.getPrefixCaption(AdverseEventsDto.I18N_PREFIX, AdverseEventsDto.SEIZURES));
+ }
+
+ if (abscess == AdverseEventState.YES) {
+ adverseEventsList.add(I18nProperties.getPrefixCaption(AdverseEventsDto.I18N_PREFIX, AdverseEventsDto.ABSCESS));
+ }
+
+ if (sepsis == AdverseEventState.YES) {
+ adverseEventsList.add(I18nProperties.getPrefixCaption(AdverseEventsDto.I18N_PREFIX, AdverseEventsDto.SEPSIS));
+ }
+
+ if (encephalopathy == AdverseEventState.YES) {
+ adverseEventsList.add(I18nProperties.getPrefixCaption(AdverseEventsDto.I18N_PREFIX, AdverseEventsDto.ENCEPHALOPATHY));
+ }
+
+ if (toxicShockSyndrome == AdverseEventState.YES) {
+ adverseEventsList.add(I18nProperties.getPrefixCaption(AdverseEventsDto.I18N_PREFIX, AdverseEventsDto.TOXIC_SHOCK_SYNDROME));
+ }
+
+ if (thrombocytopenia == AdverseEventState.YES) {
+ adverseEventsList.add(I18nProperties.getPrefixCaption(AdverseEventsDto.I18N_PREFIX, AdverseEventsDto.THROMBOCYTOPENIA));
+ }
+
+ if (anaphylaxis == AdverseEventState.YES) {
+ adverseEventsList.add(I18nProperties.getPrefixCaption(AdverseEventsDto.I18N_PREFIX, AdverseEventsDto.ANAPHYLAXIS));
+ }
+
+ if (feverishFeeling == AdverseEventState.YES) {
+ adverseEventsList.add(I18nProperties.getPrefixCaption(AdverseEventsDto.I18N_PREFIX, AdverseEventsDto.FEVERISH_FEELING));
+ }
+
+ return String.join(", ", adverseEventsList);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiImmunizationPeriod.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiImmunizationPeriod.java
new file mode 100644
index 00000000000..e8e943fe41d
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiImmunizationPeriod.java
@@ -0,0 +1,30 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum AefiImmunizationPeriod {
+
+ WITHIN_FIRST_VACCINATIONS,
+ WITHIN_LAST_VACCINATIONS,
+ UNKNOWN;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiIndexDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiIndexDto.java
new file mode 100644
index 00000000000..ad982aeff95
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiIndexDto.java
@@ -0,0 +1,287 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import de.symeda.sormas.api.Disease;
+import de.symeda.sormas.api.caze.AgeAndBirthDateDto;
+import de.symeda.sormas.api.caze.Vaccine;
+import de.symeda.sormas.api.common.DeletionReason;
+import de.symeda.sormas.api.person.Sex;
+import de.symeda.sormas.api.utils.PersonalData;
+import de.symeda.sormas.api.utils.SensitiveData;
+import de.symeda.sormas.api.utils.YesNoUnknown;
+import de.symeda.sormas.api.utils.pseudonymization.PseudonymizableIndexDto;
+
+public class AefiIndexDto extends PseudonymizableIndexDto implements Serializable, Cloneable {
+
+ private static final long serialVersionUID = 2873180122463056859L;
+
+ public static final String I18N_PREFIX = "AefiIndex";
+
+ public static final String UUID = "uuid";
+ public static final String IMMUNIZATION_UUID = "immunizationUuid";
+ public static final String PERSON_UUID = "personUuid";
+ public static final String PERSON_FIRST_NAME = "personFirstName";
+ public static final String PERSON_LAST_NAME = "personLastName";
+ public static final String REPORT_DATE = "reportDate";
+ public static final String DISEASE = "disease";
+ public static final String AGE_AND_BIRTH_DATE = "ageAndBirthDate";
+ public static final String SEX = "sex";
+ public static final String REGION = "region";
+ public static final String DISTRICT = "district";
+ public static final String SERIOUS = "serious";
+ public static final String PRIMARY_VACCINE_NAME = "primaryVaccine";
+ public static final String OUTCOME = "outcome";
+ public static final String VACCINATION_DATE = "vaccinationDate";
+ public static final String START_DATE_TIME = "startDateTime";
+ public static final String ADVERSE_EVENTS = "adverseEvents";
+
+ private String immunizationUuid;
+ private String personUuid;
+ @PersonalData
+ @SensitiveData
+ private String personFirstName;
+ @PersonalData
+ @SensitiveData
+ private String personLastName;
+ private Date reportDate;
+ private Disease disease;
+ private AgeAndBirthDateDto ageAndBirthDate;
+ private Sex sex;
+ private String region;
+ private String district;
+ private YesNoUnknown serious;
+ private Vaccine primaryVaccine;
+ private String primaryVaccineDetails;
+ private AefiOutcome outcome;
+ private Date vaccinationDate;
+ private Date startDateTime;
+ private String adverseEvents;
+ private DeletionReason deletionReason;
+ private String otherDeletionReason;
+ private boolean isInJurisdiction;
+
+ public AefiIndexDto(
+ String uuid,
+ String immunizationUuid,
+ String personUuid,
+ String personFirstName,
+ String personLastName,
+ Disease disease,
+ AgeAndBirthDateDto ageAndBirthDate,
+ Sex sex,
+ String region,
+ String district,
+ YesNoUnknown serious,
+ Vaccine primaryVaccine,
+ String primaryVaccineDetails,
+ AefiOutcome outcome,
+ Date vaccinationDate,
+ Date reportDate,
+ Date startDateTime,
+ String adverseEvents,
+ DeletionReason deletionReason,
+ String otherDeletionReason,
+ boolean isInJurisdiction) {
+
+ super(uuid);
+ this.immunizationUuid = immunizationUuid;
+ this.personUuid = personUuid;
+ this.personFirstName = personFirstName;
+ this.personLastName = personLastName;
+ this.disease = disease;
+ this.ageAndBirthDate = ageAndBirthDate;
+ this.sex = sex;
+ this.region = region;
+ this.district = district;
+ this.serious = serious;
+ this.primaryVaccine = primaryVaccine;
+ this.primaryVaccineDetails = primaryVaccineDetails;
+ this.outcome = outcome;
+ this.vaccinationDate = vaccinationDate;
+ this.reportDate = reportDate;
+ this.startDateTime = startDateTime;
+ this.adverseEvents = adverseEvents;
+ this.deletionReason = deletionReason;
+ this.otherDeletionReason = otherDeletionReason;
+ this.isInJurisdiction = isInJurisdiction;
+ }
+
+ public String getImmunizationUuid() {
+ return immunizationUuid;
+ }
+
+ public void setImmunizationUuid(String immunizationUuid) {
+ this.immunizationUuid = immunizationUuid;
+ }
+
+ public String getPersonUuid() {
+ return personUuid;
+ }
+
+ public void setPersonUuid(String personUuid) {
+ this.personUuid = personUuid;
+ }
+
+ public String getPersonFirstName() {
+ return personFirstName;
+ }
+
+ public void setPersonFirstName(String personFirstName) {
+ this.personFirstName = personFirstName;
+ }
+
+ public String getPersonLastName() {
+ return personLastName;
+ }
+
+ public void setPersonLastName(String personLastName) {
+ this.personLastName = personLastName;
+ }
+
+ public Date getReportDate() {
+ return reportDate;
+ }
+
+ public void setReportDate(Date reportDate) {
+ this.reportDate = reportDate;
+ }
+
+ public Disease getDisease() {
+ return disease;
+ }
+
+ public void setDisease(Disease disease) {
+ this.disease = disease;
+ }
+
+ public AgeAndBirthDateDto getAgeAndBirthDate() {
+ return ageAndBirthDate;
+ }
+
+ public void setAgeAndBirthDate(AgeAndBirthDateDto ageAndBirthDate) {
+ this.ageAndBirthDate = ageAndBirthDate;
+ }
+
+ public Sex getSex() {
+ return sex;
+ }
+
+ public void setSex(Sex sex) {
+ this.sex = sex;
+ }
+
+ public String getRegion() {
+ return region;
+ }
+
+ public void setRegion(String region) {
+ this.region = region;
+ }
+
+ public String getDistrict() {
+ return district;
+ }
+
+ public void setDistrict(String district) {
+ this.district = district;
+ }
+
+ public YesNoUnknown getSerious() {
+ return serious;
+ }
+
+ public void setSerious(YesNoUnknown serious) {
+ this.serious = serious;
+ }
+
+ public Vaccine getPrimaryVaccine() {
+ return primaryVaccine;
+ }
+
+ public void setPrimaryVaccine(Vaccine primaryVaccine) {
+ this.primaryVaccine = primaryVaccine;
+ }
+
+ public String getPrimaryVaccineDetails() {
+ return primaryVaccineDetails;
+ }
+
+ public void setPrimaryVaccineDetails(String primaryVaccineDetails) {
+ this.primaryVaccineDetails = primaryVaccineDetails;
+ }
+
+ public AefiOutcome getOutcome() {
+ return outcome;
+ }
+
+ public void setOutcome(AefiOutcome outcome) {
+ this.outcome = outcome;
+ }
+
+ public Date getVaccinationDate() {
+ return vaccinationDate;
+ }
+
+ public void setVaccinationDate(Date vaccinationDate) {
+ this.vaccinationDate = vaccinationDate;
+ }
+
+ public Date getStartDateTime() {
+ return startDateTime;
+ }
+
+ public void setStartDateTime(Date startDateTime) {
+ this.startDateTime = startDateTime;
+ }
+
+ public String getAdverseEvents() {
+ return adverseEvents;
+ }
+
+ public void setAdverseEvents(String adverseEvents) {
+ this.adverseEvents = adverseEvents;
+ }
+
+ public DeletionReason getDeletionReason() {
+ return deletionReason;
+ }
+
+ public void setDeletionReason(DeletionReason deletionReason) {
+ this.deletionReason = deletionReason;
+ }
+
+ public String getOtherDeletionReason() {
+ return otherDeletionReason;
+ }
+
+ public void setOtherDeletionReason(String otherDeletionReason) {
+ this.otherDeletionReason = otherDeletionReason;
+ }
+
+ @Override
+ public boolean isInJurisdiction() {
+ return isInJurisdiction;
+ }
+
+ @Override
+ public void setInJurisdiction(boolean inJurisdiction) {
+ isInJurisdiction = inJurisdiction;
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationCriteria.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationCriteria.java
new file mode 100644
index 00000000000..f54efee9f85
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationCriteria.java
@@ -0,0 +1,240 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import de.symeda.sormas.api.Disease;
+import de.symeda.sormas.api.EntityRelevanceStatus;
+import de.symeda.sormas.api.caze.Vaccine;
+import de.symeda.sormas.api.caze.VaccineManufacturer;
+import de.symeda.sormas.api.infrastructure.community.CommunityReferenceDto;
+import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto;
+import de.symeda.sormas.api.infrastructure.facility.FacilityReferenceDto;
+import de.symeda.sormas.api.infrastructure.facility.FacilityType;
+import de.symeda.sormas.api.infrastructure.facility.FacilityTypeGroup;
+import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto;
+import de.symeda.sormas.api.utils.DateFilterOption;
+import de.symeda.sormas.api.utils.criteria.BaseCriteria;
+
+public class AefiInvestigationCriteria extends BaseCriteria implements Serializable {
+
+ private static final long serialVersionUID = 6520144798481981253L;
+
+ public static final String I18N_PREFIX = "AefiInvestigationCriteria";
+ public static final String AEFI_REPORT_LIKE = "aefiReportLike";
+ public static final String INVESTIGATION_CASE_ID = "investigationCaseId";
+ public static final String DISEASE = "disease";
+ public static final String PERSON_LIKE = "personLike";
+ public static final String AEFI_TYPE = "aefiType";
+ public static final String VACCINE_NAME = "vaccineName";
+ public static final String VACCINE_MANUFACTURER = "vaccineManufacturer";
+ public static final String REGION = "region";
+ public static final String DISTRICT = "district";
+ public static final String COMMUNITY = "community";
+ public static final String STATUS_ON_DATE_OF_INVESTIGATION = "statusAtAefiInvestigation";
+ public static final String AEFI_CLASSIFICATION = "aefiClassification";
+ public static final String FACILITY_TYPE_GROUP = "facilityTypeGroup";
+ public static final String FACILITY_TYPE = "facilityType";
+ public static final String HEALTH_FACILITY = "healthFacility";
+ public static final String DATE_FILTER_OPTION = "dateFilterOption";
+ public static final String AEFI_DATE_TYPE = "aefiDateType";
+ public static final String FROM_DATE = "fromDate";
+ public static final String TO_DATE = "toDate";
+ public static final String RELEVANCE_STATUS = "relevanceStatus";
+
+ private String aefiReportLike;
+ private String investigationCaseId;
+ private Disease disease;
+ private String personLike;
+ private AefiType aefiType;
+ private Vaccine vaccineName;
+ private VaccineManufacturer vaccineManufacturer;
+ private RegionReferenceDto region;
+ private DistrictReferenceDto district;
+ private CommunityReferenceDto community;
+ private PatientStatusAtAefiInvestigation statusAtAefiInvestigation;
+ private AefiClassification aefiClassification;
+ private FacilityTypeGroup facilityTypeGroup;
+ private FacilityType facilityType;
+ private FacilityReferenceDto healthFacility;
+ private DateFilterOption dateFilterOption = DateFilterOption.DATE;
+ private AefiInvestigationDateType aefiInvestigationDateType;
+ private Date fromDate;
+ private Date toDate;
+ private EntityRelevanceStatus relevanceStatus;
+
+ public String getAefiReportLike() {
+ return aefiReportLike;
+ }
+
+ public void setAefiReportLike(String aefiReportLike) {
+ this.aefiReportLike = aefiReportLike;
+ }
+
+ public String getInvestigationCaseId() {
+ return investigationCaseId;
+ }
+
+ public void setInvestigationCaseId(String investigationCaseId) {
+ this.investigationCaseId = investigationCaseId;
+ }
+
+ public Disease getDisease() {
+ return disease;
+ }
+
+ public void setDisease(Disease disease) {
+ this.disease = disease;
+ }
+
+ public String getPersonLike() {
+ return personLike;
+ }
+
+ public void setPersonLike(String personLike) {
+ this.personLike = personLike;
+ }
+
+ public AefiType getAefiType() {
+ return aefiType;
+ }
+
+ public void setAefiType(AefiType aefiType) {
+ this.aefiType = aefiType;
+ }
+
+ public Vaccine getVaccineName() {
+ return vaccineName;
+ }
+
+ public void setVaccineName(Vaccine vaccineName) {
+ this.vaccineName = vaccineName;
+ }
+
+ public VaccineManufacturer getVaccineManufacturer() {
+ return vaccineManufacturer;
+ }
+
+ public void setVaccineManufacturer(VaccineManufacturer vaccineManufacturer) {
+ this.vaccineManufacturer = vaccineManufacturer;
+ }
+
+ public RegionReferenceDto getRegion() {
+ return region;
+ }
+
+ public void setRegion(RegionReferenceDto region) {
+ this.region = region;
+ }
+
+ public DistrictReferenceDto getDistrict() {
+ return district;
+ }
+
+ public void setDistrict(DistrictReferenceDto district) {
+ this.district = district;
+ }
+
+ public CommunityReferenceDto getCommunity() {
+ return community;
+ }
+
+ public void setCommunity(CommunityReferenceDto community) {
+ this.community = community;
+ }
+
+ public PatientStatusAtAefiInvestigation getStatusAtAefiInvestigation() {
+ return statusAtAefiInvestigation;
+ }
+
+ public void setStatusAtAefiInvestigation(PatientStatusAtAefiInvestigation statusAtAefiInvestigation) {
+ this.statusAtAefiInvestigation = statusAtAefiInvestigation;
+ }
+
+ public AefiClassification getAefiClassification() {
+ return aefiClassification;
+ }
+
+ public void setAefiClassification(AefiClassification aefiClassification) {
+ this.aefiClassification = aefiClassification;
+ }
+
+ public FacilityTypeGroup getFacilityTypeGroup() {
+ return facilityTypeGroup;
+ }
+
+ public void setFacilityTypeGroup(FacilityTypeGroup facilityTypeGroup) {
+ this.facilityTypeGroup = facilityTypeGroup;
+ }
+
+ public FacilityType getFacilityType() {
+ return facilityType;
+ }
+
+ public void setFacilityType(FacilityType facilityType) {
+ this.facilityType = facilityType;
+ }
+
+ public FacilityReferenceDto getHealthFacility() {
+ return healthFacility;
+ }
+
+ public void setHealthFacility(FacilityReferenceDto healthFacility) {
+ this.healthFacility = healthFacility;
+ }
+
+ public DateFilterOption getDateFilterOption() {
+ return dateFilterOption;
+ }
+
+ public void setDateFilterOption(DateFilterOption dateFilterOption) {
+ this.dateFilterOption = dateFilterOption;
+ }
+
+ public AefiInvestigationDateType getAefiInvestigationDateType() {
+ return aefiInvestigationDateType;
+ }
+
+ public void setAefiInvestigationDateType(AefiInvestigationDateType aefiInvestigationDateType) {
+ this.aefiInvestigationDateType = aefiInvestigationDateType;
+ }
+
+ public Date getFromDate() {
+ return fromDate;
+ }
+
+ public void setFromDate(Date fromDate) {
+ this.fromDate = fromDate;
+ }
+
+ public Date getToDate() {
+ return toDate;
+ }
+
+ public void setToDate(Date toDate) {
+ this.toDate = toDate;
+ }
+
+ public EntityRelevanceStatus getRelevanceStatus() {
+ return relevanceStatus;
+ }
+
+ public void setRelevanceStatus(EntityRelevanceStatus relevanceStatus) {
+ this.relevanceStatus = relevanceStatus;
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationDateType.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationDateType.java
new file mode 100644
index 00000000000..7d1fb23e605
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationDateType.java
@@ -0,0 +1,30 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum AefiInvestigationDateType {
+
+ REPORT_DATE,
+ INVESTIGATION_DATE,
+ VACCINATION_DATE;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationDto.java
new file mode 100644
index 00000000000..29e8ddd4cb4
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationDto.java
@@ -0,0 +1,1684 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+
+import de.symeda.sormas.api.common.DeletionReason;
+import de.symeda.sormas.api.feature.FeatureType;
+import de.symeda.sormas.api.i18n.Validations;
+import de.symeda.sormas.api.infrastructure.community.CommunityReferenceDto;
+import de.symeda.sormas.api.infrastructure.country.CountryReferenceDto;
+import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto;
+import de.symeda.sormas.api.infrastructure.facility.FacilityReferenceDto;
+import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto;
+import de.symeda.sormas.api.location.LocationDto;
+import de.symeda.sormas.api.user.UserReferenceDto;
+import de.symeda.sormas.api.utils.DataHelper;
+import de.symeda.sormas.api.utils.DependingOnFeatureType;
+import de.symeda.sormas.api.utils.FieldConstraints;
+import de.symeda.sormas.api.utils.YesNoUnknown;
+import de.symeda.sormas.api.utils.pseudonymization.PseudonymizableDto;
+import de.symeda.sormas.api.vaccination.VaccinationDto;
+
+@DependingOnFeatureType(featureType = {
+ FeatureType.IMMUNIZATION_MANAGEMENT,
+ FeatureType.ADVERSE_EVENTS_FOLLOWING_IMMUNIZATION_MANAGEMENT })
+public class AefiInvestigationDto extends PseudonymizableDto {
+
+ private static final long serialVersionUID = 7811960334585576774L;
+
+ public static final long APPROXIMATE_JSON_SIZE_IN_BYTES = 25455;
+
+ public static final String I18N_PREFIX = "AefiInvestigation";
+
+ public static final String AEFI_REPORT = "aefiReport";
+ public static final String ADDRESS = "address";
+ public static final String VACCINATIONS = "vaccinations";
+ public static final String PRIMARY_SUSPECT_VACCINE = "primarySuspectVaccine";
+ public static final String REPORT_DATE = "reportDate";
+ public static final String REPORTING_USER = "reportingUser";
+ public static final String EXTERNAL_ID = "externalId";
+ public static final String RESPONSIBLE_REGION = "responsibleRegion";
+ public static final String RESPONSIBLE_DISTRICT = "responsibleDistrict";
+ public static final String RESPONSIBLE_COMMUNITY = "responsibleCommunity";
+ public static final String COUNTRY = "country";
+ public static final String INVESTIGATION_CASE_ID = "investigationCaseId";
+ public static final String PLACE_OF_VACCINATION = "placeOfVaccination";
+ public static final String PLACE_OF_VACCINATION_DETAILS = "placeOfVaccinationDetails";
+ public static final String VACCINATION_ACTIVITY = "vaccinationActivity";
+ public static final String VACCINATION_ACTIVITY_DETAILS = "vaccinationActivityDetails";
+ public static final String VACCINATION_FACILITY = "vaccinationFacility";
+ public static final String VACCINATION_FACILITY_DETAILS = "vaccinationFacilityDetails";
+ public static final String REPORTING_OFFICER_NAME = "reportingOfficerName";
+ public static final String REPORTING_OFFICER_FACILITY = "reportingOfficerFacility";
+ public static final String REPORTING_OFFICER_FACILITY_DETAILS = "reportingOfficerFacilityDetails";
+ public static final String REPORTING_OFFICER_DESIGNATION = "reportingOfficerDesignation";
+ public static final String REPORTING_OFFICER_DEPARTMENT = "reportingOfficerDepartment";
+ public static final String REPORTING_OFFICER_ADDRESS = "reportingOfficerAddress";
+ public static final String REPORTING_OFFICER_LANDLINE_PHONE_NUMBER = "reportingOfficerLandlinePhoneNumber";
+ public static final String REPORTING_OFFICER_MOBILE_PHONE_NUMBER = "reportingOfficerMobilePhoneNumber";
+ public static final String REPORTING_OFFICER_EMAIL = "reportingOfficerEmail";
+ public static final String INVESTIGATION_DATE = "investigationDate";
+ public static final String FORM_COMPLETION_DATE = "formCompletionDate";
+ public static final String INVESTIGATION_STAGE = "investigationStage";
+ public static final String TYPE_OF_SITE = "typeOfSite";
+ public static final String TYPE_OF_SITE_DETAILS = "typeOfSiteDetails";
+ public static final String KEY_SYMPTOM_DATE_TIME = "keySymptomDateTime";
+ public static final String HOSPITALIZATION_DATE = "hospitalizationDate";
+ public static final String REPORTED_TO_HEALTH_AUTHORITY_DATE = "reportedToHealthAuthorityDate";
+ public static final String STATUS_ON_DATE_OF_INVESTIGATION = "statusOnDateOfInvestigation";
+ public static final String DEATH_DATE_TIME = "deathDateTime";
+ public static final String AUTOPSY_DONE = "autopsyDone";
+ public static final String AUTOPSY_DATE = "autopsyDate";
+ public static final String AUTOPSY_PLANNED_DATE_TIME = "autopsyPlannedDateTime";
+ public static final String PAST_HISTORY_OF_SIMILAR_EVENT = "pastHistoryOfSimilarEvent";
+ public static final String PAST_HISTORY_OF_SIMILAR_EVENT_DETAILS = "pastHistoryOfSimilarEventDetails";
+ public static final String ADVERSE_EVENT_AFTER_PREVIOUS_VACCINATIONS = "adverseEventAfterPreviousVaccinations";
+ public static final String ADVERSE_EVENT_AFTER_PREVIOUS_VACCINATIONS_DETAILS = "adverseEventAfterPreviousVaccinationsDetails";
+ public static final String HISTORY_OF_ALLERGY_TO_VACCINE_DRUG_OR_FOOD = "historyOfAllergyToVaccineDrugOrFood";
+ public static final String HISTORY_OF_ALLERGY_TO_VACCINE_DRUG_OR_FOOD_DETAILS = "historyOfAllergyToVaccineDrugOrFoodDetails";
+ public static final String PRE_EXISTING_ILLNESS_THIRTY_DAYS_OR_CONGENITAL_DISORDER = "preExistingIllnessThirtyDaysOrCongenitalDisorder";
+ public static final String PRE_EXISTING_ILLNESS_THIRTY_DAYS_OR_CONGENITAL_DISORDER_DETAILS =
+ "preExistingIllnessThirtyDaysOrCongenitalDisorderDetails";
+ public static final String HISTORY_OF_HOSPITALIZATION_IN_LAST_THIRTY_DAYS_WITH_CAUSE = "historyOfHospitalizationInLastThirtyDaysWithCause";
+ public static final String HISTORY_OF_HOSPITALIZATION_IN_LAST_THIRTY_DAYS_WITH_CAUSE_DETAILS =
+ "historyOfHospitalizationInLastThirtyDaysWithCauseDetails";
+ public static final String CURRENTLY_ON_CONCOMITANT_MEDICATION = "currentlyOnConcomitantMedication";
+ public static final String CURRENTLY_ON_CONCOMITANT_MEDICATION_DETAILS = "currentlyOnConcomitantMedicationDetails";
+ public static final String FAMILY_HISTORY_OF_DISEASE_OR_ALLERGY = "familyHistoryOfDiseaseOrAllergy";
+ public static final String FAMILY_HISTORY_OF_DISEASE_OR_ALLERGY_DETAILS = "familyHistoryOfDiseaseOrAllergyDetails";
+ public static final String NUMBER_OF_WEEKS_PREGNANT = "numberOfWeeksPregnant";
+ public static final String BIRTH_TERM = "birthTerm";
+ public static final String BIRTH_WEIGHT = "birthWeight";
+ public static final String DELIVERY_PROCEDURE = "deliveryProcedure";
+ public static final String DELIVERY_PROCEDURE_DETAILS = "deliveryProcedureDetails";
+ public static final String SERIOUS_AEFI_INFO_SOURCE = "seriousAefiInfoSource";
+ public static final String SERIOUS_AEFI_INFO_SOURCE_DETAILS = "seriousAefiInfoSourceDetails";
+ public static final String SERIOUS_AEFI_VERBAL_AUTOPSY_INFO_SOURCE_DETAILS = "seriousAefiVerbalAutopsyInfoSourceDetails";
+ public static final String FIRST_CAREGIVERS_NAME = "firstCaregiversName";
+ public static final String OTHER_CAREGIVERS_NAMES = "otherCaregiversNames";
+ public static final String OTHER_SOURCES_WHO_PROVIDED_INFO = "otherSourcesWhoProvidedInfo";
+ public static final String SIGNS_AND_SYMPTOMS_FROM_TIME_OF_VACCINATION = "signsAndSymptomsFromTimeOfVaccination";
+ public static final String CLINICAL_DETAILS_OFFICER_NAME = "clinicalDetailsOfficerName";
+ public static final String CLINICAL_DETAILS_OFFICER_PHONE_NUMBER = "clinicalDetailsOfficerPhoneNumber";
+ public static final String CLINICAL_DETAILS_OFFICER_EMAIL = "clinicalDetailsOfficerEmail";
+ public static final String CLINICAL_DETAILS_OFFICER_DESIGNATION = "clinicalDetailsOfficerDesignation";
+ public static final String CLINICAL_DETAILS_DATE_TIME = "clinicalDetailsDateTime";
+ public static final String PATIENT_RECEIVED_MEDICAL_CARE = "patientReceivedMedicalCare";
+ public static final String PATIENT_RECEIVED_MEDICAL_CARE_DETAILS = "patientReceivedMedicalCareDetails";
+ public static final String PROVISIONAL_OR_FINAL_DIAGNOSIS = "provisionalOrFinalDiagnosis";
+ public static final String PATIENT_IMMUNIZED_PERIOD = "patientImmunizedPeriod";
+ public static final String PATIENT_IMMUNIZED_PERIOD_DETAILS = "patientImmunizedPeriodDetails";
+ public static final String VACCINE_GIVEN_PERIOD = "vaccineGivenPeriod";
+ public static final String VACCINE_GIVEN_PERIOD_DETAILS = "vaccineGivenPeriodDetails";
+ public static final String ERROR_PRESCRIBING_VACCINE = "errorPrescribingVaccine";
+ public static final String ERROR_PRESCRIBING_VACCINE_DETAILS = "errorPrescribingVaccineDetails";
+ public static final String VACCINE_COULD_HAVE_BEEN_UNSTERILE = "vaccineCouldHaveBeenUnSterile";
+ public static final String VACCINE_COULD_HAVE_BEEN_UNSTERILE_DETAILS = "vaccineCouldHaveBeenUnSterileDetails";
+ public static final String VACCINE_PHYSICAL_CONDITION_ABNORMAL = "vaccinePhysicalConditionAbnormal";
+ public static final String VACCINE_PHYSICAL_CONDITION_ABNORMAL_DETAILS = "vaccinePhysicalConditionAbnormalDetails";
+ public static final String ERROR_IN_VACCINE_RECONSTITUTION = "errorInVaccineReconstitution";
+ public static final String ERROR_IN_VACCINE_RECONSTITUTION_DETAILS = "errorInVaccineReconstitutionDetails";
+ public static final String ERROR_IN_VACCINE_HANDLING = "errorInVaccineHandling";
+ public static final String ERROR_IN_VACCINE_HANDLING_DETAILS = "errorInVaccineHandlingDetails";
+ public static final String VACCINE_ADMINISTERED_INCORRECTLY = "vaccineAdministeredIncorrectly";
+ public static final String VACCINE_ADMINISTERED_INCORRECTLY_DETAILS = "vaccineAdministeredIncorrectlyDetails";
+ public static final String NUMBER_IMMUNIZED_FROM_CONCERNED_VACCINE_VIAL = "numberImmunizedFromConcernedVaccineVial";
+ public static final String NUMBER_IMMUNIZED_WITH_CONCERNED_VACCINE_IN_SAME_SESSION = "numberImmunizedWithConcernedVaccineInSameSession";
+ public static final String NUMBER_IMMUNIZED_CONCERNED_VACCINE_SAME_BATCH_NUMBER_OTHER_LOCATIONS =
+ "numberImmunizedConcernedVaccineSameBatchNumberOtherLocations";
+ public static final String NUMBER_IMMUNIZED_CONCERNED_VACCINE_SAME_BATCH_NUMBER_LOCATION_DETAILS =
+ "numberImmunizedConcernedVaccineSameBatchNumberLocationDetails";
+ public static final String VACCINE_HAS_QUALITY_DEFECT = "vaccineHasQualityDefect";
+ public static final String VACCINE_HAS_QUALITY_DEFECT_DETAILS = "vaccineHasQualityDefectDetails";
+ public static final String EVENT_IS_A_STRESS_RESPONSE_RELATED_TO_IMMUNIZATION = "eventIsAStressResponseRelatedToImmunization";
+ public static final String EVENT_IS_A_STRESS_RESPONSE_RELATED_TO_IMMUNIZATION_DETAILS = "eventIsAStressResponseRelatedToImmunizationDetails";
+ public static final String CASE_IS_PART_OF_A_CLUSTER = "caseIsPartOfACluster";
+ public static final String CASE_IS_PART_OF_A_CLUSTER_DETAILS = "caseIsPartOfAClusterDetails";
+ public static final String NUMBER_OF_CASES_DETECTED_IN_CLUSTER = "numberOfCasesDetectedInCluster";
+ public static final String ALL_CASES_IN_CLUSTER_RECEIVED_VACCINE_FROM_SAME_VIAL = "allCasesInClusterReceivedVaccineFromSameVial";
+ public static final String ALL_CASES_IN_CLUSTER_RECEIVED_VACCINE_FROM_SAME_VIAL_DETAILS = "allCasesInClusterReceivedVaccineFromSameVialDetails";
+ public static final String NUMBER_OF_VIALS_USED_IN_CLUSTER = "numberOfVialsUsedInCluster";
+ public static final String NUMBER_OF_VIALS_USED_IN_CLUSTER_DETAILS = "numberOfVialsUsedInClusterDetails";
+ public static final String AD_SYRINGES_USED_FOR_IMMUNIZATION = "adSyringesUsedForImmunization";
+ public static final String TYPE_OF_SYRINGES_USED = "typeOfSyringesUsed";
+ public static final String TYPE_OF_SYRINGES_USED_DETAILS = "typeOfSyringesUsedDetails";
+ public static final String SYRINGES_USED_ADDITIONAL_DETAILS = "syringesUsedAdditionalDetails";
+ public static final String SAME_RECONSTITUTION_SYRINGE_USED_FOR_MULTIPLE_VIALS_OF_SAME_VACCINE =
+ "sameReconstitutionSyringeUsedForMultipleVialsOfSameVaccine";
+ public static final String SAME_RECONSTITUTION_SYRINGE_USED_FOR_RECONSTITUTING_DIFFERENT_VACCINES =
+ "sameReconstitutionSyringeUsedForReconstitutingDifferentVaccines";
+ public static final String SAME_RECONSTITUTION_SYRINGE_FOR_EACH_VACCINE_VIAL = "sameReconstitutionSyringeForEachVaccineVial";
+ public static final String SAME_RECONSTITUTION_SYRINGE_FOR_EACH_VACCINATION = "sameReconstitutionSyringeForEachVaccination";
+ public static final String VACCINES_AND_DILUENTS_USED_RECOMMENDED_BY_MANUFACTURER = "vaccinesAndDiluentsUsedRecommendedByManufacturer";
+ public static final String RECONSTITUTION_ADDITIONAL_DETAILS = "reconstitutionAdditionalDetails";
+ public static final String CORRECT_DOSE_OR_ROUTE = "correctDoseOrRoute";
+ public static final String TIME_OF_RECONSTITUTION_MENTIONED_ON_THE_VIAL = "timeOfReconstitutionMentionedOnTheVial";
+ public static final String NON_TOUCH_TECHNIQUE_FOLLOWED = "nonTouchTechniqueFollowed";
+ public static final String CONTRAINDICATION_SCREENED_PRIOR_TO_VACCINATION = "contraIndicationScreenedPriorToVaccination";
+ public static final String NUMBER_OF_AEFI_REPORTED_FROM_VACCINE_DISTRIBUTION_CENTER_LAST_THIRTY_DAYS =
+ "numberOfAefiReportedFromVaccineDistributionCenterLastThirtyDays";
+ public static final String TRAINING_RECEIVED_BY_VACCINATOR = "trainingReceivedByVaccinator";
+ public static final String LAST_TRAINING_RECEIVED_BY_VACCINATOR_DATE = "lastTrainingReceivedByVaccinatorDate";
+ public static final String INJECTION_TECHNIQUE_ADDITIONAL_DETAILS = "injectionTechniqueAdditionalDetails";
+ public static final String VACCINE_STORAGE_REFRIGERATOR_TEMPERATURE_MONITORED = "vaccineStorageRefrigeratorTemperatureMonitored";
+ public static final String ANY_STORAGE_TEMPERATURE_DEVIATION_OUTSIDE_TWO_TO_EIGHT_DEGREES =
+ "anyStorageTemperatureDeviationOutsideTwoToEightDegrees";
+ public static final String STORAGE_TEMPERATURE_MONITORING_ADDITIONAL_DETAILS = "storageTemperatureMonitoringAdditionalDetails";
+ public static final String CORRECT_PROCEDURE_FOR_STORAGE_FOLLOWED = "correctProcedureForStorageFollowed";
+ public static final String ANY_OTHER_ITEM_IN_REFRIGERATOR = "anyOtherItemInRefrigerator";
+ public static final String PARTIALLY_USED_RECONSTITUTED_VACCINES_IN_REFRIGERATOR = "partiallyUsedReconstitutedVaccinesInRefrigerator";
+ public static final String UNUSABLE_VACCINES_IN_REFRIGERATOR = "unusableVaccinesInRefrigerator";
+ public static final String UNUSABLE_DILUENTS_IN_STORE = "unusableDiluentsInStore";
+ public static final String VACCINE_STORAGE_POINT_ADDITIONAL_DETAILS = "vaccineStoragePointAdditionalDetails";
+ public static final String VACCINE_CARRIER_TYPE = "vaccineCarrierType";
+ public static final String VACCINE_CARRIER_TYPE_DETAILS = "vaccineCarrierTypeDetails";
+ public static final String VACCINE_CARRIER_SENT_TO_SITE_ON_SAME_DATE_AS_VACCINATION = "vaccineCarrierSentToSiteOnSameDateAsVaccination";
+ public static final String VACCINE_CARRIER_RETURNED_FROM_SITE_ON_SAME_DATE_AS_VACCINATION =
+ "vaccineCarrierReturnedFromSiteOnSameDateAsVaccination";
+ public static final String CONDITIONED_ICE_PACK_USED = "conditionedIcepackUsed";
+ public static final String VACCINE_TRANSPORTATION_ADDITIONAL_DETAILS = "vaccineTransportationAdditionalDetails";
+ public static final String SIMILAR_EVENTS_REPORTED_SAME_PERIOD_AND_LOCALITY = "similarEventsReportedSamePeriodAndLocality";
+ public static final String SIMILAR_EVENTS_REPORTED_SAME_PERIOD_AND_LOCALITY_DETAILS = "similarEventsReportedSamePeriodAndLocalityDetails";
+ public static final String NUMBER_OF_SIMILAR_EVENTS_REPORTED_SAME_PERIOD_AND_LOCALITY = "numberOfSimilarEventsReportedSamePeriodAndLocality";
+ public static final String NUMBER_OF_THOSE_AFFECTED_VACCINATED = "numberOfThoseAffectedVaccinated";
+ public static final String NUMBER_OF_THOSE_AFFECTED_NOT_VACCINATED = "numberOfThoseAffectedNotVaccinated";
+ public static final String NUMBER_OF_THOSE_AFFECTED_VACCINATED_UNKNOWN = "numberOfThoseAffectedVaccinatedUnknown";
+ public static final String COMMUNITY_INVESTIGATION_ADDITIONAL_DETAILS = "communityInvestigationAdditionalDetails";
+ public static final String OTHER_INVESTIGATION_FINDINGS = "otherInvestigationFindings";
+ public static final String INVESTIGATION_STATUS = "investigationStatus";
+ public static final String INVESTIGATION_STATUS_DETAILS = "investigationStatusDetails";
+ public static final String AEFI_CLASSIFICATION = "aefiClassification";
+ public static final String AEFI_CLASSIFICATION_SUB_TYPE = "aefiClassificationSubType";
+ public static final String AEFI_CLASSIFICATION_DETAILS = "aefiClassificationDetails";
+ public static final String CAUSALITY = "causality";
+ public static final String CAUSALITY_DETAILS = "causalityDetails";
+ public static final String INVESTIGATION_COMPLETION_DATE = "investigationCompletionDate";
+ public static final String DELETION_REASON = "deletionReason";
+ public static final String OTHER_DELETION_REASON = "otherDeletionReason";
+
+ @NotNull(message = Validations.validAefiReport)
+ private AefiReferenceDto aefiReport;
+ private LocationDto address;
+ @NotEmpty(message = Validations.aefiInvestigationWithoutSuspectVaccines)
+ private List vaccinations = new ArrayList<>();
+ private VaccinationDto primarySuspectVaccine;
+ private Date reportDate;
+ private UserReferenceDto reportingUser;
+ private String externalId;
+ private RegionReferenceDto responsibleRegion;
+ private DistrictReferenceDto responsibleDistrict;
+ private CommunityReferenceDto responsibleCommunity;
+ private CountryReferenceDto country;
+ private String investigationCaseId;
+ private PlaceOfVaccination placeOfVaccination;
+ private String placeOfVaccinationDetails;
+ private VaccinationActivity vaccinationActivity;
+ private String vaccinationActivityDetails;
+ private FacilityReferenceDto vaccinationFacility;
+ private String vaccinationFacilityDetails;
+ private String reportingOfficerName;
+ private FacilityReferenceDto reportingOfficerFacility;
+ private String reportingOfficerFacilityDetails;
+ private String reportingOfficerDesignation;
+ private String reportingOfficerDepartment;
+ private LocationDto reportingOfficerAddress;
+ private String reportingOfficerLandlinePhoneNumber;
+ private String reportingOfficerMobilePhoneNumber;
+ private String reportingOfficerEmail;
+ private Date investigationDate;
+ private Date formCompletionDate;
+ private AefiInvestigationStage investigationStage;
+ private VaccinationSite typeOfSite;
+ private String typeOfSiteDetails;
+ private Date keySymptomDateTime;
+ private Date hospitalizationDate;
+ private Date reportedToHealthAuthorityDate;
+ private PatientStatusAtAefiInvestigation statusOnDateOfInvestigation;
+ private Date deathDateTime;
+ private YesNoUnknown autopsyDone;
+ private Date autopsyDate;
+ private Date autopsyPlannedDateTime;
+ private YesNoUnknown pastHistoryOfSimilarEvent;
+ private String pastHistoryOfSimilarEventDetails;
+ private YesNoUnknown adverseEventAfterPreviousVaccinations;
+ private String adverseEventAfterPreviousVaccinationsDetails;
+ private YesNoUnknown historyOfAllergyToVaccineDrugOrFood;
+ private String historyOfAllergyToVaccineDrugOrFoodDetails;
+ private YesNoUnknown preExistingIllnessThirtyDaysOrCongenitalDisorder;
+ private String preExistingIllnessThirtyDaysOrCongenitalDisorderDetails;
+ private YesNoUnknown historyOfHospitalizationInLastThirtyDaysWithCause;
+ private String historyOfHospitalizationInLastThirtyDaysWithCauseDetails;
+ private YesNoUnknown currentlyOnConcomitantMedication;
+ private String currentlyOnConcomitantMedicationDetails;
+ private YesNoUnknown familyHistoryOfDiseaseOrAllergy;
+ private String familyHistoryOfDiseaseOrAllergyDetails;
+ private Integer numberOfWeeksPregnant;
+ private BirthTerm birthTerm;
+ private Float birthWeight;
+ private DeliveryProcedure deliveryProcedure;
+ private String deliveryProcedureDetails;
+ private Set seriousAefiInfoSource;
+ private String seriousAefiInfoSourceDetails;
+ private String seriousAefiVerbalAutopsyInfoSourceDetails;
+ private String firstCaregiversName;
+ private String otherCaregiversNames;
+ private String otherSourcesWhoProvidedInfo;
+ private String signsAndSymptomsFromTimeOfVaccination;
+ private String clinicalDetailsOfficerName;
+ private String clinicalDetailsOfficerPhoneNumber;
+ private String clinicalDetailsOfficerEmail;
+ private String clinicalDetailsOfficerDesignation;
+ private Date clinicalDetailsDateTime;
+ private YesNoUnknown patientReceivedMedicalCare;
+ private String patientReceivedMedicalCareDetails;
+ private String provisionalOrFinalDiagnosis;
+ private AefiImmunizationPeriod patientImmunizedPeriod;
+ private String patientImmunizedPeriodDetails;
+ private AefiVaccinationPeriod vaccineGivenPeriod;
+ private String vaccineGivenPeriodDetails;
+ private YesNoUnknown errorPrescribingVaccine;
+ private String errorPrescribingVaccineDetails;
+ private YesNoUnknown vaccineCouldHaveBeenUnSterile;
+ private String vaccineCouldHaveBeenUnSterileDetails;
+ private YesNoUnknown vaccinePhysicalConditionAbnormal;
+ private String vaccinePhysicalConditionAbnormalDetails;
+ private YesNoUnknown errorInVaccineReconstitution;
+ private String errorInVaccineReconstitutionDetails;
+ private YesNoUnknown errorInVaccineHandling;
+ private String errorInVaccineHandlingDetails;
+ private YesNoUnknown vaccineAdministeredIncorrectly;
+ private String vaccineAdministeredIncorrectlyDetails;
+ private Integer numberImmunizedFromConcernedVaccineVial;
+ private Integer numberImmunizedWithConcernedVaccineInSameSession;
+ private Integer numberImmunizedConcernedVaccineSameBatchNumberOtherLocations;
+ private String numberImmunizedConcernedVaccineSameBatchNumberLocationDetails;
+ private YesNoUnknown vaccineHasQualityDefect;
+ private String vaccineHasQualityDefectDetails;
+ private YesNoUnknown eventIsAStressResponseRelatedToImmunization;
+ private String eventIsAStressResponseRelatedToImmunizationDetails;
+ private YesNoUnknown caseIsPartOfACluster;
+ private String caseIsPartOfAClusterDetails;
+ private Integer numberOfCasesDetectedInCluster;
+ private YesNoUnknown allCasesInClusterReceivedVaccineFromSameVial;
+ private String allCasesInClusterReceivedVaccineFromSameVialDetails;
+ private Integer numberOfVialsUsedInCluster;
+ private String numberOfVialsUsedInClusterDetails;
+ private YesNoUnknown adSyringesUsedForImmunization;
+ private SyringeType typeOfSyringesUsed;
+ private String typeOfSyringesUsedDetails;
+ private String syringesUsedAdditionalDetails;
+ private YesNoUnknown sameReconstitutionSyringeUsedForMultipleVialsOfSameVaccine;
+ private YesNoUnknown sameReconstitutionSyringeUsedForReconstitutingDifferentVaccines;
+ private YesNoUnknown sameReconstitutionSyringeForEachVaccineVial;
+ private YesNoUnknown sameReconstitutionSyringeForEachVaccination;
+ private YesNoUnknown vaccinesAndDiluentsUsedRecommendedByManufacturer;
+ private String reconstitutionAdditionalDetails;
+ private YesNoUnknown correctDoseOrRoute;
+ private YesNoUnknown timeOfReconstitutionMentionedOnTheVial;
+ private YesNoUnknown nonTouchTechniqueFollowed;
+ private YesNoUnknown contraIndicationScreenedPriorToVaccination;
+ private Integer numberOfAefiReportedFromVaccineDistributionCenterLastThirtyDays;
+ private YesNoUnknown trainingReceivedByVaccinator;
+ private Date lastTrainingReceivedByVaccinatorDate;
+ private String injectionTechniqueAdditionalDetails;
+ private YesNoUnknown vaccineStorageRefrigeratorTemperatureMonitored;
+ private YesNoUnknown anyStorageTemperatureDeviationOutsideTwoToEightDegrees;
+ private String storageTemperatureMonitoringAdditionalDetails;
+ private YesNoUnknown correctProcedureForStorageFollowed;
+ private YesNoUnknown anyOtherItemInRefrigerator;
+ private YesNoUnknown partiallyUsedReconstitutedVaccinesInRefrigerator;
+ private YesNoUnknown unusableVaccinesInRefrigerator;
+ private YesNoUnknown unusableDiluentsInStore;
+ private String vaccineStoragePointAdditionalDetails;
+ private VaccineCarrier vaccineCarrierType;
+ private String vaccineCarrierTypeDetails;
+ private YesNoUnknown vaccineCarrierSentToSiteOnSameDateAsVaccination;
+ private YesNoUnknown vaccineCarrierReturnedFromSiteOnSameDateAsVaccination;
+ private YesNoUnknown conditionedIcepackUsed;
+ private String vaccineTransportationAdditionalDetails;
+ private YesNoUnknown similarEventsReportedSamePeriodAndLocality;
+ private String similarEventsReportedSamePeriodAndLocalityDetails;
+ private Integer numberOfSimilarEventsReportedSamePeriodAndLocality;
+ private Integer numberOfThoseAffectedVaccinated;
+ private Integer numberOfThoseAffectedNotVaccinated;
+ private Integer numberOfThoseAffectedVaccinatedUnknown;
+ private String communityInvestigationAdditionalDetails;
+ private String otherInvestigationFindings;
+ private AefiInvestigationStatus investigationStatus;
+ private String investigationStatusDetails;
+ private AefiClassification aefiClassification;
+ private AefiClassificationSubType aefiClassificationSubType;
+ private String aefiClassificationDetails;
+ private AefiCausality causality;
+ private String causalityDetails;
+ private Date investigationCompletionDate;
+ private boolean archived;
+ private boolean deleted;
+ private DeletionReason deletionReason;
+ @Size(max = FieldConstraints.CHARACTER_LIMIT_TEXT, message = Validations.textTooLong)
+ private String otherDeletionReason;
+
+ public static AefiInvestigationDto build(UserReferenceDto user) {
+
+ final AefiInvestigationDto aefiInvestigationDto = new AefiInvestigationDto();
+ aefiInvestigationDto.setUuid(DataHelper.createUuid());
+ aefiInvestigationDto.setReportingUser(user);
+ aefiInvestigationDto.setReportDate(new Date());
+
+ return aefiInvestigationDto;
+ }
+
+ public static AefiInvestigationDto build(AefiReferenceDto aefiReferenceDto) {
+
+ final AefiInvestigationDto aefiInvestigationDto = new AefiInvestigationDto();
+ aefiInvestigationDto.setUuid(DataHelper.createUuid());
+ aefiInvestigationDto.setAefiReport(aefiReferenceDto);
+ aefiInvestigationDto.setReportDate(new Date());
+
+ return aefiInvestigationDto;
+ }
+
+ public static AefiInvestigationDto build(AefiInvestigationReferenceDto aefiInvestigationReferenceDto) {
+
+ final AefiInvestigationDto aefiInvestigationDto = new AefiInvestigationDto();
+ aefiInvestigationDto.setUuid(aefiInvestigationReferenceDto.getUuid());
+ aefiInvestigationDto.setReportDate(new Date());
+
+ return aefiInvestigationDto;
+ }
+
+ public AefiInvestigationReferenceDto toReference() {
+ return new AefiInvestigationReferenceDto(getUuid(), getExternalId());
+ }
+
+ public AefiReferenceDto getAefiReport() {
+ return aefiReport;
+ }
+
+ public void setAefiReport(AefiReferenceDto aefiReport) {
+ this.aefiReport = aefiReport;
+ }
+
+ public LocationDto getAddress() {
+ return address;
+ }
+
+ public void setAddress(LocationDto address) {
+ this.address = address;
+ }
+
+ public List getVaccinations() {
+ return vaccinations;
+ }
+
+ public void setVaccinations(List vaccinations) {
+ this.vaccinations = vaccinations;
+ }
+
+ public VaccinationDto getPrimarySuspectVaccine() {
+ return primarySuspectVaccine;
+ }
+
+ public void setPrimarySuspectVaccine(VaccinationDto primarySuspectVaccine) {
+ this.primarySuspectVaccine = primarySuspectVaccine;
+ }
+
+ public Date getReportDate() {
+ return reportDate;
+ }
+
+ public void setReportDate(Date reportDate) {
+ this.reportDate = reportDate;
+ }
+
+ public UserReferenceDto getReportingUser() {
+ return reportingUser;
+ }
+
+ public void setReportingUser(UserReferenceDto reportingUser) {
+ this.reportingUser = reportingUser;
+ }
+
+ public String getExternalId() {
+ return externalId;
+ }
+
+ public void setExternalId(String externalId) {
+ this.externalId = externalId;
+ }
+
+ public RegionReferenceDto getResponsibleRegion() {
+ return responsibleRegion;
+ }
+
+ public void setResponsibleRegion(RegionReferenceDto responsibleRegion) {
+ this.responsibleRegion = responsibleRegion;
+ }
+
+ public DistrictReferenceDto getResponsibleDistrict() {
+ return responsibleDistrict;
+ }
+
+ public void setResponsibleDistrict(DistrictReferenceDto responsibleDistrict) {
+ this.responsibleDistrict = responsibleDistrict;
+ }
+
+ public CommunityReferenceDto getResponsibleCommunity() {
+ return responsibleCommunity;
+ }
+
+ public void setResponsibleCommunity(CommunityReferenceDto responsibleCommunity) {
+ this.responsibleCommunity = responsibleCommunity;
+ }
+
+ public CountryReferenceDto getCountry() {
+ return country;
+ }
+
+ public void setCountry(CountryReferenceDto country) {
+ this.country = country;
+ }
+
+ public String getInvestigationCaseId() {
+ return investigationCaseId;
+ }
+
+ public void setInvestigationCaseId(String investigationCaseId) {
+ this.investigationCaseId = investigationCaseId;
+ }
+
+ public PlaceOfVaccination getPlaceOfVaccination() {
+ return placeOfVaccination;
+ }
+
+ public void setPlaceOfVaccination(PlaceOfVaccination placeOfVaccination) {
+ this.placeOfVaccination = placeOfVaccination;
+ }
+
+ public String getPlaceOfVaccinationDetails() {
+ return placeOfVaccinationDetails;
+ }
+
+ public void setPlaceOfVaccinationDetails(String placeOfVaccinationDetails) {
+ this.placeOfVaccinationDetails = placeOfVaccinationDetails;
+ }
+
+ public VaccinationActivity getVaccinationActivity() {
+ return vaccinationActivity;
+ }
+
+ public void setVaccinationActivity(VaccinationActivity vaccinationActivity) {
+ this.vaccinationActivity = vaccinationActivity;
+ }
+
+ public String getVaccinationActivityDetails() {
+ return vaccinationActivityDetails;
+ }
+
+ public void setVaccinationActivityDetails(String vaccinationActivityDetails) {
+ this.vaccinationActivityDetails = vaccinationActivityDetails;
+ }
+
+ public FacilityReferenceDto getVaccinationFacility() {
+ return vaccinationFacility;
+ }
+
+ public void setVaccinationFacility(FacilityReferenceDto vaccinationFacility) {
+ this.vaccinationFacility = vaccinationFacility;
+ }
+
+ public String getVaccinationFacilityDetails() {
+ return vaccinationFacilityDetails;
+ }
+
+ public void setVaccinationFacilityDetails(String vaccinationFacilityDetails) {
+ this.vaccinationFacilityDetails = vaccinationFacilityDetails;
+ }
+
+ public String getReportingOfficerName() {
+ return reportingOfficerName;
+ }
+
+ public void setReportingOfficerName(String reportingOfficerName) {
+ this.reportingOfficerName = reportingOfficerName;
+ }
+
+ public FacilityReferenceDto getReportingOfficerFacility() {
+ return reportingOfficerFacility;
+ }
+
+ public void setReportingOfficerFacility(FacilityReferenceDto reportingOfficerFacility) {
+ this.reportingOfficerFacility = reportingOfficerFacility;
+ }
+
+ public String getReportingOfficerFacilityDetails() {
+ return reportingOfficerFacilityDetails;
+ }
+
+ public void setReportingOfficerFacilityDetails(String reportingOfficerFacilityDetails) {
+ this.reportingOfficerFacilityDetails = reportingOfficerFacilityDetails;
+ }
+
+ public String getReportingOfficerDesignation() {
+ return reportingOfficerDesignation;
+ }
+
+ public void setReportingOfficerDesignation(String reportingOfficerDesignation) {
+ this.reportingOfficerDesignation = reportingOfficerDesignation;
+ }
+
+ public String getReportingOfficerDepartment() {
+ return reportingOfficerDepartment;
+ }
+
+ public void setReportingOfficerDepartment(String reportingOfficerDepartment) {
+ this.reportingOfficerDepartment = reportingOfficerDepartment;
+ }
+
+ public LocationDto getReportingOfficerAddress() {
+ return reportingOfficerAddress;
+ }
+
+ public void setReportingOfficerAddress(LocationDto reportingOfficerAddress) {
+ this.reportingOfficerAddress = reportingOfficerAddress;
+ }
+
+ public String getReportingOfficerLandlinePhoneNumber() {
+ return reportingOfficerLandlinePhoneNumber;
+ }
+
+ public void setReportingOfficerLandlinePhoneNumber(String reportingOfficerLandlinePhoneNumber) {
+ this.reportingOfficerLandlinePhoneNumber = reportingOfficerLandlinePhoneNumber;
+ }
+
+ public String getReportingOfficerMobilePhoneNumber() {
+ return reportingOfficerMobilePhoneNumber;
+ }
+
+ public void setReportingOfficerMobilePhoneNumber(String reportingOfficerMobilePhoneNumber) {
+ this.reportingOfficerMobilePhoneNumber = reportingOfficerMobilePhoneNumber;
+ }
+
+ public String getReportingOfficerEmail() {
+ return reportingOfficerEmail;
+ }
+
+ public void setReportingOfficerEmail(String reportingOfficerEmail) {
+ this.reportingOfficerEmail = reportingOfficerEmail;
+ }
+
+ public Date getInvestigationDate() {
+ return investigationDate;
+ }
+
+ public void setInvestigationDate(Date investigationDate) {
+ this.investigationDate = investigationDate;
+ }
+
+ public Date getFormCompletionDate() {
+ return formCompletionDate;
+ }
+
+ public void setFormCompletionDate(Date formCompletionDate) {
+ this.formCompletionDate = formCompletionDate;
+ }
+
+ public AefiInvestigationStage getInvestigationStage() {
+ return investigationStage;
+ }
+
+ public void setInvestigationStage(AefiInvestigationStage investigationStage) {
+ this.investigationStage = investigationStage;
+ }
+
+ public VaccinationSite getTypeOfSite() {
+ return typeOfSite;
+ }
+
+ public void setTypeOfSite(VaccinationSite typeOfSite) {
+ this.typeOfSite = typeOfSite;
+ }
+
+ public String getTypeOfSiteDetails() {
+ return typeOfSiteDetails;
+ }
+
+ public void setTypeOfSiteDetails(String typeOfSiteDetails) {
+ this.typeOfSiteDetails = typeOfSiteDetails;
+ }
+
+ public Date getKeySymptomDateTime() {
+ return keySymptomDateTime;
+ }
+
+ public void setKeySymptomDateTime(Date keySymptomDateTime) {
+ this.keySymptomDateTime = keySymptomDateTime;
+ }
+
+ public Date getHospitalizationDate() {
+ return hospitalizationDate;
+ }
+
+ public void setHospitalizationDate(Date hospitalizationDate) {
+ this.hospitalizationDate = hospitalizationDate;
+ }
+
+ public Date getReportedToHealthAuthorityDate() {
+ return reportedToHealthAuthorityDate;
+ }
+
+ public void setReportedToHealthAuthorityDate(Date reportedToHealthAuthorityDate) {
+ this.reportedToHealthAuthorityDate = reportedToHealthAuthorityDate;
+ }
+
+ public PatientStatusAtAefiInvestigation getStatusOnDateOfInvestigation() {
+ return statusOnDateOfInvestigation;
+ }
+
+ public void setStatusOnDateOfInvestigation(PatientStatusAtAefiInvestigation statusOnDateOfInvestigation) {
+ this.statusOnDateOfInvestigation = statusOnDateOfInvestigation;
+ }
+
+ public Date getDeathDateTime() {
+ return deathDateTime;
+ }
+
+ public void setDeathDateTime(Date deathDateTime) {
+ this.deathDateTime = deathDateTime;
+ }
+
+ public YesNoUnknown getAutopsyDone() {
+ return autopsyDone;
+ }
+
+ public void setAutopsyDone(YesNoUnknown autopsyDone) {
+ this.autopsyDone = autopsyDone;
+ }
+
+ public Date getAutopsyDate() {
+ return autopsyDate;
+ }
+
+ public void setAutopsyDate(Date autopsyDate) {
+ this.autopsyDate = autopsyDate;
+ }
+
+ public Date getAutopsyPlannedDateTime() {
+ return autopsyPlannedDateTime;
+ }
+
+ public void setAutopsyPlannedDateTime(Date autopsyPlannedDateTime) {
+ this.autopsyPlannedDateTime = autopsyPlannedDateTime;
+ }
+
+ public YesNoUnknown getPastHistoryOfSimilarEvent() {
+ return pastHistoryOfSimilarEvent;
+ }
+
+ public void setPastHistoryOfSimilarEvent(YesNoUnknown pastHistoryOfSimilarEvent) {
+ this.pastHistoryOfSimilarEvent = pastHistoryOfSimilarEvent;
+ }
+
+ public String getPastHistoryOfSimilarEventDetails() {
+ return pastHistoryOfSimilarEventDetails;
+ }
+
+ public void setPastHistoryOfSimilarEventDetails(String pastHistoryOfSimilarEventDetails) {
+ this.pastHistoryOfSimilarEventDetails = pastHistoryOfSimilarEventDetails;
+ }
+
+ public YesNoUnknown getAdverseEventAfterPreviousVaccinations() {
+ return adverseEventAfterPreviousVaccinations;
+ }
+
+ public void setAdverseEventAfterPreviousVaccinations(YesNoUnknown adverseEventAfterPreviousVaccinations) {
+ this.adverseEventAfterPreviousVaccinations = adverseEventAfterPreviousVaccinations;
+ }
+
+ public String getAdverseEventAfterPreviousVaccinationsDetails() {
+ return adverseEventAfterPreviousVaccinationsDetails;
+ }
+
+ public void setAdverseEventAfterPreviousVaccinationsDetails(String adverseEventAfterPreviousVaccinationsDetails) {
+ this.adverseEventAfterPreviousVaccinationsDetails = adverseEventAfterPreviousVaccinationsDetails;
+ }
+
+ public YesNoUnknown getHistoryOfAllergyToVaccineDrugOrFood() {
+ return historyOfAllergyToVaccineDrugOrFood;
+ }
+
+ public void setHistoryOfAllergyToVaccineDrugOrFood(YesNoUnknown historyOfAllergyToVaccineDrugOrFood) {
+ this.historyOfAllergyToVaccineDrugOrFood = historyOfAllergyToVaccineDrugOrFood;
+ }
+
+ public String getHistoryOfAllergyToVaccineDrugOrFoodDetails() {
+ return historyOfAllergyToVaccineDrugOrFoodDetails;
+ }
+
+ public void setHistoryOfAllergyToVaccineDrugOrFoodDetails(String historyOfAllergyToVaccineDrugOrFoodDetails) {
+ this.historyOfAllergyToVaccineDrugOrFoodDetails = historyOfAllergyToVaccineDrugOrFoodDetails;
+ }
+
+ public YesNoUnknown getPreExistingIllnessThirtyDaysOrCongenitalDisorder() {
+ return preExistingIllnessThirtyDaysOrCongenitalDisorder;
+ }
+
+ public void setPreExistingIllnessThirtyDaysOrCongenitalDisorder(YesNoUnknown preExistingIllnessThirtyDaysOrCongenitalDisorder) {
+ this.preExistingIllnessThirtyDaysOrCongenitalDisorder = preExistingIllnessThirtyDaysOrCongenitalDisorder;
+ }
+
+ public String getPreExistingIllnessThirtyDaysOrCongenitalDisorderDetails() {
+ return preExistingIllnessThirtyDaysOrCongenitalDisorderDetails;
+ }
+
+ public void setPreExistingIllnessThirtyDaysOrCongenitalDisorderDetails(String preExistingIllnessThirtyDaysOrCongenitalDisorderDetails) {
+ this.preExistingIllnessThirtyDaysOrCongenitalDisorderDetails = preExistingIllnessThirtyDaysOrCongenitalDisorderDetails;
+ }
+
+ public YesNoUnknown getHistoryOfHospitalizationInLastThirtyDaysWithCause() {
+ return historyOfHospitalizationInLastThirtyDaysWithCause;
+ }
+
+ public void setHistoryOfHospitalizationInLastThirtyDaysWithCause(YesNoUnknown historyOfHospitalizationInLastThirtyDaysWithCause) {
+ this.historyOfHospitalizationInLastThirtyDaysWithCause = historyOfHospitalizationInLastThirtyDaysWithCause;
+ }
+
+ public String getHistoryOfHospitalizationInLastThirtyDaysWithCauseDetails() {
+ return historyOfHospitalizationInLastThirtyDaysWithCauseDetails;
+ }
+
+ public void setHistoryOfHospitalizationInLastThirtyDaysWithCauseDetails(String historyOfHospitalizationInLastThirtyDaysWithCauseDetails) {
+ this.historyOfHospitalizationInLastThirtyDaysWithCauseDetails = historyOfHospitalizationInLastThirtyDaysWithCauseDetails;
+ }
+
+ public YesNoUnknown getCurrentlyOnConcomitantMedication() {
+ return currentlyOnConcomitantMedication;
+ }
+
+ public void setCurrentlyOnConcomitantMedication(YesNoUnknown currentlyOnConcomitantMedication) {
+ this.currentlyOnConcomitantMedication = currentlyOnConcomitantMedication;
+ }
+
+ public String getCurrentlyOnConcomitantMedicationDetails() {
+ return currentlyOnConcomitantMedicationDetails;
+ }
+
+ public void setCurrentlyOnConcomitantMedicationDetails(String currentlyOnConcomitantMedicationDetails) {
+ this.currentlyOnConcomitantMedicationDetails = currentlyOnConcomitantMedicationDetails;
+ }
+
+ public YesNoUnknown getFamilyHistoryOfDiseaseOrAllergy() {
+ return familyHistoryOfDiseaseOrAllergy;
+ }
+
+ public void setFamilyHistoryOfDiseaseOrAllergy(YesNoUnknown familyHistoryOfDiseaseOrAllergy) {
+ this.familyHistoryOfDiseaseOrAllergy = familyHistoryOfDiseaseOrAllergy;
+ }
+
+ public String getFamilyHistoryOfDiseaseOrAllergyDetails() {
+ return familyHistoryOfDiseaseOrAllergyDetails;
+ }
+
+ public void setFamilyHistoryOfDiseaseOrAllergyDetails(String familyHistoryOfDiseaseOrAllergyDetails) {
+ this.familyHistoryOfDiseaseOrAllergyDetails = familyHistoryOfDiseaseOrAllergyDetails;
+ }
+
+ public Integer getNumberOfWeeksPregnant() {
+ return numberOfWeeksPregnant;
+ }
+
+ public void setNumberOfWeeksPregnant(Integer numberOfWeeksPregnant) {
+ this.numberOfWeeksPregnant = numberOfWeeksPregnant;
+ }
+
+ public BirthTerm getBirthTerm() {
+ return birthTerm;
+ }
+
+ public void setBirthTerm(BirthTerm birthTerm) {
+ this.birthTerm = birthTerm;
+ }
+
+ public Float getBirthWeight() {
+ return birthWeight;
+ }
+
+ public void setBirthWeight(Float birthWeight) {
+ this.birthWeight = birthWeight;
+ }
+
+ public DeliveryProcedure getDeliveryProcedure() {
+ return deliveryProcedure;
+ }
+
+ public void setDeliveryProcedure(DeliveryProcedure deliveryProcedure) {
+ this.deliveryProcedure = deliveryProcedure;
+ }
+
+ public String getDeliveryProcedureDetails() {
+ return deliveryProcedureDetails;
+ }
+
+ public void setDeliveryProcedureDetails(String deliveryProcedureDetails) {
+ this.deliveryProcedureDetails = deliveryProcedureDetails;
+ }
+
+ public Set getSeriousAefiInfoSource() {
+ return seriousAefiInfoSource;
+ }
+
+ public void setSeriousAefiInfoSource(Set seriousAefiInfoSource) {
+ this.seriousAefiInfoSource = seriousAefiInfoSource;
+ }
+
+ public String getSeriousAefiInfoSourceDetails() {
+ return seriousAefiInfoSourceDetails;
+ }
+
+ public void setSeriousAefiInfoSourceDetails(String seriousAefiInfoSourceDetails) {
+ this.seriousAefiInfoSourceDetails = seriousAefiInfoSourceDetails;
+ }
+
+ public String getSeriousAefiVerbalAutopsyInfoSourceDetails() {
+ return seriousAefiVerbalAutopsyInfoSourceDetails;
+ }
+
+ public void setSeriousAefiVerbalAutopsyInfoSourceDetails(String seriousAefiVerbalAutopsyInfoSourceDetails) {
+ this.seriousAefiVerbalAutopsyInfoSourceDetails = seriousAefiVerbalAutopsyInfoSourceDetails;
+ }
+
+ public String getFirstCaregiversName() {
+ return firstCaregiversName;
+ }
+
+ public void setFirstCaregiversName(String firstCaregiversName) {
+ this.firstCaregiversName = firstCaregiversName;
+ }
+
+ public String getOtherCaregiversNames() {
+ return otherCaregiversNames;
+ }
+
+ public void setOtherCaregiversNames(String otherCaregiversNames) {
+ this.otherCaregiversNames = otherCaregiversNames;
+ }
+
+ public String getOtherSourcesWhoProvidedInfo() {
+ return otherSourcesWhoProvidedInfo;
+ }
+
+ public void setOtherSourcesWhoProvidedInfo(String otherSourcesWhoProvidedInfo) {
+ this.otherSourcesWhoProvidedInfo = otherSourcesWhoProvidedInfo;
+ }
+
+ public String getSignsAndSymptomsFromTimeOfVaccination() {
+ return signsAndSymptomsFromTimeOfVaccination;
+ }
+
+ public void setSignsAndSymptomsFromTimeOfVaccination(String signsAndSymptomsFromTimeOfVaccination) {
+ this.signsAndSymptomsFromTimeOfVaccination = signsAndSymptomsFromTimeOfVaccination;
+ }
+
+ public String getClinicalDetailsOfficerName() {
+ return clinicalDetailsOfficerName;
+ }
+
+ public void setClinicalDetailsOfficerName(String clinicalDetailsOfficerName) {
+ this.clinicalDetailsOfficerName = clinicalDetailsOfficerName;
+ }
+
+ public String getClinicalDetailsOfficerPhoneNumber() {
+ return clinicalDetailsOfficerPhoneNumber;
+ }
+
+ public void setClinicalDetailsOfficerPhoneNumber(String clinicalDetailsOfficerPhoneNumber) {
+ this.clinicalDetailsOfficerPhoneNumber = clinicalDetailsOfficerPhoneNumber;
+ }
+
+ public String getClinicalDetailsOfficerEmail() {
+ return clinicalDetailsOfficerEmail;
+ }
+
+ public void setClinicalDetailsOfficerEmail(String clinicalDetailsOfficerEmail) {
+ this.clinicalDetailsOfficerEmail = clinicalDetailsOfficerEmail;
+ }
+
+ public String getClinicalDetailsOfficerDesignation() {
+ return clinicalDetailsOfficerDesignation;
+ }
+
+ public void setClinicalDetailsOfficerDesignation(String clinicalDetailsOfficerDesignation) {
+ this.clinicalDetailsOfficerDesignation = clinicalDetailsOfficerDesignation;
+ }
+
+ public Date getClinicalDetailsDateTime() {
+ return clinicalDetailsDateTime;
+ }
+
+ public void setClinicalDetailsDateTime(Date clinicalDetailsDateTime) {
+ this.clinicalDetailsDateTime = clinicalDetailsDateTime;
+ }
+
+ public YesNoUnknown getPatientReceivedMedicalCare() {
+ return patientReceivedMedicalCare;
+ }
+
+ public void setPatientReceivedMedicalCare(YesNoUnknown patientReceivedMedicalCare) {
+ this.patientReceivedMedicalCare = patientReceivedMedicalCare;
+ }
+
+ public String getPatientReceivedMedicalCareDetails() {
+ return patientReceivedMedicalCareDetails;
+ }
+
+ public void setPatientReceivedMedicalCareDetails(String patientReceivedMedicalCareDetails) {
+ this.patientReceivedMedicalCareDetails = patientReceivedMedicalCareDetails;
+ }
+
+ public String getProvisionalOrFinalDiagnosis() {
+ return provisionalOrFinalDiagnosis;
+ }
+
+ public void setProvisionalOrFinalDiagnosis(String provisionalOrFinalDiagnosis) {
+ this.provisionalOrFinalDiagnosis = provisionalOrFinalDiagnosis;
+ }
+
+ public AefiImmunizationPeriod getPatientImmunizedPeriod() {
+ return patientImmunizedPeriod;
+ }
+
+ public void setPatientImmunizedPeriod(AefiImmunizationPeriod patientImmunizedPeriod) {
+ this.patientImmunizedPeriod = patientImmunizedPeriod;
+ }
+
+ public String getPatientImmunizedPeriodDetails() {
+ return patientImmunizedPeriodDetails;
+ }
+
+ public void setPatientImmunizedPeriodDetails(String patientImmunizedPeriodDetails) {
+ this.patientImmunizedPeriodDetails = patientImmunizedPeriodDetails;
+ }
+
+ public AefiVaccinationPeriod getVaccineGivenPeriod() {
+ return vaccineGivenPeriod;
+ }
+
+ public void setVaccineGivenPeriod(AefiVaccinationPeriod vaccineGivenPeriod) {
+ this.vaccineGivenPeriod = vaccineGivenPeriod;
+ }
+
+ public String getVaccineGivenPeriodDetails() {
+ return vaccineGivenPeriodDetails;
+ }
+
+ public void setVaccineGivenPeriodDetails(String vaccineGivenPeriodDetails) {
+ this.vaccineGivenPeriodDetails = vaccineGivenPeriodDetails;
+ }
+
+ public YesNoUnknown getErrorPrescribingVaccine() {
+ return errorPrescribingVaccine;
+ }
+
+ public void setErrorPrescribingVaccine(YesNoUnknown errorPrescribingVaccine) {
+ this.errorPrescribingVaccine = errorPrescribingVaccine;
+ }
+
+ public String getErrorPrescribingVaccineDetails() {
+ return errorPrescribingVaccineDetails;
+ }
+
+ public void setErrorPrescribingVaccineDetails(String errorPrescribingVaccineDetails) {
+ this.errorPrescribingVaccineDetails = errorPrescribingVaccineDetails;
+ }
+
+ public YesNoUnknown getVaccineCouldHaveBeenUnSterile() {
+ return vaccineCouldHaveBeenUnSterile;
+ }
+
+ public void setVaccineCouldHaveBeenUnSterile(YesNoUnknown vaccineCouldHaveBeenUnSterile) {
+ this.vaccineCouldHaveBeenUnSterile = vaccineCouldHaveBeenUnSterile;
+ }
+
+ public String getVaccineCouldHaveBeenUnSterileDetails() {
+ return vaccineCouldHaveBeenUnSterileDetails;
+ }
+
+ public void setVaccineCouldHaveBeenUnSterileDetails(String vaccineCouldHaveBeenUnSterileDetails) {
+ this.vaccineCouldHaveBeenUnSterileDetails = vaccineCouldHaveBeenUnSterileDetails;
+ }
+
+ public YesNoUnknown getVaccinePhysicalConditionAbnormal() {
+ return vaccinePhysicalConditionAbnormal;
+ }
+
+ public void setVaccinePhysicalConditionAbnormal(YesNoUnknown vaccinePhysicalConditionAbnormal) {
+ this.vaccinePhysicalConditionAbnormal = vaccinePhysicalConditionAbnormal;
+ }
+
+ public String getVaccinePhysicalConditionAbnormalDetails() {
+ return vaccinePhysicalConditionAbnormalDetails;
+ }
+
+ public void setVaccinePhysicalConditionAbnormalDetails(String vaccinePhysicalConditionAbnormalDetails) {
+ this.vaccinePhysicalConditionAbnormalDetails = vaccinePhysicalConditionAbnormalDetails;
+ }
+
+ public YesNoUnknown getErrorInVaccineReconstitution() {
+ return errorInVaccineReconstitution;
+ }
+
+ public void setErrorInVaccineReconstitution(YesNoUnknown errorInVaccineReconstitution) {
+ this.errorInVaccineReconstitution = errorInVaccineReconstitution;
+ }
+
+ public String getErrorInVaccineReconstitutionDetails() {
+ return errorInVaccineReconstitutionDetails;
+ }
+
+ public void setErrorInVaccineReconstitutionDetails(String errorInVaccineReconstitutionDetails) {
+ this.errorInVaccineReconstitutionDetails = errorInVaccineReconstitutionDetails;
+ }
+
+ public YesNoUnknown getErrorInVaccineHandling() {
+ return errorInVaccineHandling;
+ }
+
+ public void setErrorInVaccineHandling(YesNoUnknown errorInVaccineHandling) {
+ this.errorInVaccineHandling = errorInVaccineHandling;
+ }
+
+ public String getErrorInVaccineHandlingDetails() {
+ return errorInVaccineHandlingDetails;
+ }
+
+ public void setErrorInVaccineHandlingDetails(String errorInVaccineHandlingDetails) {
+ this.errorInVaccineHandlingDetails = errorInVaccineHandlingDetails;
+ }
+
+ public YesNoUnknown getVaccineAdministeredIncorrectly() {
+ return vaccineAdministeredIncorrectly;
+ }
+
+ public void setVaccineAdministeredIncorrectly(YesNoUnknown vaccineAdministeredIncorrectly) {
+ this.vaccineAdministeredIncorrectly = vaccineAdministeredIncorrectly;
+ }
+
+ public String getVaccineAdministeredIncorrectlyDetails() {
+ return vaccineAdministeredIncorrectlyDetails;
+ }
+
+ public void setVaccineAdministeredIncorrectlyDetails(String vaccineAdministeredIncorrectlyDetails) {
+ this.vaccineAdministeredIncorrectlyDetails = vaccineAdministeredIncorrectlyDetails;
+ }
+
+ public Integer getNumberImmunizedFromConcernedVaccineVial() {
+ return numberImmunizedFromConcernedVaccineVial;
+ }
+
+ public void setNumberImmunizedFromConcernedVaccineVial(Integer numberImmunizedFromConcernedVaccineVial) {
+ this.numberImmunizedFromConcernedVaccineVial = numberImmunizedFromConcernedVaccineVial;
+ }
+
+ public Integer getNumberImmunizedWithConcernedVaccineInSameSession() {
+ return numberImmunizedWithConcernedVaccineInSameSession;
+ }
+
+ public void setNumberImmunizedWithConcernedVaccineInSameSession(Integer numberImmunizedWithConcernedVaccineInSameSession) {
+ this.numberImmunizedWithConcernedVaccineInSameSession = numberImmunizedWithConcernedVaccineInSameSession;
+ }
+
+ public Integer getNumberImmunizedConcernedVaccineSameBatchNumberOtherLocations() {
+ return numberImmunizedConcernedVaccineSameBatchNumberOtherLocations;
+ }
+
+ public void setNumberImmunizedConcernedVaccineSameBatchNumberOtherLocations(
+ Integer numberImmunizedConcernedVaccineSameBatchNumberOtherLocations) {
+ this.numberImmunizedConcernedVaccineSameBatchNumberOtherLocations = numberImmunizedConcernedVaccineSameBatchNumberOtherLocations;
+ }
+
+ public String getNumberImmunizedConcernedVaccineSameBatchNumberLocationDetails() {
+ return numberImmunizedConcernedVaccineSameBatchNumberLocationDetails;
+ }
+
+ public void setNumberImmunizedConcernedVaccineSameBatchNumberLocationDetails(
+ String numberImmunizedConcernedVaccineSameBatchNumberLocationDetails) {
+ this.numberImmunizedConcernedVaccineSameBatchNumberLocationDetails = numberImmunizedConcernedVaccineSameBatchNumberLocationDetails;
+ }
+
+ public YesNoUnknown getVaccineHasQualityDefect() {
+ return vaccineHasQualityDefect;
+ }
+
+ public void setVaccineHasQualityDefect(YesNoUnknown vaccineHasQualityDefect) {
+ this.vaccineHasQualityDefect = vaccineHasQualityDefect;
+ }
+
+ public String getVaccineHasQualityDefectDetails() {
+ return vaccineHasQualityDefectDetails;
+ }
+
+ public void setVaccineHasQualityDefectDetails(String vaccineHasQualityDefectDetails) {
+ this.vaccineHasQualityDefectDetails = vaccineHasQualityDefectDetails;
+ }
+
+ public YesNoUnknown getEventIsAStressResponseRelatedToImmunization() {
+ return eventIsAStressResponseRelatedToImmunization;
+ }
+
+ public void setEventIsAStressResponseRelatedToImmunization(YesNoUnknown eventIsAStressResponseRelatedToImmunization) {
+ this.eventIsAStressResponseRelatedToImmunization = eventIsAStressResponseRelatedToImmunization;
+ }
+
+ public String getEventIsAStressResponseRelatedToImmunizationDetails() {
+ return eventIsAStressResponseRelatedToImmunizationDetails;
+ }
+
+ public void setEventIsAStressResponseRelatedToImmunizationDetails(String eventIsAStressResponseRelatedToImmunizationDetails) {
+ this.eventIsAStressResponseRelatedToImmunizationDetails = eventIsAStressResponseRelatedToImmunizationDetails;
+ }
+
+ public YesNoUnknown getCaseIsPartOfACluster() {
+ return caseIsPartOfACluster;
+ }
+
+ public void setCaseIsPartOfACluster(YesNoUnknown caseIsPartOfACluster) {
+ this.caseIsPartOfACluster = caseIsPartOfACluster;
+ }
+
+ public String getCaseIsPartOfAClusterDetails() {
+ return caseIsPartOfAClusterDetails;
+ }
+
+ public void setCaseIsPartOfAClusterDetails(String caseIsPartOfAClusterDetails) {
+ this.caseIsPartOfAClusterDetails = caseIsPartOfAClusterDetails;
+ }
+
+ public Integer getNumberOfCasesDetectedInCluster() {
+ return numberOfCasesDetectedInCluster;
+ }
+
+ public void setNumberOfCasesDetectedInCluster(Integer numberOfCasesDetectedInCluster) {
+ this.numberOfCasesDetectedInCluster = numberOfCasesDetectedInCluster;
+ }
+
+ public YesNoUnknown getAllCasesInClusterReceivedVaccineFromSameVial() {
+ return allCasesInClusterReceivedVaccineFromSameVial;
+ }
+
+ public void setAllCasesInClusterReceivedVaccineFromSameVial(YesNoUnknown allCasesInClusterReceivedVaccineFromSameVial) {
+ this.allCasesInClusterReceivedVaccineFromSameVial = allCasesInClusterReceivedVaccineFromSameVial;
+ }
+
+ public String getAllCasesInClusterReceivedVaccineFromSameVialDetails() {
+ return allCasesInClusterReceivedVaccineFromSameVialDetails;
+ }
+
+ public void setAllCasesInClusterReceivedVaccineFromSameVialDetails(String allCasesInClusterReceivedVaccineFromSameVialDetails) {
+ this.allCasesInClusterReceivedVaccineFromSameVialDetails = allCasesInClusterReceivedVaccineFromSameVialDetails;
+ }
+
+ public Integer getNumberOfVialsUsedInCluster() {
+ return numberOfVialsUsedInCluster;
+ }
+
+ public void setNumberOfVialsUsedInCluster(Integer numberOfVialsUsedInCluster) {
+ this.numberOfVialsUsedInCluster = numberOfVialsUsedInCluster;
+ }
+
+ public String getNumberOfVialsUsedInClusterDetails() {
+ return numberOfVialsUsedInClusterDetails;
+ }
+
+ public void setNumberOfVialsUsedInClusterDetails(String numberOfVialsUsedInClusterDetails) {
+ this.numberOfVialsUsedInClusterDetails = numberOfVialsUsedInClusterDetails;
+ }
+
+ public YesNoUnknown getAdSyringesUsedForImmunization() {
+ return adSyringesUsedForImmunization;
+ }
+
+ public void setAdSyringesUsedForImmunization(YesNoUnknown adSyringesUsedForImmunization) {
+ this.adSyringesUsedForImmunization = adSyringesUsedForImmunization;
+ }
+
+ public SyringeType getTypeOfSyringesUsed() {
+ return typeOfSyringesUsed;
+ }
+
+ public void setTypeOfSyringesUsed(SyringeType typeOfSyringesUsed) {
+ this.typeOfSyringesUsed = typeOfSyringesUsed;
+ }
+
+ public String getTypeOfSyringesUsedDetails() {
+ return typeOfSyringesUsedDetails;
+ }
+
+ public void setTypeOfSyringesUsedDetails(String typeOfSyringesUsedDetails) {
+ this.typeOfSyringesUsedDetails = typeOfSyringesUsedDetails;
+ }
+
+ public String getSyringesUsedAdditionalDetails() {
+ return syringesUsedAdditionalDetails;
+ }
+
+ public void setSyringesUsedAdditionalDetails(String syringesUsedAdditionalDetails) {
+ this.syringesUsedAdditionalDetails = syringesUsedAdditionalDetails;
+ }
+
+ public YesNoUnknown getSameReconstitutionSyringeUsedForMultipleVialsOfSameVaccine() {
+ return sameReconstitutionSyringeUsedForMultipleVialsOfSameVaccine;
+ }
+
+ public void setSameReconstitutionSyringeUsedForMultipleVialsOfSameVaccine(
+ YesNoUnknown sameReconstitutionSyringeUsedForMultipleVialsOfSameVaccine) {
+ this.sameReconstitutionSyringeUsedForMultipleVialsOfSameVaccine = sameReconstitutionSyringeUsedForMultipleVialsOfSameVaccine;
+ }
+
+ public YesNoUnknown getSameReconstitutionSyringeUsedForReconstitutingDifferentVaccines() {
+ return sameReconstitutionSyringeUsedForReconstitutingDifferentVaccines;
+ }
+
+ public void setSameReconstitutionSyringeUsedForReconstitutingDifferentVaccines(
+ YesNoUnknown sameReconstitutionSyringeUsedForReconstitutingDifferentVaccines) {
+ this.sameReconstitutionSyringeUsedForReconstitutingDifferentVaccines = sameReconstitutionSyringeUsedForReconstitutingDifferentVaccines;
+ }
+
+ public YesNoUnknown getSameReconstitutionSyringeForEachVaccineVial() {
+ return sameReconstitutionSyringeForEachVaccineVial;
+ }
+
+ public void setSameReconstitutionSyringeForEachVaccineVial(YesNoUnknown sameReconstitutionSyringeForEachVaccineVial) {
+ this.sameReconstitutionSyringeForEachVaccineVial = sameReconstitutionSyringeForEachVaccineVial;
+ }
+
+ public YesNoUnknown getSameReconstitutionSyringeForEachVaccination() {
+ return sameReconstitutionSyringeForEachVaccination;
+ }
+
+ public void setSameReconstitutionSyringeForEachVaccination(YesNoUnknown sameReconstitutionSyringeForEachVaccination) {
+ this.sameReconstitutionSyringeForEachVaccination = sameReconstitutionSyringeForEachVaccination;
+ }
+
+ public YesNoUnknown getVaccinesAndDiluentsUsedRecommendedByManufacturer() {
+ return vaccinesAndDiluentsUsedRecommendedByManufacturer;
+ }
+
+ public void setVaccinesAndDiluentsUsedRecommendedByManufacturer(YesNoUnknown vaccinesAndDiluentsUsedRecommendedByManufacturer) {
+ this.vaccinesAndDiluentsUsedRecommendedByManufacturer = vaccinesAndDiluentsUsedRecommendedByManufacturer;
+ }
+
+ public String getReconstitutionAdditionalDetails() {
+ return reconstitutionAdditionalDetails;
+ }
+
+ public void setReconstitutionAdditionalDetails(String reconstitutionAdditionalDetails) {
+ this.reconstitutionAdditionalDetails = reconstitutionAdditionalDetails;
+ }
+
+ public YesNoUnknown getCorrectDoseOrRoute() {
+ return correctDoseOrRoute;
+ }
+
+ public void setCorrectDoseOrRoute(YesNoUnknown correctDoseOrRoute) {
+ this.correctDoseOrRoute = correctDoseOrRoute;
+ }
+
+ public YesNoUnknown getTimeOfReconstitutionMentionedOnTheVial() {
+ return timeOfReconstitutionMentionedOnTheVial;
+ }
+
+ public void setTimeOfReconstitutionMentionedOnTheVial(YesNoUnknown timeOfReconstitutionMentionedOnTheVial) {
+ this.timeOfReconstitutionMentionedOnTheVial = timeOfReconstitutionMentionedOnTheVial;
+ }
+
+ public YesNoUnknown getNonTouchTechniqueFollowed() {
+ return nonTouchTechniqueFollowed;
+ }
+
+ public void setNonTouchTechniqueFollowed(YesNoUnknown nonTouchTechniqueFollowed) {
+ this.nonTouchTechniqueFollowed = nonTouchTechniqueFollowed;
+ }
+
+ public YesNoUnknown getContraIndicationScreenedPriorToVaccination() {
+ return contraIndicationScreenedPriorToVaccination;
+ }
+
+ public void setContraIndicationScreenedPriorToVaccination(YesNoUnknown contraIndicationScreenedPriorToVaccination) {
+ this.contraIndicationScreenedPriorToVaccination = contraIndicationScreenedPriorToVaccination;
+ }
+
+ public Integer getNumberOfAefiReportedFromVaccineDistributionCenterLastThirtyDays() {
+ return numberOfAefiReportedFromVaccineDistributionCenterLastThirtyDays;
+ }
+
+ public void setNumberOfAefiReportedFromVaccineDistributionCenterLastThirtyDays(
+ Integer numberOfAefiReportedFromVaccineDistributionCenterLastThirtyDays) {
+ this.numberOfAefiReportedFromVaccineDistributionCenterLastThirtyDays = numberOfAefiReportedFromVaccineDistributionCenterLastThirtyDays;
+ }
+
+ public YesNoUnknown getTrainingReceivedByVaccinator() {
+ return trainingReceivedByVaccinator;
+ }
+
+ public void setTrainingReceivedByVaccinator(YesNoUnknown trainingReceivedByVaccinator) {
+ this.trainingReceivedByVaccinator = trainingReceivedByVaccinator;
+ }
+
+ public Date getLastTrainingReceivedByVaccinatorDate() {
+ return lastTrainingReceivedByVaccinatorDate;
+ }
+
+ public void setLastTrainingReceivedByVaccinatorDate(Date lastTrainingReceivedByVaccinatorDate) {
+ this.lastTrainingReceivedByVaccinatorDate = lastTrainingReceivedByVaccinatorDate;
+ }
+
+ public String getInjectionTechniqueAdditionalDetails() {
+ return injectionTechniqueAdditionalDetails;
+ }
+
+ public void setInjectionTechniqueAdditionalDetails(String injectionTechniqueAdditionalDetails) {
+ this.injectionTechniqueAdditionalDetails = injectionTechniqueAdditionalDetails;
+ }
+
+ public YesNoUnknown getVaccineStorageRefrigeratorTemperatureMonitored() {
+ return vaccineStorageRefrigeratorTemperatureMonitored;
+ }
+
+ public void setVaccineStorageRefrigeratorTemperatureMonitored(YesNoUnknown vaccineStorageRefrigeratorTemperatureMonitored) {
+ this.vaccineStorageRefrigeratorTemperatureMonitored = vaccineStorageRefrigeratorTemperatureMonitored;
+ }
+
+ public YesNoUnknown getAnyStorageTemperatureDeviationOutsideTwoToEightDegrees() {
+ return anyStorageTemperatureDeviationOutsideTwoToEightDegrees;
+ }
+
+ public void setAnyStorageTemperatureDeviationOutsideTwoToEightDegrees(YesNoUnknown anyStorageTemperatureDeviationOutsideTwoToEightDegrees) {
+ this.anyStorageTemperatureDeviationOutsideTwoToEightDegrees = anyStorageTemperatureDeviationOutsideTwoToEightDegrees;
+ }
+
+ public String getStorageTemperatureMonitoringAdditionalDetails() {
+ return storageTemperatureMonitoringAdditionalDetails;
+ }
+
+ public void setStorageTemperatureMonitoringAdditionalDetails(String storageTemperatureMonitoringAdditionalDetails) {
+ this.storageTemperatureMonitoringAdditionalDetails = storageTemperatureMonitoringAdditionalDetails;
+ }
+
+ public YesNoUnknown getCorrectProcedureForStorageFollowed() {
+ return correctProcedureForStorageFollowed;
+ }
+
+ public void setCorrectProcedureForStorageFollowed(YesNoUnknown correctProcedureForStorageFollowed) {
+ this.correctProcedureForStorageFollowed = correctProcedureForStorageFollowed;
+ }
+
+ public YesNoUnknown getAnyOtherItemInRefrigerator() {
+ return anyOtherItemInRefrigerator;
+ }
+
+ public void setAnyOtherItemInRefrigerator(YesNoUnknown anyOtherItemInRefrigerator) {
+ this.anyOtherItemInRefrigerator = anyOtherItemInRefrigerator;
+ }
+
+ public YesNoUnknown getPartiallyUsedReconstitutedVaccinesInRefrigerator() {
+ return partiallyUsedReconstitutedVaccinesInRefrigerator;
+ }
+
+ public void setPartiallyUsedReconstitutedVaccinesInRefrigerator(YesNoUnknown partiallyUsedReconstitutedVaccinesInRefrigerator) {
+ this.partiallyUsedReconstitutedVaccinesInRefrigerator = partiallyUsedReconstitutedVaccinesInRefrigerator;
+ }
+
+ public YesNoUnknown getUnusableVaccinesInRefrigerator() {
+ return unusableVaccinesInRefrigerator;
+ }
+
+ public void setUnusableVaccinesInRefrigerator(YesNoUnknown unusableVaccinesInRefrigerator) {
+ this.unusableVaccinesInRefrigerator = unusableVaccinesInRefrigerator;
+ }
+
+ public YesNoUnknown getUnusableDiluentsInStore() {
+ return unusableDiluentsInStore;
+ }
+
+ public void setUnusableDiluentsInStore(YesNoUnknown unusableDiluentsInStore) {
+ this.unusableDiluentsInStore = unusableDiluentsInStore;
+ }
+
+ public String getVaccineStoragePointAdditionalDetails() {
+ return vaccineStoragePointAdditionalDetails;
+ }
+
+ public void setVaccineStoragePointAdditionalDetails(String vaccineStoragePointAdditionalDetails) {
+ this.vaccineStoragePointAdditionalDetails = vaccineStoragePointAdditionalDetails;
+ }
+
+ public VaccineCarrier getVaccineCarrierType() {
+ return vaccineCarrierType;
+ }
+
+ public void setVaccineCarrierType(VaccineCarrier vaccineCarrierType) {
+ this.vaccineCarrierType = vaccineCarrierType;
+ }
+
+ public String getVaccineCarrierTypeDetails() {
+ return vaccineCarrierTypeDetails;
+ }
+
+ public void setVaccineCarrierTypeDetails(String vaccineCarrierTypeDetails) {
+ this.vaccineCarrierTypeDetails = vaccineCarrierTypeDetails;
+ }
+
+ public YesNoUnknown getVaccineCarrierSentToSiteOnSameDateAsVaccination() {
+ return vaccineCarrierSentToSiteOnSameDateAsVaccination;
+ }
+
+ public void setVaccineCarrierSentToSiteOnSameDateAsVaccination(YesNoUnknown vaccineCarrierSentToSiteOnSameDateAsVaccination) {
+ this.vaccineCarrierSentToSiteOnSameDateAsVaccination = vaccineCarrierSentToSiteOnSameDateAsVaccination;
+ }
+
+ public YesNoUnknown getVaccineCarrierReturnedFromSiteOnSameDateAsVaccination() {
+ return vaccineCarrierReturnedFromSiteOnSameDateAsVaccination;
+ }
+
+ public void setVaccineCarrierReturnedFromSiteOnSameDateAsVaccination(YesNoUnknown vaccineCarrierReturnedFromSiteOnSameDateAsVaccination) {
+ this.vaccineCarrierReturnedFromSiteOnSameDateAsVaccination = vaccineCarrierReturnedFromSiteOnSameDateAsVaccination;
+ }
+
+ public YesNoUnknown getConditionedIcepackUsed() {
+ return conditionedIcepackUsed;
+ }
+
+ public void setConditionedIcepackUsed(YesNoUnknown conditionedIcepackUsed) {
+ this.conditionedIcepackUsed = conditionedIcepackUsed;
+ }
+
+ public String getVaccineTransportationAdditionalDetails() {
+ return vaccineTransportationAdditionalDetails;
+ }
+
+ public void setVaccineTransportationAdditionalDetails(String vaccineTransportationAdditionalDetails) {
+ this.vaccineTransportationAdditionalDetails = vaccineTransportationAdditionalDetails;
+ }
+
+ public YesNoUnknown getSimilarEventsReportedSamePeriodAndLocality() {
+ return similarEventsReportedSamePeriodAndLocality;
+ }
+
+ public void setSimilarEventsReportedSamePeriodAndLocality(YesNoUnknown similarEventsReportedSamePeriodAndLocality) {
+ this.similarEventsReportedSamePeriodAndLocality = similarEventsReportedSamePeriodAndLocality;
+ }
+
+ public String getSimilarEventsReportedSamePeriodAndLocalityDetails() {
+ return similarEventsReportedSamePeriodAndLocalityDetails;
+ }
+
+ public void setSimilarEventsReportedSamePeriodAndLocalityDetails(String similarEventsReportedSamePeriodAndLocalityDetails) {
+ this.similarEventsReportedSamePeriodAndLocalityDetails = similarEventsReportedSamePeriodAndLocalityDetails;
+ }
+
+ public Integer getNumberOfSimilarEventsReportedSamePeriodAndLocality() {
+ return numberOfSimilarEventsReportedSamePeriodAndLocality;
+ }
+
+ public void setNumberOfSimilarEventsReportedSamePeriodAndLocality(Integer numberOfSimilarEventsReportedSamePeriodAndLocality) {
+ this.numberOfSimilarEventsReportedSamePeriodAndLocality = numberOfSimilarEventsReportedSamePeriodAndLocality;
+ }
+
+ public Integer getNumberOfThoseAffectedVaccinated() {
+ return numberOfThoseAffectedVaccinated;
+ }
+
+ public void setNumberOfThoseAffectedVaccinated(Integer numberOfThoseAffectedVaccinated) {
+ this.numberOfThoseAffectedVaccinated = numberOfThoseAffectedVaccinated;
+ }
+
+ public Integer getNumberOfThoseAffectedNotVaccinated() {
+ return numberOfThoseAffectedNotVaccinated;
+ }
+
+ public void setNumberOfThoseAffectedNotVaccinated(Integer numberOfThoseAffectedNotVaccinated) {
+ this.numberOfThoseAffectedNotVaccinated = numberOfThoseAffectedNotVaccinated;
+ }
+
+ public Integer getNumberOfThoseAffectedVaccinatedUnknown() {
+ return numberOfThoseAffectedVaccinatedUnknown;
+ }
+
+ public void setNumberOfThoseAffectedVaccinatedUnknown(Integer numberOfThoseAffectedVaccinatedUnknown) {
+ this.numberOfThoseAffectedVaccinatedUnknown = numberOfThoseAffectedVaccinatedUnknown;
+ }
+
+ public String getCommunityInvestigationAdditionalDetails() {
+ return communityInvestigationAdditionalDetails;
+ }
+
+ public void setCommunityInvestigationAdditionalDetails(String communityInvestigationAdditionalDetails) {
+ this.communityInvestigationAdditionalDetails = communityInvestigationAdditionalDetails;
+ }
+
+ public String getOtherInvestigationFindings() {
+ return otherInvestigationFindings;
+ }
+
+ public void setOtherInvestigationFindings(String otherInvestigationFindings) {
+ this.otherInvestigationFindings = otherInvestigationFindings;
+ }
+
+ public AefiInvestigationStatus getInvestigationStatus() {
+ return investigationStatus;
+ }
+
+ public void setInvestigationStatus(AefiInvestigationStatus investigationStatus) {
+ this.investigationStatus = investigationStatus;
+ }
+
+ public String getInvestigationStatusDetails() {
+ return investigationStatusDetails;
+ }
+
+ public void setInvestigationStatusDetails(String investigationStatusDetails) {
+ this.investigationStatusDetails = investigationStatusDetails;
+ }
+
+ public AefiClassification getAefiClassification() {
+ return aefiClassification;
+ }
+
+ public void setAefiClassification(AefiClassification aefiClassification) {
+ this.aefiClassification = aefiClassification;
+ }
+
+ public AefiClassificationSubType getAefiClassificationSubType() {
+ return aefiClassificationSubType;
+ }
+
+ public void setAefiClassificationSubType(AefiClassificationSubType aefiClassificationSubType) {
+ this.aefiClassificationSubType = aefiClassificationSubType;
+ }
+
+ public String getAefiClassificationDetails() {
+ return aefiClassificationDetails;
+ }
+
+ public void setAefiClassificationDetails(String aefiClassificationDetails) {
+ this.aefiClassificationDetails = aefiClassificationDetails;
+ }
+
+ public AefiCausality getCausality() {
+ return causality;
+ }
+
+ public void setCausality(AefiCausality causality) {
+ this.causality = causality;
+ }
+
+ public String getCausalityDetails() {
+ return causalityDetails;
+ }
+
+ public void setCausalityDetails(String causalityDetails) {
+ this.causalityDetails = causalityDetails;
+ }
+
+ public Date getInvestigationCompletionDate() {
+ return investigationCompletionDate;
+ }
+
+ public void setInvestigationCompletionDate(Date investigationCompletionDate) {
+ this.investigationCompletionDate = investigationCompletionDate;
+ }
+
+ public boolean isArchived() {
+ return archived;
+ }
+
+ public void setArchived(boolean archived) {
+ this.archived = archived;
+ }
+
+ public boolean isDeleted() {
+ return deleted;
+ }
+
+ public void setDeleted(boolean deleted) {
+ this.deleted = deleted;
+ }
+
+ public DeletionReason getDeletionReason() {
+ return deletionReason;
+ }
+
+ public void setDeletionReason(DeletionReason deletionReason) {
+ this.deletionReason = deletionReason;
+ }
+
+ public String getOtherDeletionReason() {
+ return otherDeletionReason;
+ }
+
+ public void setOtherDeletionReason(String otherDeletionReason) {
+ this.otherDeletionReason = otherDeletionReason;
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationFacade.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationFacade.java
new file mode 100644
index 00000000000..1fff4591f78
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationFacade.java
@@ -0,0 +1,29 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import java.util.List;
+
+import javax.ejb.Remote;
+
+import de.symeda.sormas.api.CoreFacade;
+
+@Remote
+public interface AefiInvestigationFacade
+ extends CoreFacade {
+
+ List getEntriesList(AefiInvestigationListCriteria criteria, Integer first, Integer max);
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationIndexDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationIndexDto.java
new file mode 100644
index 00000000000..635e82c75da
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationIndexDto.java
@@ -0,0 +1,372 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import de.symeda.sormas.api.Disease;
+import de.symeda.sormas.api.caze.AgeAndBirthDateDto;
+import de.symeda.sormas.api.caze.Vaccine;
+import de.symeda.sormas.api.common.DeletionReason;
+import de.symeda.sormas.api.person.Sex;
+import de.symeda.sormas.api.utils.PersonalData;
+import de.symeda.sormas.api.utils.SensitiveData;
+import de.symeda.sormas.api.utils.pseudonymization.PseudonymizableIndexDto;
+
+public class AefiInvestigationIndexDto extends PseudonymizableIndexDto implements Serializable, Cloneable {
+
+ private static final long serialVersionUID = 5659752736289073666L;
+
+ public static final String I18N_PREFIX = "AefiInvestigationIndex";
+
+ public static final String UUID = "uuid";
+ public static final String AEFI_REPORT_UUID = "aefiReportUuid";
+ public static final String INVESTIGATION_CASE_ID = "investigationCaseId";
+ public static final String DISEASE = "disease";
+ public static final String PERSON_FIRST_NAME = "personFirstName";
+ public static final String PERSON_LAST_NAME = "personLastName";
+ public static final String AGE_AND_BIRTH_DATE = "ageAndBirthDate";
+ public static final String SEX = "sex";
+ public static final String REGION = "region";
+ public static final String DISTRICT = "district";
+ public static final String PLACE_OF_VACCINATION = "placeOfVaccination";
+ public static final String VACCINATION_ACTIVITY = "vaccinationActivity";
+ public static final String ADVERSE_EVENT_REPORT_DATE = "adverseEventReportDate";
+ public static final String REPORT_DATE = "reportDate";
+ public static final String INVESTIGATION_DATE = "investigationDate";
+ public static final String INVESTIGATION_STAGE = "investigationStage";
+ public static final String TYPE_OF_SITE = "typeOfSite";
+ public static final String KEY_SYMPTOM_DATE_TIME = "keySymptomDateTime";
+ public static final String HOSPITALIZATION_DATE = "hospitalizationDate";
+ public static final String REPORTED_TO_HEALTH_AUTHORITY_DATE = "reportedToHealthAuthorityDate";
+ public static final String STATUS_ON_DATE_OF_INVESTIGATION = "statusOnDateOfInvestigation";
+ public static final String PRIMARY_VACCINE_NAME = "primaryVaccine";
+ public static final String PRIMARY_VACCINE_DETAILS = "primaryVaccineDetails";
+ public static final String INVESTIGATION_STATUS = "investigationStatus";
+ public static final String AEFI_CLASSIFICATION = "aefiClassification";
+ public static final String DELETION_REASON = "deletionReason";
+
+ private String aefiReportUuid;
+ private String investigationCaseId;
+ private Disease disease;
+ @PersonalData
+ @SensitiveData
+ private String personFirstName;
+ @PersonalData
+ @SensitiveData
+ private String personLastName;
+ private AgeAndBirthDateDto ageAndBirthDate;
+ private Sex sex;
+ private String region;
+ private String district;
+ private PlaceOfVaccination placeOfVaccination;
+ private VaccinationActivity vaccinationActivity;
+ private Date aefiReportDate;
+ private Date reportDate;
+ private Date investigationDate;
+ private AefiInvestigationStage investigationStage;
+ private VaccinationSite typeOfSite;
+ private Date keySymptomDateTime;
+ private Date hospitalizationDate;
+ private Date reportedToHealthAuthorityDate;
+ private PatientStatusAtAefiInvestigation statusOnDateOfInvestigation;
+ private Vaccine primaryVaccine;
+ private String primaryVaccineDetails;
+ private AefiInvestigationStatus investigationStatus;
+ private AefiClassification aefiClassification;
+ private DeletionReason deletionReason;
+ private String otherDeletionReason;
+ private boolean isInJurisdiction;
+
+ public AefiInvestigationIndexDto(
+ String uuid,
+ String aefiReportUuid,
+ String investigationCaseId,
+ Disease disease,
+ String personFirstName,
+ String personLastName,
+ AgeAndBirthDateDto ageAndBirthDate,
+ Sex sex,
+ String region,
+ String district,
+ PlaceOfVaccination placeOfVaccination,
+ VaccinationActivity vaccinationActivity,
+ Date aefiReportDate,
+ Date reportDate,
+ Date investigationDate,
+ AefiInvestigationStage investigationStage,
+ VaccinationSite typeOfSite,
+ Date keySymptomDateTime,
+ Date hospitalizationDate,
+ Date reportedToHealthAuthorityDate,
+ PatientStatusAtAefiInvestigation statusOnDateOfInvestigation,
+ Vaccine primaryVaccine,
+ String primaryVaccineDetails,
+ AefiInvestigationStatus investigationStatus,
+ AefiClassification aefiClassification,
+ DeletionReason deletionReason,
+ String otherDeletionReason,
+ boolean isInJurisdiction) {
+
+ super(uuid);
+ this.aefiReportUuid = aefiReportUuid;
+ this.investigationCaseId = investigationCaseId;
+ this.disease = disease;
+ this.personFirstName = personFirstName;
+ this.personLastName = personLastName;
+ this.ageAndBirthDate = ageAndBirthDate;
+ this.sex = sex;
+ this.region = region;
+ this.district = district;
+ this.placeOfVaccination = placeOfVaccination;
+ this.vaccinationActivity = vaccinationActivity;
+ this.aefiReportDate = aefiReportDate;
+ this.reportDate = reportDate;
+ this.investigationDate = investigationDate;
+ this.investigationStage = investigationStage;
+ this.typeOfSite = typeOfSite;
+ this.keySymptomDateTime = keySymptomDateTime;
+ this.hospitalizationDate = hospitalizationDate;
+ this.reportedToHealthAuthorityDate = reportedToHealthAuthorityDate;
+ this.statusOnDateOfInvestigation = statusOnDateOfInvestigation;
+ this.primaryVaccine = primaryVaccine;
+ this.primaryVaccineDetails = primaryVaccineDetails;
+ this.investigationStatus = investigationStatus;
+ this.aefiClassification = aefiClassification;
+ this.deletionReason = deletionReason;
+ this.otherDeletionReason = otherDeletionReason;
+ this.isInJurisdiction = isInJurisdiction;
+ }
+
+ public String getAefiReportUuid() {
+ return aefiReportUuid;
+ }
+
+ public void setAefiReportUuid(String aefiReportUuid) {
+ this.aefiReportUuid = aefiReportUuid;
+ }
+
+ public String getInvestigationCaseId() {
+ return investigationCaseId;
+ }
+
+ public void setInvestigationCaseId(String investigationCaseId) {
+ this.investigationCaseId = investigationCaseId;
+ }
+
+ public Disease getDisease() {
+ return disease;
+ }
+
+ public void setDisease(Disease disease) {
+ this.disease = disease;
+ }
+
+ public String getPersonFirstName() {
+ return personFirstName;
+ }
+
+ public void setPersonFirstName(String personFirstName) {
+ this.personFirstName = personFirstName;
+ }
+
+ public String getPersonLastName() {
+ return personLastName;
+ }
+
+ public void setPersonLastName(String personLastName) {
+ this.personLastName = personLastName;
+ }
+
+ public AgeAndBirthDateDto getAgeAndBirthDate() {
+ return ageAndBirthDate;
+ }
+
+ public void setAgeAndBirthDate(AgeAndBirthDateDto ageAndBirthDate) {
+ this.ageAndBirthDate = ageAndBirthDate;
+ }
+
+ public Sex getSex() {
+ return sex;
+ }
+
+ public void setSex(Sex sex) {
+ this.sex = sex;
+ }
+
+ public String getRegion() {
+ return region;
+ }
+
+ public void setRegion(String region) {
+ this.region = region;
+ }
+
+ public String getDistrict() {
+ return district;
+ }
+
+ public void setDistrict(String district) {
+ this.district = district;
+ }
+
+ public PlaceOfVaccination getPlaceOfVaccination() {
+ return placeOfVaccination;
+ }
+
+ public void setPlaceOfVaccination(PlaceOfVaccination placeOfVaccination) {
+ this.placeOfVaccination = placeOfVaccination;
+ }
+
+ public VaccinationActivity getVaccinationActivity() {
+ return vaccinationActivity;
+ }
+
+ public void setVaccinationActivity(VaccinationActivity vaccinationActivity) {
+ this.vaccinationActivity = vaccinationActivity;
+ }
+
+ public Date getAefiReportDate() {
+ return aefiReportDate;
+ }
+
+ public void setAefiReportDate(Date aefiReportDate) {
+ this.aefiReportDate = aefiReportDate;
+ }
+
+ public Date getReportDate() {
+ return reportDate;
+ }
+
+ public void setReportDate(Date reportDate) {
+ this.reportDate = reportDate;
+ }
+
+ public Date getInvestigationDate() {
+ return investigationDate;
+ }
+
+ public void setInvestigationDate(Date investigationDate) {
+ this.investigationDate = investigationDate;
+ }
+
+ public AefiInvestigationStage getInvestigationStage() {
+ return investigationStage;
+ }
+
+ public void setInvestigationStage(AefiInvestigationStage investigationStage) {
+ this.investigationStage = investigationStage;
+ }
+
+ public VaccinationSite getTypeOfSite() {
+ return typeOfSite;
+ }
+
+ public void setTypeOfSite(VaccinationSite typeOfSite) {
+ this.typeOfSite = typeOfSite;
+ }
+
+ public Date getKeySymptomDateTime() {
+ return keySymptomDateTime;
+ }
+
+ public void setKeySymptomDateTime(Date keySymptomDateTime) {
+ this.keySymptomDateTime = keySymptomDateTime;
+ }
+
+ public Date getHospitalizationDate() {
+ return hospitalizationDate;
+ }
+
+ public void setHospitalizationDate(Date hospitalizationDate) {
+ this.hospitalizationDate = hospitalizationDate;
+ }
+
+ public Date getReportedToHealthAuthorityDate() {
+ return reportedToHealthAuthorityDate;
+ }
+
+ public void setReportedToHealthAuthorityDate(Date reportedToHealthAuthorityDate) {
+ this.reportedToHealthAuthorityDate = reportedToHealthAuthorityDate;
+ }
+
+ public PatientStatusAtAefiInvestigation getStatusOnDateOfInvestigation() {
+ return statusOnDateOfInvestigation;
+ }
+
+ public void setStatusOnDateOfInvestigation(PatientStatusAtAefiInvestigation statusOnDateOfInvestigation) {
+ this.statusOnDateOfInvestigation = statusOnDateOfInvestigation;
+ }
+
+ public Vaccine getPrimaryVaccine() {
+ return primaryVaccine;
+ }
+
+ public void setPrimaryVaccine(Vaccine primaryVaccine) {
+ this.primaryVaccine = primaryVaccine;
+ }
+
+ public String getPrimaryVaccineDetails() {
+ return primaryVaccineDetails;
+ }
+
+ public void setPrimaryVaccineDetails(String primaryVaccineDetails) {
+ this.primaryVaccineDetails = primaryVaccineDetails;
+ }
+
+ public AefiInvestigationStatus getInvestigationStatus() {
+ return investigationStatus;
+ }
+
+ public void setInvestigationStatus(AefiInvestigationStatus investigationStatus) {
+ this.investigationStatus = investigationStatus;
+ }
+
+ public AefiClassification getAefiClassification() {
+ return aefiClassification;
+ }
+
+ public void setAefiClassification(AefiClassification aefiClassification) {
+ this.aefiClassification = aefiClassification;
+ }
+
+ public DeletionReason getDeletionReason() {
+ return deletionReason;
+ }
+
+ public void setDeletionReason(DeletionReason deletionReason) {
+ this.deletionReason = deletionReason;
+ }
+
+ public String getOtherDeletionReason() {
+ return otherDeletionReason;
+ }
+
+ public void setOtherDeletionReason(String otherDeletionReason) {
+ this.otherDeletionReason = otherDeletionReason;
+ }
+
+ @Override
+ public boolean isInJurisdiction() {
+ return isInJurisdiction;
+ }
+
+ @Override
+ public void setInJurisdiction(boolean inJurisdiction) {
+ isInJurisdiction = inJurisdiction;
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationListCriteria.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationListCriteria.java
new file mode 100644
index 00000000000..c150fb25e81
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationListCriteria.java
@@ -0,0 +1,44 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.utils.criteria.BaseCriteria;
+
+public class AefiInvestigationListCriteria extends BaseCriteria {
+
+ private final AefiReferenceDto aefiReport;
+
+ public static class Builder {
+
+ private final AefiReferenceDto aefiReferenceDto;
+
+ public Builder(AefiReferenceDto aefiReferenceDto) {
+ this.aefiReferenceDto = aefiReferenceDto;
+ }
+
+ public AefiInvestigationListCriteria build() {
+ return new AefiInvestigationListCriteria(this);
+ }
+ }
+
+ private AefiInvestigationListCriteria(AefiInvestigationListCriteria.Builder builder) {
+ this.aefiReport = builder.aefiReferenceDto;
+ }
+
+ public AefiReferenceDto getAefiReport() {
+ return aefiReport;
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationListEntryDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationListEntryDto.java
new file mode 100644
index 00000000000..7282075e79a
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationListEntryDto.java
@@ -0,0 +1,156 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import de.symeda.sormas.api.caze.Vaccine;
+import de.symeda.sormas.api.utils.pseudonymization.PseudonymizableIndexDto;
+
+public class AefiInvestigationListEntryDto extends PseudonymizableIndexDto implements Serializable, Cloneable {
+
+ public static final String I18N_PREFIX = "AefiInvestigationListEntry";
+
+ public static final String UUID = "uuid";
+ public static final String INVESTIGATION_CASE_ID = "investigationCaseId";
+ public static final String INVESTIGATION_DATE = "investigationDate";
+ public static final String INVESTIGATION_STAGE = "investigationStage";
+ public static final String STATUS_ON_DATE_OF_INVESTIGATION = "statusOnDateOfInvestigation";
+ public static final String PRIMARY_VACCINE_NAME = "primaryVaccine";
+ public static final String PRIMARY_VACCINE_DETAILS = "primaryVaccineDetails";
+ public static final String PRIMARY_VACCINE_DOSE = "primaryVaccineDose";
+ public static final String PRIMARY_VACCINE_VACCINATION_DATE = "primaryVaccineVaccinationDate";
+ public static final String INVESTIGATION_STATUS = "investigationStatus";
+ public static final String AEFI_CLASSIFICATION = "aefiClassification";
+
+ private String investigationCaseId;
+ private Date investigationDate;
+ private AefiInvestigationStage investigationStage;
+ private PatientStatusAtAefiInvestigation statusOnDateOfInvestigation;
+ private Vaccine primaryVaccine;
+ private String primaryVaccineDetails;
+ private String primaryVaccineDose;
+ private Date primaryVaccineVaccinationDate;
+ private AefiInvestigationStatus investigationStatus;
+ private AefiClassification aefiClassification;
+
+ public AefiInvestigationListEntryDto(
+ String uuid,
+ String investigationCaseId,
+ Date investigationDate,
+ AefiInvestigationStage investigationStage,
+ PatientStatusAtAefiInvestigation statusOnDateOfInvestigation,
+ Vaccine primaryVaccine,
+ String primaryVaccineDetails,
+ String primaryVaccineDose,
+ Date primaryVaccineVaccinationDate,
+ AefiInvestigationStatus investigationStatus,
+ AefiClassification aefiClassification) {
+
+ super(uuid);
+ this.investigationCaseId = investigationCaseId;
+ this.investigationDate = investigationDate;
+ this.investigationStage = investigationStage;
+ this.statusOnDateOfInvestigation = statusOnDateOfInvestigation;
+ this.primaryVaccine = primaryVaccine;
+ this.primaryVaccineDetails = primaryVaccineDetails;
+ this.primaryVaccineDose = primaryVaccineDose;
+ this.primaryVaccineVaccinationDate = primaryVaccineVaccinationDate;
+ this.investigationStatus = investigationStatus;
+ this.aefiClassification = aefiClassification;
+ }
+
+ public String getInvestigationCaseId() {
+ return investigationCaseId;
+ }
+
+ public void setInvestigationCaseId(String investigationCaseId) {
+ this.investigationCaseId = investigationCaseId;
+ }
+
+ public Date getInvestigationDate() {
+ return investigationDate;
+ }
+
+ public void setInvestigationDate(Date investigationDate) {
+ this.investigationDate = investigationDate;
+ }
+
+ public AefiInvestigationStage getInvestigationStage() {
+ return investigationStage;
+ }
+
+ public void setInvestigationStage(AefiInvestigationStage investigationStage) {
+ this.investigationStage = investigationStage;
+ }
+
+ public PatientStatusAtAefiInvestigation getStatusOnDateOfInvestigation() {
+ return statusOnDateOfInvestigation;
+ }
+
+ public void setStatusOnDateOfInvestigation(PatientStatusAtAefiInvestigation statusOnDateOfInvestigation) {
+ this.statusOnDateOfInvestigation = statusOnDateOfInvestigation;
+ }
+
+ public Vaccine getPrimaryVaccine() {
+ return primaryVaccine;
+ }
+
+ public void setPrimaryVaccine(Vaccine primaryVaccine) {
+ this.primaryVaccine = primaryVaccine;
+ }
+
+ public String getPrimaryVaccineDetails() {
+ return primaryVaccineDetails;
+ }
+
+ public void setPrimaryVaccineDetails(String primaryVaccineDetails) {
+ this.primaryVaccineDetails = primaryVaccineDetails;
+ }
+
+ public String getPrimaryVaccineDose() {
+ return primaryVaccineDose;
+ }
+
+ public void setPrimaryVaccineDose(String primaryVaccineDose) {
+ this.primaryVaccineDose = primaryVaccineDose;
+ }
+
+ public Date getPrimaryVaccineVaccinationDate() {
+ return primaryVaccineVaccinationDate;
+ }
+
+ public void setPrimaryVaccineVaccinationDate(Date primaryVaccineVaccinationDate) {
+ this.primaryVaccineVaccinationDate = primaryVaccineVaccinationDate;
+ }
+
+ public AefiInvestigationStatus getInvestigationStatus() {
+ return investigationStatus;
+ }
+
+ public void setInvestigationStatus(AefiInvestigationStatus investigationStatus) {
+ this.investigationStatus = investigationStatus;
+ }
+
+ public AefiClassification getAefiClassification() {
+ return aefiClassification;
+ }
+
+ public void setAefiClassification(AefiClassification aefiClassification) {
+ this.aefiClassification = aefiClassification;
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationReferenceDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationReferenceDto.java
new file mode 100644
index 00000000000..10d9c77a3a5
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationReferenceDto.java
@@ -0,0 +1,42 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.ReferenceDto;
+import de.symeda.sormas.api.feature.FeatureType;
+import de.symeda.sormas.api.utils.DependingOnFeatureType;
+
+@DependingOnFeatureType(featureType = FeatureType.ADVERSE_EVENTS_FOLLOWING_IMMUNIZATION_MANAGEMENT)
+public class AefiInvestigationReferenceDto extends ReferenceDto {
+
+ private String externalId;
+
+ public AefiInvestigationReferenceDto() {
+ }
+
+ public AefiInvestigationReferenceDto(String uuid, String externalId) {
+ super(uuid);
+ this.externalId = externalId;
+ }
+
+ public String getExternalId() {
+ return externalId;
+ }
+
+ public void setExternalId(String externalId) {
+ this.externalId = externalId;
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationStage.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationStage.java
new file mode 100644
index 00000000000..e6a8d26526e
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationStage.java
@@ -0,0 +1,30 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum AefiInvestigationStage {
+
+ FIRST,
+ INTERIM,
+ FINAL;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationStatus.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationStatus.java
new file mode 100644
index 00000000000..1506a3c1138
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiInvestigationStatus.java
@@ -0,0 +1,33 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum AefiInvestigationStatus {
+
+ DONE,
+ DISCARDED;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+
+ public String toShortString() {
+ return I18nProperties.getEnumCaptionShort(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiListCriteria.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiListCriteria.java
new file mode 100644
index 00000000000..80ae6536c0a
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiListCriteria.java
@@ -0,0 +1,48 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.immunization.ImmunizationReferenceDto;
+import de.symeda.sormas.api.utils.criteria.BaseCriteria;
+
+public class AefiListCriteria extends BaseCriteria {
+
+ private final ImmunizationReferenceDto immunizationReferenceDto;
+
+ public static class Builder {
+
+ private final ImmunizationReferenceDto immunizationReferenceDto;
+
+ public Builder(ImmunizationReferenceDto immunizationReferenceDto) {
+ this.immunizationReferenceDto = immunizationReferenceDto;
+ }
+
+ public AefiListCriteria build() {
+ return new AefiListCriteria(this);
+ }
+ }
+
+ private AefiListCriteria(Builder builder) {
+ this.immunizationReferenceDto = builder.immunizationReferenceDto;
+ }
+
+ public ImmunizationReferenceDto getImmunization() {
+ return immunizationReferenceDto;
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiListEntryDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiListEntryDto.java
new file mode 100644
index 00000000000..706e97da2b2
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiListEntryDto.java
@@ -0,0 +1,97 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import de.symeda.sormas.api.caze.Vaccine;
+import de.symeda.sormas.api.utils.YesNoUnknown;
+import de.symeda.sormas.api.utils.pseudonymization.PseudonymizableIndexDto;
+
+public class AefiListEntryDto extends PseudonymizableIndexDto implements Serializable, Cloneable {
+
+ public static final String I18N_PREFIX = "Aefi";
+
+ public static final String UUID = "uuid";
+ public static final String SERIOUS = "serious";
+ public static final String PRIMARY_VACCINE_NAME = "primaryVaccineName";
+ public static final String PRIMARY_VACCINE_DOSE = "primaryVaccineDose";
+ public static final String PRIMARY_VACCINE_VACCINATION_DATE = "primaryVaccineVaccinationDate";
+ private String ADVERSE_EVENTS = "adverseEvents";
+
+ private YesNoUnknown serious;
+ private Vaccine primaryVaccineName;
+ private String primaryVaccineDose;
+ private Date primaryVaccineVaccinationDate;
+ private String adverseEvents;
+
+ public AefiListEntryDto(
+ String uuid,
+ YesNoUnknown serious,
+ Vaccine primaryVaccineName,
+ String primaryVaccineDose,
+ Date primaryVaccineVaccinationDate,
+ String adverseEvents) {
+
+ super(uuid);
+ this.serious = serious;
+ this.primaryVaccineName = primaryVaccineName;
+ this.primaryVaccineDose = primaryVaccineDose;
+ this.primaryVaccineVaccinationDate = primaryVaccineVaccinationDate;
+ this.adverseEvents = adverseEvents;
+ }
+
+ public YesNoUnknown getSerious() {
+ return serious;
+ }
+
+ public void setSerious(YesNoUnknown serious) {
+ this.serious = serious;
+ }
+
+ public Vaccine getPrimaryVaccineName() {
+ return primaryVaccineName;
+ }
+
+ public void setPrimaryVaccineName(Vaccine primaryVaccineName) {
+ this.primaryVaccineName = primaryVaccineName;
+ }
+
+ public String getPrimaryVaccineDose() {
+ return primaryVaccineDose;
+ }
+
+ public void setPrimaryVaccineDose(String primaryVaccineDose) {
+ this.primaryVaccineDose = primaryVaccineDose;
+ }
+
+ public Date getPrimaryVaccineVaccinationDate() {
+ return primaryVaccineVaccinationDate;
+ }
+
+ public void setPrimaryVaccineVaccinationDate(Date primaryVaccineVaccinationDate) {
+ this.primaryVaccineVaccinationDate = primaryVaccineVaccinationDate;
+ }
+
+ public String getAdverseEvents() {
+ return adverseEvents;
+ }
+
+ public void setAdverseEvents(String adverseEvents) {
+ this.adverseEvents = adverseEvents;
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiOutcome.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiOutcome.java
new file mode 100644
index 00000000000..20d22beacbe
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiOutcome.java
@@ -0,0 +1,36 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum AefiOutcome {
+
+ RECOVERING,
+ RECOVERED,
+ RECOVERED_WITH_SEQUELAE,
+ NOT_RECOVERED,
+ UNKNOWN,
+ DIED;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiReferenceDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiReferenceDto.java
new file mode 100644
index 00000000000..9f992ad8963
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiReferenceDto.java
@@ -0,0 +1,42 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.ReferenceDto;
+import de.symeda.sormas.api.feature.FeatureType;
+import de.symeda.sormas.api.utils.DependingOnFeatureType;
+
+@DependingOnFeatureType(featureType = FeatureType.ADVERSE_EVENTS_FOLLOWING_IMMUNIZATION_MANAGEMENT)
+public class AefiReferenceDto extends ReferenceDto {
+
+ private String externalId;
+
+ public AefiReferenceDto() {
+ }
+
+ public AefiReferenceDto(String uuid, String externalId) {
+ super(uuid);
+ this.externalId = externalId;
+ }
+
+ public String getExternalId() {
+ return externalId;
+ }
+
+ public void setExternalId(String externalId) {
+ this.externalId = externalId;
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiType.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiType.java
new file mode 100644
index 00000000000..952eb1bc1cd
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiType.java
@@ -0,0 +1,41 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+import de.symeda.sormas.api.utils.YesNoUnknown;
+
+public enum AefiType {
+
+ SERIOUS,
+ NON_SERIOUS;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+
+ public static String toString(YesNoUnknown serious) {
+ if (serious == YesNoUnknown.YES) {
+ return AefiType.SERIOUS.toString();
+ } else {
+ return AefiType.NON_SERIOUS.toString();
+ }
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiVaccinationPeriod.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiVaccinationPeriod.java
new file mode 100644
index 00000000000..67bee292daa
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiVaccinationPeriod.java
@@ -0,0 +1,30 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum AefiVaccinationPeriod {
+
+ WITHIN_FIRST_FEW_DOSES,
+ WITHIN_LAST_DOSES,
+ UNKNOWN;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/BirthTerm.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/BirthTerm.java
new file mode 100644
index 00000000000..11abb53e8d8
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/BirthTerm.java
@@ -0,0 +1,30 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum BirthTerm {
+
+ FULL_TERM,
+ PRE_TERM,
+ POST_TERM;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/DeliveryProcedure.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/DeliveryProcedure.java
new file mode 100644
index 00000000000..998861a1e6a
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/DeliveryProcedure.java
@@ -0,0 +1,31 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum DeliveryProcedure {
+
+ NORMAL,
+ CAESAREAN,
+ ASSISTED,
+ WITH_COMPLICATION;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/PatientStatusAtAefiInvestigation.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/PatientStatusAtAefiInvestigation.java
new file mode 100644
index 00000000000..6067cb39260
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/PatientStatusAtAefiInvestigation.java
@@ -0,0 +1,32 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum PatientStatusAtAefiInvestigation {
+
+ DIED,
+ DISABLED,
+ RECOVERED,
+ RECOVERED_COMPLETELY,
+ UNKNOWN;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/PlaceOfVaccination.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/PlaceOfVaccination.java
new file mode 100644
index 00000000000..772ca5641a1
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/PlaceOfVaccination.java
@@ -0,0 +1,30 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum PlaceOfVaccination {
+
+ GOVERNMENT_HEALTH_FACILITY,
+ PRIVATE_HEALTH_FACILITY,
+ OTHER;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/SeizureType.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/SeizureType.java
new file mode 100644
index 00000000000..d5abb2d27ce
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/SeizureType.java
@@ -0,0 +1,32 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum SeizureType {
+
+ FEBRILE,
+ AFEBRILE;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/SeriousAefiInfoSource.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/SeriousAefiInfoSource.java
new file mode 100644
index 00000000000..aa21ff6588d
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/SeriousAefiInfoSource.java
@@ -0,0 +1,31 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum SeriousAefiInfoSource {
+
+ EXAMINATION,
+ DOCUMENTS,
+ VERBAL_AUTOPSY,
+ OTHER;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/SeriousAefiReason.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/SeriousAefiReason.java
new file mode 100644
index 00000000000..17156c90bbd
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/SeriousAefiReason.java
@@ -0,0 +1,36 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum SeriousAefiReason {
+
+ DEATH,
+ LIFE_THREATENING,
+ DISABILITY,
+ HOSPITALIZATION,
+ CONGENITAL_ANOMALY,
+ OTHER;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/SyringeType.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/SyringeType.java
new file mode 100644
index 00000000000..a8161b6c21a
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/SyringeType.java
@@ -0,0 +1,31 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum SyringeType {
+
+ GLASS,
+ DISPOSABLE,
+ RECYCLED_DISPOSABLE,
+ OTHER;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/VaccinationActivity.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/VaccinationActivity.java
new file mode 100644
index 00000000000..d7724fb2fc8
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/VaccinationActivity.java
@@ -0,0 +1,30 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum VaccinationActivity {
+
+ CAMPAIGN,
+ ROUTINE,
+ OTHER;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/VaccinationSite.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/VaccinationSite.java
new file mode 100644
index 00000000000..c4625e1ceed
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/VaccinationSite.java
@@ -0,0 +1,32 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum VaccinationSite {
+
+ FIXED,
+ MOBILE,
+ OUTREACH,
+ OTHER;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/VaccineCarrier.java b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/VaccineCarrier.java
new file mode 100644
index 00000000000..86ebe5d47ab
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/VaccineCarrier.java
@@ -0,0 +1,30 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.adverseeventsfollowingimmunization;
+
+import de.symeda.sormas.api.i18n.I18nProperties;
+
+public enum VaccineCarrier {
+
+ SHORT_RANGE,
+ LONG_RANGE,
+ OTHER;
+
+ @Override
+ public String toString() {
+ return I18nProperties.getEnumCaption(this);
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/bagexport/BAGExportCaseDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/bagexport/BAGExportCaseDto.java
index fc62080b4ef..b7ed1d30462 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/bagexport/BAGExportCaseDto.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/bagexport/BAGExportCaseDto.java
@@ -24,6 +24,7 @@
import de.symeda.sormas.api.contact.QuarantineType;
import de.symeda.sormas.api.infrastructure.facility.FacilityType;
import de.symeda.sormas.api.person.OccupationType;
+import de.symeda.sormas.api.person.OccupationTypeConverter;
import de.symeda.sormas.api.person.Sex;
import de.symeda.sormas.api.sample.PathogenTestResultType;
import de.symeda.sormas.api.sample.PathogenTestType;
@@ -32,6 +33,7 @@
import de.symeda.sormas.api.utils.YesNoUnknown;
public class BAGExportCaseDto implements Serializable {
+
private Integer caseIdIsm;
private Long caseId;
private Long personId;
@@ -124,7 +126,7 @@ public BAGExportCaseDto(Integer caseIdIsm, Long caseId, Long personId,
String homeAddressStreet, String homeAddressHouseNumber, String homeAddressCity, String homeAddressPostalCode, String homeAddressCountry,
String phoneNumber, String mobileNumber, String emailAddress,
Sex sex, Integer birthdateDD, Integer birthdateMM, Integer birthdateYYYY,
- OccupationType occupationType,
+ String occupationType,
boolean symptomatic, Date symptomOnsetDate,
String activityMappingYn,
Date contactTracingContactDate,
@@ -148,7 +150,7 @@ public BAGExportCaseDto(Integer caseIdIsm, Long caseId, Long personId,
this.emailAddress = emailAddress;
this.sex = sex;
this.birthDate = new BirthDateDto(birthdateDD, birthdateMM, birthdateYYYY);
- this.occupationType = occupationType;
+ this.occupationType = new OccupationTypeConverter().convertToEntityAttribute(null, occupationType);
this.symptomatic = symptomatic ? YesNoUnknown.YES : YesNoUnknown.NO;
this.symptomOnsetDate = symptomOnsetDate;
this.activityMappingYn = activityMappingYn;
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/bagexport/BAGExportContactDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/bagexport/BAGExportContactDto.java
index bc097ab09e4..f6a08ab2dac 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/bagexport/BAGExportContactDto.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/bagexport/BAGExportContactDto.java
@@ -23,6 +23,7 @@
import de.symeda.sormas.api.contact.QuarantineType;
import de.symeda.sormas.api.infrastructure.facility.FacilityType;
import de.symeda.sormas.api.person.OccupationType;
+import de.symeda.sormas.api.person.OccupationTypeConverter;
import de.symeda.sormas.api.person.Sex;
import de.symeda.sormas.api.sample.PathogenTestResultType;
import de.symeda.sormas.api.sample.PathogenTestType;
@@ -91,7 +92,7 @@ public BAGExportContactDto(Long contactId, Long personId, String lastName, Strin
String homeAddressStreet, String homeAddressHouseNumber, String homeAddressCity, String homeAddressPostalCode,
String phoneNumber, String mobileNumber, Sex sex,
Integer birthdateDD, Integer birthdateMM, Integer birthdateYYYY,
- OccupationType occupationType,
+ String occupationType,
QuarantineType quarantineType, String quarantineDetails,
Integer caseLinkCaseIdIsm, Long caseLinkCaseId, Date caseLinkContactDate,
Date startOfQuarantineDate, Date endOfQuarantineDate, EndOfQuarantineReason endOfQuarantineReason, String endOfQuarantineReasonDetails
@@ -112,7 +113,7 @@ public BAGExportContactDto(Long contactId, Long personId, String lastName, Strin
this.mobileNumber = mobileNumber;
this.sex = sex;
this.birthDate = new BirthDateDto(birthdateDD, birthdateMM, birthdateYYYY);
- this.occupationType = occupationType;
+ this.occupationType = new OccupationTypeConverter().convertToEntityAttribute(null, occupationType);
this.quarantineType = quarantineType;
this.quarantineDetails = quarantineDetails;
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseCriteria.java b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseCriteria.java
index 7e6e398c3d9..0920c1f4874 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseCriteria.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseCriteria.java
@@ -106,6 +106,9 @@ public class CaseCriteria extends CriteriaWithDateType implements ExternalShareC
private Date newCaseDateTo;
private Date creationDateFrom;
private Date creationDateTo;
+ private Date birthdateFrom;
+ private Date birthdateTo;
+ private boolean includePartialMatch;
private CriteriaDateType newCaseDateType;
// Used to re-construct whether users have filtered by epi weeks or dates
private DateFilterOption dateFilterOption = DateFilterOption.DATE;
@@ -552,6 +555,31 @@ public CaseCriteria creationDateTo(Date creationDateTo) {
return this;
}
+ public Date getBirthdateFrom() {
+ return birthdateFrom;
+ }
+
+ public void setBirthdateFrom(Date birthdateFrom) {
+ this.birthdateFrom = birthdateFrom;
+ }
+
+ public Date getBirthdateTo() {
+ return birthdateTo;
+ }
+
+ public void setBirthdateTo(Date birthdateTo) {
+ this.birthdateTo = birthdateTo;
+ }
+
+ @IgnoreForUrl
+ public boolean isIncludePartialMatch() {
+ return includePartialMatch;
+ }
+
+ public void setIncludePartialMatch(boolean includePartialMatch) {
+ this.includePartialMatch = includePartialMatch;
+ }
+
public Date getQuarantineTo() {
return quarantineTo;
}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseDataDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseDataDto.java
index 8500490afa3..34b1a8d986a 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseDataDto.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseDataDto.java
@@ -283,16 +283,20 @@ public class CaseDataDto extends SormasToSormasShareableDto implements IsCase {
COUNTRY_CODE_SWITZERLAND })
private Date districtLevelDate;
@Outbreaks
+ @Diseases(value = Disease.RESPIRATORY_SYNCYTIAL_VIRUS, hide = true)
private CaseClassification caseClassification;
@HideForCountriesExcept
private CaseIdentificationSource caseIdentificationSource;
@HideForCountriesExcept
private ScreeningType screeningType;
@Outbreaks
+ @Diseases(value = Disease.RESPIRATORY_SYNCYTIAL_VIRUS, hide = true)
private UserReferenceDto classificationUser;
@Outbreaks
+ @Diseases(value = Disease.RESPIRATORY_SYNCYTIAL_VIRUS, hide = true)
private Date classificationDate;
@Outbreaks
+ @Diseases(value = Disease.RESPIRATORY_SYNCYTIAL_VIRUS, hide = true)
@SensitiveData
@Size(max = FieldConstraints.CHARACTER_LIMIT_DEFAULT, message = Validations.textTooLong)
private String classificationComment;
@@ -346,6 +350,7 @@ public class CaseDataDto extends SormasToSormasShareableDto implements IsCase {
@Valid
@EmbeddedPersonalData
@EmbeddedSensitiveData
+ @SensitiveData
private HealthConditionsDto healthConditions;
private YesNoUnknown pregnant;
@@ -360,6 +365,7 @@ public class CaseDataDto extends SormasToSormasShareableDto implements IsCase {
Disease.UNSPECIFIED_VHF,
Disease.ANTHRAX,
Disease.CORONAVIRUS,
+ Disease.RESPIRATORY_SYNCYTIAL_VIRUS,
Disease.OTHER })
@Outbreaks
private VaccinationStatus vaccinationStatus;
@@ -509,7 +515,9 @@ public class CaseDataDto extends SormasToSormasShareableDto implements IsCase {
COUNTRY_CODE_GERMANY,
COUNTRY_CODE_SWITZERLAND })
private Date quarantineOfficialOrderSentDate;
+ @SensitiveData
private YesNoUnknown postpartum;
+ @SensitiveData
private Trimester trimester;
private FollowUpStatus followUpStatus;
@SensitiveData
@@ -567,21 +575,32 @@ public class CaseDataDto extends SormasToSormasShareableDto implements IsCase {
private YesNoUnknown bloodOrganOrTissueDonated;
@HideForCountriesExcept
+ @Diseases(value = {
+ Disease.RESPIRATORY_SYNCYTIAL_VIRUS }, hide = true)
private boolean notACaseReasonNegativeTest;
@HideForCountriesExcept
+ @Diseases(value = {
+ Disease.RESPIRATORY_SYNCYTIAL_VIRUS }, hide = true)
private boolean notACaseReasonPhysicianInformation;
@HideForCountriesExcept
+ @Diseases(value = {
+ Disease.RESPIRATORY_SYNCYTIAL_VIRUS }, hide = true)
private boolean notACaseReasonDifferentPathogen;
@HideForCountriesExcept
+ @Diseases(value = {
+ Disease.RESPIRATORY_SYNCYTIAL_VIRUS }, hide = true)
private boolean notACaseReasonOther;
@HideForCountriesExcept
@SensitiveData
+ @Diseases(value = {
+ Disease.RESPIRATORY_SYNCYTIAL_VIRUS }, hide = true)
@Size(max = FieldConstraints.CHARACTER_LIMIT_TEXT, message = Validations.textTooLong)
private String notACaseReasonDetails;
+
private Date followUpStatusChangeDate;
private UserReferenceDto followUpStatusChangeUser;
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseExportDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseExportDto.java
index 16265e06647..8a2d221a6db 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseExportDto.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseExportDto.java
@@ -28,6 +28,7 @@
import de.symeda.sormas.api.contact.FollowUpStatus;
import de.symeda.sormas.api.contact.QuarantineType;
import de.symeda.sormas.api.disease.DiseaseVariant;
+import de.symeda.sormas.api.disease.DiseaseVariantConverter;
import de.symeda.sormas.api.epidata.EpiDataDto;
import de.symeda.sormas.api.event.EventStatus;
import de.symeda.sormas.api.feature.FeatureType;
@@ -49,6 +50,7 @@
import de.symeda.sormas.api.person.BurialConductor;
import de.symeda.sormas.api.person.EducationType;
import de.symeda.sormas.api.person.OccupationType;
+import de.symeda.sormas.api.person.OccupationTypeConverter;
import de.symeda.sormas.api.person.PersonDto;
import de.symeda.sormas.api.person.PresentCondition;
import de.symeda.sormas.api.person.Salutation;
@@ -263,6 +265,7 @@ public class CaseExportDto extends AbstractUuidDto implements IsCase {
private String vaccineBatchNumber;
private String vaccineUniiCode;
private String vaccineAtcCode;
+ @SensitiveData
private HealthConditionsDto healthConditions;
private int numberOfPrescriptions;
private int numberOfTreatments;
@@ -361,7 +364,7 @@ public class CaseExportDto extends AbstractUuidDto implements IsCase {
@SuppressWarnings("unchecked")
public CaseExportDto(long id, long personId, Double personAddressLatitude, Double personAddressLongitude, Float personAddressLatLonAcc, long epiDataId, long symptomsId,
long hospitalizationId, long healthConditionsId, String uuid, String epidNumber,
- Disease disease, DiseaseVariant diseaseVariant, String diseaseDetails, String diseaseVariantDetails,
+ Disease disease, String diseaseVariant, String diseaseDetails, String diseaseVariantDetails,
String personUuid, String firstName, String lastName, Salutation salutation, String otherSalutation, Sex sex, YesNoUnknown pregnant,
Integer approximateAge, ApproximateAgeType approximateAgeType, Integer birthdateDD, Integer birthdateMM,
Integer birthdateYYYY, Date reportDate, String region, String district, String community,
@@ -388,7 +391,7 @@ public CaseExportDto(long id, long personId, Double personAddressLatitude, Doubl
String addressRegion, String addressDistrict, String addressCommunity, String city, String street, String houseNumber, String additionalInformation, String postalCode,
String facility, String facilityUuid, String facilityDetails,
String phone, String phoneOwner, String emailAddress, String otherContactDetails, EducationType educationType, String educationDetails,
- OccupationType occupationType, String occupationDetails, ArmedForcesRelationType ArmedForcesRelationType, YesNoUnknown contactWithSourceCaseKnown,
+ String occupationType, String occupationDetails, ArmedForcesRelationType ArmedForcesRelationType, YesNoUnknown contactWithSourceCaseKnown,
//Date onsetDate,
VaccinationStatus vaccinationStatus, YesNoUnknown postpartum, Trimester trimester,
long eventCount, Long prescriptionCount, Long treatmentCount, Long clinicalVisitCount,
@@ -418,7 +421,7 @@ public CaseExportDto(long id, long personId, Double personAddressLatitude, Doubl
this.armedForcesRelationType = ArmedForcesRelationType;
this.disease = disease;
this.diseaseDetails = diseaseDetails;
- this.diseaseVariant = diseaseVariant;
+ this.diseaseVariant = new DiseaseVariantConverter().convertToEntityAttribute(disease, diseaseVariant);
this.diseaseVariantDetails = diseaseVariantDetails;
this.personUuid = personUuid;
this.firstName = firstName;
@@ -500,7 +503,7 @@ public CaseExportDto(long id, long personId, Double personAddressLatitude, Doubl
this.otherContactDetails = otherContactDetails;
this.educationType = educationType;
this.educationDetails = educationDetails;
- this.occupationType = occupationType;
+ this.occupationType = new OccupationTypeConverter().convertToEntityAttribute(null, occupationType);
this.occupationDetails = occupationDetails;
this.contactWithSourceCaseKnown = contactWithSourceCaseKnown;
// this.onsetDate = onsetDate;
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseIndexDetailedDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseIndexDetailedDto.java
index b1575091f22..1774a17d66a 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseIndexDetailedDto.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseIndexDetailedDto.java
@@ -75,7 +75,7 @@ public class CaseIndexDetailedDto extends CaseIndexDto {
//@formatter:off
public CaseIndexDetailedDto(long id, String uuid, String epidNumber, String externalID, String externalToken, String internalToken,String caseReferenceNumber, String personUuid, String personFirstName, String personLastName,
- Disease disease, DiseaseVariant diseaseVariant, String diseaseDetails, CaseClassification caseClassification, InvestigationStatus investigationStatus,
+ Disease disease, String diseaseVariant, String diseaseDetails, CaseClassification caseClassification, InvestigationStatus investigationStatus,
PresentCondition presentCondition, Date reportDate, Date creationDate,
String regionUuid, String districtUuid,
String healthFacilityUuid, String healthFacilityName, String healthFacilityDetails,
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseIndexDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseIndexDto.java
index 6ab5de5d058..9f1831345e2 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseIndexDto.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseIndexDto.java
@@ -25,6 +25,7 @@
import de.symeda.sormas.api.common.DeletionReason;
import de.symeda.sormas.api.contact.FollowUpStatus;
import de.symeda.sormas.api.disease.DiseaseVariant;
+import de.symeda.sormas.api.disease.DiseaseVariantConverter;
import de.symeda.sormas.api.infrastructure.InfrastructureHelper;
import de.symeda.sormas.api.infrastructure.facility.FacilityHelper;
import de.symeda.sormas.api.person.ApproximateAgeType;
@@ -141,7 +142,7 @@ public class CaseIndexDto extends PseudonymizableIndexDto implements MergeableIn
//@formatter:off
public CaseIndexDto(long id, String uuid, String epidNumber, String externalID, String externalToken, String internalToken, String caseReferenceNumber, String personUuid, String personFirstName, String personLastName, Disease disease,
- DiseaseVariant diseaseVariant, String diseaseDetails, CaseClassification caseClassification, InvestigationStatus investigationStatus,
+ String diseaseVariant, String diseaseDetails, CaseClassification caseClassification, InvestigationStatus investigationStatus,
PresentCondition presentCondition, Date reportDate, Date creationDate, String regionUuid,
String districtUuid, String healthFacilityUuid, String healthFacilityName, String healthFacilityDetails,
String pointOfEntryUuid, String pointOfEntryName, String pointOfEntryDetails, String surveillanceOfficerUuid, CaseOutcome outcome,
@@ -166,7 +167,7 @@ public CaseIndexDto(long id, String uuid, String epidNumber, String externalID,
this.personFirstName = personFirstName;
this.personLastName = personLastName;
this.disease = disease;
- this.diseaseVariant = diseaseVariant;
+ this.diseaseVariant = new DiseaseVariantConverter().convertToEntityAttribute(disease, diseaseVariant);
this.diseaseDetails = diseaseDetails;
this.caseClassification = caseClassification;
this.investigationStatus = investigationStatus;
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseMergeIndexDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseMergeIndexDto.java
index c00c3d5f593..5beb43b4936 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseMergeIndexDto.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseMergeIndexDto.java
@@ -21,7 +21,7 @@ public class CaseMergeIndexDto extends CaseIndexDto {
//@formatter:off
public CaseMergeIndexDto(
long id, String uuid, String epidNumber, String externalID, String externalToken, String internalToken, String caseReferenceNumber, String personUuid, String personFirstName, String personLastName, Disease disease,
- DiseaseVariant diseaseVariant, String diseaseDetails, CaseClassification caseClassification, InvestigationStatus investigationStatus,
+ String diseaseVariant, String diseaseDetails, CaseClassification caseClassification, InvestigationStatus investigationStatus,
PresentCondition presentCondition, Date reportDate, Date creationDate, String regionUuid,
String districtUuid, String healthFacilityUuid, String healthFacilityName, String healthFacilityDetails,
String pointOfEntryUuid, String pointOfEntryName, String pointOfEntryDetails, String surveillanceOfficerUuid, CaseOutcome outcome,
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/caze/PreviousCaseDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/caze/PreviousCaseDto.java
index 2e1b5e21c74..59e960bd5ce 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/caze/PreviousCaseDto.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/caze/PreviousCaseDto.java
@@ -17,7 +17,9 @@
import java.util.Date;
+import de.symeda.sormas.api.Disease;
import de.symeda.sormas.api.disease.DiseaseVariant;
+import de.symeda.sormas.api.disease.DiseaseVariantConverter;
import de.symeda.sormas.api.uuid.AbstractUuidDto;
public class PreviousCaseDto extends AbstractUuidDto {
@@ -29,11 +31,11 @@ public class PreviousCaseDto extends AbstractUuidDto {
private final DiseaseVariant diseaseVariant;
private final Date onsetDate;
- public PreviousCaseDto(String uuid, Date reportDate, String externalToken, DiseaseVariant diseaseVariant, Date onsetDate) {
+ public PreviousCaseDto(String uuid, Date reportDate, String externalToken, Disease disease, String diseaseVariant, Date onsetDate) {
super(uuid);
this.reportDate = reportDate;
this.externalToken = externalToken;
- this.diseaseVariant = diseaseVariant;
+ this.diseaseVariant = new DiseaseVariantConverter().convertToEntityAttribute(disease, diseaseVariant);
this.onsetDate = onsetDate;
}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/caze/Vaccine.java b/sormas-api/src/main/java/de/symeda/sormas/api/caze/Vaccine.java
index d1a41a5e01b..9071192bc8d 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/caze/Vaccine.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/caze/Vaccine.java
@@ -59,6 +59,18 @@ public enum Vaccine {
@Diseases(value = {
Disease.CORONAVIRUS })
SANOFI_GSK(VaccineManufacturer.SANOFI_GSK),
+ @Diseases(value = {
+ Disease.CSM })
+ MenABCWY(VaccineManufacturer.PFIZER),
+ @Diseases(value = {
+ Disease.MONKEYPOX })
+ ACAM2000(VaccineManufacturer.SANOFI_PASTEUR_BIOLOGICS),
+ @Diseases(value = {
+ Disease.MONKEYPOX })
+ LC_16(VaccineManufacturer.KM_BIOLOGICS),
+ @Diseases(value = {
+ Disease.MONKEYPOX })
+ MVA_BN(VaccineManufacturer.BAVARIAN_NORDIC),
UNKNOWN,
OTHER;
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/caze/VaccineManufacturer.java b/sormas-api/src/main/java/de/symeda/sormas/api/caze/VaccineManufacturer.java
index 9d384da94a7..286293d076b 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/caze/VaccineManufacturer.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/caze/VaccineManufacturer.java
@@ -24,6 +24,12 @@ public enum VaccineManufacturer {
@Diseases(value = {
Disease.CORONAVIRUS })
BIONTECH_PFIZER,
+ @Diseases(value = {
+ Disease.CSM })
+ PFIZER,
+ @Diseases(value = {
+ Disease.MONKEYPOX })
+ BAVARIAN_NORDIC,
@Diseases(value = {
Disease.CORONAVIRUS })
MODERNA,
@@ -33,12 +39,18 @@ public enum VaccineManufacturer {
@Diseases(value = {
Disease.CORONAVIRUS })
JOHNSON_JOHNSON,
+ @Diseases(value = {
+ Disease.MONKEYPOX })
+ KM_BIOLOGICS,
@Diseases(value = {
Disease.CORONAVIRUS })
NOVAVAX,
@Diseases(value = {
Disease.CORONAVIRUS })
SANOFI_GSK,
+ @Diseases(value = {
+ Disease.MONKEYPOX })
+ SANOFI_PASTEUR_BIOLOGICS,
VALNEVA,
UNKNOWN,
OTHER;
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/common/DeletableEntityType.java b/sormas-api/src/main/java/de/symeda/sormas/api/common/DeletableEntityType.java
index 0d01e715da0..0e3a694ec31 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/common/DeletableEntityType.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/common/DeletableEntityType.java
@@ -23,6 +23,7 @@ public enum DeletableEntityType {
EVENT,
EVENT_PARTICIPANT,
IMMUNIZATION,
+ ADVERSE_EVENTS_FOLLOWING_IMMUNIZATION,
TRAVEL_ENTRY,
CAMPAIGN,
SAMPLE,
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactCriteria.java b/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactCriteria.java
index 6f1086e30ea..c96d4349842 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactCriteria.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactCriteria.java
@@ -136,6 +136,9 @@ public class ContactCriteria extends BaseCriteria implements Serializable {
private Boolean onlyContactsFromOtherInstances;
private Date creationDateFrom;
private Date creationDateTo;
+ private Date birthdateFrom;
+ private Date birthdateTo;
+ private boolean includePartialMatch;
private String reportingUserLike;
private String personLike;
private boolean excludeLimitedSyncRestrictions;
@@ -665,6 +668,31 @@ public ContactCriteria creationDateTo(Date creationDateTo) {
return this;
}
+ public Date getBirthdateFrom() {
+ return birthdateFrom;
+ }
+
+ public void setBirthdateFrom(Date birthdateFrom) {
+ this.birthdateFrom = birthdateFrom;
+ }
+
+ public Date getBirthdateTo() {
+ return birthdateTo;
+ }
+
+ public void setBirthdateTo(Date birthdateTo) {
+ this.birthdateTo = birthdateTo;
+ }
+
+ @IgnoreForUrl
+ public boolean isIncludePartialMatch() {
+ return includePartialMatch;
+ }
+
+ public void setIncludePartialMatch(boolean includePartialMatch) {
+ this.includePartialMatch = includePartialMatch;
+ }
+
public String getReportingUserLike() {
return reportingUserLike;
}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactDto.java
index fc7e25b832b..615d81675fc 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactDto.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactDto.java
@@ -312,6 +312,7 @@ public class ContactDto extends SormasToSormasShareableDto implements IsContact
@Valid
private EpiDataDto epiData;
@Valid
+ @SensitiveData
private HealthConditionsDto healthConditions;
private YesNoUnknown returningTraveler;
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactExportDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactExportDto.java
index 36f4dbe34a2..33f49816dbe 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactExportDto.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactExportDto.java
@@ -46,6 +46,7 @@
import de.symeda.sormas.api.person.ApproximateAgeType.ApproximateAgeHelper;
import de.symeda.sormas.api.person.ArmedForcesRelationType;
import de.symeda.sormas.api.person.OccupationType;
+import de.symeda.sormas.api.person.OccupationTypeConverter;
import de.symeda.sormas.api.person.PersonDto;
import de.symeda.sormas.api.person.PresentCondition;
import de.symeda.sormas.api.person.Salutation;
@@ -259,7 +260,7 @@ public ContactExportDto(long id, long personId, String uuid, String sourceCaseUu
PresentCondition presentCondition, Date deathDate,
String addressRegion, String addressDistrict, String addressCommunity, String city, String street, String houseNumber, String additionalInformation, String postalCode,
String facility, String facilityUuid, String facilityDetails,
- String phone, String phoneOwner, String emailAddress, String otherContactDetails, OccupationType occupationType, String occupationDetails, ArmedForcesRelationType armedForcesRelationType,
+ String phone, String phoneOwner, String emailAddress, String otherContactDetails, String occupationType, String occupationDetails, ArmedForcesRelationType armedForcesRelationType,
String region, String district, String community,
long epiDataId, YesNoUnknown contactWithSourceCaseKnown, YesNoUnknown returningTraveler,
VaccinationStatus vaccinationStatus, String externalID, String externalToken, String internalToken, String caseReferenceNumber,
@@ -337,7 +338,7 @@ public ContactExportDto(long id, long personId, String uuid, String sourceCaseUu
// this.otherContactDetails += this.otherContactDetails.equals("") ? otherContactDetail : ", " + otherContactDetail;
// }
this.otherContactDetails = otherContactDetails;
- this.occupationType = occupationType;
+ this.occupationType = new OccupationTypeConverter().convertToEntityAttribute(null, occupationType);
this.occupationDetails = occupationDetails;
this.armedForcesRelationType = armedForcesRelationType;
this.region = region;
diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/customizableenum/CustomizableEnumConverter.java b/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnumConverter.java
similarity index 81%
rename from sormas-backend/src/main/java/de/symeda/sormas/backend/customizableenum/CustomizableEnumConverter.java
rename to sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnumConverter.java
index 37ed910f221..3a7ecfd3f88 100644
--- a/sormas-backend/src/main/java/de/symeda/sormas/backend/customizableenum/CustomizableEnumConverter.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnumConverter.java
@@ -13,17 +13,14 @@
* along with this program. If not, see .
*/
-package de.symeda.sormas.backend.customizableenum;
+package de.symeda.sormas.api.customizableenum;
import javax.naming.InitialContext;
import javax.naming.NamingException;
-import javax.persistence.AttributeConverter;
import org.apache.commons.lang3.StringUtils;
-import de.symeda.sormas.api.customizableenum.CustomizableEnum;
-import de.symeda.sormas.api.customizableenum.CustomizableEnumFacade;
-import de.symeda.sormas.api.customizableenum.CustomizableEnumType;
+import de.symeda.sormas.api.Disease;
/**
* JPA Converter that converts a JSON String stored in the database to an instance of {@link CustomizableEnum} and vice versa.
@@ -36,7 +33,7 @@
* @param
* The specific extension of {@link CustomizableEnum} for type safety
*/
-public abstract class CustomizableEnumConverter implements AttributeConverter {
+public abstract class CustomizableEnumConverter {
private final Class enumClass;
private CustomizableEnumFacade customizableEnumFacade;
@@ -45,13 +42,11 @@ public CustomizableEnumConverter(Class enumClass) {
this.enumClass = enumClass;
}
- @Override
public String convertToDatabaseColumn(T enumValue) {
return enumValue != null ? enumValue.getValue() : null;
}
- @Override
- public T convertToEntityAttribute(String enumString) {
+ public T convertToEntityAttribute(Disease disease, String enumString) {
if (StringUtils.isBlank(enumString)) {
return null;
}
@@ -66,7 +61,11 @@ public T convertToEntityAttribute(String enumString) {
throw new RuntimeException("No CustomizableEnumType for given enumClass " + enumClass + "found");
}
- return customizableEnumFacade.getEnumValue(CustomizableEnumType.getByEnumClass(enumClass), enumString);
+ T enumValue = customizableEnumFacade.getEnumValue(enumType, disease, enumString);
+ if (enumValue == null && disease != null) {
+ enumValue = customizableEnumFacade.getEnumValue(enumType, null, enumString);
+ }
+ return enumValue;
} catch (NamingException e) {
throw new RuntimeException(e);
}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnumFacade.java b/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnumFacade.java
index 9cf74c08a5b..6db95dfd48d 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnumFacade.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnumFacade.java
@@ -46,11 +46,11 @@ public interface CustomizableEnumFacade
* The specific extension of {@link CustomizableEnum} for type safety
* @return The enum instance containing its value, internationalized caption, and optional properties
*/
- T getEnumValue(CustomizableEnumType type, String value);
+ T getEnumValue(CustomizableEnumType type, Disease disease, String value);
/**
* Works similar to the {@link CustomizableEnumFacade#getEnumValues(CustomizableEnumType, Disease)}, but looks up a specific value.
- * Unlike the {@link CustomizableEnumFacade#getEnumValue(CustomizableEnumType, String)}, this method does not throw a RuntimeException
+ * Unlike the {@link CustomizableEnumFacade#getEnumValue(CustomizableEnumType, Disease, String)}, this method does not throw a RuntimeException
* when an enum can not be found.
*
* @param type
@@ -106,7 +106,7 @@ public interface CustomizableEnumFacade
/**
* Clears the caches and reloads the customizable enum values from the database. Does not load enum values by language
- * or disease as those are retrieved on demand by using {@link #getEnumValue(CustomizableEnumType, String)} and
+ * or disease as those are retrieved on demand by using {@link #getEnumValue(CustomizableEnumType, Disease, String)} and
* {@link #getEnumValues(CustomizableEnumType, Disease)}. Exposed to this facade to allow reloading the caches without
* having to restart the server.
*/
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/AefiDashboardCriteria.java b/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/AefiDashboardCriteria.java
new file mode 100644
index 00000000000..cf245b5a25a
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/AefiDashboardCriteria.java
@@ -0,0 +1,49 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.dashboard;
+
+import de.symeda.sormas.api.adverseeventsfollowingimmunization.AefiDashboardFilterDateType;
+import de.symeda.sormas.api.adverseeventsfollowingimmunization.AefiType;
+
+public class AefiDashboardCriteria extends BaseDashboardCriteria {
+
+ private AefiDashboardFilterDateType aefiDashboardFilterDateType;
+ private AefiType aefiType;
+
+ public AefiDashboardCriteria() {
+ super(AefiDashboardCriteria.class);
+ }
+
+ public AefiDashboardFilterDateType getAefiDashboardFilterDateType() {
+ return aefiDashboardFilterDateType;
+ }
+
+ public AefiType getAefiType() {
+ return aefiType;
+ }
+
+ public AefiDashboardCriteria aefiDashboardDateType(AefiDashboardFilterDateType aefiDashboardFilterDateType) {
+ this.aefiDashboardFilterDateType = aefiDashboardFilterDateType;
+
+ return self;
+ }
+
+ public AefiDashboardCriteria aefiType(AefiType aefiType) {
+ this.aefiType = aefiType;
+
+ return self;
+ }
+}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/adverseeventsfollowingimmunization/AefiChartData.java b/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/adverseeventsfollowingimmunization/AefiChartData.java
new file mode 100644
index 00000000000..b6190530a39
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/adverseeventsfollowingimmunization/AefiChartData.java
@@ -0,0 +1,58 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.dashboard.adverseeventsfollowingimmunization;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import de.symeda.sormas.api.audit.AuditedClass;
+
+@AuditedClass
+public class AefiChartData implements Serializable {
+
+ private static final long serialVersionUID = 3538219674050390425L;
+
+ private List