Examples of PatientProgram


Examples of org.openmrs.PatientProgram

        ProgramWorkflow workflow = Context.getProgramWorkflowService().getWorkflow(100);
       
        ProgramWorkflowState startState = Context.getProgramWorkflowService().getStateByUuid(START_STATE);
        ProgramWorkflowState endState = Context.getProgramWorkflowService().getStateByUuid(END_STATE);
       
        PatientProgram patientProgram = Context.getProgramWorkflowService().getPatientPrograms(patient, workflow.getProgram(), null, null, null, null, false).get(0);
        Assert.assertNotNull(patientProgram);
       
        // assert that the patient program only has two states
        Assert.assertEquals(2, patientProgram.statesInWorkflow(workflow, false).size());
       
        // verify that the start state
        PatientState patientState = getPatientState(patientProgram, startState, FURTHER_PAST_DATE);
        Assert.assertNotNull(patientState);
        Assert.assertEquals(dateAsString(FURTHER_PAST_DATE), dateAsString(patientState.getStartDate()));
View Full Code Here

Examples of org.openmrs.PatientProgram

        results.assertProvider(502);
        results.assertLocation(2);
       
        // patient should now be in the middle state
        ProgramWorkflowState state = Context.getProgramWorkflowService().getStateByUuid(MIDDLE_STATE);
        PatientProgram patientProgram = getPatientProgramByState(results.getPatient(), state, DATE);
        PatientState patientState = getPatientState(patientProgram, state, DATE);
        Assert.assertNotNull(patientProgram);
        Assert.assertEquals(dateAsString(DATE), dateAsString(patientState.getStartDate()));
        Assert.assertNull(patientState.getEndDate());
      }
View Full Code Here

Examples of org.openmrs.PatientProgram

        results.assertProvider(502);
        results.assertLocation(2);
       
        // patient still be in the middle state
        ProgramWorkflowState state = Context.getProgramWorkflowService().getStateByUuid(MIDDLE_STATE);
        PatientProgram patientProgram = getPatientProgramByState(results.getPatient(), state, PAST_DATE);
        PatientState patientState = getPatientState(patientProgram, state, PAST_DATE);
        Assert.assertNotNull(patientProgram);
        Assert.assertEquals(dateAsString(PAST_DATE), dateAsString(patientState.getStartDate()));
        Assert.assertNull(patientState.getEndDate());
      }
View Full Code Here

Examples of org.openmrs.PatientProgram

        results.assertProvider(502);
        results.assertLocation(2);
       
        // patient should now be in the middle state
        ProgramWorkflowState state = Context.getProgramWorkflowService().getStateByUuid(MIDDLE_STATE);
        PatientProgram patientProgram = getPatientProgramByState(results.getPatient(), state, DATE);
        PatientState patientState = getPatientState(patientProgram, state, DATE);
        Assert.assertNotNull(patientProgram);
        Assert.assertEquals(dateAsString(DATE), dateAsString(patientState.getStartDate()));
        Assert.assertNull(patientState.getEndDate());
      }
View Full Code Here

Examples of org.openmrs.PatientProgram

                Assert.assertEquals(1, Context.getProgramWorkflowService().getPatientPrograms(patient, Context.getProgramWorkflowService().getProgram(10), null, null, null, null, false).size());

                // double check that states have been set
                ProgramWorkflowState state = Context.getProgramWorkflowService().getStateByUuid(START_STATE);
                ProgramWorkflowState anotherState = Context.getProgramWorkflowService().getStateByUuid("67337cdc-53ad-11e1-8cb6-00248140a5eb");
                PatientProgram patientProgram = getPatientProgramByState(results.getPatient(), state, DATE);
                PatientState patientState = getPatientState(patientProgram, state, DATE);
                PatientState anotherPatientState = getPatientState(patientProgram, anotherState, DATE);

                Assert.assertNotNull(patientProgram);
                Assert.assertEquals(dateAsString(DATE), dateAsString(patientState.getStartDate()));
                Assert.assertEquals(dateAsString(DATE), dateAsString(patientProgram.getDateEnrolled()));
                Assert.assertEquals(dateAsString(DATE), dateAsString(anotherPatientState.getStartDate()));

            }
        }.run();
    }
View Full Code Here

Examples of org.openmrs.PatientProgram

    @Test
    public void shouldNotEnrollInProgramAgainIfPatientAlreadyEnrolledInProgram() throws Exception {

        // create a program enrollment for test patient
        PatientProgram patientProgram = new PatientProgram();
        patientProgram.setPatient(patient);
        patientProgram.setProgram(Context.getProgramWorkflowService().getProgram(10));
        patientProgram.setDateEnrolled(PAST_DATE);
        Context.getProgramWorkflowService().savePatientProgram(patientProgram);

        new RegressionTestHelper() {

            @Override
            public String getFormName() {
                return XML_FORM_NAME;
            }

            @Override
            public String[] widgetLabels() {
                return new String[] { "Date:", "Location:", "Provider:", "State:" };
            }

            @Override
            public void setupRequest(MockHttpServletRequest request, Map<String, String> widgets) {
                request.addParameter(widgets.get("Location:"), "2");
                request.addParameter(widgets.get("Provider:"), "502");

                //When: Html form is entered in which workflow state Y is selected
                request.addParameter(widgets.get("Date:"), dateAsString(DATE));
                request.addParameter(widgets.get("State:"), START_STATE);
            }

            @Override
            public void testResults(SubmissionResults results) {
                results.assertNoErrors();

                Assert.assertEquals(1, Context.getProgramWorkflowService().getPatientPrograms(patient, Context.getProgramWorkflowService().getProgram(10), null, null, null, null, false).size());

                // double check that state has been set
                ProgramWorkflowState state = Context.getProgramWorkflowService().getStateByUuid(START_STATE);
                PatientProgram patientProgram = getPatientProgramByState(results.getPatient(), state, DATE);
                PatientState patientState = getPatientState(patientProgram, state, DATE);

                Assert.assertNotNull(patientProgram);
                Assert.assertEquals(dateAsString(DATE), dateAsString(patientState.getStartDate()));
                Assert.assertEquals(dateAsString(PAST_DATE), dateAsString(patientProgram.getDateEnrolled()));
            }
        }.run();
    }
View Full Code Here

Examples of org.openmrs.PatientProgram

    @Test
    public void shouldNotEnrollInProgramOnEditIfPatientAlreadyEnrolledInProgram() throws Exception {

        // create a program enrollment for test patient
        PatientProgram patientProgram = new PatientProgram();
        patientProgram.setPatient(patient);
        patientProgram.setProgram(Context.getProgramWorkflowService().getProgram(10));
        patientProgram.setDateEnrolled(PAST_DATE);
        Context.getProgramWorkflowService().savePatientProgram(patientProgram);

        new RegressionTestHelper() {

            @Override
            public String getFormName() {
                return XML_FORM_NAME;
            }

            @Override
            public String[] widgetLabels() {
                return new String[] { "Date:", "Location:", "Provider:", "State:" };
            }

            @Override
            public void setupRequest(MockHttpServletRequest request, Map<String, String> widgets) {
                request.addParameter(widgets.get("Location:"), "2");
                request.addParameter(widgets.get("Provider:"), "502");

                // on first submit, don't submit any state
                request.addParameter(widgets.get("Date:"), dateAsString(DATE));
                request.addParameter(widgets.get("State:"), "");
            }

            @Override
            public void testResults(SubmissionResults results) {
                results.assertNoErrors();

                // sanity check
                Assert.assertEquals(1, Context.getProgramWorkflowService().getPatientPrograms(patient, Context.getProgramWorkflowService().getProgram(10), null, null, null, null, false).size());

                // sanity check: program should not yet be in the start state
                ProgramWorkflowState state = Context.getProgramWorkflowService().getStateByUuid(START_STATE);
                PatientProgram patientProgram = getPatientProgramByState(results.getPatient(), state, DATE);
                Assert.assertNull(patientProgram);
            }

            public boolean doEditEncounter() {
                return true;
            }

            public String[] widgetLabelsForEdit() {
                return new String[] { "Date:", "Location:", "Provider:", "State:" };
            }

            public void setupEditRequest(MockHttpServletRequest request, Map<String,String> widgets) {
                request.setParameter(widgets.get("Location:"), "2");
                request.setParameter(widgets.get("Provider:"), "502");
                request.setParameter(widgets.get("Date:"), dateAsString(DATE));
                request.setParameter(widgets.get("State:"), START_STATE);
            }

            public void testEditedResults(SubmissionResults results) {
                results.assertNoErrors();

                Assert.assertEquals(1, Context.getProgramWorkflowService().getPatientPrograms(patient, Context.getProgramWorkflowService().getProgram(10), null, null, null, null, false).size());

                // double check that state has been set
                ProgramWorkflowState state = Context.getProgramWorkflowService().getStateByUuid(START_STATE);
                PatientProgram patientProgram = getPatientProgramByState(results.getPatient(), state, DATE);
                PatientState patientState = getPatientState(patientProgram, state, DATE);

                Assert.assertNotNull(patientProgram);
                Assert.assertEquals(dateAsString(DATE), dateAsString(patientState.getStartDate()));
                Assert.assertEquals(dateAsString(PAST_DATE), dateAsString(patientProgram.getDateEnrolled()));
            }
        }.run();
    }
View Full Code Here

Examples of org.openmrs.PatientProgram

   
    // only need to do some if the patient is not enrolled in the specified program on the specified date
    if (!HtmlFormEntryUtil.isEnrolledInProgramOnDate(patient, program, enrollmentDate)) {
      
      // see if the patient is enrolled in this program in the future
      PatientProgram pp = HtmlFormEntryUtil.getClosestFutureProgramEnrollment(patient, program, enrollmentDate);
     
      if (pp != null) { 
        //set the start dates of all states with a start date equal to the enrollment date to the selected date
        for (PatientState patientState : pp.getStates()) {
          if (OpenmrsUtil.nullSafeEquals(patientState.getStartDate(), pp.getDateEnrolled())) {
            patientState.setStartDate(enrollmentDate);
          }
        }
       
        // set the program enrollment date to the newly selected date
        pp.setDateEnrolled(enrollmentDate);
       
        patientProgramsToUpdate.add(pp);
      }
      // otherwise, create the new program
      else {
        pp = new PatientProgram();
        pp.setPatient(patient);
        pp.setProgram(program);
        if (enrollmentDate != null)
          pp.setDateEnrolled(enrollmentDate);
       
        if (states != null) {
          for (ProgramWorkflowState programWorkflowState : states) {
            pp.transitionToState(programWorkflowState, enrollmentDate);
          }
        }
        patientProgramsToCreate.add(pp);
      }
     
View Full Code Here

Examples of org.openmrs.PatientProgram

    Encounter encounter = highestOnStack(Encounter.class);
    if (encounter == null)
      throw new IllegalArgumentException("Cannot change state without an Encounter");

        // fetch any existing patient program with a state from this workflow
    PatientProgram patientProgram = HtmlFormEntryUtil.getPatientProgramByWorkflow(patient, state.getProgramWorkflow());

        // if no existing patient program, see if a patient program for this program is already set to be created at part of this submission (HTML-416)
        if (patientProgram == null) {
           patientProgram = HtmlFormEntryUtil.getPatientProgramByProgram(patientProgramsToCreate, state.getProgramWorkflow().getProgram());
        }

        if (patientProgram == null) {
            patientProgram = HtmlFormEntryUtil.getPatientProgramByProgram(patientProgramsToUpdate, state.getProgramWorkflow().getProgram());
        }

        // if patient program is still null, we need to create a new program
    if (patientProgram == null) {
      patientProgram = new PatientProgram();
      patientProgram.setPatient(patient);
      patientProgram.setProgram(state.getProgramWorkflow().getProgram());
      patientProgram.setDateEnrolled(encounter.getEncounterDatetime());
      // HACK: we need to set the date created, creator, and uuid here as a hack around a hibernate flushing issue
      // (should be able to remove this once we move to Hibernate Interceptors instead of Spring AOP to set these parameters)
      patientProgram.setDateCreated(new Date());
      patientProgram.setCreator(Context.getAuthenticatedUser());
      patientProgram.setUuid(UUID.randomUUID().toString());
     
    }
   
    for (PatientState patientState : patientProgram.statesInWorkflow(state.getProgramWorkflow(), false)) {
      if (patientState.getActive(encounter.getEncounterDatetime())) {
        if (patientState.getState().equals(state)) {
          return;
        }
      }
    }
   
    PatientState previousState = null;
    PatientState nextState = null;
    PatientState newState = new PatientState();
    newState.setPatientProgram(patientProgram);
    newState.setState(state);
    newState.setStartDate(encounter.getEncounterDatetime());
    // HACK: we need to set the date created, creator, and uuid here as a hack around a hibernate flushing issue
    // (should be able to remove this once we move to Hibernate Interceptors instead of Spring AOP to set these parameters)
    newState.setDateCreated(new Date());
    newState.setCreator(Context.getAuthenticatedUser());
    newState.setUuid(UUID.randomUUID().toString());
   
    Collection<PatientState> sortedStates = new TreeSet<PatientState>(new Comparator<PatientState>() {
     
      @Override
      public int compare(PatientState o1, PatientState o2) {
        int result = OpenmrsUtil.compareWithNullAsEarliest(o1.getStartDate(), o2.getStartDate());
        if (result == 0) {
          result = OpenmrsUtil.compareWithNullAsLatest(o1.getEndDate(), o2.getEndDate());
        }
        return result;
      }
     
    });
    sortedStates.addAll(patientProgram.statesInWorkflow(state.getProgramWorkflow(), false));
    for (PatientState currentState : sortedStates) {
     
      Date newStartDate = newState.getStartDate();
      Date currentStartDate = currentState.getStartDate();
      Date currentEndDate = currentState.getEndDate();
     
      if (currentEndDate != null) {
        if (currentEndDate.after(newStartDate)) {
          if (currentStartDate.after(newStartDate)) {
            nextState = currentState;
            break;
          } else {
            previousState = currentState;
          }
        } else {
          previousState = currentState;
        }
      } else if (currentStartDate.after(newStartDate)) {
        nextState = currentState;
        break;
      } else {
        previousState = currentState;
        nextState = null;
        break;
      }
    }
   
    if (nextState == null) {
      if (previousState != null) {
        previousState.setEndDate(newState.getStartDate());
      }
    } else {
      if (previousState != null) {
        previousState.setEndDate(newState.getStartDate());
      }
      newState.setEndDate(nextState.getStartDate());
    }
   
    patientProgram.getStates().add(newState);
   
    patientProgramsToUpdate.add(patientProgram);
  }
View Full Code Here

Examples of org.openmrs.PatientProgram

     
      @Override
      public void testResults(SubmissionResults results) {
        results.assertNoErrors();
        results.assertEncounterCreated();
        PatientProgram pp = pws.getPatientProgram(patientProgramId);
       
        //the user selected date should NOT have been set, as it is after the enrollment date
        Assert.assertEquals(ymdToDate(dateAsString(currentEnrollmentDate)), ymdToDate(dateAsString(pp.getDateEnrolled())));
       
        // make sure the state start dates have not been changed to the new enrollment date
        boolean stateStartedDuringEnrollmentHasNotChange = false;
        boolean otherStateHasNotChanged = false;
        for (PatientState patientState : pp.getStates()) {
          if (idForStateStartedOnEnrollmentDate.equals(patientState.getId())) {
            Assert.assertEquals(ymdToDate(dateAsString(currentEnrollmentDate)),
                ymdToDate(dateAsString(patientState.getStartDate())));
            stateStartedDuringEnrollmentHasNotChange = true;
          } else {
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.