private void loadLazyHibernateCollections(User user) { if (user.getPerson() instanceof Patient) { ((Patient) user.getPerson()).getPatientIdentifier(); } }
private void setPreferredPatientIdentifier(Patient patient) { PatientIdentifier preferredIdentifier = null; PatientIdentifier possiblePreferredId = patient.getPatientIdentifier(); if (possiblePreferredId != null && possiblePreferredId.getPreferred() && !possiblePreferredId.getVoided()) { preferredIdentifier = possiblePreferredId; } for (PatientIdentifier id : patient.getIdentifiers()) { if (preferredIdentifier == null && !id.getVoided()) { id.setPreferred(true); preferredIdentifier = id; continue; } if (!id.equals(preferredIdentifier)) { id.setPreferred(false); } } }
/** * @see org.openmrs.api.PatientService#savePatient(org.openmrs.Patient) */ @Override public Patient savePatient(Patient patient) throws APIException { requireAppropriatePatientModificationPrivilege(patient); if (!patient.getVoided() && patient.getIdentifiers().size() == 1) { patient.getPatientIdentifier().setPreferred(true); } if (!patient.getVoided()) { checkPatientIdentifiers(patient); } setPreferredPatientIdentifier(patient); setPreferredPatientName(patient); setPreferredPatientAddress(patient); return dao.savePatient(patient); }
@Test public void getPatients_shouldGetPatientByIdentifierStartMatch() { String oldPropertyValue = globalPropertiesTestHelper.setGlobalProperty( OpenmrsConstants.GLOBAL_PROPERTY_PATIENT_IDENTIFIER_SEARCH_MATCH_MODE, OpenmrsConstants.GLOBAL_PROPERTY_PATIENT_SEARCH_MATCH_START); List<Patient> patients = dao.getPatients("42-42", false, 0, null); Assert.assertEquals(1, patients.size()); Assert.assertEquals("42-42-42",patients.get(0).getPatientIdentifier().toString()); if (oldPropertyValue != null) { globalPropertiesTestHelper.setGlobalProperty(OpenmrsConstants.GLOBAL_PROPERTY_PATIENT_IDENTIFIER_SEARCH_MATCH_MODE, oldPropertyValue); } else { globalPropertiesTestHelper.purgeGlobalProperty(OpenmrsConstants.GLOBAL_PROPERTY_PATIENT_IDENTIFIER_SEARCH_MATCH_MODE); } }
/** * Gets the first patient, then sees if it can get that patient by its identifier as well * * @throws Exception */ @Test public void shouldGetPatientsByIdentifier() throws Exception { executeDataSet(CREATE_PATIENT_XML); updateSearchIndex(); // get the first patient Collection<Patient> johnPatients = patientService.getPatients("John", null, null, false); assertNotNull("There should be a patient named 'John'", johnPatients); assertFalse("There should be a patient named 'John'", johnPatients.isEmpty()); Patient firstJohnPatient = johnPatients.iterator().next(); // get a list of patients with this identifier, make sure the john // patient is actually there String identifier = firstJohnPatient.getPatientIdentifier().getIdentifier(); assertNotNull("Uh oh, the patient doesn't have an identifier", identifier); List<Patient> patients = patientService.getPatients(identifier, null, null, false); assertTrue("Odd. The firstJohnPatient isn't in the list of patients for this identifier", patients.contains(firstJohnPatient)); }
@Test public void getPatients_shouldGetPatientByIdentifierAnywhereMatch() { String oldPropertyValue = globalPropertiesTestHelper.setGlobalProperty( OpenmrsConstants.GLOBAL_PROPERTY_PATIENT_IDENTIFIER_SEARCH_MATCH_MODE, OpenmrsConstants.GLOBAL_PROPERTY_PATIENT_SEARCH_MATCH_ANYWHERE); Patient patient = patientService.getPatient(2); PatientIdentifier patientIdentifier = new PatientIdentifier("OM292", patientService.getPatientIdentifierType(5), Context .getLocationService().getLocation(1)); patient.addIdentifier(patientIdentifier); patientService.savePatient(patient); updateSearchIndex(); List<Patient> patients = dao.getPatients("292", false, 0, null); Assert.assertEquals(1, patients.size()); Assert.assertEquals("OM292", patients.get(0).getPatientIdentifier(5).toString()); Patient actualPatient = patients.get(0); Assert.assertEquals(patient, actualPatient); if (oldPropertyValue != null) { globalPropertiesTestHelper.setGlobalProperty(OpenmrsConstants.GLOBAL_PROPERTY_PATIENT_IDENTIFIER_SEARCH_MATCH_MODE, oldPropertyValue); } else { globalPropertiesTestHelper.purgeGlobalProperty(OpenmrsConstants.GLOBAL_PROPERTY_PATIENT_IDENTIFIER_SEARCH_MATCH_MODE); } }
/** * @see PatientDAO#getPatients(String,String,List<QPatientIdentifierType;>,null) */ @Test public void getPatients_shouldEscapeUnderscoreCharacterInNamePhrase() { Patient patient2 = patientService.getPatient(2); PersonName name = new PersonName("_cats", "and", "dogs"); patient2.addName(name); patientService.savePatient(patient2); //add a new closely matching name to another patient Patient patient6 = patientService.getPatient(6); PersonName name6 = new PersonName("acats", "and", "dogs"); patient6.addName(name6); patient6.getPatientIdentifier().setPreferred(true); patientService.savePatient(patient6); updateSearchIndex(); //we expect only one matching patient int actualSize = dao.getPatients("_ca", 0, null).size(); Assert.assertEquals(1, actualSize); //if actually the search returned the matching patient Patient actualPatient = dao.getPatients("_ca", 0, null).get(0); Assert.assertEquals(patient2, actualPatient); }
/** * @see PatientDAO#getPatients(String,String,List<QPatientIdentifierType;>,null) */ @Test public void getPatients_shouldEscapePercentageCharacterInNamePhrase() { Patient patient2 = patientService.getPatient(2); PersonName name = new PersonName("%cats", "and", "dogs"); patient2.addName(name); patientService.savePatient(patient2); //add a new closely matching identifier to another patient Patient patient6 = patientService.getPatient(6); PersonName name6 = new PersonName("acats", "and", "dogs"); patient6.addName(name6); patient6.getPatientIdentifier().setPreferred(true); patientService.savePatient(patient6); updateSearchIndex(); //we expect only one matching patient int actualSize = dao.getPatients("%ca", 0, null).size(); Assert.assertEquals(1, actualSize); Patient actualPatient = dao.getPatients("%ca", 0, null).get(0); //if actually the search returned the matching patient Assert.assertEquals(patient2, actualPatient); }
/** * @see PatientDAO#getPatients(String,String,List<QPatientIdentifierType;>,null) */ @Test public void getPatients_shouldEscapeAnAsterixCharacterInNamePhrase() { Patient patient2 = patientService.getPatient(2); PersonName name = new PersonName("*cats", "and", "dogs"); patient2.addName(name); patientService.savePatient(patient2); //add a new closely matching name to another patient Patient patient6 = patientService.getPatient(6); PersonName name6 = new PersonName("acats", "and", "dogs"); patient6.addName(name6); patient6.getPatientIdentifier().setPreferred(true); patientService.savePatient(patient6); updateSearchIndex(); //we expect only one matching patient int actualSize = dao.getPatients("*ca", 0, null).size(); Assert.assertEquals(1, actualSize); //if actually the search returned the matching patient Patient actualPatient = dao.getPatients("*ca", 0, null).get(0); Assert.assertEquals(patient2, actualPatient); }
/** * @see PatientValidator#validate(Object,Errors) */ @Test public void validate_shouldFailValidationIfAPreferredPatientIdentifierIsNotChosen() { Patient pa = Context.getPatientService().getPatient(2); Assert.assertNotNull(pa.getPatientIdentifier()); //set all identifiers to be non-preferred for (PatientIdentifier id : pa.getIdentifiers()) id.setPreferred(false); Errors errors = new BindException(pa, "patient"); validator.validate(pa, errors); Assert.assertTrue(errors.hasErrors()); }
@Test public void getPatients_shouldGetNewPatientByIdentifierStartMatch() { String oldPropertyValue = globalPropertiesTestHelper.setGlobalProperty( OpenmrsConstants.GLOBAL_PROPERTY_PATIENT_IDENTIFIER_SEARCH_MATCH_MODE, OpenmrsConstants.GLOBAL_PROPERTY_PATIENT_SEARCH_MATCH_START); Patient patient = patientService.getPatient(2); PatientIdentifier patientIdentifier = new PatientIdentifier("OM292", patientService.getPatientIdentifierType(5), Context .getLocationService().getLocation(1)); patient.addIdentifier(patientIdentifier); patientService.savePatient(patient); updateSearchIndex(); //Check for partial identifier match List<Patient> patients = dao.getPatients("OM", false, 0, null); Assert.assertEquals(1, patients.size()); Assert.assertEquals("OM292", patients.get(0).getPatientIdentifier(5).toString()); if (oldPropertyValue != null) { globalPropertiesTestHelper.setGlobalProperty(OpenmrsConstants.GLOBAL_PROPERTY_PATIENT_IDENTIFIER_SEARCH_MATCH_MODE, oldPropertyValue); } else { globalPropertiesTestHelper.purgeGlobalProperty(OpenmrsConstants.GLOBAL_PROPERTY_PATIENT_IDENTIFIER_SEARCH_MATCH_MODE); } }
/** * @see PatientValidator#validate(Object,Errors) */ @Test public void validate_shouldFailValidationIfAPreferredPatientIdentifierIsNotChosenForVoidedPatients() { Patient pa = Context.getPatientService().getPatient(432); Assert.assertTrue(pa.getVoided());//sanity check Assert.assertNotNull(pa.getPatientIdentifier()); for (PatientIdentifier id : pa.getIdentifiers()) id.setPreferred(false); Errors errors = new BindException(pa, "patient"); validator.validate(pa, errors); Assert.assertTrue(errors.hasErrors()); }
/** * @param patient * @return identifier + name (for concise display purposes) */ @PropertyGetter("display") public String getDisplayString(Patient patient) { if (patient.getPatientIdentifier() == null) return ""; return patient.getPatientIdentifier().getIdentifier() + " - " + patient.getPersonName().getFullName(); }
Assert.assertEquals("BAH509", patients.get(0).getPatientIdentifier(5).toString()); if (oldPropertyValue != null) { globalPropertiesTestHelper.setGlobalProperty(OpenmrsConstants.GLOBAL_PROPERTY_PATIENT_IDENTIFIER_SEARCH_MATCH_MODE,
/** * @param member the patient * @return string that contains cohort member's identifier and full name */ @PropertyGetter("display") public String getDisplayString(CohortMember1_8 member) { if (member.getPatient().getPatientIdentifier() == null) return ""; return member.getPatient().getPatientIdentifier().getIdentifier() + " - " + member.getPatient().getPersonName().getFullName(); } }
OpenMRSPatient getMrsPatient(org.openmrs.Patient patient) { final PatientIdentifier patientIdentifier = patient.getPatientIdentifier(); MRSFacility mrsFacility = ((patientIdentifier != null) ? facilityAdapter.convertLocationToFacility(patientIdentifier.getLocation()) : null); String motechId = (patientIdentifier != null) ? patientIdentifier.getIdentifier() : null; OpenMRSPerson mrsPerson = PersonHelper.openMRSToMRSPerson(patient); return new OpenMRSPatient(String.valueOf(patient.getId()), motechId, mrsPerson, mrsFacility); }
@Test public void shouldRespectPreferredIdentifier() throws Exception { String uuid = "ba1b19c2-3ed6-4f63-b8c0-f762dc8d7562"; String preferredIdentifier = "12345678"; String json = "{ \"person\": \"" + uuid + "\", \"identifiers\": [" + "{ \"identifier\":\"1234\", \"identifierType\":\"2f470aa8-1d73-43b7-81b5-01f0c0dfa53c\", \"location\":\"9356400c-a5a2-4532-8f2b-2361b3446eb8\"}, " + "{\"identifier\":\"" + preferredIdentifier + "\", \"identifierType\":\"2f470aa8-1d73-43b7-81b5-01f0c0dfa53c\", \"location\":\"9356400c-a5a2-4532-8f2b-2361b3446eb8\", \"preferred\": true} ] }"; deserialize(handle(newPostRequest(getURI(), json))); PatientIdentifier prefIdentifier = service.getPatientByUuid(uuid).getPatientIdentifier(); assertTrue(prefIdentifier.isPreferred()); assertEquals(preferredIdentifier, prefIdentifier.getIdentifier()); }
@Override public void testResults(SubmissionResults results) { Date datePartOnly = ymdToDate(dateAsString(date)); results.assertNoErrors(); results.assertPatient(); Assert.assertEquals("Given", results.getPatient().getPersonName().getGivenName()); Assert.assertEquals("Family", results.getPatient().getPersonName().getFamilyName()); Assert.assertEquals("F", results.getPatient().getGender()); Assert.assertEquals(datePartOnly, results.getPatient().getBirthdate()); Assert.assertEquals(false, results.getPatient().getBirthdateEstimated()); Assert.assertEquals("987654-1", results.getPatient().getPatientIdentifier().getIdentifier()); List<PatientProgram> patientPrograms = Context.getProgramWorkflowService().getPatientPrograms( results.getPatient(), null, null, null, null, null, false); Assert.assertTrue(patientPrograms.size() == 1); } }.run();
@Override public void testEditedResults(SubmissionResults results) { Date datePartOnly = ymdToDate(dateAsString(date)); results.assertNoErrors(); results.assertPatient(); Assert.assertEquals("Given", results.getPatient().getPersonName().getGivenName()); Assert.assertEquals("Family", results.getPatient().getPersonName().getFamilyName()); Assert.assertEquals("F", results.getPatient().getGender()); Assert.assertEquals(datePartOnly, results.getPatient().getBirthdate()); Assert.assertEquals(false, results.getPatient().getBirthdateEstimated()); Assert.assertEquals("987654-1", results.getPatient().getPatientIdentifier().getIdentifier()); } }.run();
@Override public void testResults(SubmissionResults results) { Date datePartOnly = ymdToDate(dateAsString(date)); results.assertNoErrors(); results.assertPatient(); Assert.assertEquals("Given", results.getPatient().getPersonName().getGivenName()); Assert.assertEquals("Family", results.getPatient().getPersonName().getFamilyName()); Assert.assertEquals("F", results.getPatient().getGender()); Assert.assertEquals(datePartOnly, results.getPatient().getBirthdate()); Assert.assertEquals(false, results.getPatient().getBirthdateEstimated()); Assert.assertEquals("987654-1", results.getPatient().getPatientIdentifier().getIdentifier()); results.assertEncounterCreated(); Assert.assertEquals(datePartOnly, results.getEncounterCreated().getEncounterDatetime()); results.assertProvider(502); results.assertLocation(2); } }.run();