@Before public void setup() { emrApiProperties = mock(EmrApiProperties.class); paperRecordProperties = mock(PaperRecordProperties.class); adtService = mock(AdtService.class); messageSourceService = mock(MessageSourceService.class); addressHierarchyService = mock(AddressHierarchyService.class); when(emrApiProperties.getPrimaryIdentifierType()).thenReturn(primaryIdentifierType); when(paperRecordProperties.getPaperRecordIdentifierType()) .thenReturn(paperRecordIdentifierType); when(adtService.getLocationThatSupportsVisits(argThat(any(Location.class)))) .thenReturn(visitLocation); when(messageSourceService.getMessage("coreapps.gender.M", null, locale)).thenReturn("Masculin"); when(messageSourceService.getMessage("coreapps.gender.F", null, locale)).thenReturn("Féminin"); setupAddressHierarchyLevels(); wristbandTemplate.setAdtService(adtService); wristbandTemplate.setEmrApiProperties(emrApiProperties); wristbandTemplate.setMessageSourceService(messageSourceService); wristbandTemplate.setPaperRecordProperties(paperRecordProperties); wristbandTemplate.setAddressHierarchyService(addressHierarchyService); }
/** * @should void the old person address and replace it with a new one when it is edited * @should void the old person address and replace it with a new one when it is edited * @should not void the existing address if there are no changes */ public String post( UiSessionContext sessionContext, PageModel model, @RequestParam("patientId") @BindParams Patient patient, @BindParams PersonAddress address, @SpringBean("patientService") PatientService patientService, @RequestParam("appId") AppDescriptor app, @RequestParam("returnUrl") String returnUrl, @SpringBean("adminService") AdministrationService administrationService, HttpServletRequest request, @SpringBean("messageSourceService") MessageSourceService messageSourceService, Session session, @SpringBean("patientValidator") PatientValidator patientValidator, UiUtils ui) throws Exception { sessionContext.requireAuthentication(); if (patient.getPersonAddress() != null && address != null) { PersonAddress currentAddress = patient.getPersonAddress(); if (!currentAddress.equalsContent(address)) { // void the old address and replace it with the new one patient.addAddress(address); currentAddress.setVoided(true); } } NavigableFormStructure formStructure = RegisterPatientFormBuilder.buildFormStructure(app); BindingResult errors = new BeanPropertyBindingResult(patient, "patient"); patientValidator.validate(patient, errors); RegistrationAppUiUtils.validateLatitudeAndLongitudeIfNecessary(address, errors); if (formStructure != null) { RegisterPatientFormBuilder.resolvePersonAttributeFields( formStructure, patient, request.getParameterMap()); } if (!errors.hasErrors()) { try { // The person address changes get saved along as with the call to save patient patientService.savePatient(patient); InfoErrorMessageUtil.flashInfoMessage( request.getSession(), ui.message("registrationapp.editContactInfoMessage.success", patient.getPersonName())); return "redirect:" + returnUrl; } catch (Exception e) { log.warn("Error occurred while saving patient's contact info", e); session.setAttribute( UiCommonsConstants.SESSION_ATTRIBUTE_ERROR_MESSAGE, "registrationapp.save.fail"); } } else { model.addAttribute("errors", errors); StringBuffer errorMessage = new StringBuffer(messageSourceService.getMessage("error.failed.validation")); errorMessage.append("<ul>"); for (ObjectError error : errors.getAllErrors()) { errorMessage.append("<li>"); errorMessage.append( messageSourceService.getMessage( error.getCode(), error.getArguments(), error.getDefaultMessage(), null)); errorMessage.append("</li>"); } errorMessage.append("</ul>"); session.setAttribute( UiCommonsConstants.SESSION_ATTRIBUTE_ERROR_MESSAGE, errorMessage.toString()); } addModelAttributes(model, patient, formStructure, administrationService, returnUrl); // redisplay the form return null; }
@Test public void testWristBandTemplate() { Date today = new Date(); visitLocation.setName("Hôpital Universitaire de Mirebalais"); Patient patient = new Patient(); patient.setGender("M"); patient.setBirthdate(new DateTime(1940, 7, 7, 5, 5, 5).toDate()); PatientIdentifier primaryIdentifier = new PatientIdentifier(); primaryIdentifier.setIdentifier("ZL1234"); primaryIdentifier.setIdentifierType(primaryIdentifierType); primaryIdentifier.setVoided(false); patient.addIdentifier(primaryIdentifier); PatientIdentifier paperRecordIdentifier = new PatientIdentifier(); paperRecordIdentifier.setIdentifier("A000005"); paperRecordIdentifier.setIdentifierType(paperRecordIdentifierType); paperRecordIdentifier.setVoided(false); paperRecordIdentifier.setLocation(visitLocation); patient.addIdentifier(paperRecordIdentifier); PersonAddress address = new PersonAddress(); address.setAddress2("Avant Eglise Chretienne des perlerlerin de la siant tete de moliere"); address.setAddress1("Saut D'Eau"); address.setAddress3("1ere Riviere Canot"); address.setCityVillage("Saut d'Eau"); address.setStateProvince("Centre"); patient.addAddress(address); PersonName name = new PersonName(); name.setGivenName("Ringo"); name.setFamilyName("Starr"); patient.addName(name); when(messageSourceService.getMessage( "coreapps.ageYears", Collections.singletonList(patient.getAge()).toArray(), locale)) .thenReturn("75 an(s)"); String output = wristbandTemplate.generateWristband(patient, visitLocation); assertThat(output, containsString("^XA^CI28^MTD^FWB")); assertThat( output, containsString( "^FO050,200^FB2150,1,0,L,0^AS^FDHôpital Universitaire de Mirebalais " + df.format(today) + "^FS")); assertThat(output, containsString("^FO100,200^FB2150,1,0,L,0^AU^FDRingo Starr^FS")); assertThat(output, containsString("^FO160,200^FB2150,1,0,L,0^AU^FD07 juil. 1940^FS")); assertThat( output, containsString("^FO160,200^FB1850,1,0,L,0^AT^FD" + patient.getAge() + " an(s)^FS")); assertThat(output, containsString("^FO160,200^FB1650,1,0,L,0^AU^FDMasculin A 000005^FS")); assertThat( output, containsString( "^FO220,200^FB2150,1,0,L,0^AS^FDAvant Eglise Chretienne des perlerlerin de la siant tete de moliere^FS")); assertThat( output, containsString( "^FO270,200^FB2150,1,0,L,0^AS^FDSaut D'Eau, 1ere Riviere Canot, Saut d'Eau, Centre^FS")); assertThat(output, containsString("^FO100,2400^AT^BY4^BC,150,N^FDZL1234^XZ")); }