use of de.symeda.sormas.api.sample.SampleReferenceDto in project SORMAS-Project by hzi-braunschweig.
the class SampleController method addReferredFromButton.
/**
* @param editForm
* the edit form to attach the 'Referred from' button to.
* @param navigation
* instructions for what shall happen when the user chooses to open the related sample
*/
public void addReferredFromButton(CommitDiscardWrapperComponent<SampleEditForm> editForm, Consumer<SampleDto> navigation) {
SampleReferenceDto referredFromRef = FacadeProvider.getSampleFacade().getReferredFrom(editForm.getWrappedComponent().getValue().getUuid());
if (referredFromRef != null) {
SampleDto referredFrom = FacadeProvider.getSampleFacade().getSampleByUuid(referredFromRef.getUuid());
FacilityReferenceDto referredFromLab = referredFrom.getLab();
String referredButtonCaption = referredFromLab == null ? I18nProperties.getCaption(Captions.sampleReferredFromInternal) + " (" + DateFormatHelper.formatLocalDateTime(referredFrom.getSampleDateTime()) + ")" : I18nProperties.getCaption(Captions.sampleReferredFrom) + " " + referredFromLab.toString();
Button referredButton = ButtonHelper.createButton("referredFrom", referredButtonCaption, event -> navigation.accept(referredFrom), ValoTheme.BUTTON_LINK, VSPACE_NONE);
editForm.getWrappedComponent().addReferredFromButton(referredButton);
}
}
use of de.symeda.sormas.api.sample.SampleReferenceDto in project SORMAS-Project by hzi-braunschweig.
the class SampleDataView method initView.
@Override
protected void initView(String params) {
setHeightUndefined();
String htmlLayout = LayoutUtil.fluidRow(LayoutUtil.fluidColumnLoc(8, 0, 12, 0, EDIT_LOC), LayoutUtil.fluidColumnLoc(4, 0, 6, 0, CASE_LOC), LayoutUtil.fluidColumnLoc(4, 0, 6, 0, CONTACT_LOC), LayoutUtil.fluidColumnLoc(4, 0, 6, 0, EVENT_PARTICIPANT_LOC), LayoutUtil.fluidColumnLoc(4, 0, 6, 0, PATHOGEN_TESTS_LOC), LayoutUtil.fluidColumnLoc(4, 0, 6, 0, ADDITIONAL_TESTS_LOC), LayoutUtil.fluidColumnLoc(4, 0, 6, 0, SORMAS_TO_SORMAS_LOC));
DetailSubComponentWrapper container = new DetailSubComponentWrapper(() -> editComponent);
container.setWidth(100, Unit.PERCENTAGE);
container.setMargin(true);
setSubComponent(container);
CustomLayout layout = new CustomLayout();
layout.addStyleName(CssStyles.ROOT_COMPONENT);
layout.setTemplateContents(htmlLayout);
layout.setWidth(100, Unit.PERCENTAGE);
layout.setHeightUndefined();
container.addComponent(layout);
SampleDto sampleDto = FacadeProvider.getSampleFacade().getSampleByUuid(getSampleRef().getUuid());
Disease disease = null;
final CaseReferenceDto associatedCase = sampleDto.getAssociatedCase();
if (associatedCase != null) {
final CaseDataDto caseDto = FacadeProvider.getCaseFacade().getCaseDataByUuid(associatedCase.getUuid());
disease = caseDto.getDisease();
final CaseInfoLayout caseInfoLayout = new CaseInfoLayout(caseDto);
caseInfoLayout.addStyleName(CssStyles.SIDE_COMPONENT);
layout.addComponent(caseInfoLayout, CASE_LOC);
}
final ContactReferenceDto associatedContact = sampleDto.getAssociatedContact();
if (associatedContact != null) {
final ContactDto contactDto = FacadeProvider.getContactFacade().getByUuid(associatedContact.getUuid());
disease = contactDto.getDisease();
final ContactInfoLayout contactInfoLayout = new ContactInfoLayout(contactDto, UiFieldAccessCheckers.getDefault(contactDto.isPseudonymized()));
contactInfoLayout.addStyleName(CssStyles.SIDE_COMPONENT);
layout.addComponent(contactInfoLayout, CONTACT_LOC);
}
final EventParticipantReferenceDto associatedEventParticipant = sampleDto.getAssociatedEventParticipant();
if (associatedEventParticipant != null) {
final EventParticipantDto eventParticipantDto = FacadeProvider.getEventParticipantFacade().getEventParticipantByUuid(associatedEventParticipant.getUuid());
final EventDto eventDto = FacadeProvider.getEventFacade().getEventByUuid(eventParticipantDto.getEvent().getUuid(), false);
disease = eventDto.getDisease();
final EventParticipantInfoLayout eventParticipantInfoLayout = new EventParticipantInfoLayout(eventParticipantDto, eventDto, UiFieldAccessCheckers.getDefault(eventParticipantDto.isPseudonymized()));
eventParticipantInfoLayout.addStyleName(CssStyles.SIDE_COMPONENT);
layout.addComponent(eventParticipantInfoLayout, EVENT_PARTICIPANT_LOC);
}
SampleController sampleController = ControllerProvider.getSampleController();
editComponent = sampleController.getSampleEditComponent(getSampleRef().getUuid(), sampleDto.isPseudonymized(), disease, true);
Consumer<Disease> createReferral = (relatedDisease) -> {
// save changes before referral creation
editComponent.commit();
SampleDto committedSample = editComponent.getWrappedComponent().getValue();
sampleController.createReferral(committedSample, relatedDisease);
};
Consumer<SampleDto> openReferredSample = referredSample -> sampleController.navigateToData(referredSample.getUuid());
sampleController.addReferOrLinkToOtherLabButton(editComponent, disease, createReferral, openReferredSample);
Consumer<SampleDto> navigate = targetSampleDto -> sampleController.navigateToData(targetSampleDto.getUuid());
sampleController.addReferredFromButton(editComponent, navigate);
editComponent.setMargin(new MarginInfo(false, false, true, false));
editComponent.setWidth(100, Unit.PERCENTAGE);
editComponent.getWrappedComponent().setWidth(100, Unit.PERCENTAGE);
editComponent.addStyleName(CssStyles.MAIN_COMPONENT);
layout.addComponent(editComponent, EDIT_LOC);
BiConsumer<PathogenTestDto, Runnable> onSavedPathogenTest = (pathogenTestDto, callback) -> callback.run();
// why? if(sampleDto.getSamplePurpose() !=null && sampleDto.getSamplePurpose().equals(SamplePurpose.EXTERNAL)) {
Supplier<Boolean> createOrEditAllowedCallback = () -> editComponent.getWrappedComponent().getFieldGroup().isValid();
SampleReferenceDto sampleReferenceDto = getSampleRef();
PathogenTestListComponent pathogenTestListComponent = new PathogenTestListComponent(sampleReferenceDto);
pathogenTestListComponent.addSideComponentCreateEventListener(e -> showNavigationConfirmPopupIfDirty(() -> {
if (createOrEditAllowedCallback.get()) {
ControllerProvider.getPathogenTestController().create(sampleReferenceDto, 0, pathogenTestListComponent::reload, onSavedPathogenTest);
} else {
Notification.show(null, I18nProperties.getString(Strings.messageFormHasErrorsPathogenTest), Notification.Type.ERROR_MESSAGE);
}
}));
pathogenTestListComponent.addSideComponentEditEventListener(e -> showNavigationConfirmPopupIfDirty(() -> {
String uuid = e.getUuid();
if (createOrEditAllowedCallback.get()) {
ControllerProvider.getPathogenTestController().edit(uuid, pathogenTestListComponent::reload, onSavedPathogenTest);
} else {
Notification.show(null, I18nProperties.getString(Strings.messageFormHasErrorsPathogenTest), Notification.Type.ERROR_MESSAGE);
}
}));
layout.addComponent(new SideComponentLayout(pathogenTestListComponent), PATHOGEN_TESTS_LOC);
if (UserProvider.getCurrent() != null && UserProvider.getCurrent().hasUserRight(UserRight.ADDITIONAL_TEST_VIEW) && FacadeProvider.getFeatureConfigurationFacade().isFeatureEnabled(FeatureType.ADDITIONAL_TESTS)) {
AdditionalTestListComponent additionalTestList = new AdditionalTestListComponent(sampleReferenceDto.getUuid());
additionalTestList.addStyleName(CssStyles.SIDE_COMPONENT);
layout.addComponent(additionalTestList, ADDITIONAL_TESTS_LOC);
}
boolean sormasToSormasEnabled = FacadeProvider.getSormasToSormasFacade().isSharingCasesContactsAndSamplesEnabledForUser();
if (sormasToSormasEnabled || sampleDto.getSormasToSormasOriginInfo() != null) {
VerticalLayout sormasToSormasLocLayout = new VerticalLayout();
sormasToSormasLocLayout.setMargin(false);
sormasToSormasLocLayout.setSpacing(false);
SormasToSormasListComponent sormasToSormasListComponent = new SormasToSormasListComponent(sampleDto);
sormasToSormasListComponent.addStyleNames(CssStyles.SIDE_COMPONENT);
sormasToSormasLocLayout.addComponent(sormasToSormasListComponent);
layout.addComponent(sormasToSormasLocLayout, SORMAS_TO_SORMAS_LOC);
}
// }
setSampleEditPermission(container);
}
use of de.symeda.sormas.api.sample.SampleReferenceDto in project SORMAS-Project by hzi-braunschweig.
the class SampleReadActivity method processActionbarMenu.
@Override
protected void processActionbarMenu() {
super.processActionbarMenu();
final MenuItem editMenu = getEditMenu();
final ReferenceDto referenceDto = new SampleReferenceDto(getRootUuid());
final Sample selectedSample = DatabaseHelper.getSampleDao().getByReferenceDto(referenceDto);
if (editMenu != null) {
if (SampleEditAuthorization.isSampleEditAllowed(selectedSample)) {
editMenu.setVisible(true);
} else {
editMenu.setVisible(false);
}
}
}
use of de.symeda.sormas.api.sample.SampleReferenceDto in project SORMAS-Project by hzi-braunschweig.
the class LabMessageFacadeEjbMappingTest method testFromDto.
@Test
public void testFromDto() {
LabMessageDto source = new LabMessageDto();
TestReport testReport = new TestReport();
TestReportDto testReportDto = TestReportFacadeEjb.toDto(testReport);
Sample sample = new Sample();
sample.setUuid("Uuid");
SampleReferenceDto sampleRef = sample.toReference();
User assignee = new User();
assignee.setUuid("12345");
when(sampleService.getByReferenceDto(sampleRef)).thenReturn(sample);
when(testReportFacade.fromDto(eq(testReportDto), any(LabMessage.class), eq(false))).thenReturn(testReport);
when(userservice.getByReferenceDto(assignee.toReference())).thenReturn(assignee);
source.addTestReport(testReportDto);
source.setCreationDate(new Date());
source.setChangeDate(new Date());
source.setUuid("UUID");
source.setMessageDateTime(new Date());
source.setSampleDateTime(new Date());
source.setSampleReceivedDate(new Date());
source.setLabSampleId("Lab Sample Id");
source.setSampleMaterial(SampleMaterial.NASAL_SWAB);
source.setSampleMaterialText("Sample material text");
source.setLabName("Test Lab Name");
source.setLabExternalId("Test Lab External Id");
source.setLabPostalCode("Test Lab Postal Code");
source.setLabCity("Test Lab City");
source.setSpecimenCondition(SpecimenCondition.ADEQUATE);
source.setTestedDisease(Disease.CORONAVIRUS);
source.setPersonFirstName("Person First Name");
source.setPersonLastName("Person Last Name");
source.setPersonSex(Sex.OTHER);
source.setPersonBirthDateDD(1);
source.setPersonBirthDateDD(1);
source.setPersonBirthDateYYYY(1970);
source.setPersonPostalCode("Person Postal Code");
source.setPersonCity("Person City");
source.setPersonStreet("Person Street");
source.setPersonHouseNumber("Person House Number");
source.setPersonPhone("0123456789");
source.setPersonEmail("mail@domain.com");
source.setLabMessageDetails("Lab Message Details");
source.setSampleOverallTestResult(PathogenTestResultType.POSITIVE);
source.setSample(sampleRef);
source.setAssignee(assignee.toReference());
LabMessage result = sut.fromDto(source, null, true);
assertEquals(source.getTestReports(), result.getTestReports());
assertNotSame(source.getCreationDate().getTime(), result.getCreationDate().getTime());
assertNotSame(source.getChangeDate(), result.getChangeDate());
assertEquals(source.getUuid(), result.getUuid());
assertEquals(source.getMessageDateTime(), result.getMessageDateTime());
assertEquals(source.getSampleDateTime(), result.getSampleDateTime());
assertEquals(source.getSampleReceivedDate(), result.getSampleReceivedDate());
assertEquals(source.getLabSampleId(), result.getLabSampleId());
assertEquals(source.getSampleMaterial(), result.getSampleMaterial());
assertEquals(source.getSampleMaterialText(), result.getSampleMaterialText());
assertEquals(source.getLabName(), result.getLabName());
assertEquals(source.getLabExternalId(), result.getLabExternalId());
assertEquals(source.getLabPostalCode(), result.getLabPostalCode());
assertEquals(source.getLabCity(), result.getLabCity());
assertEquals(source.getSpecimenCondition(), result.getSpecimenCondition());
assertEquals(source.getTestedDisease(), result.getTestedDisease());
assertEquals(source.getPersonFirstName(), result.getPersonFirstName());
assertEquals(source.getPersonLastName(), result.getPersonLastName());
assertEquals(source.getPersonSex(), result.getPersonSex());
assertEquals(source.getPersonBirthDateDD(), result.getPersonBirthDateDD());
assertEquals(source.getPersonBirthDateMM(), result.getPersonBirthDateMM());
assertEquals(source.getPersonBirthDateYYYY(), result.getPersonBirthDateYYYY());
assertEquals(source.getPersonPostalCode(), result.getPersonPostalCode());
assertEquals(source.getPersonCity(), result.getPersonCity());
assertEquals(source.getPersonStreet(), result.getPersonStreet());
assertEquals(source.getPersonHouseNumber(), result.getPersonHouseNumber());
assertEquals(source.getLabMessageDetails(), result.getLabMessageDetails());
assertEquals(source.getSampleOverallTestResult(), result.getSampleOverallTestResult());
assertEquals(sample, result.getSample());
assertEquals(assignee.getUuid(), result.getAssignee().getUuid());
}
use of de.symeda.sormas.api.sample.SampleReferenceDto in project SORMAS-Project by hzi-braunschweig.
the class SampleDtoHelper method fillInnerFromAdo.
@Override
public void fillInnerFromAdo(SampleDto target, Sample source) {
if (source.getAssociatedCase() != null) {
Case associatedCase = DatabaseHelper.getCaseDao().queryForId(source.getAssociatedCase().getId());
target.setAssociatedCase(CaseDtoHelper.toReferenceDto(associatedCase));
} else {
target.setAssociatedCase(null);
}
if (source.getReportingUser() != null) {
User user = DatabaseHelper.getUserDao().queryForId(source.getReportingUser().getId());
target.setReportingUser(UserDtoHelper.toReferenceDto(user));
} else {
target.setReportingUser(null);
}
if (source.getLab() != null) {
Facility lab = DatabaseHelper.getFacilityDao().queryForId(source.getLab().getId());
target.setLab(FacilityDtoHelper.toReferenceDto(lab));
} else {
target.setLab(null);
}
if (source.getReferredToUuid() != null) {
target.setReferredTo(new SampleReferenceDto(source.getReferredToUuid()));
} else {
target.setReferredTo(null);
}
target.setLabDetails(source.getLabDetails());
target.setLabSampleID(source.getLabSampleID());
target.setFieldSampleID(source.getFieldSampleID());
target.setSampleDateTime(source.getSampleDateTime());
target.setReportDateTime(source.getReportDateTime());
target.setSampleMaterial(source.getSampleMaterial());
target.setSampleMaterialText(source.getSampleMaterialText());
target.setSamplePurpose(source.getSamplePurpose());
target.setShipmentDate(source.getShipmentDate());
target.setShipmentDetails(source.getShipmentDetails());
target.setReceivedDate(source.getReceivedDate());
target.setSpecimenCondition(source.getSpecimenCondition());
target.setNoTestPossibleReason(source.getNoTestPossibleReason());
target.setComment(source.getComment());
target.setSampleSource(source.getSampleSource());
target.setShipped(source.isShipped());
target.setReceived(source.isReceived());
target.setPathogenTestResult(source.getPathogenTestResult());
target.setPathogenTestingRequested(source.getPathogenTestingRequested());
target.setAdditionalTestingRequested(source.getAdditionalTestingRequested());
target.setRequestedPathogenTests(source.getRequestedPathogenTests());
target.setRequestedAdditionalTests(source.getRequestedAdditionalTests());
target.setRequestedOtherPathogenTests(source.getRequestedOtherPathogenTests());
target.setRequestedOtherAdditionalTests(source.getRequestedOtherAdditionalTests());
target.setReportLat(source.getReportLat());
target.setReportLon(source.getReportLon());
target.setReportLatLonAccuracy(source.getReportLatLonAccuracy());
target.setSamplingReason(source.getSamplingReason());
target.setSamplingReasonDetails(source.getSamplingReasonDetails());
if (source.getSormasToSormasOriginInfo() != null) {
target.setSormasToSormasOriginInfo(sormasToSormasOriginInfoDtoHelper.adoToDto(source.getSormasToSormasOriginInfo()));
}
target.setPseudonymized(source.isPseudonymized());
}
Aggregations