Skip to content

Commit 4123206

Browse files
authored
Merge pull request #13759 from SORMAS-Foundation/task-update_external_message_autoprocessing
Updated automatic processing for lab messages and some other fixes
2 parents 050565b + 6f7de76 commit 4123206

14 files changed

Lines changed: 1045 additions & 60 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/epipulse/EpipulseExportFacade.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,5 @@ public interface EpipulseExportFacade extends DeletableFacade {
4040

4141
void deleteEpipulseExport(String uuid);
4242

43-
boolean configured();
43+
boolean isConfigured();
4444
}

sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/ExternalMessageDto.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,9 @@ public class ExternalMessageDto extends SormasToSormasShareableDto {
255255
private Integer tuberculosisInfectionYear;
256256
private YesNoUnknown previousTuberculosisTreatment;
257257
private ComplianceWithTreatment complianceWithTreatment;
258+
private Boolean tuberculosisDirectlyObservedTreatment;
259+
private Boolean tuberculosisMdrXdrTuberculosis;
260+
private Boolean tuberculosisBeijingLineage;
258261

259262
public ExternalMessageType getType() {
260263
return type;
@@ -901,4 +904,28 @@ public ComplianceWithTreatment getComplianceWithTreatment() {
901904
public void setComplianceWithTreatment(ComplianceWithTreatment complianceWithTreatment) {
902905
this.complianceWithTreatment = complianceWithTreatment;
903906
}
907+
908+
public Boolean getTuberculosisDirectlyObservedTreatment() {
909+
return tuberculosisDirectlyObservedTreatment;
910+
}
911+
912+
public void setTuberculosisDirectlyObservedTreatment(Boolean tuberculosisDirectlyObservedTreatment) {
913+
this.tuberculosisDirectlyObservedTreatment = tuberculosisDirectlyObservedTreatment;
914+
}
915+
916+
public Boolean getTuberculosisMdrXdrTuberculosis() {
917+
return tuberculosisMdrXdrTuberculosis;
918+
}
919+
920+
public void setTuberculosisMdrXdrTuberculosis(Boolean tuberculosisMdrXdrTuberculosis) {
921+
this.tuberculosisMdrXdrTuberculosis = tuberculosisMdrXdrTuberculosis;
922+
}
923+
924+
public Boolean getTuberculosisBeijingLineage() {
925+
return tuberculosisBeijingLineage;
926+
}
927+
928+
public void setTuberculosisBeijingLineage(Boolean tuberculosisBeijingLineage) {
929+
this.tuberculosisBeijingLineage = tuberculosisBeijingLineage;
930+
}
904931
}

sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/AbstractMessageProcessingFlowBase.java

Lines changed: 61 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -381,16 +381,63 @@ private FlowThen<ExternalMessageProcessingResult> doSinglePickOrCreateSampleFlow
381381

382382
}
383383

384+
/**
385+
* Retrieves similar cases based on the selected person and lab message.
386+
* This method will call getSimilarCases(PersonReferenceDto selectedPerson, Disease disease) with the disease of the external message by
387+
* default.
388+
*
389+
* @param selectedPerson
390+
* @param externalMessage
391+
* @return
392+
*/
393+
protected List<CaseSelectionDto> getSimilarCases(PersonReferenceDto selectedPerson, ExternalMessageDto externalMessage) {
394+
return getSimilarCases(selectedPerson, externalMessage.getDisease());
395+
}
396+
397+
protected List<CaseSelectionDto> getSimilarCases(PersonReferenceDto selectedPerson, Disease disease) {
398+
return getExternalMessageProcessingFacade().getSimilarCases(selectedPerson, disease);
399+
}
400+
401+
/**
402+
* Retrieves similar contacts based on the selected person and lab message.
403+
* This method will call getSimilarContacts(PersonReferenceDto selectedPerson, Disease disease) with the disease of the external message
404+
* by default.
405+
*
406+
* @param selectedPerson
407+
* @param externalMessage
408+
* @return
409+
*/
410+
protected List<SimilarContactDto> getSimilarContacts(PersonReferenceDto selectedPerson, ExternalMessageDto externalMessage) {
411+
return getSimilarContacts(selectedPerson, externalMessage.getDisease());
412+
}
413+
414+
protected List<SimilarContactDto> getSimilarContacts(PersonReferenceDto selectedPerson, Disease disease) {
415+
return getExternalMessageProcessingFacade().getSimilarContacts(selectedPerson, disease);
416+
}
417+
418+
/**
419+
* Retrieves similar event participants based on the selected person and lab message.
420+
* This method will call getSimilarEventParticipants(PersonReferenceDto selectedPerson, Disease disease) with the disease of the
421+
* external message by default.
422+
*
423+
* @param selectedPerson
424+
* @param externalMessage
425+
* @return
426+
*/
427+
protected List<SimilarEventParticipantDto> getSimilarEventParticipants(PersonReferenceDto selectedPerson, ExternalMessageDto externalMessage) {
428+
return getSimilarEventParticipants(selectedPerson, externalMessage.getDisease());
429+
}
430+
384431
/**
385432
* Retrieves similar event participants based on the selected person and lab message.
386433
*
387434
* @param selectedPerson
388435
* The selected person reference.
389-
* @param labMessage
436+
* @param externalMessage
390437
* The external lab message.
391438
* @return A list of similar event participants.
392439
*/
393-
protected List<SimilarEventParticipantDto> getSimilarEventParticipants(PersonReferenceDto selectedPerson, ExternalMessageDto labMessage) {
440+
protected List<SimilarEventParticipantDto> getSimilarEventParticipants(PersonReferenceDto selectedPerson, Disease disease) {
394441

395442
if (getExternalMessageProcessingFacade().isFeatureDisabled(FeatureType.EVENT_SURVEILLANCE)
396443
|| !getExternalMessageProcessingFacade().hasAllUserRights(UserRight.EVENTPARTICIPANT_CREATE, UserRight.EVENTPARTICIPANT_EDIT)) {
@@ -399,7 +446,7 @@ protected List<SimilarEventParticipantDto> getSimilarEventParticipants(PersonRef
399446

400447
EventParticipantCriteria eventParticipantCriteria = new EventParticipantCriteria();
401448
eventParticipantCriteria.setPerson(selectedPerson);
402-
eventParticipantCriteria.setDisease(labMessage.getDisease());
449+
eventParticipantCriteria.setDisease(disease);
403450

404451
return getExternalMessageProcessingFacade().getMatchingEventParticipants(eventParticipantCriteria);
405452
}
@@ -436,8 +483,9 @@ protected CompletionStage<ProcessingResult<PickOrCreateEntryResult>> pickOrCreat
436483
ExternalMessageDto externalMessage) {
437484

438485
PersonReferenceDto personRef = previousResult.getPerson().toReference();
439-
List<CaseSelectionDto> similarCases = getExternalMessageProcessingFacade().getSimilarCases(personRef, externalMessage.getDisease());
440-
List<SimilarContactDto> similarContacts = getExternalMessageProcessingFacade().getSimilarContacts(personRef, externalMessage.getDisease());
486+
487+
List<CaseSelectionDto> similarCases = getSimilarCases(personRef, externalMessage);
488+
List<SimilarContactDto> similarContacts = getSimilarContacts(personRef, externalMessage);
441489
List<SimilarEventParticipantDto> similarEventParticipants = getSimilarEventParticipants(personRef, externalMessage);
442490

443491
HandlerCallback<PickOrCreateEntryResult> callback = new HandlerCallback<>();
@@ -982,42 +1030,41 @@ protected abstract void markExternalMessageAsProcessed(
9821030
ProcessingResult<ExternalMessageProcessingResult> result,
9831031
SurveillanceReportDto surveillanceReport);
9841032

985-
9861033
protected void doPersonUpdates(EntitySelection<PersonDto> personSelection) {
9871034
// requested for #13589
9881035
// TODO: we need to find a better way to handle this
9891036

990-
if(personSelection.isNew()) {
1037+
if (personSelection.isNew()) {
9911038
// no updates for new persons
9921039
return;
9931040
}
9941041

9951042
final PersonDto person = personSelection.getEntity();
996-
if(person == null) {
1043+
if (person == null) {
9971044
return;
9981045
}
9991046

10001047
final LocationDto personAddress = person.getAddress();
10011048

1002-
if(personAddress != null) {
1049+
if (personAddress != null) {
10031050
final String houseNumber = getExternalMessage().getPersonHouseNumber();
1004-
if(houseNumber != null ) {
1051+
if (houseNumber != null) {
10051052
personAddress.setHouseNumber(houseNumber);
10061053
}
10071054
final String street = getExternalMessage().getPersonStreet();
1008-
if(street != null) {
1055+
if (street != null) {
10091056
personAddress.setStreet(street);
10101057
}
10111058
final String city = getExternalMessage().getPersonCity();
1012-
if(city != null) {
1059+
if (city != null) {
10131060
personAddress.setCity(city);
10141061
}
10151062
final String postalCode = getExternalMessage().getPersonPostalCode();
1016-
if(postalCode != null) {
1063+
if (postalCode != null) {
10171064
personAddress.setPostalCode(postalCode);
10181065
}
10191066
final CountryReferenceDto country = getExternalMessage().getPersonCountry();
1020-
if(country != null) {
1067+
if (country != null) {
10211068
personAddress.setCountry(country);
10221069
}
10231070

sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/ExternalMessageProcessingFacade.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,10 @@ public FacilityReferenceDto getFacilityReferenceByUuid(String uuid) {
153153
return facilityFacade.getReferenceByUuid(uuid);
154154
}
155155

156+
public List<SampleDto> getSamplesByCaseUuids(List<String> caseUuids) {
157+
return sampleFacade.getByCaseUuids(caseUuids);
158+
}
159+
156160
public List<SampleDto> getSamplesByCriteria(SampleCriteria sampleCriteria) {
157161
return sampleFacade.getSamplesByCriteria(sampleCriteria);
158162
}

0 commit comments

Comments
 (0)