Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,14 @@
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;
import de.symeda.sormas.api.clinicalcourse.HivStatus;
import de.symeda.sormas.api.disease.DiseaseVariant;
import de.symeda.sormas.api.epidata.ClusterType;
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;
Expand Down Expand Up @@ -80,6 +83,10 @@ 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_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";
Expand Down Expand Up @@ -129,6 +136,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;
Expand Down Expand Up @@ -166,6 +178,14 @@ public class ExternalMessageDto extends SormasToSormasShareableDto {
private Integer personBirthDateDD;
private Integer personBirthDateMM;
private Integer personBirthDateYYYY;
@HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG)
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)
Expand Down Expand Up @@ -301,6 +321,12 @@ public class ExternalMessageDto extends SormasToSormasShareableDto {
private String clusterTypeText;
private Boolean clusterRelated;

private HivStatus hivStatus;
private ProbableRouteOfTransmission probableRouteOfTransmission;
private YesNoUnknown contactWithSexWorker;
private CountryReferenceDto motherCountryOfBirth;
private CountryReferenceDto motherCitizenship;
Comment thread
coderabbitai[bot] marked this conversation as resolved.

/**
* Will only be present for: {@link ExternalMessageType#SURVEY_RESPONSE} to represent the pair.
*/
Expand Down Expand Up @@ -515,6 +541,38 @@ public void setPersonCountry(CountryReferenceDto personCountry) {
this.personCountry = personCountry;
}

public CountryReferenceDto getPersonBirthCountry() {
return personBirthCountry;
}

public void setPersonBirthCountry(CountryReferenceDto personBirthCountry) {
this.personBirthCountry = personBirthCountry;
}

public CountryReferenceDto getPersonCitizenship() {
return personCitizenship;
}

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;
}
Expand Down Expand Up @@ -1073,6 +1131,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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,8 @@ public List<String[]> 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::setCitizenship, person.getCitizenship(), externalMessage.getPersonCitizenship(), PersonDto.CITIZENSHIP),
Mapping.of(person::setSex, person.getSex(), externalMessage.getPersonSex(), PersonDto.SEX),
Mapping.of(
person::setPresentCondition,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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());
}
Expand All @@ -227,6 +229,11 @@ protected void postBuildHealthConditions(CaseDataDto caseDto, ExternalMessageDto
caseDto.setHealthConditions(healthConditionsDto);
}

private void postBuildSyphilisHealthConditions(HealthConditionsDto healthConditionsDto, ExternalMessageDto externalMessageDto) {
healthConditionsDto.setHivStatus(externalMessageDto.getHivStatus());
healthConditionsDto.setStiProphylaxis(externalMessageDto.getStiProphylaxis());
}

/**
* Sets malaria-specific health conditions for the case from the external message.
*
Expand Down Expand Up @@ -324,17 +331,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());
Expand Down Expand Up @@ -494,6 +502,10 @@ 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());
epiData.setMotherCitizenship(externalMessageDto.getMotherCitizenship());
epiData.setMotherCountryOfBirth(externalMessageDto.getMotherCountryOfBirth());
}

} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2048,17 +2048,21 @@ 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";
String externalMessage_detailedView = "externalMessage.detailedView";
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";
Expand All @@ -2074,6 +2078,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";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1040,7 +1040,8 @@ public static SymptomsDto build() {
@HideForCountries
@SymptomGrouping(SymptomGroup.GASTROINTESTINAL)
@Complication({
DENGUE })
DENGUE,
SYPHILIS })
private SymptomState jaundice;

@Diseases({
Expand Down
5 changes: 5 additions & 0 deletions sormas-api/src/main/resources/captions.properties
Original file line number Diff line number Diff line change
Expand Up @@ -1822,6 +1822,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
Expand Down
2 changes: 2 additions & 0 deletions sormas-api/src/main/resources/enum.properties
Original file line number Diff line number Diff line change
Expand Up @@ -1276,6 +1276,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
Expand Down
Loading
Loading