From 3e2bf4e5d018c4ca2ebd63ff2de24c3ede5b581e Mon Sep 17 00:00:00 2001 From: Pa-Touche <47572440+Pa-Touche@users.noreply.github.com> Date: Thu, 30 Jul 2026 15:22:58 +0200 Subject: [PATCH 01/15] SYPH - PathogenTest for Lab messages --- .../sormas/api/sample/PathogenTestType.java | 16 +++++++++++++++- .../api/symptoms/syphilis/SyphilisStage.java | 6 ++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java b/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java index f8d7a9ea34a..2d056de8302 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java @@ -78,6 +78,18 @@ public enum PathogenTestType { ResultValueType.NUMERIC }) IGA_SERUM_ANTIBODY, + @Diseases(value = { + Disease.SYPHILIS }) + @PathogenTestCategoryRel(PathogenTestCategory.SEROLOGICAL_TESTS) + @ResultValueTypeRel(ResultValueType.QUALITATIVE) + NON_TREPONEMAL_TEST, + + @Diseases(value = { + Disease.SYPHILIS }) + @PathogenTestCategoryRel(PathogenTestCategory.SEROLOGICAL_TESTS) + @ResultValueTypeRel(ResultValueType.QUALITATIVE) + TREPONEMAL_TEST, + @Diseases(value = { Disease.CORONAVIRUS, Disease.RESPIRATORY_SYNCYTIAL_VIRUS, @@ -254,7 +266,8 @@ public enum PathogenTestType { @Diseases(value = { Disease.DENGUE, - Disease.SHIGELLOSIS }) + Disease.SHIGELLOSIS, + Disease.SYPHILIS }) @PathogenTestCategoryRel(PathogenTestCategory.MOLECULAR_ASSAYS) @ResultValueTypeRel({ ResultValueType.QUALITATIVE, @@ -407,6 +420,7 @@ public enum PathogenTestType { Disease.RESPIRATORY_SYNCYTIAL_VIRUS, Disease.INVASIVE_MENINGOCOCCAL_INFECTION, Disease.INVASIVE_PNEUMOCOCCAL_INFECTION, + Disease.SYPHILIS, Disease.MEASLES }) @PathogenTestCategoryRel(PathogenTestCategory.SEROLOGICAL_TESTS) @ResultValueTypeRel(ResultValueType.QUALITATIVE) diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/symptoms/syphilis/SyphilisStage.java b/sormas-api/src/main/java/de/symeda/sormas/api/symptoms/syphilis/SyphilisStage.java index 5cb2c11e869..93f99e595a2 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/symptoms/syphilis/SyphilisStage.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/symptoms/syphilis/SyphilisStage.java @@ -22,6 +22,12 @@ public enum SyphilisStage { PRIMARY_SYPHILIS, SECONDARY_SYPHILIS, EARLY_LATENT_SYPHILIS, + + /** + * NORMAL LATENT ?! + */ + LATENT_SYPHILIS, + LATE_LATENT_SYPHILIS, TERTIARY_SYPHILIS, NEUROLOGICAL_SYPHILIS, From 1471f4753f6bdaab67b3672ec79bc94ee052c3cb Mon Sep 17 00:00:00 2001 From: Pa-Touche <47572440+Pa-Touche@users.noreply.github.com> Date: Thu, 30 Jul 2026 15:36:00 +0200 Subject: [PATCH 02/15] missing translations --- .../symeda/sormas/api/symptoms/syphilis/SyphilisStage.java | 5 ----- sormas-api/src/main/resources/enum.properties | 3 +++ 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/symptoms/syphilis/SyphilisStage.java b/sormas-api/src/main/java/de/symeda/sormas/api/symptoms/syphilis/SyphilisStage.java index 93f99e595a2..ede2cade8af 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/symptoms/syphilis/SyphilisStage.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/symptoms/syphilis/SyphilisStage.java @@ -22,12 +22,7 @@ public enum SyphilisStage { PRIMARY_SYPHILIS, SECONDARY_SYPHILIS, EARLY_LATENT_SYPHILIS, - - /** - * NORMAL LATENT ?! - */ LATENT_SYPHILIS, - LATE_LATENT_SYPHILIS, TERTIARY_SYPHILIS, NEUROLOGICAL_SYPHILIS, diff --git a/sormas-api/src/main/resources/enum.properties b/sormas-api/src/main/resources/enum.properties index c902ba90b1b..f5fe9a05f17 100644 --- a/sormas-api/src/main/resources/enum.properties +++ b/sormas-api/src/main/resources/enum.properties @@ -1254,6 +1254,8 @@ PathogenTestType.HISTOPATHOLOGY = Histopathology PathogenTestType.IGG_SERUM_ANTIBODY = ELISA IgG PathogenTestType.IGM_SERUM_ANTIBODY = ELISA IgM PathogenTestType.IGA_SERUM_ANTIBODY = ELISA IgA +PathogenTestType.NON_TREPONEMAL_TEST=Non-treponemal test +PathogenTestType.TREPONEMAL_TEST=Treponemal test PathogenTestType.ISOLATION = Isolation PathogenTestType.MICROSCOPY = Microscopy PathogenTestType.NEUTRALIZING_ANTIBODIES = Neutralizing antibodies @@ -1681,6 +1683,7 @@ SyphilisInfectionSite.OTHER = Other SyphilisStage.PRIMARY_SYPHILIS = Primary syphilis SyphilisStage.SECONDARY_SYPHILIS = Secondary syphilis SyphilisStage.EARLY_LATENT_SYPHILIS = Early latent syphilis +SyphilisStage.LATENT_SYPHILIS=Latent syphilis SyphilisStage.LATE_LATENT_SYPHILIS = Late latent syphilis SyphilisStage.TERTIARY_SYPHILIS = Tertiary syphilis SyphilisStage.NEUROLOGICAL_SYPHILIS = Neurological syphilis From 2edf0cea2081681d22489df8fc5651c0af8b0fab Mon Sep 17 00:00:00 2001 From: Pa-Touche <47572440+Pa-Touche@users.noreply.github.com> Date: Thu, 6 Aug 2026 08:14:10 +0200 Subject: [PATCH 03/15] removed "normal"-latent stage as must not exist after second business requirements clarification --- .../de/symeda/sormas/api/symptoms/syphilis/SyphilisStage.java | 1 - sormas-api/src/main/resources/enum.properties | 1 - 2 files changed, 2 deletions(-) diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/symptoms/syphilis/SyphilisStage.java b/sormas-api/src/main/java/de/symeda/sormas/api/symptoms/syphilis/SyphilisStage.java index ede2cade8af..5cb2c11e869 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/symptoms/syphilis/SyphilisStage.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/symptoms/syphilis/SyphilisStage.java @@ -22,7 +22,6 @@ public enum SyphilisStage { PRIMARY_SYPHILIS, SECONDARY_SYPHILIS, EARLY_LATENT_SYPHILIS, - LATENT_SYPHILIS, LATE_LATENT_SYPHILIS, TERTIARY_SYPHILIS, NEUROLOGICAL_SYPHILIS, diff --git a/sormas-api/src/main/resources/enum.properties b/sormas-api/src/main/resources/enum.properties index f5fe9a05f17..e3327f74dd8 100644 --- a/sormas-api/src/main/resources/enum.properties +++ b/sormas-api/src/main/resources/enum.properties @@ -1683,7 +1683,6 @@ SyphilisInfectionSite.OTHER = Other SyphilisStage.PRIMARY_SYPHILIS = Primary syphilis SyphilisStage.SECONDARY_SYPHILIS = Secondary syphilis SyphilisStage.EARLY_LATENT_SYPHILIS = Early latent syphilis -SyphilisStage.LATENT_SYPHILIS=Latent syphilis SyphilisStage.LATE_LATENT_SYPHILIS = Late latent syphilis SyphilisStage.TERTIARY_SYPHILIS = Tertiary syphilis SyphilisStage.NEUROLOGICAL_SYPHILIS = Neurological syphilis From cca6c077da859b6028d3d1c108afe71b964c5206 Mon Sep 17 00:00:00 2001 From: Pa-Touche <47572440+Pa-Touche@users.noreply.github.com> Date: Thu, 6 Aug 2026 08:14:12 +0200 Subject: [PATCH 04/15] removed "normal"-latent stage as must not exist after second business requirements clarification From 011fe8c2df609840e0800a9d9abc526318a61ad6 Mon Sep 17 00:00:00 2001 From: Pa-Touche <47572440+Pa-Touche@users.noreply.github.com> Date: Thu, 6 Aug 2026 15:08:47 +0200 Subject: [PATCH 05/15] Adapted changes for doctor declaration --- .../externalmessage/ExternalMessageDto.java | 53 +++++++++++++++++ .../src/main/resources/captions.properties | 5 ++ .../externalmessage/ExternalMessage.java | 58 +++++++++++++++++++ .../ExternalMessageFacadeEjb.java | 10 ++++ .../src/main/resources/sql/sormas_schema.sql | 17 ++++++ 5 files changed, 143 insertions(+) diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/ExternalMessageDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/ExternalMessageDto.java index c9fbe4baf36..20ce0ca2946 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/ExternalMessageDto.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/ExternalMessageDto.java @@ -31,7 +31,9 @@ import de.symeda.sormas.api.caze.VaccinationStatus; import de.symeda.sormas.api.caze.surveillancereport.SurveillanceReportReferenceDto; import de.symeda.sormas.api.clinicalcourse.ComplianceWithTreatment; +import de.symeda.sormas.api.clinicalcourse.HivStatus; import de.symeda.sormas.api.disease.DiseaseVariant; +import de.symeda.sormas.api.epidata.ProbableRouteOfTransmission; import de.symeda.sormas.api.exposure.ModeOfTransmission; import de.symeda.sormas.api.externalmessage.labmessage.SampleReportDto; import de.symeda.sormas.api.externalmessage.survey.ExternalSurveyResponseData; @@ -128,6 +130,11 @@ public class ExternalMessageDto extends SormasToSormasShareableDto { public static final String MALARIA_INFECTED_YEAR = "malariaInfectedYear"; public static final String AIRPORT_WORKER = "airportWorker"; public static final String HEALTHCARE_PROFESSIONAL = "healthcareProfessional"; + public static final String HIV_STATUS = "hivStatus"; + public static final String PROBABLE_ROUTE_OF_TRANSMISSION = "probableRouteOfTransmission"; + public static final String CONTACT_WITH_SEX_WORKER = "contactWithSexWorker"; + public static final String MOTHER_COUNTRY_OF_BIRTH = "motherCountryOfBirth"; + public static final String MOTHER_CITIZENSHIP = "motherCitizenship"; @AuditIncludeProperty private ExternalMessageType type; @@ -292,6 +299,12 @@ public class ExternalMessageDto extends SormasToSormasShareableDto { private ModeOfTransmission modeOfTransmission; private String modeOfTransmissionType; + private HivStatus hivStatus; + private ProbableRouteOfTransmission probableRouteOfTransmission; + private YesNoUnknown contactWithSexWorker; + private CountryReferenceDto motherCountryOfBirth; + private CountryReferenceDto motherCitizenship; + /** * Will only be present for: {@link ExternalMessageType#SURVEY_RESPONSE} to represent the pair. */ @@ -1064,6 +1077,46 @@ public void setModeOfTransmissionType(String modeOfTransmissionType) { this.modeOfTransmissionType = modeOfTransmissionType; } + public HivStatus getHivStatus() { + return hivStatus; + } + + public void setHivStatus(HivStatus hivStatus) { + this.hivStatus = hivStatus; + } + + public ProbableRouteOfTransmission getProbableRouteOfTransmission() { + return probableRouteOfTransmission; + } + + public void setProbableRouteOfTransmission(ProbableRouteOfTransmission probableRouteOfTransmission) { + this.probableRouteOfTransmission = probableRouteOfTransmission; + } + + public YesNoUnknown getContactWithSexWorker() { + return contactWithSexWorker; + } + + public void setContactWithSexWorker(YesNoUnknown contactWithSexWorker) { + this.contactWithSexWorker = contactWithSexWorker; + } + + public CountryReferenceDto getMotherCountryOfBirth() { + return motherCountryOfBirth; + } + + public void setMotherCountryOfBirth(CountryReferenceDto motherCountryOfBirth) { + this.motherCountryOfBirth = motherCountryOfBirth; + } + + public CountryReferenceDto getMotherCitizenship() { + return motherCitizenship; + } + + public void setMotherCitizenship(CountryReferenceDto motherCitizenship) { + this.motherCitizenship = motherCitizenship; + } + @Nullable public ExternalSurveyResponseData getSurveyResponseData() { return surveyResponseData; diff --git a/sormas-api/src/main/resources/captions.properties b/sormas-api/src/main/resources/captions.properties index a50f44fa7fe..bd8abedeb6b 100644 --- a/sormas-api/src/main/resources/captions.properties +++ b/sormas-api/src/main/resources/captions.properties @@ -1819,6 +1819,11 @@ ExternalMessage.personExternalId=External ID ExternalMessage.personNationalHealthId=National health ID ExternalMessage.personPhoneNumberType=Phone number type ExternalMessage.personCountry=Country +ExternalMessage.hivStatus=HIV status +ExternalMessage.probableRouteOfTransmission=Probable route of transmission +ExternalMessage.contactWithSexWorker=Contact with sex worker +ExternalMessage.motherCountryOfBirth=Mother country of birth +ExternalMessage.motherCitizenship=Mother citizenship externalMessageFetch=Fetch messages surveyFetch=Fetch Surveys externalMessageProcess=Process diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessage.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessage.java index 5005f7e1782..c9fc27c6573 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessage.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessage.java @@ -47,8 +47,10 @@ import de.symeda.sormas.api.caze.RadiographyCompatibility; import de.symeda.sormas.api.caze.VaccinationStatus; import de.symeda.sormas.api.clinicalcourse.ComplianceWithTreatment; +import de.symeda.sormas.api.clinicalcourse.HivStatus; import de.symeda.sormas.api.disease.DiseaseVariant; import de.symeda.sormas.api.disease.DiseaseVariantConverter; +import de.symeda.sormas.api.epidata.ProbableRouteOfTransmission; import de.symeda.sormas.api.exposure.ModeOfTransmission; import de.symeda.sormas.api.externalmessage.ExternalMessageStatus; import de.symeda.sormas.api.externalmessage.ExternalMessageType; @@ -140,6 +142,11 @@ public class ExternalMessage extends AbstractDomainObject { public static final String OTHER_DIAGNOSTIC_CRITERIA = "otherDiagnosticCriteria"; public static final String AIRPORT_WORKER = "airportWorker"; public static final String HEALTHCARE_PROFESSIONAL = "healthcareProfessional"; + public static final String HIV_STATUS = "hivStatus"; + public static final String PROBABLE_ROUTE_OF_TRANSMISSION = "probableRouteOfTransmission"; + public static final String CONTACT_WITH_SEX_WORKER = "contactWithSexWorker"; + public static final String MOTHER_COUNTRY_OF_BIRTH = "motherCountryOfBirth"; + public static final String MOTHER_CITIZENSHIP = "motherCitizenship"; private ExternalMessageType type; private Disease disease; @@ -246,6 +253,12 @@ public class ExternalMessage extends AbstractDomainObject { private ModeOfTransmission modeOfTransmission; private String modeOfTransmissionType; + private HivStatus hivStatus; + private ProbableRouteOfTransmission probableRouteOfTransmission; + private YesNoUnknown contactWithSexWorker; + private Country motherCountryOfBirth; + private Country motherCitizenship; + private ExternalMessageAdditionalDataType additionalDataType; private String additionalDataJson; @@ -1054,6 +1067,51 @@ public void setModeOfTransmissionType(String modeOfTransmissionType) { this.modeOfTransmissionType = modeOfTransmissionType; } + @Enumerated(EnumType.STRING) + public HivStatus getHivStatus() { + return hivStatus; + } + + public void setHivStatus(HivStatus hivStatus) { + this.hivStatus = hivStatus; + } + + @Enumerated(EnumType.STRING) + public ProbableRouteOfTransmission getProbableRouteOfTransmission() { + return probableRouteOfTransmission; + } + + public void setProbableRouteOfTransmission(ProbableRouteOfTransmission probableRouteOfTransmission) { + this.probableRouteOfTransmission = probableRouteOfTransmission; + } + + @Enumerated(EnumType.STRING) + public YesNoUnknown getContactWithSexWorker() { + return contactWithSexWorker; + } + + public void setContactWithSexWorker(YesNoUnknown contactWithSexWorker) { + this.contactWithSexWorker = contactWithSexWorker; + } + + @ManyToOne(fetch = FetchType.LAZY) + public Country getMotherCountryOfBirth() { + return motherCountryOfBirth; + } + + public void setMotherCountryOfBirth(Country motherCountryOfBirth) { + this.motherCountryOfBirth = motherCountryOfBirth; + } + + @ManyToOne(fetch = FetchType.LAZY) + public Country getMotherCitizenship() { + return motherCitizenship; + } + + public void setMotherCitizenship(Country motherCitizenship) { + this.motherCitizenship = motherCitizenship; + } + @Enumerated(EnumType.STRING) public ExternalMessageAdditionalDataType getAdditionalDataType() { return additionalDataType; diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjb.java index be7dc7a9a59..4c7ae17d8fc 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjb.java @@ -297,6 +297,11 @@ ExternalMessage fillOrBuildEntity(@NotNull ExternalMessageDto source, ExternalMe target.setHealthcareProfessional(source.getHealthcareProfessional()); target.setModeOfTransmission(source.getModeOfTransmission()); target.setModeOfTransmissionType(source.getModeOfTransmissionType()); + target.setHivStatus(source.getHivStatus()); + target.setProbableRouteOfTransmission(source.getProbableRouteOfTransmission()); + target.setContactWithSexWorker(source.getContactWithSexWorker()); + target.setMotherCountryOfBirth(countryService.getByReferenceDto(source.getMotherCountryOfBirth())); + target.setMotherCitizenship(countryService.getByReferenceDto(source.getMotherCitizenship())); ExternalSurveyResponseData surveyResponseData = source.getSurveyResponseData(); @@ -629,6 +634,11 @@ public ExternalMessageDto toDto(ExternalMessage source) { target.setHealthcareProfessional(source.getHealthcareProfessional()); target.setModeOfTransmission(source.getModeOfTransmission()); target.setModeOfTransmissionType(source.getModeOfTransmissionType()); + target.setHivStatus(source.getHivStatus()); + target.setProbableRouteOfTransmission(source.getProbableRouteOfTransmission()); + target.setContactWithSexWorker(source.getContactWithSexWorker()); + target.setMotherCountryOfBirth(CountryFacadeEjb.toReferenceDto(source.getMotherCountryOfBirth())); + target.setMotherCitizenship(CountryFacadeEjb.toReferenceDto(source.getMotherCitizenship())); ExternalMessageAdditionalDataType additionalDataType = source.getAdditionalDataType(); String additionalDataJson = source.getAdditionalDataJson(); diff --git a/sormas-backend/src/main/resources/sql/sormas_schema.sql b/sormas-backend/src/main/resources/sql/sormas_schema.sql index 3a433db794d..9fbe5e23bfa 100644 --- a/sormas-backend/src/main/resources/sql/sormas_schema.sql +++ b/sormas-backend/src/main/resources/sql/sormas_schema.sql @@ -17098,4 +17098,21 @@ LANGUAGE plpgsql; INSERT INTO schema_version (version_number, comment) VALUES (659, 'Make scheduled job intervals configurable #13818'); +-- Add syphilis-specific fields to ExternalMessage for Luxembourg #14239 +ALTER TABLE externalmessage ADD COLUMN hivstatus varchar(255); +ALTER TABLE externalmessage ADD COLUMN probablerouteoftransmission varchar(255); +ALTER TABLE externalmessage ADD COLUMN contactwithsexworker varchar(255); +ALTER TABLE externalmessage ADD COLUMN mothercountryofbirth_id bigint; +ALTER TABLE externalmessage ADD COLUMN mothercitizenship_id bigint; +ALTER TABLE externalmessage ADD CONSTRAINT fk_externalmessage_mothercountryofbirth_id FOREIGN KEY (mothercountryofbirth_id) REFERENCES country(id); +ALTER TABLE externalmessage ADD CONSTRAINT fk_externalmessage_mothercitizenship_id FOREIGN KEY (mothercitizenship_id) REFERENCES country(id); + +ALTER TABLE externalmessage_history ADD COLUMN hivstatus varchar(255); +ALTER TABLE externalmessage_history ADD COLUMN probablerouteoftransmission varchar(255); +ALTER TABLE externalmessage_history ADD COLUMN contactwithsexworker varchar(255); +ALTER TABLE externalmessage_history ADD COLUMN mothercountryofbirth_id bigint; +ALTER TABLE externalmessage_history ADD COLUMN mothercitizenship_id bigint; + +INSERT INTO schema_version (version_number, comment) VALUES (660, 'Add syphilis-specific fields to ExternalMessage for Luxembourg #14239'); + -- *** Insert new sql commands BEFORE this line. Remember to always consider _history tables. *** From b6e869b348fca51529efad733f4d08a2cd556149 Mon Sep 17 00:00:00 2001 From: Pa-Touche <47572440+Pa-Touche@users.noreply.github.com> Date: Tue, 18 Aug 2026 07:50:18 +0200 Subject: [PATCH 06/15] Mapped non-symptoms field adjusted schema --- ...octorDeclarationMessageProcessingFlow.java | 29 ++++++++++++------- .../src/main/resources/sql/sormas_schema.sql | 20 ++++++------- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/doctordeclaration/AbstractDoctorDeclarationMessageProcessingFlow.java b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/doctordeclaration/AbstractDoctorDeclarationMessageProcessingFlow.java index 4bbdba4c868..c1562e4ab98 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/doctordeclaration/AbstractDoctorDeclarationMessageProcessingFlow.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/doctordeclaration/AbstractDoctorDeclarationMessageProcessingFlow.java @@ -219,6 +219,8 @@ protected void postBuildHealthConditions(CaseDataDto caseDto, ExternalMessageDto postBuildTuberculosisHealthConditions(healthConditionsDto, externalMessageDto); } else if (Disease.MALARIA.equals(externalMessageDto.getDisease())) { postBuildMalariaHealthConditions(healthConditionsDto, externalMessageDto); + } else if (Disease.SYPHILIS.equals(externalMessageDto.getDisease())) { + postBuildSyphilisHealthConditions(healthConditionsDto, externalMessageDto); } else { logger.debug("[POST BUILD HEALTH CONDITIONS] Health conditions not set for case. Disease: {}", externalMessageDto.getDisease()); } @@ -227,6 +229,10 @@ protected void postBuildHealthConditions(CaseDataDto caseDto, ExternalMessageDto caseDto.setHealthConditions(healthConditionsDto); } + private void postBuildSyphilisHealthConditions(HealthConditionsDto healthConditionsDto, ExternalMessageDto externalMessageDto) { + healthConditionsDto.setHivStatus(externalMessageDto.getHivStatus()); + } + /** * Sets malaria-specific health conditions for the case from the external message. * @@ -324,17 +330,18 @@ protected boolean hasCaseHospitalizationMismatch(CaseDataDto caze, ExternalMessa boolean admittedMismatch = !Objects.equals(existingHospitalization.getAdmittedToHealthFacility(), externalMessage.getAdmittedToHealthFacility()); - boolean hospitalizationFacilityNameMismatch = - !Objects.equals( - caze.getHealthFacility() != null ? caze.getHealthFacility().getCaption() : null, - externalMessage.getHospitalizationFacilityName()); - boolean hospitalizationFacilityExternalIdMismatch = - !Objects.equals( - caze.getHealthFacility() != null ? caze.getHealthFacility().getExternalId() : null, - externalMessage.getHospitalizationFacilityExternalId()); + boolean hospitalizationFacilityNameMismatch = !Objects.equals( + caze.getHealthFacility() != null ? caze.getHealthFacility().getCaption() : null, + externalMessage.getHospitalizationFacilityName()); + boolean hospitalizationFacilityExternalIdMismatch = !Objects.equals( + caze.getHealthFacility() != null ? caze.getHealthFacility().getExternalId() : null, + externalMessage.getHospitalizationFacilityExternalId()); - boolean mismatch = admissionDateMismatch || dischargeDateMismatch || admittedMismatch - || hospitalizationFacilityNameMismatch || hospitalizationFacilityExternalIdMismatch; + boolean mismatch = admissionDateMismatch + || dischargeDateMismatch + || admittedMismatch + || hospitalizationFacilityNameMismatch + || hospitalizationFacilityExternalIdMismatch; if (mismatch) { logger.debug("[MESSAGE PROCESSING] Hospitalization mismatch detected for existing case with UUID: {}", caze.getUuid()); @@ -494,6 +501,8 @@ protected void postBuildExposure(CaseDataDto caseDto, ExternalMessageDto externa epiData.setHealthcareProfessional(externalMessageDto.getHealthcareProfessional()); epiData.setModeOfTransmission(externalMessageDto.getModeOfTransmission()); epiData.setModeOfTransmissionType(externalMessageDto.getModeOfTransmissionType()); + epiData.setProbableRouteOfTransmission(externalMessageDto.getProbableRouteOfTransmission()); + epiData.setContactWithSexWorker(externalMessageDto.getContactWithSexWorker()); } } else { diff --git a/sormas-backend/src/main/resources/sql/sormas_schema.sql b/sormas-backend/src/main/resources/sql/sormas_schema.sql index 5ed5fa1658a..53818a91687 100644 --- a/sormas-backend/src/main/resources/sql/sormas_schema.sql +++ b/sormas-backend/src/main/resources/sql/sormas_schema.sql @@ -17127,19 +17127,19 @@ INSERT INTO schema_version (version_number, comment) VALUES (661, '#14220 - Syph -- Add syphilis-specific fields to ExternalMessage for Luxembourg #14239 -ALTER TABLE externalmessage ADD COLUMN hivstatus varchar(255); -ALTER TABLE externalmessage ADD COLUMN probablerouteoftransmission varchar(255); -ALTER TABLE externalmessage ADD COLUMN contactwithsexworker varchar(255); -ALTER TABLE externalmessage ADD COLUMN mothercountryofbirth_id bigint; -ALTER TABLE externalmessage ADD COLUMN mothercitizenship_id bigint; +ALTER TABLE externalmessage ADD COLUMN IF NOT EXISTS hivstatus varchar(255); +ALTER TABLE externalmessage ADD COLUMN IF NOT EXISTS probablerouteoftransmission varchar(255); +ALTER TABLE externalmessage ADD COLUMN IF NOT EXISTS contactwithsexworker varchar(255); +ALTER TABLE externalmessage ADD COLUMN IF NOT EXISTS mothercountryofbirth_id bigint; +ALTER TABLE externalmessage ADD COLUMN IF NOT EXISTS mothercitizenship_id bigint; ALTER TABLE externalmessage ADD CONSTRAINT fk_externalmessage_mothercountryofbirth_id FOREIGN KEY (mothercountryofbirth_id) REFERENCES country(id); ALTER TABLE externalmessage ADD CONSTRAINT fk_externalmessage_mothercitizenship_id FOREIGN KEY (mothercitizenship_id) REFERENCES country(id); -ALTER TABLE externalmessage_history ADD COLUMN hivstatus varchar(255); -ALTER TABLE externalmessage_history ADD COLUMN probablerouteoftransmission varchar(255); -ALTER TABLE externalmessage_history ADD COLUMN contactwithsexworker varchar(255); -ALTER TABLE externalmessage_history ADD COLUMN mothercountryofbirth_id bigint; -ALTER TABLE externalmessage_history ADD COLUMN mothercitizenship_id bigint; +ALTER TABLE externalmessage_history ADD COLUMN IF NOT EXISTS hivstatus varchar(255); +ALTER TABLE externalmessage_history ADD COLUMN IF NOT EXISTS probablerouteoftransmission varchar(255); +ALTER TABLE externalmessage_history ADD COLUMN IF NOT EXISTS contactwithsexworker varchar(255); +ALTER TABLE externalmessage_history ADD COLUMN IF NOT EXISTS mothercountryofbirth_id bigint; +ALTER TABLE externalmessage_history ADD COLUMN IF NOT EXISTS mothercitizenship_id bigint; INSERT INTO schema_version (version_number, comment) VALUES (662, 'Add syphilis-specific fields to ExternalMessage for Luxembourg #14239'); From f6c39230f614536170fc9c7c82499c50201b766f Mon Sep 17 00:00:00 2001 From: Pa-Touche <47572440+Pa-Touche@users.noreply.github.com> Date: Tue, 18 Aug 2026 15:11:40 +0200 Subject: [PATCH 07/15] changed DIRECT_FLUORESCENT_ANTIBODY (DFA) categroy --- .../main/java/de/symeda/sormas/api/sample/PathogenTestType.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java b/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java index 0d9793ed759..1d6f0f25aee 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java @@ -443,7 +443,7 @@ public enum PathogenTestType { Disease.INVASIVE_PNEUMOCOCCAL_INFECTION, Disease.MEASLES, Disease.SYPHILIS }) - @PathogenTestCategoryRel(PathogenTestCategory.SEROLOGICAL_TESTS) + @PathogenTestCategoryRel(PathogenTestCategory.MICROSCOPY_AND_STAINING) @ResultValueTypeRel(ResultValueType.QUALITATIVE) DIRECT_FLUORESCENT_ANTIBODY, From 223ad2d6bfe353a5d6711660d04c450f145aa681 Mon Sep 17 00:00:00 2001 From: Pa-Touche <47572440+Pa-Touche@users.noreply.github.com> Date: Thu, 20 Aug 2026 16:18:17 +0200 Subject: [PATCH 08/15] added personBirthCountry --- .../api/externalmessage/ExternalMessageDto.java | 11 +++++++++++ .../processing/ExternalMessageMapper.java | 1 + ...bstractDoctorDeclarationMessageProcessingFlow.java | 2 ++ .../backend/externalmessage/ExternalMessage.java | 11 +++++++++++ .../externalmessage/ExternalMessageFacadeEjb.java | 2 ++ .../src/main/resources/sql/sormas_schema.sql | 8 ++++++++ 6 files changed, 35 insertions(+) diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/ExternalMessageDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/ExternalMessageDto.java index 053d620e988..c5d87ed572f 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/ExternalMessageDto.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/ExternalMessageDto.java @@ -82,6 +82,7 @@ public class ExternalMessageDto extends SormasToSormasShareableDto { public static final String PERSON_BIRTH_DATE_DD = "personBirthDateDD"; public static final String PERSON_BIRTH_DATE_MM = "personBirthDateMM"; public static final String PERSON_BIRTH_DATE_YYYY = "personBirthDateYYYY"; + public static final String PERSON_BIRTH_COUNTRY = "personBirthCountry"; public static final String PERSON_POSTAL_CODE = "personPostalCode"; public static final String PERSON_CITY = "personCity"; public static final String PERSON_PHONE = "personPhone"; @@ -173,6 +174,8 @@ public class ExternalMessageDto extends SormasToSormasShareableDto { private Integer personBirthDateDD; private Integer personBirthDateMM; private Integer personBirthDateYYYY; + @HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG) + private CountryReferenceDto personBirthCountry; @Size(max = FieldConstraints.CHARACTER_LIMIT_SMALL, message = Validations.textTooLong) private String personPostalCode; @Size(max = FieldConstraints.CHARACTER_LIMIT_SMALL, message = Validations.textTooLong) @@ -528,6 +531,14 @@ public void setPersonCountry(CountryReferenceDto personCountry) { this.personCountry = personCountry; } + public CountryReferenceDto getPersonBirthCountry() { + return personBirthCountry; + } + + public void setPersonBirthCountry(CountryReferenceDto personBirthCountry) { + this.personBirthCountry = personBirthCountry; + } + public FacilityReferenceDto getPersonFacility() { return personFacility; } diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/ExternalMessageMapper.java b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/ExternalMessageMapper.java index bf8478e441a..bb8edf6126d 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/ExternalMessageMapper.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/ExternalMessageMapper.java @@ -84,6 +84,7 @@ public List mapToPerson(PersonDto person) { Mapping.of(person::setBirthdateDD, person.getBirthdateDD(), externalMessage.getPersonBirthDateDD(), PersonDto.BIRTH_DATE_DD), Mapping.of(person::setBirthdateMM, person.getBirthdateMM(), externalMessage.getPersonBirthDateMM(), PersonDto.BIRTH_DATE_MM), Mapping.of(person::setBirthdateYYYY, person.getBirthdateYYYY(), externalMessage.getPersonBirthDateYYYY(), PersonDto.BIRTH_DATE_YYYY), + Mapping.of(person::setBirthCountry, person.getBirthCountry(), externalMessage.getPersonBirthCountry(), PersonDto.BIRTH_COUNTRY), Mapping.of(person::setSex, person.getSex(), externalMessage.getPersonSex(), PersonDto.SEX), Mapping.of( person::setPresentCondition, diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/doctordeclaration/AbstractDoctorDeclarationMessageProcessingFlow.java b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/doctordeclaration/AbstractDoctorDeclarationMessageProcessingFlow.java index c1562e4ab98..d5d40b875cf 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/doctordeclaration/AbstractDoctorDeclarationMessageProcessingFlow.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/doctordeclaration/AbstractDoctorDeclarationMessageProcessingFlow.java @@ -503,6 +503,8 @@ protected void postBuildExposure(CaseDataDto caseDto, ExternalMessageDto externa epiData.setModeOfTransmissionType(externalMessageDto.getModeOfTransmissionType()); epiData.setProbableRouteOfTransmission(externalMessageDto.getProbableRouteOfTransmission()); epiData.setContactWithSexWorker(externalMessageDto.getContactWithSexWorker()); + epiData.setMotherCitizenship(externalMessageDto.getMotherCitizenship()); + epiData.setMotherCountryOfBirth(externalMessageDto.getMotherCountryOfBirth()); } } else { diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessage.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessage.java index 729d1a0a1f9..f6132db35ac 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessage.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessage.java @@ -99,6 +99,7 @@ public class ExternalMessage extends AbstractDomainObject { public static final String PERSON_BIRTH_DATE_DD = "personBirthDateDD"; public static final String PERSON_BIRTH_DATE_MM = "personBirthDateMM"; public static final String PERSON_BIRTH_DATE_YYYY = "personBirthDateYYYY"; + public static final String PERSON_BIRTH_COUNTRY = "personBirthCountry"; public static final String PERSON_POSTAL_CODE = "personPostalCode"; public static final String PERSON_CITY = "personCity"; public static final String PERSON_STREET = "personStreet"; @@ -172,6 +173,7 @@ public class ExternalMessage extends AbstractDomainObject { private Integer personBirthDateDD; private Integer personBirthDateMM; private Integer personBirthDateYYYY; + private Country personBirthCountry; private String personPostalCode; private String personCity; private String personStreet; @@ -516,6 +518,15 @@ public void setPersonCountry(Country personCountry) { this.personCountry = personCountry; } + @ManyToOne(fetch = FetchType.LAZY) + public Country getPersonBirthCountry() { + return personBirthCountry; + } + + public void setPersonBirthCountry(Country personBirthCountry) { + this.personBirthCountry = personBirthCountry; + } + @ManyToOne(fetch = FetchType.LAZY) public Facility getPersonFacility() { return personFacility; diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjb.java index 7b8052e1c38..96294d6cfe9 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjb.java @@ -208,6 +208,7 @@ ExternalMessage fillOrBuildEntity(@NotNull ExternalMessageDto source, ExternalMe target.setPersonBirthDateDD(source.getPersonBirthDateDD()); target.setPersonBirthDateMM(source.getPersonBirthDateMM()); target.setPersonBirthDateYYYY(source.getPersonBirthDateYYYY()); + target.setPersonBirthCountry(countryService.getByReferenceDto(source.getPersonBirthCountry())); target.setPersonCity(source.getPersonCity()); target.setPersonExternalId(source.getPersonExternalId()); target.setPersonNationalHealthId(source.getPersonNationalHealthId()); @@ -553,6 +554,7 @@ public ExternalMessageDto toDto(ExternalMessage source) { target.setPersonBirthDateDD(source.getPersonBirthDateDD()); target.setPersonBirthDateMM(source.getPersonBirthDateMM()); target.setPersonBirthDateYYYY(source.getPersonBirthDateYYYY()); + target.setPersonBirthCountry(CountryFacadeEjb.toReferenceDto(source.getPersonBirthCountry())); target.setPersonCity(source.getPersonCity()); target.setPersonExternalId(source.getPersonExternalId()); target.setPersonNationalHealthId(source.getPersonNationalHealthId()); diff --git a/sormas-backend/src/main/resources/sql/sormas_schema.sql b/sormas-backend/src/main/resources/sql/sormas_schema.sql index 53818a91687..b051ee373d7 100644 --- a/sormas-backend/src/main/resources/sql/sormas_schema.sql +++ b/sormas-backend/src/main/resources/sql/sormas_schema.sql @@ -17143,4 +17143,12 @@ ALTER TABLE externalmessage_history ADD COLUMN IF NOT EXISTS mothercitizenship_i INSERT INTO schema_version (version_number, comment) VALUES (662, 'Add syphilis-specific fields to ExternalMessage for Luxembourg #14239'); +-- Add personBirthCountry field to ExternalMessage for Luxembourg +ALTER TABLE externalmessage ADD COLUMN IF NOT EXISTS personbirthcountry_id bigint; +ALTER TABLE externalmessage ADD CONSTRAINT fk_externalmessage_personbirthcountry_id FOREIGN KEY (personbirthcountry_id) REFERENCES country(id); + +ALTER TABLE externalmessage_history ADD COLUMN IF NOT EXISTS personbirthcountry_id bigint; + +INSERT INTO schema_version (version_number, comment) VALUES (663, 'Add personBirthCountry field to ExternalMessage for Luxembourg'); + -- *** Insert new sql commands BEFORE this line. Remember to always consider _history tables. *** From b19492f5112c996186bfa0dca652773a77e57333 Mon Sep 17 00:00:00 2001 From: Pa-Touche <47572440+Pa-Touche@users.noreply.github.com> Date: Thu, 20 Aug 2026 16:31:05 +0200 Subject: [PATCH 09/15] added personCitizenship --- .../api/externalmessage/ExternalMessageDto.java | 11 +++++++++++ .../processing/ExternalMessageMapper.java | 1 + .../backend/externalmessage/ExternalMessage.java | 11 +++++++++++ .../externalmessage/ExternalMessageFacadeEjb.java | 2 ++ .../src/main/resources/sql/sormas_schema.sql | 8 ++++++++ 5 files changed, 33 insertions(+) diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/ExternalMessageDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/ExternalMessageDto.java index c5d87ed572f..63c8cad7c0f 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/ExternalMessageDto.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/ExternalMessageDto.java @@ -83,6 +83,7 @@ public class ExternalMessageDto extends SormasToSormasShareableDto { public static final String PERSON_BIRTH_DATE_MM = "personBirthDateMM"; public static final String PERSON_BIRTH_DATE_YYYY = "personBirthDateYYYY"; public static final String PERSON_BIRTH_COUNTRY = "personBirthCountry"; + public static final String PERSON_CITIZENSHIP = "personCitizenship"; public static final String PERSON_POSTAL_CODE = "personPostalCode"; public static final String PERSON_CITY = "personCity"; public static final String PERSON_PHONE = "personPhone"; @@ -176,6 +177,8 @@ public class ExternalMessageDto extends SormasToSormasShareableDto { private Integer personBirthDateYYYY; @HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG) private CountryReferenceDto personBirthCountry; + @HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG) + private CountryReferenceDto personCitizenship; @Size(max = FieldConstraints.CHARACTER_LIMIT_SMALL, message = Validations.textTooLong) private String personPostalCode; @Size(max = FieldConstraints.CHARACTER_LIMIT_SMALL, message = Validations.textTooLong) @@ -539,6 +542,14 @@ public void setPersonBirthCountry(CountryReferenceDto personBirthCountry) { this.personBirthCountry = personBirthCountry; } + public CountryReferenceDto getPersonCitizenship() { + return personCitizenship; + } + + public void setPersonCitizenship(CountryReferenceDto personCitizenship) { + this.personCitizenship = personCitizenship; + } + public FacilityReferenceDto getPersonFacility() { return personFacility; } diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/ExternalMessageMapper.java b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/ExternalMessageMapper.java index bb8edf6126d..0bcc881f5c4 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/ExternalMessageMapper.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/ExternalMessageMapper.java @@ -85,6 +85,7 @@ public List mapToPerson(PersonDto person) { Mapping.of(person::setBirthdateMM, person.getBirthdateMM(), externalMessage.getPersonBirthDateMM(), PersonDto.BIRTH_DATE_MM), Mapping.of(person::setBirthdateYYYY, person.getBirthdateYYYY(), externalMessage.getPersonBirthDateYYYY(), PersonDto.BIRTH_DATE_YYYY), Mapping.of(person::setBirthCountry, person.getBirthCountry(), externalMessage.getPersonBirthCountry(), PersonDto.BIRTH_COUNTRY), + Mapping.of(person::setCitizenship, person.getCitizenship(), externalMessage.getPersonCitizenship(), PersonDto.CITIZENSHIP), Mapping.of(person::setSex, person.getSex(), externalMessage.getPersonSex(), PersonDto.SEX), Mapping.of( person::setPresentCondition, diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessage.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessage.java index f6132db35ac..6aac4e69eae 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessage.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessage.java @@ -100,6 +100,7 @@ public class ExternalMessage extends AbstractDomainObject { public static final String PERSON_BIRTH_DATE_MM = "personBirthDateMM"; public static final String PERSON_BIRTH_DATE_YYYY = "personBirthDateYYYY"; public static final String PERSON_BIRTH_COUNTRY = "personBirthCountry"; + public static final String PERSON_CITIZENSHIP = "personCitizenship"; public static final String PERSON_POSTAL_CODE = "personPostalCode"; public static final String PERSON_CITY = "personCity"; public static final String PERSON_STREET = "personStreet"; @@ -174,6 +175,7 @@ public class ExternalMessage extends AbstractDomainObject { private Integer personBirthDateMM; private Integer personBirthDateYYYY; private Country personBirthCountry; + private Country personCitizenship; private String personPostalCode; private String personCity; private String personStreet; @@ -527,6 +529,15 @@ public void setPersonBirthCountry(Country personBirthCountry) { this.personBirthCountry = personBirthCountry; } + @ManyToOne(fetch = FetchType.LAZY) + public Country getPersonCitizenship() { + return personCitizenship; + } + + public void setPersonCitizenship(Country personCitizenship) { + this.personCitizenship = personCitizenship; + } + @ManyToOne(fetch = FetchType.LAZY) public Facility getPersonFacility() { return personFacility; diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjb.java index 96294d6cfe9..9d5ca8a2757 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjb.java @@ -209,6 +209,7 @@ ExternalMessage fillOrBuildEntity(@NotNull ExternalMessageDto source, ExternalMe target.setPersonBirthDateMM(source.getPersonBirthDateMM()); target.setPersonBirthDateYYYY(source.getPersonBirthDateYYYY()); target.setPersonBirthCountry(countryService.getByReferenceDto(source.getPersonBirthCountry())); + target.setPersonCitizenship(countryService.getByReferenceDto(source.getPersonCitizenship())); target.setPersonCity(source.getPersonCity()); target.setPersonExternalId(source.getPersonExternalId()); target.setPersonNationalHealthId(source.getPersonNationalHealthId()); @@ -555,6 +556,7 @@ public ExternalMessageDto toDto(ExternalMessage source) { target.setPersonBirthDateMM(source.getPersonBirthDateMM()); target.setPersonBirthDateYYYY(source.getPersonBirthDateYYYY()); target.setPersonBirthCountry(CountryFacadeEjb.toReferenceDto(source.getPersonBirthCountry())); + target.setPersonCitizenship(CountryFacadeEjb.toReferenceDto(source.getPersonCitizenship())); target.setPersonCity(source.getPersonCity()); target.setPersonExternalId(source.getPersonExternalId()); target.setPersonNationalHealthId(source.getPersonNationalHealthId()); diff --git a/sormas-backend/src/main/resources/sql/sormas_schema.sql b/sormas-backend/src/main/resources/sql/sormas_schema.sql index b051ee373d7..306eac97742 100644 --- a/sormas-backend/src/main/resources/sql/sormas_schema.sql +++ b/sormas-backend/src/main/resources/sql/sormas_schema.sql @@ -17151,4 +17151,12 @@ ALTER TABLE externalmessage_history ADD COLUMN IF NOT EXISTS personbirthcountry_ INSERT INTO schema_version (version_number, comment) VALUES (663, 'Add personBirthCountry field to ExternalMessage for Luxembourg'); +-- Add personCitizenship field to ExternalMessage for Luxembourg +ALTER TABLE externalmessage ADD COLUMN IF NOT EXISTS personcitizenship_id bigint; +ALTER TABLE externalmessage ADD CONSTRAINT fk_externalmessage_personcitizenship_id FOREIGN KEY (personcitizenship_id) REFERENCES country(id); + +ALTER TABLE externalmessage_history ADD COLUMN IF NOT EXISTS personcitizenship_id bigint; + +INSERT INTO schema_version (version_number, comment) VALUES (664, 'Add personCitizenship field to ExternalMessage for Luxembourg'); + -- *** Insert new sql commands BEFORE this line. Remember to always consider _history tables. *** From 4e3d0fef12c0ec7cb97811bf8c8963c4d7f7adea Mon Sep 17 00:00:00 2001 From: Pa-Touche <47572440+Pa-Touche@users.noreply.github.com> Date: Fri, 21 Aug 2026 08:51:27 +0200 Subject: [PATCH 10/15] missing fields / mapping --- .../externalmessage/ExternalMessageDto.java | 23 +++++++++ .../processing/AbstractProcessingFlow.java | 1 + ...octorDeclarationMessageProcessingFlow.java | 1 + .../de/symeda/sormas/api/i18n/Captions.java | 47 +++++++++++++------ .../externalmessage/ExternalMessage.java | 23 +++++++++ .../ExternalMessageFacadeEjb.java | 4 ++ .../src/main/resources/sql/sormas_schema.sql | 24 ++++------ 7 files changed, 95 insertions(+), 28 deletions(-) diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/ExternalMessageDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/ExternalMessageDto.java index 63c8cad7c0f..c74d32d4965 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/ExternalMessageDto.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/ExternalMessageDto.java @@ -28,6 +28,7 @@ import de.symeda.sormas.api.audit.AuditedClass; import de.symeda.sormas.api.caze.CaseClassification; import de.symeda.sormas.api.caze.RadiographyCompatibility; +import de.symeda.sormas.api.caze.SyphilisPresentation; import de.symeda.sormas.api.caze.VaccinationStatus; import de.symeda.sormas.api.caze.surveillancereport.SurveillanceReportReferenceDto; import de.symeda.sormas.api.clinicalcourse.ComplianceWithTreatment; @@ -84,6 +85,8 @@ public class ExternalMessageDto extends SormasToSormasShareableDto { public static final String PERSON_BIRTH_DATE_YYYY = "personBirthDateYYYY"; public static final String PERSON_BIRTH_COUNTRY = "personBirthCountry"; public static final String PERSON_CITIZENSHIP = "personCitizenship"; + public static final String SYPHILIS_PRESENTATION = "syphilisPresentation"; + public static final String STI_PROPHYLAXIS = "stiProphylaxis"; public static final String PERSON_POSTAL_CODE = "personPostalCode"; public static final String PERSON_CITY = "personCity"; public static final String PERSON_PHONE = "personPhone"; @@ -179,6 +182,10 @@ public class ExternalMessageDto extends SormasToSormasShareableDto { private CountryReferenceDto personBirthCountry; @HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG) private CountryReferenceDto personCitizenship; + @HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG) + private SyphilisPresentation syphilisPresentation; + @HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG) + private YesNoUnknown stiProphylaxis; @Size(max = FieldConstraints.CHARACTER_LIMIT_SMALL, message = Validations.textTooLong) private String personPostalCode; @Size(max = FieldConstraints.CHARACTER_LIMIT_SMALL, message = Validations.textTooLong) @@ -550,6 +557,22 @@ public void setPersonCitizenship(CountryReferenceDto personCitizenship) { this.personCitizenship = personCitizenship; } + public SyphilisPresentation getSyphilisPresentation() { + return syphilisPresentation; + } + + public void setSyphilisPresentation(SyphilisPresentation syphilisPresentation) { + this.syphilisPresentation = syphilisPresentation; + } + + public YesNoUnknown getStiProphylaxis() { + return stiProphylaxis; + } + + public void setStiProphylaxis(YesNoUnknown stiProphylaxis) { + this.stiProphylaxis = stiProphylaxis; + } + public FacilityReferenceDto getPersonFacility() { return personFacility; } diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/AbstractProcessingFlow.java b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/AbstractProcessingFlow.java index de73e328b24..3ea74fc79f8 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/AbstractProcessingFlow.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/AbstractProcessingFlow.java @@ -192,6 +192,7 @@ protected CaseDataDto buildCase(PersonDto person, ExternalMessageDto externalMes caseDto.setReportingUser(user.toReference()); caseDto.setReportDate( externalMessageDto.getCaseReportDate() != null ? externalMessageDto.getCaseReportDate() : externalMessageDto.getMessageDateTime()); + caseDto.setSyphilisPresentation(externalMessageDto.getSyphilisPresentation()); if (processingFacade.isFeatureEnabled(FeatureType.HIDE_JURISDICTION_FIELDS)) { caseDto.setResponsibleRegion(processingFacade.getDefaultRegionReference()); diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/doctordeclaration/AbstractDoctorDeclarationMessageProcessingFlow.java b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/doctordeclaration/AbstractDoctorDeclarationMessageProcessingFlow.java index d5d40b875cf..928a7e1e077 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/doctordeclaration/AbstractDoctorDeclarationMessageProcessingFlow.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/doctordeclaration/AbstractDoctorDeclarationMessageProcessingFlow.java @@ -231,6 +231,7 @@ protected void postBuildHealthConditions(CaseDataDto caseDto, ExternalMessageDto private void postBuildSyphilisHealthConditions(HealthConditionsDto healthConditionsDto, ExternalMessageDto externalMessageDto) { healthConditionsDto.setHivStatus(externalMessageDto.getHivStatus()); + healthConditionsDto.setStiProphylaxis(externalMessageDto.getStiProphylaxis()); } /** diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java b/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java index c6df39bb67e..f278024e442 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java @@ -339,9 +339,11 @@ public interface Captions { String AefiInvestigation_aefiClassificationDetails = "AefiInvestigation.aefiClassificationDetails"; String AefiInvestigation_aefiClassificationSubType = "AefiInvestigation.aefiClassificationSubType"; String AefiInvestigation_allCasesInClusterReceivedVaccineFromSameVial = "AefiInvestigation.allCasesInClusterReceivedVaccineFromSameVial"; - String AefiInvestigation_allCasesInClusterReceivedVaccineFromSameVialDetails = "AefiInvestigation.allCasesInClusterReceivedVaccineFromSameVialDetails"; + String AefiInvestigation_allCasesInClusterReceivedVaccineFromSameVialDetails = + "AefiInvestigation.allCasesInClusterReceivedVaccineFromSameVialDetails"; String AefiInvestigation_anyOtherItemInRefrigerator = "AefiInvestigation.anyOtherItemInRefrigerator"; - String AefiInvestigation_anyStorageTemperatureDeviationOutsideTwoToEightDegrees = "AefiInvestigation.anyStorageTemperatureDeviationOutsideTwoToEightDegrees"; + String AefiInvestigation_anyStorageTemperatureDeviationOutsideTwoToEightDegrees = + "AefiInvestigation.anyStorageTemperatureDeviationOutsideTwoToEightDegrees"; String AefiInvestigation_autopsyDate = "AefiInvestigation.autopsyDate"; String AefiInvestigation_autopsyDone = "AefiInvestigation.autopsyDone"; String AefiInvestigation_autopsyPlannedDateTime = "AefiInvestigation.autopsyPlannedDateTime"; @@ -377,7 +379,8 @@ public interface Captions { String AefiInvestigation_errorPrescribingVaccine = "AefiInvestigation.errorPrescribingVaccine"; String AefiInvestigation_errorPrescribingVaccineDetails = "AefiInvestigation.errorPrescribingVaccineDetails"; String AefiInvestigation_eventIsAStressResponseRelatedToImmunization = "AefiInvestigation.eventIsAStressResponseRelatedToImmunization"; - String AefiInvestigation_eventIsAStressResponseRelatedToImmunizationDetails = "AefiInvestigation.eventIsAStressResponseRelatedToImmunizationDetails"; + String AefiInvestigation_eventIsAStressResponseRelatedToImmunizationDetails = + "AefiInvestigation.eventIsAStressResponseRelatedToImmunizationDetails"; String AefiInvestigation_externalId = "AefiInvestigation.externalId"; String AefiInvestigation_familyHistoryOfDiseaseOrAllergy = "AefiInvestigation.familyHistoryOfDiseaseOrAllergy"; String AefiInvestigation_familyHistoryOfDiseaseOrAllergyDetails = "AefiInvestigation.familyHistoryOfDiseaseOrAllergyDetails"; @@ -385,8 +388,10 @@ public interface Captions { String AefiInvestigation_formCompletionDate = "AefiInvestigation.formCompletionDate"; String AefiInvestigation_historyOfAllergyToVaccineDrugOrFood = "AefiInvestigation.historyOfAllergyToVaccineDrugOrFood"; String AefiInvestigation_historyOfAllergyToVaccineDrugOrFoodDetails = "AefiInvestigation.historyOfAllergyToVaccineDrugOrFoodDetails"; - String AefiInvestigation_historyOfHospitalizationInLastThirtyDaysWithCause = "AefiInvestigation.historyOfHospitalizationInLastThirtyDaysWithCause"; - String AefiInvestigation_historyOfHospitalizationInLastThirtyDaysWithCauseDetails = "AefiInvestigation.historyOfHospitalizationInLastThirtyDaysWithCauseDetails"; + String AefiInvestigation_historyOfHospitalizationInLastThirtyDaysWithCause = + "AefiInvestigation.historyOfHospitalizationInLastThirtyDaysWithCause"; + String AefiInvestigation_historyOfHospitalizationInLastThirtyDaysWithCauseDetails = + "AefiInvestigation.historyOfHospitalizationInLastThirtyDaysWithCauseDetails"; String AefiInvestigation_hospitalizationDate = "AefiInvestigation.hospitalizationDate"; String AefiInvestigation_injectionTechniqueAdditionalDetails = "AefiInvestigation.injectionTechniqueAdditionalDetails"; String AefiInvestigation_investigationCaseId = "AefiInvestigation.investigationCaseId"; @@ -398,13 +403,17 @@ public interface Captions { String AefiInvestigation_keySymptomDateTime = "AefiInvestigation.keySymptomDateTime"; String AefiInvestigation_lastTrainingReceivedByVaccinatorDate = "AefiInvestigation.lastTrainingReceivedByVaccinatorDate"; String AefiInvestigation_nonTouchTechniqueFollowed = "AefiInvestigation.nonTouchTechniqueFollowed"; - String AefiInvestigation_numberImmunizedConcernedVaccineSameBatchNumberLocationDetails = "AefiInvestigation.numberImmunizedConcernedVaccineSameBatchNumberLocationDetails"; - String AefiInvestigation_numberImmunizedConcernedVaccineSameBatchNumberOtherLocations = "AefiInvestigation.numberImmunizedConcernedVaccineSameBatchNumberOtherLocations"; + String AefiInvestigation_numberImmunizedConcernedVaccineSameBatchNumberLocationDetails = + "AefiInvestigation.numberImmunizedConcernedVaccineSameBatchNumberLocationDetails"; + String AefiInvestigation_numberImmunizedConcernedVaccineSameBatchNumberOtherLocations = + "AefiInvestigation.numberImmunizedConcernedVaccineSameBatchNumberOtherLocations"; String AefiInvestigation_numberImmunizedFromConcernedVaccineVial = "AefiInvestigation.numberImmunizedFromConcernedVaccineVial"; String AefiInvestigation_numberImmunizedWithConcernedVaccineInSameSession = "AefiInvestigation.numberImmunizedWithConcernedVaccineInSameSession"; - String AefiInvestigation_numberOfAefiReportedFromVaccineDistributionCenterLastThirtyDays = "AefiInvestigation.numberOfAefiReportedFromVaccineDistributionCenterLastThirtyDays"; + String AefiInvestigation_numberOfAefiReportedFromVaccineDistributionCenterLastThirtyDays = + "AefiInvestigation.numberOfAefiReportedFromVaccineDistributionCenterLastThirtyDays"; String AefiInvestigation_numberOfCasesDetectedInCluster = "AefiInvestigation.numberOfCasesDetectedInCluster"; - String AefiInvestigation_numberOfSimilarEventsReportedSamePeriodAndLocality = "AefiInvestigation.numberOfSimilarEventsReportedSamePeriodAndLocality"; + String AefiInvestigation_numberOfSimilarEventsReportedSamePeriodAndLocality = + "AefiInvestigation.numberOfSimilarEventsReportedSamePeriodAndLocality"; String AefiInvestigation_numberOfThoseAffectedNotVaccinated = "AefiInvestigation.numberOfThoseAffectedNotVaccinated"; String AefiInvestigation_numberOfThoseAffectedVaccinated = "AefiInvestigation.numberOfThoseAffectedVaccinated"; String AefiInvestigation_numberOfThoseAffectedVaccinatedUnknown = "AefiInvestigation.numberOfThoseAffectedVaccinatedUnknown"; @@ -425,7 +434,8 @@ public interface Captions { String AefiInvestigation_placeOfVaccination = "AefiInvestigation.placeOfVaccination"; String AefiInvestigation_placeOfVaccinationDetails = "AefiInvestigation.placeOfVaccinationDetails"; String AefiInvestigation_preExistingIllnessThirtyDaysOrCongenitalDisorder = "AefiInvestigation.preExistingIllnessThirtyDaysOrCongenitalDisorder"; - String AefiInvestigation_preExistingIllnessThirtyDaysOrCongenitalDisorderDetails = "AefiInvestigation.preExistingIllnessThirtyDaysOrCongenitalDisorderDetails"; + String AefiInvestigation_preExistingIllnessThirtyDaysOrCongenitalDisorderDetails = + "AefiInvestigation.preExistingIllnessThirtyDaysOrCongenitalDisorderDetails"; String AefiInvestigation_provisionalOrFinalDiagnosis = "AefiInvestigation.provisionalOrFinalDiagnosis"; String AefiInvestigation_reconstitutionAdditionalDetails = "AefiInvestigation.reconstitutionAdditionalDetails"; String AefiInvestigation_reportDate = "AefiInvestigation.reportDate"; @@ -445,14 +455,17 @@ public interface Captions { String AefiInvestigation_responsibleRegion = "AefiInvestigation.responsibleRegion"; String AefiInvestigation_sameReconstitutionSyringeForEachVaccination = "AefiInvestigation.sameReconstitutionSyringeForEachVaccination"; String AefiInvestigation_sameReconstitutionSyringeForEachVaccineVial = "AefiInvestigation.sameReconstitutionSyringeForEachVaccineVial"; - String AefiInvestigation_sameReconstitutionSyringeUsedForMultipleVialsOfSameVaccine = "AefiInvestigation.sameReconstitutionSyringeUsedForMultipleVialsOfSameVaccine"; - String AefiInvestigation_sameReconstitutionSyringeUsedForReconstitutingDifferentVaccines = "AefiInvestigation.sameReconstitutionSyringeUsedForReconstitutingDifferentVaccines"; + String AefiInvestigation_sameReconstitutionSyringeUsedForMultipleVialsOfSameVaccine = + "AefiInvestigation.sameReconstitutionSyringeUsedForMultipleVialsOfSameVaccine"; + String AefiInvestigation_sameReconstitutionSyringeUsedForReconstitutingDifferentVaccines = + "AefiInvestigation.sameReconstitutionSyringeUsedForReconstitutingDifferentVaccines"; String AefiInvestigation_seriousAefiInfoSource = "AefiInvestigation.seriousAefiInfoSource"; String AefiInvestigation_seriousAefiInfoSourceDetails = "AefiInvestigation.seriousAefiInfoSourceDetails"; String AefiInvestigation_seriousAefiVerbalAutopsyInfoSourceDetails = "AefiInvestigation.seriousAefiVerbalAutopsyInfoSourceDetails"; String AefiInvestigation_signsAndSymptomsFromTimeOfVaccination = "AefiInvestigation.signsAndSymptomsFromTimeOfVaccination"; String AefiInvestigation_similarEventsReportedSamePeriodAndLocality = "AefiInvestigation.similarEventsReportedSamePeriodAndLocality"; - String AefiInvestigation_similarEventsReportedSamePeriodAndLocalityDetails = "AefiInvestigation.similarEventsReportedSamePeriodAndLocalityDetails"; + String AefiInvestigation_similarEventsReportedSamePeriodAndLocalityDetails = + "AefiInvestigation.similarEventsReportedSamePeriodAndLocalityDetails"; String AefiInvestigation_statusOnDateOfInvestigation = "AefiInvestigation.statusOnDateOfInvestigation"; String AefiInvestigation_storageTemperatureMonitoringAdditionalDetails = "AefiInvestigation.storageTemperatureMonitoringAdditionalDetails"; String AefiInvestigation_syringesUsedAdditionalDetails = "AefiInvestigation.syringesUsedAdditionalDetails"; @@ -471,7 +484,8 @@ public interface Captions { String AefiInvestigation_vaccinationFacilityDetails = "AefiInvestigation.vaccinationFacilityDetails"; String AefiInvestigation_vaccineAdministeredIncorrectly = "AefiInvestigation.vaccineAdministeredIncorrectly"; String AefiInvestigation_vaccineAdministeredIncorrectlyDetails = "AefiInvestigation.vaccineAdministeredIncorrectlyDetails"; - String AefiInvestigation_vaccineCarrierReturnedFromSiteOnSameDateAsVaccination = "AefiInvestigation.vaccineCarrierReturnedFromSiteOnSameDateAsVaccination"; + String AefiInvestigation_vaccineCarrierReturnedFromSiteOnSameDateAsVaccination = + "AefiInvestigation.vaccineCarrierReturnedFromSiteOnSameDateAsVaccination"; String AefiInvestigation_vaccineCarrierSentToSiteOnSameDateAsVaccination = "AefiInvestigation.vaccineCarrierSentToSiteOnSameDateAsVaccination"; String AefiInvestigation_vaccineCarrierType = "AefiInvestigation.vaccineCarrierType"; String AefiInvestigation_vaccineCarrierTypeDetails = "AefiInvestigation.vaccineCarrierTypeDetails"; @@ -2046,6 +2060,7 @@ public interface Captions { String ExternalMessage = "ExternalMessage"; String ExternalMessage_assignee = "ExternalMessage.assignee"; String ExternalMessage_caseReportDate = "ExternalMessage.caseReportDate"; + String ExternalMessage_contactWithSexWorker = "ExternalMessage.contactWithSexWorker"; String externalMessage_deleteNewlyCreatedCase = "externalMessage.deleteNewlyCreatedCase"; String externalMessage_deleteNewlyCreatedContact = "externalMessage.deleteNewlyCreatedContact"; String externalMessage_deleteNewlyCreatedEventParticipant = "externalMessage.deleteNewlyCreatedEventParticipant"; @@ -2053,10 +2068,13 @@ public interface Captions { String ExternalMessage_disease = "ExternalMessage.disease"; String ExternalMessage_diseaseVariant = "ExternalMessage.diseaseVariant"; String ExternalMessage_diseaseVariantDetails = "ExternalMessage.diseaseVariantDetails"; + String ExternalMessage_hivStatus = "ExternalMessage.hivStatus"; String ExternalMessage_labExternalId = "ExternalMessage.labExternalId"; String ExternalMessage_labMessageDetails = "ExternalMessage.labMessageDetails"; String ExternalMessage_labSampleId = "ExternalMessage.labSampleId"; String ExternalMessage_messageDateTime = "ExternalMessage.messageDateTime"; + String ExternalMessage_motherCitizenship = "ExternalMessage.motherCitizenship"; + String ExternalMessage_motherCountryOfBirth = "ExternalMessage.motherCountryOfBirth"; String ExternalMessage_personBirthDate = "ExternalMessage.personBirthDate"; String ExternalMessage_personBirthDateDD = "ExternalMessage.personBirthDateDD"; String ExternalMessage_personBirthDateMM = "ExternalMessage.personBirthDateMM"; @@ -2072,6 +2090,7 @@ public interface Captions { String ExternalMessage_personPostalCode = "ExternalMessage.personPostalCode"; String ExternalMessage_personSex = "ExternalMessage.personSex"; String ExternalMessage_personStreet = "ExternalMessage.personStreet"; + String ExternalMessage_probableRouteOfTransmission = "ExternalMessage.probableRouteOfTransmission"; String ExternalMessage_reporterCity = "ExternalMessage.reporterCity"; String ExternalMessage_reporterName = "ExternalMessage.reporterName"; String ExternalMessage_reporterPostalCode = "ExternalMessage.reporterPostalCode"; diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessage.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessage.java index 6aac4e69eae..f03cb4ee9e4 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessage.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessage.java @@ -45,6 +45,7 @@ import de.symeda.sormas.api.Disease; import de.symeda.sormas.api.caze.CaseClassification; import de.symeda.sormas.api.caze.RadiographyCompatibility; +import de.symeda.sormas.api.caze.SyphilisPresentation; import de.symeda.sormas.api.caze.VaccinationStatus; import de.symeda.sormas.api.clinicalcourse.ComplianceWithTreatment; import de.symeda.sormas.api.clinicalcourse.HivStatus; @@ -101,6 +102,8 @@ public class ExternalMessage extends AbstractDomainObject { public static final String PERSON_BIRTH_DATE_YYYY = "personBirthDateYYYY"; public static final String PERSON_BIRTH_COUNTRY = "personBirthCountry"; public static final String PERSON_CITIZENSHIP = "personCitizenship"; + public static final String SYPHILIS_PRESENTATION = "syphilisPresentation"; + public static final String STI_PROPHYLAXIS = "stiProphylaxis"; public static final String PERSON_POSTAL_CODE = "personPostalCode"; public static final String PERSON_CITY = "personCity"; public static final String PERSON_STREET = "personStreet"; @@ -176,6 +179,8 @@ public class ExternalMessage extends AbstractDomainObject { private Integer personBirthDateYYYY; private Country personBirthCountry; private Country personCitizenship; + private SyphilisPresentation syphilisPresentation; + private YesNoUnknown stiProphylaxis; private String personPostalCode; private String personCity; private String personStreet; @@ -538,6 +543,24 @@ public void setPersonCitizenship(Country personCitizenship) { this.personCitizenship = personCitizenship; } + @Enumerated(EnumType.STRING) + public SyphilisPresentation getSyphilisPresentation() { + return syphilisPresentation; + } + + public void setSyphilisPresentation(SyphilisPresentation syphilisPresentation) { + this.syphilisPresentation = syphilisPresentation; + } + + @Enumerated(EnumType.STRING) + public YesNoUnknown getStiProphylaxis() { + return stiProphylaxis; + } + + public void setStiProphylaxis(YesNoUnknown stiProphylaxis) { + this.stiProphylaxis = stiProphylaxis; + } + @ManyToOne(fetch = FetchType.LAZY) public Facility getPersonFacility() { return personFacility; diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjb.java index 9d5ca8a2757..ab473f0feaf 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjb.java @@ -210,6 +210,8 @@ ExternalMessage fillOrBuildEntity(@NotNull ExternalMessageDto source, ExternalMe target.setPersonBirthDateYYYY(source.getPersonBirthDateYYYY()); target.setPersonBirthCountry(countryService.getByReferenceDto(source.getPersonBirthCountry())); target.setPersonCitizenship(countryService.getByReferenceDto(source.getPersonCitizenship())); + target.setSyphilisPresentation(source.getSyphilisPresentation()); + target.setStiProphylaxis(source.getStiProphylaxis()); target.setPersonCity(source.getPersonCity()); target.setPersonExternalId(source.getPersonExternalId()); target.setPersonNationalHealthId(source.getPersonNationalHealthId()); @@ -557,6 +559,8 @@ public ExternalMessageDto toDto(ExternalMessage source) { target.setPersonBirthDateYYYY(source.getPersonBirthDateYYYY()); target.setPersonBirthCountry(CountryFacadeEjb.toReferenceDto(source.getPersonBirthCountry())); target.setPersonCitizenship(CountryFacadeEjb.toReferenceDto(source.getPersonCitizenship())); + target.setSyphilisPresentation(source.getSyphilisPresentation()); + target.setStiProphylaxis(source.getStiProphylaxis()); target.setPersonCity(source.getPersonCity()); target.setPersonExternalId(source.getPersonExternalId()); target.setPersonNationalHealthId(source.getPersonNationalHealthId()); diff --git a/sormas-backend/src/main/resources/sql/sormas_schema.sql b/sormas-backend/src/main/resources/sql/sormas_schema.sql index 306eac97742..01c6eb5aa88 100644 --- a/sormas-backend/src/main/resources/sql/sormas_schema.sql +++ b/sormas-backend/src/main/resources/sql/sormas_schema.sql @@ -17134,29 +17134,25 @@ ALTER TABLE externalmessage ADD COLUMN IF NOT EXISTS mothercountryofbirth_id big ALTER TABLE externalmessage ADD COLUMN IF NOT EXISTS mothercitizenship_id bigint; ALTER TABLE externalmessage ADD CONSTRAINT fk_externalmessage_mothercountryofbirth_id FOREIGN KEY (mothercountryofbirth_id) REFERENCES country(id); ALTER TABLE externalmessage ADD CONSTRAINT fk_externalmessage_mothercitizenship_id FOREIGN KEY (mothercitizenship_id) REFERENCES country(id); +ALTER TABLE externalmessage ADD COLUMN IF NOT EXISTS personbirthcountry_id bigint; +ALTER TABLE externalmessage ADD CONSTRAINT fk_externalmessage_personbirthcountry_id FOREIGN KEY (personbirthcountry_id) REFERENCES country(id); +ALTER TABLE externalmessage ADD COLUMN IF NOT EXISTS personcitizenship_id bigint; +ALTER TABLE externalmessage ADD CONSTRAINT fk_externalmessage_personcitizenship_id FOREIGN KEY (personcitizenship_id) REFERENCES country(id); +ALTER TABLE externalmessage ADD COLUMN IF NOT EXISTS syphilispresentation varchar(255); +ALTER TABLE externalmessage ADD COLUMN IF NOT EXISTS stiprophylaxis varchar(255); ALTER TABLE externalmessage_history ADD COLUMN IF NOT EXISTS hivstatus varchar(255); ALTER TABLE externalmessage_history ADD COLUMN IF NOT EXISTS probablerouteoftransmission varchar(255); ALTER TABLE externalmessage_history ADD COLUMN IF NOT EXISTS contactwithsexworker varchar(255); ALTER TABLE externalmessage_history ADD COLUMN IF NOT EXISTS mothercountryofbirth_id bigint; ALTER TABLE externalmessage_history ADD COLUMN IF NOT EXISTS mothercitizenship_id bigint; - -INSERT INTO schema_version (version_number, comment) VALUES (662, 'Add syphilis-specific fields to ExternalMessage for Luxembourg #14239'); - --- Add personBirthCountry field to ExternalMessage for Luxembourg -ALTER TABLE externalmessage ADD COLUMN IF NOT EXISTS personbirthcountry_id bigint; -ALTER TABLE externalmessage ADD CONSTRAINT fk_externalmessage_personbirthcountry_id FOREIGN KEY (personbirthcountry_id) REFERENCES country(id); - ALTER TABLE externalmessage_history ADD COLUMN IF NOT EXISTS personbirthcountry_id bigint; +ALTER TABLE externalmessage_history ADD COLUMN IF NOT EXISTS personcitizenship_id bigint; +ALTER TABLE externalmessage_history ADD COLUMN IF NOT EXISTS syphilispresentation varchar(255); +ALTER TABLE externalmessage_history ADD COLUMN IF NOT EXISTS stiprophylaxis varchar(255); -INSERT INTO schema_version (version_number, comment) VALUES (663, 'Add personBirthCountry field to ExternalMessage for Luxembourg'); - --- Add personCitizenship field to ExternalMessage for Luxembourg -ALTER TABLE externalmessage ADD COLUMN IF NOT EXISTS personcitizenship_id bigint; -ALTER TABLE externalmessage ADD CONSTRAINT fk_externalmessage_personcitizenship_id FOREIGN KEY (personcitizenship_id) REFERENCES country(id); -ALTER TABLE externalmessage_history ADD COLUMN IF NOT EXISTS personcitizenship_id bigint; +INSERT INTO schema_version (version_number, comment) VALUES (662, 'Add syphilis-specific fields to ExternalMessage for Luxembourg #14239'); -INSERT INTO schema_version (version_number, comment) VALUES (664, 'Add personCitizenship field to ExternalMessage for Luxembourg'); -- *** Insert new sql commands BEFORE this line. Remember to always consider _history tables. *** From 02fa13cb9c24fcb236083b22d16e456a12d2b907 Mon Sep 17 00:00:00 2001 From: Pa-Touche <47572440+Pa-Touche@users.noreply.github.com> Date: Fri, 21 Aug 2026 10:17:09 +0200 Subject: [PATCH 11/15] added jaundice to Syphilis as present in DD --- .../main/java/de/symeda/sormas/api/symptoms/SymptomsDto.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/symptoms/SymptomsDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/symptoms/SymptomsDto.java index a0b27a0b922..fac91594c1e 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/symptoms/SymptomsDto.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/symptoms/SymptomsDto.java @@ -1040,7 +1040,8 @@ public static SymptomsDto build() { @HideForCountries @SymptomGrouping(SymptomGroup.GASTROINTESTINAL) @Complication({ - DENGUE }) + DENGUE, + SYPHILIS }) private SymptomState jaundice; @Diseases({ From c7ec8dfa821c3f984bdaeab45484125b9874c2cc Mon Sep 17 00:00:00 2001 From: Pa-Touche <47572440+Pa-Touche@users.noreply.github.com> Date: Fri, 21 Aug 2026 16:18:04 +0200 Subject: [PATCH 12/15] i18n --- .../de/symeda/sormas/api/i18n/Captions.java | 42 +++++++------------ 1 file changed, 14 insertions(+), 28 deletions(-) diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java b/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java index f278024e442..197e7136af1 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java @@ -339,11 +339,9 @@ public interface Captions { String AefiInvestigation_aefiClassificationDetails = "AefiInvestigation.aefiClassificationDetails"; String AefiInvestigation_aefiClassificationSubType = "AefiInvestigation.aefiClassificationSubType"; String AefiInvestigation_allCasesInClusterReceivedVaccineFromSameVial = "AefiInvestigation.allCasesInClusterReceivedVaccineFromSameVial"; - String AefiInvestigation_allCasesInClusterReceivedVaccineFromSameVialDetails = - "AefiInvestigation.allCasesInClusterReceivedVaccineFromSameVialDetails"; + String AefiInvestigation_allCasesInClusterReceivedVaccineFromSameVialDetails = "AefiInvestigation.allCasesInClusterReceivedVaccineFromSameVialDetails"; String AefiInvestigation_anyOtherItemInRefrigerator = "AefiInvestigation.anyOtherItemInRefrigerator"; - String AefiInvestigation_anyStorageTemperatureDeviationOutsideTwoToEightDegrees = - "AefiInvestigation.anyStorageTemperatureDeviationOutsideTwoToEightDegrees"; + String AefiInvestigation_anyStorageTemperatureDeviationOutsideTwoToEightDegrees = "AefiInvestigation.anyStorageTemperatureDeviationOutsideTwoToEightDegrees"; String AefiInvestigation_autopsyDate = "AefiInvestigation.autopsyDate"; String AefiInvestigation_autopsyDone = "AefiInvestigation.autopsyDone"; String AefiInvestigation_autopsyPlannedDateTime = "AefiInvestigation.autopsyPlannedDateTime"; @@ -379,8 +377,7 @@ public interface Captions { String AefiInvestigation_errorPrescribingVaccine = "AefiInvestigation.errorPrescribingVaccine"; String AefiInvestigation_errorPrescribingVaccineDetails = "AefiInvestigation.errorPrescribingVaccineDetails"; String AefiInvestigation_eventIsAStressResponseRelatedToImmunization = "AefiInvestigation.eventIsAStressResponseRelatedToImmunization"; - String AefiInvestigation_eventIsAStressResponseRelatedToImmunizationDetails = - "AefiInvestigation.eventIsAStressResponseRelatedToImmunizationDetails"; + String AefiInvestigation_eventIsAStressResponseRelatedToImmunizationDetails = "AefiInvestigation.eventIsAStressResponseRelatedToImmunizationDetails"; String AefiInvestigation_externalId = "AefiInvestigation.externalId"; String AefiInvestigation_familyHistoryOfDiseaseOrAllergy = "AefiInvestigation.familyHistoryOfDiseaseOrAllergy"; String AefiInvestigation_familyHistoryOfDiseaseOrAllergyDetails = "AefiInvestigation.familyHistoryOfDiseaseOrAllergyDetails"; @@ -388,10 +385,8 @@ public interface Captions { String AefiInvestigation_formCompletionDate = "AefiInvestigation.formCompletionDate"; String AefiInvestigation_historyOfAllergyToVaccineDrugOrFood = "AefiInvestigation.historyOfAllergyToVaccineDrugOrFood"; String AefiInvestigation_historyOfAllergyToVaccineDrugOrFoodDetails = "AefiInvestigation.historyOfAllergyToVaccineDrugOrFoodDetails"; - String AefiInvestigation_historyOfHospitalizationInLastThirtyDaysWithCause = - "AefiInvestigation.historyOfHospitalizationInLastThirtyDaysWithCause"; - String AefiInvestigation_historyOfHospitalizationInLastThirtyDaysWithCauseDetails = - "AefiInvestigation.historyOfHospitalizationInLastThirtyDaysWithCauseDetails"; + String AefiInvestigation_historyOfHospitalizationInLastThirtyDaysWithCause = "AefiInvestigation.historyOfHospitalizationInLastThirtyDaysWithCause"; + String AefiInvestigation_historyOfHospitalizationInLastThirtyDaysWithCauseDetails = "AefiInvestigation.historyOfHospitalizationInLastThirtyDaysWithCauseDetails"; String AefiInvestigation_hospitalizationDate = "AefiInvestigation.hospitalizationDate"; String AefiInvestigation_injectionTechniqueAdditionalDetails = "AefiInvestigation.injectionTechniqueAdditionalDetails"; String AefiInvestigation_investigationCaseId = "AefiInvestigation.investigationCaseId"; @@ -403,17 +398,13 @@ public interface Captions { String AefiInvestigation_keySymptomDateTime = "AefiInvestigation.keySymptomDateTime"; String AefiInvestigation_lastTrainingReceivedByVaccinatorDate = "AefiInvestigation.lastTrainingReceivedByVaccinatorDate"; String AefiInvestigation_nonTouchTechniqueFollowed = "AefiInvestigation.nonTouchTechniqueFollowed"; - String AefiInvestigation_numberImmunizedConcernedVaccineSameBatchNumberLocationDetails = - "AefiInvestigation.numberImmunizedConcernedVaccineSameBatchNumberLocationDetails"; - String AefiInvestigation_numberImmunizedConcernedVaccineSameBatchNumberOtherLocations = - "AefiInvestigation.numberImmunizedConcernedVaccineSameBatchNumberOtherLocations"; + String AefiInvestigation_numberImmunizedConcernedVaccineSameBatchNumberLocationDetails = "AefiInvestigation.numberImmunizedConcernedVaccineSameBatchNumberLocationDetails"; + String AefiInvestigation_numberImmunizedConcernedVaccineSameBatchNumberOtherLocations = "AefiInvestigation.numberImmunizedConcernedVaccineSameBatchNumberOtherLocations"; String AefiInvestigation_numberImmunizedFromConcernedVaccineVial = "AefiInvestigation.numberImmunizedFromConcernedVaccineVial"; String AefiInvestigation_numberImmunizedWithConcernedVaccineInSameSession = "AefiInvestigation.numberImmunizedWithConcernedVaccineInSameSession"; - String AefiInvestigation_numberOfAefiReportedFromVaccineDistributionCenterLastThirtyDays = - "AefiInvestigation.numberOfAefiReportedFromVaccineDistributionCenterLastThirtyDays"; + String AefiInvestigation_numberOfAefiReportedFromVaccineDistributionCenterLastThirtyDays = "AefiInvestigation.numberOfAefiReportedFromVaccineDistributionCenterLastThirtyDays"; String AefiInvestigation_numberOfCasesDetectedInCluster = "AefiInvestigation.numberOfCasesDetectedInCluster"; - String AefiInvestigation_numberOfSimilarEventsReportedSamePeriodAndLocality = - "AefiInvestigation.numberOfSimilarEventsReportedSamePeriodAndLocality"; + String AefiInvestigation_numberOfSimilarEventsReportedSamePeriodAndLocality = "AefiInvestigation.numberOfSimilarEventsReportedSamePeriodAndLocality"; String AefiInvestigation_numberOfThoseAffectedNotVaccinated = "AefiInvestigation.numberOfThoseAffectedNotVaccinated"; String AefiInvestigation_numberOfThoseAffectedVaccinated = "AefiInvestigation.numberOfThoseAffectedVaccinated"; String AefiInvestigation_numberOfThoseAffectedVaccinatedUnknown = "AefiInvestigation.numberOfThoseAffectedVaccinatedUnknown"; @@ -434,8 +425,7 @@ public interface Captions { String AefiInvestigation_placeOfVaccination = "AefiInvestigation.placeOfVaccination"; String AefiInvestigation_placeOfVaccinationDetails = "AefiInvestigation.placeOfVaccinationDetails"; String AefiInvestigation_preExistingIllnessThirtyDaysOrCongenitalDisorder = "AefiInvestigation.preExistingIllnessThirtyDaysOrCongenitalDisorder"; - String AefiInvestigation_preExistingIllnessThirtyDaysOrCongenitalDisorderDetails = - "AefiInvestigation.preExistingIllnessThirtyDaysOrCongenitalDisorderDetails"; + String AefiInvestigation_preExistingIllnessThirtyDaysOrCongenitalDisorderDetails = "AefiInvestigation.preExistingIllnessThirtyDaysOrCongenitalDisorderDetails"; String AefiInvestigation_provisionalOrFinalDiagnosis = "AefiInvestigation.provisionalOrFinalDiagnosis"; String AefiInvestigation_reconstitutionAdditionalDetails = "AefiInvestigation.reconstitutionAdditionalDetails"; String AefiInvestigation_reportDate = "AefiInvestigation.reportDate"; @@ -455,17 +445,14 @@ public interface Captions { String AefiInvestigation_responsibleRegion = "AefiInvestigation.responsibleRegion"; String AefiInvestigation_sameReconstitutionSyringeForEachVaccination = "AefiInvestigation.sameReconstitutionSyringeForEachVaccination"; String AefiInvestigation_sameReconstitutionSyringeForEachVaccineVial = "AefiInvestigation.sameReconstitutionSyringeForEachVaccineVial"; - String AefiInvestigation_sameReconstitutionSyringeUsedForMultipleVialsOfSameVaccine = - "AefiInvestigation.sameReconstitutionSyringeUsedForMultipleVialsOfSameVaccine"; - String AefiInvestigation_sameReconstitutionSyringeUsedForReconstitutingDifferentVaccines = - "AefiInvestigation.sameReconstitutionSyringeUsedForReconstitutingDifferentVaccines"; + String AefiInvestigation_sameReconstitutionSyringeUsedForMultipleVialsOfSameVaccine = "AefiInvestigation.sameReconstitutionSyringeUsedForMultipleVialsOfSameVaccine"; + String AefiInvestigation_sameReconstitutionSyringeUsedForReconstitutingDifferentVaccines = "AefiInvestigation.sameReconstitutionSyringeUsedForReconstitutingDifferentVaccines"; String AefiInvestigation_seriousAefiInfoSource = "AefiInvestigation.seriousAefiInfoSource"; String AefiInvestigation_seriousAefiInfoSourceDetails = "AefiInvestigation.seriousAefiInfoSourceDetails"; String AefiInvestigation_seriousAefiVerbalAutopsyInfoSourceDetails = "AefiInvestigation.seriousAefiVerbalAutopsyInfoSourceDetails"; String AefiInvestigation_signsAndSymptomsFromTimeOfVaccination = "AefiInvestigation.signsAndSymptomsFromTimeOfVaccination"; String AefiInvestigation_similarEventsReportedSamePeriodAndLocality = "AefiInvestigation.similarEventsReportedSamePeriodAndLocality"; - String AefiInvestigation_similarEventsReportedSamePeriodAndLocalityDetails = - "AefiInvestigation.similarEventsReportedSamePeriodAndLocalityDetails"; + String AefiInvestigation_similarEventsReportedSamePeriodAndLocalityDetails = "AefiInvestigation.similarEventsReportedSamePeriodAndLocalityDetails"; String AefiInvestigation_statusOnDateOfInvestigation = "AefiInvestigation.statusOnDateOfInvestigation"; String AefiInvestigation_storageTemperatureMonitoringAdditionalDetails = "AefiInvestigation.storageTemperatureMonitoringAdditionalDetails"; String AefiInvestigation_syringesUsedAdditionalDetails = "AefiInvestigation.syringesUsedAdditionalDetails"; @@ -484,8 +471,7 @@ public interface Captions { String AefiInvestigation_vaccinationFacilityDetails = "AefiInvestigation.vaccinationFacilityDetails"; String AefiInvestigation_vaccineAdministeredIncorrectly = "AefiInvestigation.vaccineAdministeredIncorrectly"; String AefiInvestigation_vaccineAdministeredIncorrectlyDetails = "AefiInvestigation.vaccineAdministeredIncorrectlyDetails"; - String AefiInvestigation_vaccineCarrierReturnedFromSiteOnSameDateAsVaccination = - "AefiInvestigation.vaccineCarrierReturnedFromSiteOnSameDateAsVaccination"; + String AefiInvestigation_vaccineCarrierReturnedFromSiteOnSameDateAsVaccination = "AefiInvestigation.vaccineCarrierReturnedFromSiteOnSameDateAsVaccination"; String AefiInvestigation_vaccineCarrierSentToSiteOnSameDateAsVaccination = "AefiInvestigation.vaccineCarrierSentToSiteOnSameDateAsVaccination"; String AefiInvestigation_vaccineCarrierType = "AefiInvestigation.vaccineCarrierType"; String AefiInvestigation_vaccineCarrierTypeDetails = "AefiInvestigation.vaccineCarrierTypeDetails"; From 48f355b1e7f32c51732247d40eb63cdf83d5c891 Mon Sep 17 00:00:00 2001 From: Pa-Touche <47572440+Pa-Touche@users.noreply.github.com> Date: Tue, 25 Aug 2026 10:29:23 +0200 Subject: [PATCH 13/15] fix unit test --- .../externalmessage/ExternalMessageFacadeEjbMappingTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjbMappingTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjbMappingTest.java index d22805e54d5..90e775dd5ad 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjbMappingTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjbMappingTest.java @@ -150,6 +150,9 @@ public void testFromDto() { when(countryService.getByReferenceDto(source.getPersonCountry())).thenReturn(country); when(facilityService.getByReferenceDto(source.getPersonFacility())).thenReturn(facility); + when(countryService.getByReferenceDto(source.getPersonBirthCountry())).thenReturn(country); + when(countryService.getByReferenceDto(source.getPersonCitizenship())).thenReturn(country); + final SymptomsDto symptomsDto = new SymptomsDto(); source.setCaseSymptoms(symptomsDto); when(symptomsFacadeEjb.fillOrBuildEntity(symptomsDto, null, true)).thenReturn(new Symptoms()); From a95c85ea940d15b15944c4142b870049b022bd21 Mon Sep 17 00:00:00 2001 From: Pa-Touche <47572440+Pa-Touche@users.noreply.github.com> Date: Thu, 27 Aug 2026 07:16:17 +0200 Subject: [PATCH 14/15] fixed PR comment --- .../externalmessage/ExternalMessageFacadeEjbMappingTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjbMappingTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjbMappingTest.java index 90e775dd5ad..6526147107c 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjbMappingTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjbMappingTest.java @@ -146,6 +146,8 @@ public void testFromDto() { source.setTreatmentNotApplicable(true); source.setTreatmentStartedDate(new Date()); source.setDiagnosticDate(new Date()); + source.setPersonCitizenship(new CountryReferenceDto(country.getUuid(), country.getIsoCode())); + source.setPersonBirthCountry(new CountryReferenceDto(country.getUuid(), country.getIsoCode())); when(countryService.getByReferenceDto(source.getPersonCountry())).thenReturn(country); when(facilityService.getByReferenceDto(source.getPersonFacility())).thenReturn(facility); From 82f5bf683b449e057a83f99f59a84daa36fd470f Mon Sep 17 00:00:00 2001 From: Pa-Touche <47572440+Pa-Touche@users.noreply.github.com> Date: Thu, 27 Aug 2026 07:17:27 +0200 Subject: [PATCH 15/15] revert --- .../main/java/de/symeda/sormas/api/sample/PathogenTestType.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java b/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java index 1d6f0f25aee..0d9793ed759 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java @@ -443,7 +443,7 @@ public enum PathogenTestType { Disease.INVASIVE_PNEUMOCOCCAL_INFECTION, Disease.MEASLES, Disease.SYPHILIS }) - @PathogenTestCategoryRel(PathogenTestCategory.MICROSCOPY_AND_STAINING) + @PathogenTestCategoryRel(PathogenTestCategory.SEROLOGICAL_TESTS) @ResultValueTypeRel(ResultValueType.QUALITATIVE) DIRECT_FLUORESCENT_ANTIBODY,