Skip to content

Commit

Permalink
Merge pull request #13107 from SORMAS-Foundation/feature-13084_show_l…
Browse files Browse the repository at this point in the history
…inked_selfReporting_on_sideComponent

#13084 - Linked SelfReporting message should be shown as side compone…
  • Loading branch information
leventegal-she committed Jun 4, 2024
2 parents 0b15207 + d0ab7bb commit 2a0decb
Show file tree
Hide file tree
Showing 23 changed files with 471 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -785,6 +785,7 @@ public interface Strings {
String headingSelfReportCaseReportWithSameReferenceFound = "headingSelfReportCaseReportWithSameReferenceFound";
String headingSelfReportCaseWithSameReferenceNumberFound = "headingSelfReportCaseWithSameReferenceNumberFound";
String headingSelfReportContactsWithCaseReferenceFound = "headingSelfReportContactsWithCaseReferenceFound";
String headingSelfReportSideComponent = "headingSelfReportSideComponent";
String headingSetOutbreakStatus = "headingSetOutbreakStatus";
String headingShareRequestCases = "headingShareRequestCases";
String headingShareRequestContacts = "headingShareRequestContacts";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@

import de.symeda.sormas.api.Disease;
import de.symeda.sormas.api.EntityRelevanceStatus;
import de.symeda.sormas.api.caze.CaseReferenceDto;
import de.symeda.sormas.api.contact.ContactReferenceDto;
import de.symeda.sormas.api.disease.DiseaseVariant;
import de.symeda.sormas.api.sample.SampleCriteria;
import de.symeda.sormas.api.utils.DateFilterOption;
import de.symeda.sormas.api.utils.IgnoreForUrl;
import de.symeda.sormas.api.utils.criteria.BaseCriteria;
Expand All @@ -44,6 +47,9 @@ public class SelfReportCriteria extends BaseCriteria implements Serializable {
private Date reportDateFrom;
private Date reportDateTo;

private CaseReferenceDto caze;
private ContactReferenceDto contact;

@IgnoreForUrl
public String getFreeText() {
return freeText;
Expand Down Expand Up @@ -133,4 +139,22 @@ public void reportDateBetween(Date reportDateFrom, Date reportDateTo, DateFilter
this.reportDateTo = reportDateTo;
this.dateFilterOption = dateFilterOption;
}

public CaseReferenceDto getCaze() {
return caze;
}

public SelfReportCriteria setCaze(CaseReferenceDto caze) {
this.caze = caze;
return this;
}

public ContactReferenceDto getContact() {
return contact;
}

public SelfReportCriteria setContact(ContactReferenceDto contact) {
this.contact = contact;
return this;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,13 @@
import de.symeda.sormas.api.caze.CaseReferenceDto;
import de.symeda.sormas.api.contact.ContactReferenceDto;

import java.util.List;

@Remote
public interface SelfReportFacade extends CoreFacade<SelfReportDto, SelfReportIndexDto, SelfReportReferenceDto, SelfReportCriteria> {

List<SelfReportListEntryDto> getEntriesList(SelfReportCriteria selfReportCriteria, Integer first, Integer max);

void markProcessed(SelfReportReferenceDto selfReportRef, CaseReferenceDto caze);

void markProcessed(SelfReportReferenceDto selfReportRef, ContactReferenceDto contactRef);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package de.symeda.sormas.api.selfreport;

import java.io.Serializable;
import java.util.Date;

import de.symeda.sormas.api.Disease;
import de.symeda.sormas.api.utils.pseudonymization.PseudonymizableIndexDto;

public class SelfReportListEntryDto extends PseudonymizableIndexDto implements Serializable {

public static final String I18N_PREFIX = "SelfReport";

private Date reportingDate;
private String caseReference;
private Disease disease;
private Date dateOfTest;

public SelfReportListEntryDto(String uuid, Date reportingDate, String caseReference, Disease disease, Date dateOfTest) {
super(uuid);
this.reportingDate = reportingDate;
this.caseReference = caseReference;
this.disease = disease;
this.dateOfTest = dateOfTest;
}

public Date getReportingDate() {
return reportingDate;
}

public void setReportingDate(Date reportingDate) {
this.reportingDate = reportingDate;
}

public String getCaseReference() {
return caseReference;
}

public void setCaseReference(String caseReference) {
this.caseReference = caseReference;
}

public Disease getDisease() {
return disease;
}

public void setDisease(Disease disease) {
this.disease = disease;
}

public Date getDateOfTest() {
return dateOfTest;
}

public void setDateOfTest(Date dateOfTest) {
this.dateOfTest = dateOfTest;
}
}
2 changes: 1 addition & 1 deletion sormas-api/src/main/resources/captions.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2962,7 +2962,7 @@ specailCaseAccessNoAccessGranted=No special access granted for this case
SelfReport = Self report
SelfReport.type = Type
SelfReport.reportDate = Report date
SelfReport.caseReference = Case reference
SelfReport.caseReference = Case reference number
SelfReport.disease = Disease
SelfReport.diseaseDetails = Disease details
SelfReport.diseaseVariant = Disease variant
Expand Down
1 change: 1 addition & 0 deletions sormas-api/src/main/resources/strings.properties
Original file line number Diff line number Diff line change
Expand Up @@ -675,6 +675,7 @@ headingSecurityAlert=Security Alert
headingSelectCampaign = Select a campaign
headingSetOutbreakStatus = Set status of all districts:
headingShowExternalMessage = Message
headingSelfReportSideComponent = Self reports
headingSignsAndSymptoms = Clinical Signs and Symptoms
headingSimilarImmunization = Similar immunizaton
headingSyncUsers = Sync Users
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import de.symeda.sormas.backend.selfreport.SelfReport;
import org.hibernate.annotations.Type;

import de.symeda.sormas.api.Disease;
Expand Down Expand Up @@ -244,6 +245,7 @@ public class Case extends CoreAdo implements IsCase, SormasToSormasShareable, Ha
public static final String DUPLICATE_OF = "duplicateOf";
public static final String CREATION_VERSION = "creationVersion";
public static final String SPECIAL_CASE_ACCESSES = "specialCaseAccesses";
public static final String SELF_REPORT = "selfReport";

private Person person;
private String description;
Expand Down Expand Up @@ -426,6 +428,8 @@ public class Case extends CoreAdo implements IsCase, SormasToSormasShareable, Ha

private List<SpecialCaseAccess> specialCaseAccesses = new ArrayList<>(0);

private List<SelfReport> selfReport;

public static Case build() {
Case caze = new Case();
caze.setSystemCaseClassification(CaseClassification.NOT_CLASSIFIED);
Expand Down Expand Up @@ -1765,4 +1769,13 @@ public List<SpecialCaseAccess> getSpecialCaseAccesses() {
public void setSpecialCaseAccesses(List<SpecialCaseAccess> specialCaseAccesses) {
this.specialCaseAccesses = specialCaseAccesses;
}

@OneToMany(mappedBy = SelfReport.RESULTING_CASE, fetch = FetchType.LAZY)
public List<SelfReport> getSelfReport() {
return selfReport;
}

public void setSelfReport(List<SelfReport> selfReport) {
this.selfReport = selfReport;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -486,7 +486,8 @@ public ADO getByUuid(String uuid, boolean fetchReferences) {
hints.put("javax.persistence.fetchgraph", entityGraph);
return em.find(getElementClass(), id, hints);
} else {
return em.find(getElementClass(), id);
ADO ado = em.find(getElementClass(), id);
return ado;
}
} else {
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,11 @@
import de.symeda.sormas.backend.infrastructure.region.Region;
import de.symeda.sormas.backend.person.Person;
import de.symeda.sormas.backend.sample.Sample;
import de.symeda.sormas.backend.selfreport.SelfReport;
import de.symeda.sormas.backend.sormastosormas.entities.SormasToSormasShareable;
import de.symeda.sormas.backend.sormastosormas.origin.SormasToSormasOriginInfo;
import de.symeda.sormas.backend.sormastosormas.share.outgoing.SormasToSormasShareInfo;
import de.symeda.sormas.backend.specialcaseaccess.SpecialCaseAccess;
import de.symeda.sormas.backend.task.Task;
import de.symeda.sormas.backend.user.User;
import de.symeda.sormas.backend.visit.Visit;
Expand Down Expand Up @@ -166,6 +168,7 @@ public class Contact extends CoreAdo implements IsContact, SormasToSormasShareab
public static final String VACCINATION_STATUS = "vaccinationStatus";
public static final String VISITS = "visits";
public static final String DUPLICATE_OF = "duplicateOf";
public static final String SELF_REPORT ="selfReport";

private Date reportDateTime;
private User reportingUser;
Expand Down Expand Up @@ -266,6 +269,8 @@ public class Contact extends CoreAdo implements IsContact, SormasToSormasShareab
private Date previousQuarantineTo;
private String quarantineChangeComment;

private List<SelfReport> selfReport;

@Diseases({
Disease.AFP,
Disease.GUINEA_WORM,
Expand Down Expand Up @@ -1090,4 +1095,13 @@ public String getQuarantineChangeComment() {
public void setQuarantineChangeComment(String quarantineChangeComment) {
this.quarantineChangeComment = quarantineChangeComment;
}

@OneToMany(mappedBy = SelfReport.RESULTING_CONTACT, fetch = FetchType.LAZY)
public List<SelfReport> getSelfReport() {
return selfReport;
}

public void setSelfReport(List<SelfReport> selfReport) {
this.selfReport = selfReport;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,9 @@ public class SelfReport extends CoreAdo {
public static final String RESPONSIBLE_USER = "responsibleUser";
public static final String INVESTIGATION_STATUS = "investigationStatus";
public static final String PROCESSING_STATUS = "processingStatus";
public static final String RESULTING_CASE = "resultingCase";
public static final String RESULTING_CONTACT = "resultingContact";
public static final String DATE_OF_TEST = "dateOfTest";

private SelfReportType type;
private Date reportDate;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package de.symeda.sormas.backend.selfreport;

import de.symeda.sormas.api.Disease;
import de.symeda.sormas.api.selfreport.SelfReportListEntryDto;
import org.hibernate.transform.ResultTransformer;

import java.util.Date;
import java.util.List;

public class SelfReportEntryDtoResultTransformer implements ResultTransformer {
@Override
public Object transformTuple(Object[] objects, String[] strings) {

boolean referred = objects[4] !=null;
return new SelfReportListEntryDto((String) objects[0], (Date) objects[1], (String) objects[2], (Disease) objects[3], (Date) objects[4]);
}

@Override
public List transformList(List list) {
return list;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
import javax.validation.Valid;
import javax.validation.constraints.NotNull;

import de.symeda.sormas.api.selfreport.SelfReportListEntryDto;
import org.apache.commons.lang3.NotImplementedException;
import org.apache.commons.lang3.StringUtils;

Expand Down Expand Up @@ -352,6 +353,11 @@ private List<Order> getOrderList(List<SortProperty> sortProperties, SelfReportQu
return orderList;
}

@Override
public List<SelfReportListEntryDto> getEntriesList(SelfReportCriteria selfReportCriteria, Integer first, Integer max) {
return service.getEntriesList(selfReportCriteria, first, max);
}

@Override
public void validate(SelfReportDto dto) throws ValidationRuntimeException {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@
import javax.persistence.criteria.Join;
import javax.persistence.criteria.JoinType;

import de.symeda.sormas.backend.caze.Case;
import de.symeda.sormas.backend.common.QueryJoins;
import de.symeda.sormas.backend.contact.Contact;
import de.symeda.sormas.backend.location.Location;
import de.symeda.sormas.backend.location.LocationJoins;
import de.symeda.sormas.backend.user.User;
Expand All @@ -30,6 +32,10 @@ public class SelfReportJoins extends QueryJoins<SelfReport> {
private LocationJoins addressJoins;
private Join<SelfReport, User> responsibleUser;

private Join<SelfReport, Case> caseJoin;

private Join<SelfReport, Contact> contactJoin;

public SelfReportJoins(From<?, SelfReport> root) {
super(root);
}
Expand Down Expand Up @@ -57,4 +63,20 @@ public Join<SelfReport, User> getResponsibleUser() {
private void setResponsibleUser(Join<SelfReport, User> responsibleUser) {
this.responsibleUser = responsibleUser;
}

public Join<SelfReport, Case> getCaseJoin() {
return getOrCreate(caseJoin, SelfReport.RESULTING_CASE, JoinType.LEFT, this::setCaseJoin);
}

public void setCaseJoin(Join<SelfReport, Case> caseJoin) {
this.caseJoin = caseJoin;
}

public Join<SelfReport, Contact> getContactJoin() {
return getOrCreate(contactJoin, SelfReport.RESULTING_CONTACT, JoinType.LEFT, this::setContactJoin);
}

public void setContactJoin(Join<SelfReport, Contact> contactJoin) {
this.contactJoin = contactJoin;
}
}
Loading

0 comments on commit 2a0decb

Please sign in to comment.