Skip to content

Commit 9744ace

Browse files
authored
Merge pull request #13808 from SORMAS-Foundation/feature-13377-enhance_vaccination_status
#13377 - Vaccination status automatic update
2 parents 472b060 + a43c315 commit 9744ace

19 files changed

Lines changed: 2063 additions & 28 deletions

File tree

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ public class CaseDataDto extends SormasToSormasShareableDto implements IsCase {
141141
public static final String HEALTH_CONDITIONS = "healthConditions";
142142
public static final String PREGNANT = "pregnant";
143143
public static final String VACCINATION_STATUS = "vaccinationStatus";
144+
public static final String VACCINATION_STATUS_DETAILS = "vaccinationStatusDetails";
144145
public static final String SMALLPOX_VACCINATION_SCAR = "smallpoxVaccinationScar";
145146
public static final String SMALLPOX_VACCINATION_RECEIVED = "smallpoxVaccinationReceived";
146147
public static final String SMALLPOX_LAST_VACCINATION_DATE = "smallpoxLastVaccinationDate";
@@ -388,6 +389,9 @@ public class CaseDataDto extends SormasToSormasShareableDto implements IsCase {
388389
Disease.OTHER })
389390
@Outbreaks
390391
private VaccinationStatus vaccinationStatus;
392+
@Outbreaks
393+
@Size(max = FieldConstraints.CHARACTER_LIMIT_DEFAULT, message = Validations.textTooLong)
394+
private String vaccinationStatusDetails;
391395
@Diseases({
392396
Disease.MONKEYPOX })
393397
private YesNoUnknown smallpoxVaccinationScar;
@@ -1156,6 +1160,14 @@ public void setVaccinationStatus(VaccinationStatus vaccinationStatus) {
11561160
this.vaccinationStatus = vaccinationStatus;
11571161
}
11581162

1163+
public String getVaccinationStatusDetails() {
1164+
return vaccinationStatusDetails;
1165+
}
1166+
1167+
public void setVaccinationStatusDetails(String vaccinationStatusDetails) {
1168+
this.vaccinationStatusDetails = vaccinationStatusDetails;
1169+
}
1170+
11591171
public YesNoUnknown getSmallpoxVaccinationScar() {
11601172
return smallpoxVaccinationScar;
11611173
}

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

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

20-
import de.symeda.sormas.api.CountryHelper;
2120
import de.symeda.sormas.api.Disease;
2221
import de.symeda.sormas.api.i18n.I18nProperties;
2322
import de.symeda.sormas.api.utils.Diseases;
24-
import de.symeda.sormas.api.utils.HideForCountriesExcept;
2523

2624
public enum VaccinationStatus {
2725

2826
VACCINATED,
27+
2928
UNVACCINATED,
30-
@Diseases(value = {Disease.MEASLES})
29+
30+
@Diseases(value = {
31+
Disease.MEASLES })
3132
VACCINATED_ONE_DOSE,
32-
@Diseases(value = {Disease.MEASLES})
33+
34+
@Diseases(value = {
35+
Disease.MEASLES })
3336
VACCINATED_TWO_DOSE,
34-
@Diseases(value = {Disease.MEASLES})
37+
38+
@Diseases(value = {
39+
Disease.MEASLES })
3540
RECOVERED,
41+
42+
OTHER,
43+
3644
UNKNOWN;
3745

3846
@Override
3947
public String toString() {
4048
return I18nProperties.getEnumCaption(this);
4149
}
50+
51+
/**
52+
* Checks if this vaccination status indicates the person is vaccinated.
53+
*
54+
* @return true if the status is VACCINATED, VACCINATED_ONE_DOSE, or VACCINATED_TWO_DOSE; false otherwise
55+
*/
56+
public boolean isVaccinated() {
57+
return this == VACCINATED || this == VACCINATED_ONE_DOSE || this == VACCINATED_TWO_DOSE;
58+
}
4259
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -810,6 +810,7 @@ public interface Captions {
810810
String CaseData_trimester = "CaseData.trimester";
811811
String CaseData_uuid = "CaseData.uuid";
812812
String CaseData_vaccinationStatus = "CaseData.vaccinationStatus";
813+
String CaseData_vaccinationStatusDetails = "CaseData.vaccinationStatusDetails";
813814
String CaseData_vaccinationStatusUpdate = "CaseData.vaccinationStatusUpdate";
814815
String CaseData_visits = "CaseData.visits";
815816
String CaseData_wasInQuarantineBeforeIsolation = "CaseData.wasInQuarantineBeforeIsolation";

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,7 @@ public interface Strings {
462462
String headingArchiveSelfReport = "headingArchiveSelfReport";
463463
String headingArchiveTravelEntry = "headingArchiveTravelEntry";
464464
String headingAutomaticDeletionStarted = "headingAutomaticDeletionStarted";
465+
String headingAutomaticVaccinationStatusDetermination = "headingAutomaticVaccinationStatusDetermination";
465466
String headingBulkEmailMaxAttachedFiles = "headingBulkEmailMaxAttachedFiles";
466467
String headingBulkEmailsNoProcessedEntities = "headingBulkEmailsNoProcessedEntities";
467468
String headingBulkEmailsSomeNotSent = "headingBulkEmailsSomeNotSent";
@@ -599,6 +600,7 @@ public interface Strings {
599600
String headingDisableLineListing = "headingDisableLineListing";
600601
String headingDiscardUnsavedChanges = "headingDiscardUnsavedChanges";
601602
String headingDocumentCreated = "headingDocumentCreated";
603+
String headingDoseCount = "headingDoseCount";
602604
String headingDownloadDocumentTemplateGuide = "headingDownloadDocumentTemplateGuide";
603605
String headingDownloadEmailTemplateGuide = "headingDownloadEmailTemplateGuide";
604606
String headingDownloadErrorReport = "headingDownloadErrorReport";
@@ -696,6 +698,7 @@ public interface Strings {
696698
String headingHowToMergeContacts = "headingHowToMergeContacts";
697699
String headingImmunizationAdverseEvents = "headingImmunizationAdverseEvents";
698700
String headingImmunizationsDeleted = "headingImmunizationsDeleted";
701+
String headingImmunizationSelection = "headingImmunizationSelection";
699702
String headingImmunizationsNotDeleted = "headingImmunizationsNotDeleted";
700703
String headingImmunizationsNotRestored = "headingImmunizationsNotRestored";
701704
String headingImmunizationsRestored = "headingImmunizationsRestored";
@@ -879,6 +882,7 @@ public interface Strings {
879882
String headingSormasToSormasDuplicateDetection = "headingSormasToSormasDuplicateDetection";
880883
String headingSormasToSormasShareRequestNotFound = "headingSormasToSormasShareRequestNotFound";
881884
String headingSpecailCaseAccess = "headingSpecailCaseAccess";
885+
String headingStatusDetermination = "headingStatusDetermination";
882886
String headingStoppedFollowUp = "headingStoppedFollowUp";
883887
String headingSurveillanceReports = "headingSurveillanceReports";
884888
String headingSurveyGenerateDocument = "headingSurveyGenerateDocument";
@@ -1007,6 +1011,8 @@ public interface Strings {
10071011
String infoDatabaseExportTables = "infoDatabaseExportTables";
10081012
String infoDefineOutbreaks = "infoDefineOutbreaks";
10091013
String infoDetailedExport = "infoDetailedExport";
1014+
String infoDeterminedVaccinationStatusExplanation = "infoDeterminedVaccinationStatusExplanation";
1015+
String infoDeterminedVaccinationStatusReadOnly = "infoDeterminedVaccinationStatusReadOnly";
10101016
String infoDeveloperOptions = "infoDeveloperOptions";
10111017
String infoDeveloperOptionsContactGeneration = "infoDeveloperOptionsContactGeneration";
10121018
String infoDeveloperOptionsSeedUsage = "infoDeveloperOptionsSeedUsage";
@@ -1015,6 +1021,8 @@ public interface Strings {
10151021
String infoDocumentAlreadyExistsCannotUploadAnotherOne = "infoDocumentAlreadyExistsCannotUploadAnotherOne";
10161022
String infoDocumentOverride = "infoDocumentOverride";
10171023
String infoDontShareCheckboxAlreadyShared = "infoDontShareCheckboxAlreadyShared";
1024+
String infoDoseCountFromNumberOfDoses = "infoDoseCountFromNumberOfDoses";
1025+
String infoDoseCountFromVaccinationEntries = "infoDoseCountFromVaccinationEntries";
10181026
String infoDownloadCaseImportTemplate = "infoDownloadCaseImportTemplate";
10191027
String infoDownloadDocumentTemplateImportGuide = "infoDownloadDocumentTemplateImportGuide";
10201028
String infoDownloadEmailTemplateImportGuide = "infoDownloadEmailTemplateImportGuide";
@@ -1045,6 +1053,9 @@ public interface Strings {
10451053
String infoHowToMergeCases = "infoHowToMergeCases";
10461054
String infoHowToMergeContacts = "infoHowToMergeContacts";
10471055
String infoImmunizationPeriod = "infoImmunizationPeriod";
1056+
String infoImmunizationStatusAcquired = "infoImmunizationStatusAcquired";
1057+
String infoImmunizationValidFromClosest = "infoImmunizationValidFromClosest";
1058+
String infoImmunizationValidUntilNotBefore = "infoImmunizationValidUntilNotBefore";
10481059
String infoImportAllContinents = "infoImportAllContinents";
10491060
String infoImportAllCountries = "infoImportAllCountries";
10501061
String infoImportAllSubcontinents = "infoImportAllSubcontinents";
@@ -1084,6 +1095,7 @@ public interface Strings {
10841095
String infoNoSurveys = "infoNoSurveys";
10851096
String infoObserverMissingEmail = "infoObserverMissingEmail";
10861097
String infoObserverMissingEmailOrPhoneNumber = "infoObserverMissingEmailOrPhoneNumber";
1098+
String infoOtherImmunization = "infoOtherImmunization";
10871099
String infoPersonMergeConfirmation = "infoPersonMergeConfirmation";
10881100
String infoPersonMergeConfirmationBothShared = "infoPersonMergeConfirmationBothShared";
10891101
String infoPersonMergeConfirmationForNonSimilarPersons = "infoPersonMergeConfirmationForNonSimilarPersons";
@@ -1110,6 +1122,7 @@ public interface Strings {
11101122
String infoPopulationCollectionDate = "infoPopulationCollectionDate";
11111123
String infoPopulationDataView = "infoPopulationDataView";
11121124
String infoPopulationReferenceYear = "infoPopulationReferenceYear";
1125+
String infoRecoveryNaturalImmunity = "infoRecoveryNaturalImmunity";
11131126
String infoRestrictDiseasesDescription = "infoRestrictDiseasesDescription";
11141127
String infoSampleAdditionalTesting = "infoSampleAdditionalTesting";
11151128
String infoSampleExport = "infoSampleExport";
@@ -1146,12 +1159,14 @@ public interface Strings {
11461159
String infoSystemConfigurationValueDescriptionSmsAuthKey = "infoSystemConfigurationValueDescriptionSmsAuthKey";
11471160
String infoSystemConfigurationValueDescriptionSmsAuthSecret = "infoSystemConfigurationValueDescriptionSmsAuthSecret";
11481161
String infoSystemConfigurationValueDescriptionSmsSenderName = "infoSystemConfigurationValueDescriptionSmsSenderName";
1162+
String infoSystemConfigurationValueDescriptionUseDeterminedVaccinationStatus = "infoSystemConfigurationValueDescriptionUseDeterminedVaccinationStatus";
11491163
String infoTasksWithMultipleJurisdictionsSelected = "infoTasksWithMultipleJurisdictionsSelected";
11501164
String infoUploadDocumentTemplate = "infoUploadDocumentTemplate";
11511165
String infoUsageOfEditableCampaignGrids = "infoUsageOfEditableCampaignGrids";
11521166
String infoUserEmail = "infoUserEmail";
11531167
String infoUserPhoneNumber = "infoUserPhoneNumber";
11541168
String infoUserSyncProcess = "infoUserSyncProcess";
1169+
String infoVaccinationDoseCount = "infoVaccinationDoseCount";
11551170
String infoWeeklyReportsView = "infoWeeklyReportsView";
11561171
String labelActualLongSeed = "labelActualLongSeed";
11571172
String labelNoVaccinationDate = "labelNoVaccinationDate";

sormas-api/src/main/java/de/symeda/sormas/api/immunization/ImmunizationFacade.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,6 @@ Page<ImmunizationIndexDto> getIndexPage(
4848
boolean linkRecoveryImmunizationToSearchedCase(String specificCaseSearchValue, ImmunizationDto immunization);
4949

5050
List<ImmunizationDto> getByPersonUuids(List<String> uuids);
51+
52+
boolean isUseDeterminedVaccinationStatus();
5153
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,7 @@ CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present?
492492
CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination
493493
CaseData.vaccinationStatus=Vaccination status
494494
CaseData.vaccinationStatusUpdate=Vaccination status update
495+
CaseData.vaccinationStatusDetails=Vaccination status details
495496
CaseData.surveillanceOfficer=Responsible surveillance officer
496497
CaseData.symptoms=Symptoms
497498
CaseData.therapy=Therapy

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2167,13 +2167,13 @@ UserRightGroup.EPIPULSE=Epipulse export
21672167

21682168
# Vaccination
21692169
VaccinationStatus.UNKNOWN = Unknown
2170+
VaccinationStatus.OTHER = Other
21702171
VaccinationStatus.UNVACCINATED = Unvaccinated
21712172
VaccinationStatus.VACCINATED = Vaccinated
21722173
VaccinationStatus.VACCINATED_ONE_DOSE = Vaccinated one dose
21732174
VaccinationStatus.VACCINATED_TWO_DOSE = Vaccinated two dose
21742175
VaccinationStatus.RECOVERED = Had the disease
21752176

2176-
21772177
# VaccinationInfoSource
21782178
VaccinationInfoSource.ORAL_COMMUNICATION = Oral communication
21792179
VaccinationInfoSource.VACCINATION_CARD = Vaccination card

0 commit comments

Comments
 (0)