/** * Calculates the postpartum end date as 6 months past the delivery date. * * <p>NOTE: In the absence of a delivery date, the EDC is used. * * @return The end date of the postpartum stage */ public Date getPostpartumStageEndDate() { Date deliveryDate = null; if (Functions.observation(mcProgramObs.getObs(), MCDeliveryReportConcepts.DELIVERY_REPORT) != null) { final Obs deliveryDateObs = mcProgramObs.getDeliveryReport().getMember(MCDeliveryReportConcepts.DELIVERY_DATE); if (deliveryDateObs != null) { deliveryDate = deliveryDateObs.getValueDatetime(); } } if (deliveryDate == null) { // use EDC deliveryDate = mcProgramObs.getEstimatedDateOfConfinement(); } if (deliveryDate != null) { final Calendar sixMonthsAfterDeliveryDate = Calendar.getInstance(); sixMonthsAfterDeliveryDate.setTime(DateUtil.stripTime(deliveryDate)); sixMonthsAfterDeliveryDate.add(Calendar.MONTH, 6); // return the calculated postpartum stage end date return sixMonthsAfterDeliveryDate.getTime(); } // postpartum stage end date is not available return null; }
/** * 1.4.4 Returning to ACTIVE status: If coming from an ADMITTED status, the status of the Delivery * Record is checked. If it has not yet been updated (no delivery date is entered), the form is * displayed (refer to Section 2.1.1) * * @return */ public boolean isDeliveryReportNeeded() { if (isProgramConcluded()) { // program already concluded, no need for delivery report return false; } final List<PatientConsultStatus> statuses = mcProgramObs.getAllPatientConsultStatus(); if (statuses.size() > 1) { final PatientConsultStatus previous = statuses.get(statuses.size() - 2); final PatientConsultStatus current = statuses.get(statuses.size() - 1); // check if status was 'active' and coming from 'admitted' if (current.getStatus() == MaternalCareProgramStates.ACTIVE // && previous.getStatus() == MaternalCareProgramStates.ADMITTED) { // if no delivery report has been created yet, then we need to ask the user to create one if (Functions.observation(mcProgramObs.getObs(), MCDeliveryReportConcepts.DELIVERY_REPORT) == null) { // no delivery report created yet: we need to pop-up the delivery report dialog return true; } } } // delivery report doesn't need to be displayed return false; }
public void setMcProgramObs(MaternalCareProgramObs mcProgramObs) { this.mcProgramObs = mcProgramObs; // also store into the parent observation map for cascade saving getObservationMap().put(mcProgramObs.getObs().getConcept().getId(), mcProgramObs.getObs()); }