use of org.openmrs.api.PatientService in project openmrs-core by openmrs.
the class PatientDataVoidHandlerTest method handle_shouldVoidCohortMemberships.
@Test
public void handle_shouldVoidCohortMemberships() throws Exception {
// test a corner case by letting the same patient belong to the cohort for two separate periods
CohortMembership membership1 = new CohortMembership(7, parseDate("2001-01-01", "yyyy-MM-dd"));
membership1.setEndDate(parseDate("2001-12-31", "yyyy-MM-dd"));
CohortMembership membership2 = new CohortMembership(7, parseDate("2017-01-01", "yyyy-MM-dd"));
CohortMembership membership3 = new CohortMembership(8);
Cohort cohort = new Cohort();
cohort.setName("Cohort");
cohort.setDescription("Description");
cohort.setUuid(COHORT_UUID);
cohort.addMembership(membership1);
cohort.addMembership(membership2);
cohort.addMembership(membership3);
cohortService.saveCohort(cohort);
PatientService patientService = Context.getPatientService();
patientService.voidPatient(patientService.getPatient(7), "void reason");
Collection<CohortMembership> memberships = cohortService.getCohortByUuid(COHORT_UUID).getMemberships(false);
assertEquals(1, memberships.size());
// patientId 7 was voided
assertEquals(8, (int) memberships.iterator().next().getPatientId());
}
use of org.openmrs.api.PatientService in project openmrs-core by openmrs.
the class PatientIdentifierValidatorTest method validateIdentifier_shouldPassIfInUseAndIdTypeUniquenessIsSetToNonUnique.
/**
* @see PatientIdentifierValidator#validateIdentifier(PatientIdentifier)
*/
@Test
public void validateIdentifier_shouldPassIfInUseAndIdTypeUniquenessIsSetToNonUnique() {
PatientService patientService = Context.getPatientService();
PatientIdentifier duplicateId = patientService.getPatientIdentifier(1);
Assert.assertNotNull(duplicateId.getLocation());
PatientIdentifierType idType = duplicateId.getIdentifierType();
idType.setUniquenessBehavior(UniquenessBehavior.NON_UNIQUE);
patientService.savePatientIdentifierType(idType);
PatientIdentifier pi = new PatientIdentifier(duplicateId.getIdentifier(), idType, duplicateId.getLocation());
PatientIdentifierValidator.validateIdentifier(pi);
}
use of org.openmrs.api.PatientService in project openmrs-core by openmrs.
the class MigrationHelper method importProgramsAndStatuses.
public static int importProgramsAndStatuses(List<String> programWorkflow) throws ParseException {
ProgramWorkflowService pws = Context.getProgramWorkflowService();
PatientService ps = Context.getPatientService();
List<PatientProgram> patientPrograms = new ArrayList<>();
Map<String, PatientProgram> knownPatientPrograms = new HashMap<>();
Map<String, Program> programsByName = new HashMap<>();
for (Program program : pws.getAllPrograms()) {
programsByName.put(program.getConcept().getName(Context.getLocale(), false).getName(), program);
}
for (String s : programWorkflow) {
// ENROLLMENT:HIVEMR-V1,9266,IMB HIV PROGRAM,2005-08-25,
log.debug(s);
if (s.startsWith("ENROLLMENT:")) {
s = s.substring(s.indexOf(":") + 1);
String[] temp = s.split(",");
PatientIdentifierType pit = ps.getPatientIdentifierTypeByName(temp[0]);
String identifier = temp[1];
List<PatientIdentifier> pis = ps.getPatientIdentifiers(identifier, Collections.singletonList(pit), null, null, null);
if (pis.size() != 1) {
throw new IllegalArgumentException("Found " + pis.size() + " instances of identifier " + identifier + " of type " + pit);
}
Patient p = pis.get(0).getPatient();
Program program = programsByName.get(temp[2]);
if (program == null) {
throw new RuntimeException("Couldn't find program \"" + temp[2] + "\" in " + programsByName);
}
Date enrollmentDate = temp.length < 4 ? null : parseDate(temp[3]);
Date completionDate = temp.length < 5 ? null : parseDate(temp[4]);
PatientProgram pp = new PatientProgram();
pp.setPatient(p);
pp.setProgram(program);
pp.setDateEnrolled(enrollmentDate);
pp.setDateCompleted(completionDate);
patientPrograms.add(pp);
// "HIVEMR-V1,9266,IMB HIV PROGRAM"
knownPatientPrograms.put(temp[0] + "," + temp[1] + "," + temp[2], pp);
} else if (s.startsWith("STATUS:")) {
// STATUS:HIVEMR-V1,9266,IMB HIV PROGRAM,TREATMENT STATUS,ACTIVE,2005-08-25,,
s = s.substring(s.indexOf(":") + 1);
String[] temp = s.split(",");
Program program = programsByName.get(temp[2]);
if (program == null) {
throw new RuntimeException("Couldn't find program \"" + temp[2] + "\" in " + programsByName);
}
ProgramWorkflow wf = program.getWorkflowByName(temp[3]);
if (wf == null) {
throw new RuntimeException("Couldn't find workflow \"" + temp[3] + "\" for program " + program + " (in " + program.getAllWorkflows() + ")");
}
ProgramWorkflowState st = wf.getStateByName(temp[4]);
if (st == null) {
throw new RuntimeException("Couldn't find state \"" + temp[4] + "\" for workflow " + wf + " (in " + wf.getStates() + ")");
}
Date startDate = temp.length < 6 ? null : parseDate(temp[5]);
Date endDate = temp.length < 7 ? null : parseDate(temp[6]);
PatientState state = new PatientState();
PatientProgram pp = knownPatientPrograms.get(temp[0] + "," + temp[1] + "," + temp[2]);
state.setPatientProgram(pp);
state.setState(st);
state.setStartDate(startDate);
state.setEndDate(endDate);
pp.getStates().add(state);
}
}
int numAdded = 0;
for (PatientProgram pp : knownPatientPrograms.values()) {
pws.savePatientProgram(pp);
++numAdded;
}
return numAdded;
}
Aggregations