/** * On Grid Selection Changed event handler */ protected void onGrdTargetSelectionChanged() throws PresentationLogicException { // Get the latest information from domain if (form.grdTarget().getValue() instanceof PatientGoalRefVo) { form.getLocalContext().setSelectedRowValue(domain.getPatientGoal((PatientGoalRefVo) form.grdTarget().getValue())); form.getLocalContext().setSelectedPatientGoalVo((PatientGoalVo) form.getLocalContext().getSelectedRowValue()); populateInstanceControls((PatientGoalVo) form.getLocalContext().getSelectedRowValue(), null); } else if (form.grdTarget().getValue() instanceof PatientGoalTargetRefVo) { if (!(form.grdTarget().getSelectedRow().getParentRow().getValue() instanceof PatientGoalRefVo)) throw new CodingRuntimeException("Major logical error - A PatientGoalTarget must be child of a PatientGoal"); form.getLocalContext().setSelectedRowValue(domain.getPatientGoalTarget((PatientGoalTargetRefVo) form.grdTarget().getValue())); populateInstanceControls(domain.getPatientGoal((PatientGoalRefVo) form.grdTarget().getSelectedRow().getParentRow().getValue()), (PatientGoalTargetVo) form.getLocalContext().getSelectedRowValue()); } // Update controls state updateControlsState(); }
/** * Function used to set up a row with a PatientGoalTarget value * * @param row - * the provided row to set up with PatientGoalTarget; the row can * not be null * @param patientGoalTarget - * PatientGoalTarget to be set up on row */ private void setPatientGoalTargetRow(grdTargetRow row, PatientGoalTargetVo patientGoalTarget) { // Do a check on parameters if (patientGoalTarget == null) return; if (row == null) throw new CodingRuntimeException("Major Logical Error - Null row provided to set up a PatientGoalTarget"); // Set row columns row.setcolTarget(patientGoalTarget.getTarget()); row.setcolTargetDate(patientGoalTarget.getTargetDate()); row.setcolAchievedDate(patientGoalTarget.getDateAchieved()); row.setcolLOA(patientGoalTarget.getLOAIsNotNull() ? patientGoalTarget.getLOA().getText() : null); row.setcolReason(patientGoalTarget.getReasonForNonA()); row.setTooltipForcolReason(patientGoalTarget.getReasonForNonA()); // Set row value row.setValue(patientGoalTarget); }
/** * Function used to save a PatientGoalTarget to database */ public PatientGoalTargetVo savePatientGoalTarget(PatientGoalTargetVo patientGoalTarget) throws StaleObjectException, ForeignKeyViolationException, UniqueKeyViolationException { // Check if PatientGoalTargetVo was validated if (patientGoalTarget == null || !patientGoalTarget.isValidated()) { throw new DomainRuntimeException("Logical error - PatientGoalTargetVo has not been validated"); } // Extract a domain object from PatientGoalTargetVo DomainFactory factory = getDomainFactory(); PatientGoalTarget doPatientGoalTarget = PatientGoalTargetVoAssembler.extractPatientGoalTarget(factory, patientGoalTarget); // Save to database factory.save(doPatientGoalTarget); // Return saved PatientGoalTargetVo (with ID from database) return PatientGoalTargetVoAssembler.create(doPatientGoalTarget); }
/** * Function used to edit a PatientGoal or a PatientGoalTarget instance */ public void updateInstance() { if (form.getLocalContext().getSelectedRowValue() instanceof PatientGoalRefVo) { // Get PatientGoal object data from domain form.getLocalContext().setSelectedRowValue(domain.getPatientGoal((PatientGoalRefVo) form.getLocalContext().getSelectedRowValue())); // Populate instance controls with fresh data populateInstanceControls((PatientGoalVo) form.getLocalContext().getSelectedRowValue(), null); } else if (form.getLocalContext().getSelectedRowValue() instanceof PatientGoalTargetRefVo) { // Check for a valid value in parent row if (form.grdTarget().getSelectedRow() == null || form.grdTarget().getSelectedRow().getParentRow() == null || !(form.grdTarget().getSelectedRow().getParentRow().getValue() instanceof PatientGoalRefVo)) throw new CodingRuntimeException("Major Logical Error - PatientGoalTarget rows must have a PatientGoal target"); // Get parent PatientGoal object data from domain PatientGoalVo patientGoal = domain.getPatientGoal((PatientGoalRefVo) form.grdTarget().getSelectedRow().getParentRow().getValue()); // Get PatientGoalTarget object data from domain form.getLocalContext().setSelectedRowValue(domain.getPatientGoalTarget((PatientGoalTargetRefVo) form.getLocalContext().getSelectedRowValue())); // Populate instance controls with fresh data populateInstanceControls(patientGoal, (PatientGoalTargetVo) form.getLocalContext().getSelectedRowValue()); } // Set form in EDIT mode form.setMode(FormMode.EDIT); }
/** * Function used to populate the Instance controls It has two parameters * * @param patientGoal - * Represents PatientGoal; this parameter should never be null * (pass it even when a PatientGoalTarget is selected) * @param patientGoalTarget - * Represents PatientGoalTarget; this parameter should be null * when a PatientGoal row is selected in grid */ private void populateInstanceControls(PatientGoalVo patientGoal, PatientGoalTargetVo patientGoalTarget) { // Clear instance controls clearInstanceControls(); // If patient goal is not null populate contents // (Should never occur) if (patientGoal != null) { form.ctnGoals().lyrGoals().Goal().cmbAreaOfNeed().setValue(patientGoal.getAreaOfNeed()); form.ctnGoals().lyrGoals().Goal().cmbGoalType().setValue(patientGoal.getGoalType()); form.ctnGoals().lyrGoals().Goal().txtGoal().setValue(patientGoal.getGoalText()); form.ctnGoals().lyrGoals().Goal().dtimCreated().setValue(patientGoal.getCreatedDateTime()); // For authoring HCP check if there is one present first if (patientGoal.getAuthoringHCPIsNotNull()) { form.ctnGoals().lyrGoals().Goal().qmbAuthoringHCP().newRow(patientGoal.getAuthoringHCP(), patientGoal.getAuthoringHCP().toString()); form.ctnGoals().lyrGoals().Goal().qmbAuthoringHCP().setValue(patientGoal.getAuthoringHCP()); } form.ctnGoals().lyrGoals().Goal().dteAchieved().setValue(patientGoal.getDateAchieved()); form.getLocalContext().setSelectedPatientGoalVo(patientGoal); } // If patient goal target is not null populate contents if (patientGoalTarget != null) { form.ctnGoals().lyrGoals().Target().txtTarget().setValue(patientGoalTarget.getTarget()); form.ctnGoals().lyrGoals().Target().cmbLOA().setValue(patientGoalTarget.getLOA()); form.ctnGoals().lyrGoals().Target().txtReasonNonA().setValue(patientGoalTarget.getReasonForNonA()); form.ctnGoals().lyrGoals().Target().dteTargetDate().setValue(patientGoalTarget.getTargetDate()); form.ctnGoals().lyrGoals().Target().dteAchievedDate().setValue(patientGoalTarget.getDateAchieved()); } }
/** * Function used to get a PatientGoalTarget from database */ public PatientGoalTargetVo getPatientGoalTarget(PatientGoalTargetRefVo patientGoalTargetRef) { // If no PatientGoalTargetRefVo is provided or no ID is present return null if (patientGoalTargetRef == null || !patientGoalTargetRef.getID_PatientGoalTargetIsNotNull()) return null; // Return PatientGoalTarget based on ID return PatientGoalTargetVoAssembler.create((PatientGoalTarget) getDomainFactory().getDomainObject(PatientGoalTarget.class, patientGoalTargetRef.getID_PatientGoalTarget())); }
/** * Function used to temporarily add a target to a goal */ private boolean addNewTargetToSelectedGoal() { // Not only the local context containing the selected object needs to be // a PatientGoal, // but also in the grid on the form a row must be selected, and that row // value must be of type PatientGoal // Check for a selected PatientGoal if (!(form.getLocalContext().getSelectedRowValue() instanceof PatientGoalVo)) throw new CodingRuntimeException("Major Logical Error - Can only add a PatientGoalTarget to a PatientGoal"); // Check for a selected row if (form.grdTarget().getSelectedRow() != null && !(form.grdTarget().getSelectedRow().getValue() instanceof PatientGoalRefVo)) throw new CodingRuntimeException("Major Logical Error - Can only add a PatientGoalTarget to a selected Patient Goal"); // Get a PatientGoalTargetVo from screen data PatientGoalTargetVo patientGoalTarget = populatePatientGoalTargetFromScreen(); // Validate PatientGoalTarget VO obtained from screen data String[] errors = patientGoalTarget.validate(); if (errors != null && errors.length > 0) { engine.showErrors(errors); return false; } // Add a child row to currently selected row with PatientGoalTarget // value grdTargetRow newRow = form.grdTarget().getSelectedRow().getRows().newRow(); setPatientGoalTargetRow(newRow, patientGoalTarget); // Set background color for new row newRow.setBackColor(Color.Bisque); // Get PatientGoalVo from local context PatientGoalVo patientGoal = (PatientGoalVo) form.getLocalContext().getSelectedRowValue(); // Check PatientGoal target collection - create a new collection if need // to if (!patientGoal.getTargetIsNotNull()) { patientGoal.setTarget(new PatientGoalTargetVoCollection()); } // Add target to selected PatientGoal patientGoal.getTarget().add(patientGoalTarget); return true; }
/** * Function used to set up a GridRow with a PatientGoal value * * @param row - * the provided row to set up with PatientGoal; the row can not * be null * @param patientGoal - * PatientGoal to be set up on row */ private void setPatientGoalRow(grdTargetRow row, PatientGoalVo patientGoal) { // Do a check on parameters if (patientGoal == null) return; // If a null row is provided, then it's a major logical error if (row == null) throw new CodingRuntimeException("Major Logical Error - Null row provided to set up a PatientGoal"); // Build the display text to display for the PatientGoal StringBuffer displayText = new StringBuffer(); if (patientGoal.getAreaOfNeedIsNotNull()) displayText.append(patientGoal.getAreaOfNeed().getText()); if (patientGoal.getGoalTypeIsNotNull()) displayText.append(", ").append(patientGoal.getGoalType().getText()); if (patientGoal.getCreatedDateTimeIsNotNull()) displayText.append(", ").append(patientGoal.getCreatedDateTime()); if (patientGoal.getGoalTextIsNotNull()) displayText.append(", ").append(patientGoal.getGoalText()); row.setcolTarget(displayText.toString()); // Set up the tool tip for the row if (patientGoal.getGoalTextIsNotNull()) row.setTooltip("<b>Goal:</b> " + patientGoal.getGoalText()); // Set the row value row.setValue(patientGoal); // Set up PatientGoal row background color row.setBackColor(Color.LightYellow); // Set up PatientGoal targets (or color the row in LightYellow if it has // no targets) if (patientGoal.getTargetIsNotNull()) { for (int i = 0; i < patientGoal.getTarget().size(); i++) { PatientGoalTargetVo patientGoalTarget = patientGoal.getTarget().get(i); // Skip null entries in collection if (patientGoalTarget == null) continue; setPatientGoalTargetRow(row.getRows().newRow(), patientGoalTarget); } // Expand the row row.setExpanded(true); } }
/** * Function used to create a new PatientGoalTarget from screen data; it * calls populatePatientGoalTargetFromScreen(null) * * @return a new PatientGoalTarget object populated with data from screen */ private PatientGoalTargetVo populatePatientGoalTargetFromScreen() { return populatePatientGoalTargetFromScreen(null); }