@Override protected void onBtnAcceptClick() throws PresentationLogicException { if (form.getGlobalContext().RefMan.getReferralContractTypeForPatientIsNotNull() && ! form.getGlobalContext().RefMan.getReferralContractTypeForPatient().equals(ReferralManagementContractType.REFERRALTRIAGE)) { acceptReferral(null); open(); } else { if (form.getLocalContext().getSelectedRecordIsNotNull() && form.getLocalContext().getSelectedRecord().getReferralDetailsIsNotNull() && form.getLocalContext().getSelectedRecord().getReferralDetails().getServiceIsNotNull()) form.getLocalContext().setChangeServiceMessageBoxID(engine.showMessage("Do you need to change the Service from - '" + form.getLocalContext().getSelectedRecord().getReferralDetails().getService().getServiceName() + "' to some other Service ?", "Change Service", MessageButtons.YESNO)); } }
@Override protected void onBtnAcceptClick() throws PresentationLogicException { if (form.getGlobalContext().RefMan.getReferralContractTypeForPatientIsNotNull() && ! form.getGlobalContext().RefMan.getReferralContractTypeForPatient().equals(ReferralManagementContractType.REFERRALTRIAGE)) acceptReferral(); else { if (form.getLocalContext().getSelectedRecordIsNotNull() && form.getLocalContext().getSelectedRecord().getReferralDetailsIsNotNull() && form.getLocalContext().getSelectedRecord().getReferralDetails().getServiceIsNotNull()) form.getLocalContext().setChangeServiceMessageBoxID(engine.showMessage("Do you need to change the Service from - '" + form.getLocalContext().getSelectedRecord().getReferralDetails().getService().getServiceName() + "' to some other Service ?", "Change Service", MessageButtons.YESNO)); } }
private void populateListControls(ContractConfigShortVoCollection records) { clear(); if (records == null || records.size()==0) return; for (int i = 0 ; i<records.size() ; i++) { ContractConfigShortVo record = records.get(i); if (record == null) continue; grdDetailsRow newRow = form.grdDetails().getRows().newRow(); newRow.setColumnID(record.getContractId()); newRow.setColumnName(record.getContractName()); newRow.setColumnOrganisation(record.getContractOrganisationIsNotNull()?record.getContractOrganisation().getName():null); newRow.setColumnStatus(record.getStatus()); newRow.setColumnRTT(record.getDaysToRTTBreachDate()); //wdev-12676 if(record.getContractTypeIsNotNull() && record.getContractType().equals(ReferralManagementContractType.DIAGNOSTIC)) newRow.setColumnType(form.getImages().Clinical.PatientWithDiagnosticServices16); else if(record.getContractTypeIsNotNull() && record.getContractType().equals(ReferralManagementContractType.NONDIAGNOSTIC)) newRow.setColumnType(form.getImages().Clinical.PatientSeenByConsultant16); else newRow.setColumnType(null); //----------- newRow.setValue(record); } }
public Boolean isReferralDiagnostic(Integer nBookingId) { DomainFactory factory = getDomainFactory(); List contractId = factory.find("select cont.contractType.id from CatsReferral as cats left join cats.appointments as bk left join cats.contract as cont where (bk.id = '" + nBookingId + "')"); if (contractId.size() > 0&&ReferralManagementContractType.DIAGNOSTIC.getId()==((Integer)contractId.get(0)).intValue()) return true; else return false; }
private boolean isNonDiagnosticAppointment(CatsReferral catsReferral) { if(catsReferral != null && catsReferral.getDOS() != null && catsReferral.getDOS().getContract() != null && catsReferral.getDOS().getContract().getContractType() != null) { if(ReferralManagementContractType.DIAGNOSTIC.getID() == catsReferral.getDOS().getContract().getContractType().getId()) return false; } return true; }
public Boolean isThereAnyDiagnosticContractsForThisSite(OrganisationRefVo voOrg) { String hql = "from ContractConfig as cc where (cc.contractOrganisation.id = :orgID and cc.status = :actCC and cc.isRIE is null and cc.contractType = :DiagContra) "; List<?> dos = getDomainFactory().find(hql,new String[]{"orgID", "actCC", "DiagContra"},new Object[]{voOrg.getID_Organisation(), getDomLookup(PreActiveActiveInactiveStatus.ACTIVE), getDomLookup(ReferralManagementContractType.DIAGNOSTIC)}); if (dos == null || dos.size() == 0) return Boolean.FALSE; else return Boolean.TRUE; }
public void acceptReferralFromInvestigation(IfOrderInvestigationVo inv) throws DomainInterfaceException, StaleObjectException { if (inv==null) throw new DomainInterfaceException("Cannot accept referral for NULL investigation"); if(inv.getID_OrderInvestigation()==null) throw new DomainInterfaceException("Cannot accept referral investigation with NULL ID"); DomainFactory factory = getDomainFactory(); String hql="select c1_1 from CatsReferral as c1_1 left join c1_1.investigationOrders as o1_1 left join o1_1.investigations as o2_1 "+ "where o2_1.id = :invID"; List<Object> resultSet = factory.find(hql,new String[]{"invID"},new Object[]{inv.getID_OrderInvestigation()}); for (Object result : resultSet) // There should only be one but lets do them all! { CatsReferral referral = (CatsReferral)result; //http://jira/browse/WDEV-12682 if(referral.getContract()!=null&& referral.getContract().getContractType()!=null && referral.getContract().getContractType().equals(getDomLookup(ReferralManagementContractType.DIAGNOSTIC))) { CATSReferralStatus status = new CATSReferralStatus(); status.setStatusDateTime(new Date()); status.setComment("Status updated from HL7 accept message"); status.setReferralStatus(getDomLookup(ReferralApptStatus.REFERRAL_ACCEPTED)); referral.setCurrentStatus(status); referral.getStatusHistory().add(status); factory.save(referral); } } }
private boolean isNonDiagnosticAppointment(CatsReferralForRequestServiceVo record) { if(record != null && record.getDOS() != null && record.getDOS().getContract() != null && record.getDOS().getContract().getContractType() != null) { if(ReferralManagementContractType.DIAGNOSTIC.getID() == record.getDOS().getContract().getContractType().getId()) return false; } return true; }
private boolean contactIsNotDiagnosticOrDiagnosticTriage(ContractConfigForReferralDetailsComponentVo value) { if(value == null) return false; if(ReferralManagementContractType.DIAGNOSTIC.equals(value.getContractType()) || ReferralManagementContractType.DIAGNOSTICTRIAGE.equals(value.getContractType())) return false; return true; }
private boolean isNonDiagnosticAppointment(CatsReferralWizardVo record) { if(record != null && record.getDOS() != null && record.getDOS().getContract() != null && record.getDOS().getContract().getContractType() != null) { if(ReferralManagementContractType.DIAGNOSTIC.getID() == record.getDOS().getContract().getContractType().getId()) return false; } return true; }
public void generateAppointmentCancelEvent(Booking_AppointmentRefVo appointment, OrderInvestigationRefVo investigation) throws StaleObjectException { if (null == appointment) throw new DomainRuntimeException("Appointment Cannot be NULL"); DomainFactory factory = getDomainFactory(); ExternalSystemEvent event = new ExternalSystemEvent(); // We need to deal with null investigations // when (not )sending the messages if (null != investigation) { OrderInvestigation domInv = (OrderInvestigation) factory.getDomainObject(investigation); //WDEV-5912 For Investigations marked as NoInterface there are no interface calls if(domInv.getInvestigation() != null && domInv.getInvestigation().getInvestigationIndex() != null && domInv.getInvestigation().getInvestigationIndex().isNoInterface() != null && domInv.getInvestigation().getInvestigationIndex().isNoInterface()) return; if (domInv.getInvestigation()!=null&&domInv.getInvestigation().getProviderService()!=null&&domInv.getInvestigation().getProviderService().getLocationService()!=null &&domInv.getInvestigation().getProviderService().getLocationService().getService()!=null &&!(ServiceCategory.RADIOLOGY_MODALITY.getID()==( domInv.getInvestigation().getProviderService().getLocationService().getService().getServiceCategory().getId()))) return; event.setInvestigation(domInv); ProviderSystem providerSystem=domInv.getInvestigation().getProviderService().getProviderSystem(); if(!isRebookApptWithCancelandFullXOSetForProviderSystem(providerSystem)) return; event.setProviderSystem(providerSystem); } if (ReferralManagementContractType.DIAGNOSTIC.getId() == getContractTypeIdFromReferralContractForBookingId(appointment.getBoId())) return; Booking_Appointment domBookAppt = (Booking_Appointment) factory.getDomainObject(appointment); event.setAppointment(domBookAppt); event.setWasProcessed(Boolean.FALSE); event.setMessageStatus(getDomLookup(OrderMessageStatus.CREATED)); event.setEventType(getDomLookup(ExternalSystemEventTypes.CANCELAPPOINTMENT)); if(domBookAppt!=null &&domBookAppt.getSession()!=null) { event.setCancelledAppointmentLocation(domBookAppt.getSession().getSchLocation()); } factory.save(event); }
private void loadLocations() { // wdev-12682 if (form.cmbContract().getValue() != null && form.cmbContract().getValue().getContractTypeIsNotNull() && (form.cmbContract().getValue().getContractType().equals(ReferralManagementContractType.REFERRALTRIAGE) || form.cmbContract().getValue().getContractType().equals(ReferralManagementContractType.NONDIAGNOSTIC)) ) { form.lblLocation().setVisible(false); form.cmbLocation().setVisible(false); form.cmbLocation().setValue(null); } else if (form.getGlobalContext().RefMan.getDiagnosticReferralForApplicationIsNotNull() && form.getGlobalContext().RefMan.getDiagnosticReferralForApplication()) { form.cmbLocation().clear(); LocationLiteVoCollection voCollLocation = null; if (!ConfigFlag.UI.DISABLE_MULTI_SITE_CATS_FUNCTIONALITY.getValue()) { if (form.cmbContract().getValue() != null) voCollLocation = domain.listLocationByOrganisation(form.cmbContract().getValue().getContractOrganisation(), ""); } else voCollLocation = domain.listLocationLite(); if (voCollLocation != null && voCollLocation.size() > 0) { for (LocationLiteVo voLoc : voCollLocation) form.cmbLocation().newRow(voLoc, voLoc.getName()); } form.cmbLocation().setValue(form.getLocalContext().getreferralVoIsNotNull() && form.getLocalContext().getreferralVo().getID_ReferralLetterDetailsIsNotNull() ? form.getLocalContext().getreferralVo().getLocation() : null); if (form.cmbLocation().getValue() == null && form.getLocalContext().getreferralVo() == null) defaultLocation(); form.lblLocation().setVisible(true); form.cmbLocation().setVisible(true); } else { form.lblLocation().setVisible(false); form.cmbLocation().setVisible(false); form.cmbLocation().setValue(null); } }
protected void onBtnSaveClick() throws PresentationLogicException { ReferralLetterDetailsVo referralDetailsVo = getValue(); CatsReferralWizardVo voCats = null; try { String[] errors = validateUILogic(); errors = referralDetailsVo.validate(errors); if (errors != null) { engine.showErrors(errors); return; } voCats = domain.getCatsReferral(form.getGlobalContext().RefMan.getCatsReferral()); // voCats.setIsAwaitingClinicalInfo(form.getGlobalContext().RefMan.getAwaitingClinicalInfoBoolean()); // voCats.setAwaitingClinicalInfo(form.getLocalContext().getCurrentAwaitingClinicalInformationVo()); //WDEV-11713 if (!ConfigFlag.UI.DISABLE_MULTI_SITE_CATS_FUNCTIONALITY.getValue()) voCats.setContract(form.cmbContract().getValue()); form.getGlobalContext().RefMan.setReferralContractTypeForPatient(form.cmbContract().getValue().getContractType()); voCats.setReferralCategory(form.cmbCategory().getValue());//WDEV-12181 voCats.setUrgency(form.cmbUrgency().getValue()); // WDEV-17930 voCats.setConsUpgradeDate(form.dteConsUpgradeDate().getValue()); // WDEV-18452 voCats.setRTTClockImpact(form.chkActivityRTTClock().getValue()); //WDEV-18432 voCats.setReferralTransfer(form.getLocalContext().getTransferInfo()); voCats.setPathwayID(form.getLocalContext().getTransferInfoIsNotNull() ? form.getLocalContext().getTransferInfo().getPathwayID() : null); //wdev-13647 if(Boolean.TRUE.equals(ConfigFlag.UI.REFERRAL_DETAILS_DISPLAY_NEAREST_TREATMENT_CENTRE.getValue())) { voCats.setNearestTreatmentCentre(form.cmbNearestTreatmentCentreLocation().getValue()); } //--- errors = voCats.validate(errors); if (errors != null) { engine.showErrors(errors); return; } // wdev-12682 form.getLocalContext().setreferralVo(domain.save(referralDetailsVo, voCats, form.getGlobalContext().RefMan.getReferralContractTypeForPatientIsNotNull() && form.getGlobalContext().RefMan.getReferralContractTypeForPatient().equals(ReferralManagementContractType.DIAGNOSTIC))); //WDEV-11535 - update Global Context if specialty has changed if(form.getLocalContext().getreferralVoIsNotNull() && form.getLocalContext().getreferralVo().getEpisodeOfCareIsNotNull()) form.getGlobalContext().Core.setEpisodeofCareShort(form.getLocalContext().getreferralVo().getEpisodeOfCare()); } catch (StaleObjectException e) { engine.showMessage(ConfigFlag.UI.STALE_OBJECT_MESSAGE.getValue()); form.getLocalContext().setreferralVo(domain.getReferral(referralDetailsVo.toReferralLetterDetailsRefVo())); } form.getLocalContext().setcomponentEvent(ReferralDetailsComponentButtonClicked.SAVE); if (referralDetailsVo.getDateReferralReceivedIsNotNull() && referralDetailsVo.getServiceIsNotNull() && form.getLocalContext().gethasCatsReferralReferralLetterIsNotNull() && form.getLocalContext().gethasCatsReferralReferralLetter()) form.getLocalContext().setactiveDetailsButton(true); else form.getLocalContext().setactiveDetailsButton(false); form.setMode(FormMode.VIEW); //wdev-12256 form.cmbContract().clear(); // WDEV-12866 // Use the new function to list active Contracts for a specific location // ContractConfigForReferralDetailsComponentVoCollection contracts = domain.listActiveContracts(domain.getOrganisationByLocation(engine.getCurrentLocation().getID())); ContractConfigForReferralDetailsComponentVoCollection contracts = domain.listActiveContractsForLocation((LocationRefVo) engine.getCurrentLocation()); for (int i = 0; contracts != null && i < contracts.size(); i++) { form.cmbContract().newRow(contracts.get(i), contracts.get(i).getContractName()); } //---end wdev-12256 setValue(form.getLocalContext().getreferralVo(), domain.getCatsReferral(voCats)); }
private void open() { loadReferralDetails(); clearSearchCriteria(); form.btnBook().setEnabled(false); form.btnCancel().setEnabled(false); form.bookingCalendarAppts().setEnabled(false); form.bookingCalendarAppts().setCurrentMonth(new Date()); form.getLocalContext().setSch_Booking(new Sch_BookingVo()); form.getLocalContext().setisLinkingOrderInv(false); clearBookingCalendar(); form.cmbService().setEnabled(true); form.cmbActivity().setEnabled(true); form.qmbListOwner().setEnabled(true); // WDEV-18411 form.imbClear().setEnabled(true); removeAllRadiologyServices(); // WDEV-17903 - If Service in GC, default the value in if (form.getGlobalContext().Scheduling.getBookingServiceIsNotNull()) { form.cmbService().setValue( form.getGlobalContext().Scheduling.getBookingService()); if (form.cmbService().getValue() == null && form.getGlobalContext().Scheduling.getBookingService() instanceof ServiceLiteVo) { form.cmbService().newRow( form.getGlobalContext().Scheduling.getBookingService(), ((ServiceLiteVo) form.getGlobalContext().Scheduling .getBookingService()).getServiceName()); form.cmbService().setValue( form.getGlobalContext().Scheduling.getBookingService()); } } // rebooking WDEV-5213 repopulateScreen(); // wdev-12682 if (form.getGlobalContext().RefMan .getReferralContractTypeForPatientIsNotNull() && form.getGlobalContext().RefMan .getReferralContractTypeForPatient().equals( ReferralManagementContractType.DIAGNOSTIC) && form.getGlobalContext().Scheduling.getBookingAppointment() == null) { if (engine.getCurrentLocation() != null) { for (int i = 0; i < form.cmbLocation().getValues().size(); i++) { if (((LocationRefVo) form.cmbLocation().getValues().get(i)) .getID_Location().equals( engine.getCurrentLocation().getID())) { form.cmbLocation().setValue( ((LocationRefVo) form.cmbLocation().getValues() .get(i))); break; } } } } }
/** * NB - This method is called from a web service and therefore should only * be modified with extreme caution (dlaffan) * * WDEV-7448 - If PukkaJ interface is enabled this method will attempt to * send a cancel message to PukkaJ by creating an entry in OcsExternalEvent * * @param doCatsReferral * @param voAppt * @throws StaleObjectException */ public void cancelAppointmentForPukkaJ(CatsReferralRefVo catsReferral, Booking_AppointmentRefVo appt) throws StaleObjectException { if (appt == null || appt.getID_Booking_Appointment() == null) throw new CodingRuntimeException("appt is null or id not provided in method processAppointmentForPukkaJ"); if (catsReferral == null || catsReferral.getID_CatsReferral() == null) throw new CodingRuntimeException("catsReferral is null or id not provided in method processAppointmentForPukkaJ"); DomainFactory factory = getDomainFactory(); CatsReferral doCatsReferral = (CatsReferral) factory.getDomainObject(catsReferral); if (doCatsReferral.getContract() != null && doCatsReferral.getContract().getContractType() != null && doCatsReferral.getContract().getContractType().getId() != ReferralManagementContractType.DIAGNOSTIC.getId()) return; Booking_Appointment doAppt = (Booking_Appointment) factory.getDomainObject(appt); if (doCatsReferral.getAppointments().size() > 0) { Iterator it = doCatsReferral.getAppointments().iterator(); if (doAppt.getApptStatus() != null && (doAppt.getApptStatus().equals(getDomLookup(Status_Reason.CANCELLED)))) { if (countExistingReferralAppts(doCatsReferral, Status_Reason.BOOKED) == 0) { Iterator itOrdInvA = doCatsReferral.getOrderInvAppts().iterator(); OrderInvAppt doOrdInvAppt = null; if(itOrdInvA.hasNext()) doOrdInvAppt = (OrderInvAppt) itOrdInvA.next(); //WDEV-7448 - null pointer fix here - code was presuming that an ordInvAppt always exists if(doOrdInvAppt != null) { doOrdInvAppt.getOrderInvestigation().setAppointmentDate(null); factory.save(doOrdInvAppt.getOrderInvestigation()); doCatsReferral.getOrderInvAppts().remove(doOrdInvAppt); try { factory.delete(doOrdInvAppt); } catch (ForeignKeyViolationException e) { throw new DomainRuntimeException(e.getMessage()); } factory.save(doCatsReferral); OCSExternalEvents impl = (OCSExternalEvents) getDomainImpl(OCSExternalEventsImpl.class); impl.generateOrderUpdateEvent(new Booking_AppointmentRefVo(doAppt.getId(), doAppt.getVersion()), new OrderInvestigationRefVo(doOrdInvAppt.getOrderInvestigation().getId(), doOrdInvAppt.getOrderInvestigation().getVersion())); } } } } }
/** * WDEV-12875 * Function used to analyse ContractConfiguration records for all Organisations on the branch (up form provided location) * @return <b>true</b> if at least one ContractConfiguration record active and of type Diagnostic, <b>false</b> otherwise */ public Boolean hasLocationDiagnosicContracts(LocationRefVo location) { // If location is not provided if (location == null) return false; // Get root Location id Integer rootLocation = getRootLocationID(location.getID_Location()); // Get the ID for all organisations on the branch up to root organisation ArrayList<Integer> organisations = listParentOrganisations(rootLocation); // If no organisations are found then return false if (organisations == null || organisations.size() == 0) return false; // Build query to retrieve first Active contract or type Diagnostic for the organisations on the branch StringBuilder query = new StringBuilder(); ArrayList<String> paramNames = new ArrayList<String>(); ArrayList<Object> paramValues = new ArrayList<Object>(); query.append("SELECT contract FROM ContractConfig AS contract WHERE contract.status.id = :ACTIVE AND contract.contractType.id = :DIAG "); query.append("AND contract.isRIE is null AND contract.contractOrganisation.id IN ("); paramNames.add("ACTIVE"); paramValues.add(PreActiveActiveInactiveStatus.ACTIVE.getID()); paramNames.add("DIAG"); paramValues.add(ReferralManagementContractType.DIAGNOSTIC.getID()); String separator = ""; for (int i = 0; i < organisations.size(); i++) { query.append(separator); query.append(organisations.get(i)); separator = ", "; } query.append(")"); // Query the database for the first ContractConfig record (non RIE, Active, of type Diagnostic) for organisations on the branch of the provided location ContractConfigForReferralDetailsComponentVo contractConfig = ContractConfigForReferralDetailsComponentVoAssembler.create((ContractConfig) getDomainFactory().findFirst(query.toString(), paramNames, paramValues)); // If at least one ContractConfig record is found then return true, otherwise return false if (contractConfig != null) return true; return false; }
private void loadLocations() { // wdev-12682 if (form.cmbContract().getValue() != null && form.cmbContract().getValue().getContractTypeIsNotNull() && !form.cmbContract().getValue().getContractType().equals(ReferralManagementContractType.DIAGNOSTIC)) { form.lblLocation().setVisible(false); form.cmbLocation().setVisible(false); form.cmbLocation().setValue(null); } else if (form.getGlobalContext().RefMan.getDiagnosticReferralForApplicationIsNotNull() && form.getGlobalContext().RefMan.getDiagnosticReferralForApplication()) { form.cmbLocation().clear(); /*if (!ConfigFlag.UI.DISABLE_MULTI_SITE_CATS_FUNCTIONALITY.getValue()) { if (form.cmbContract().getValue() != null) voCollLocation = domain.listLocationByOrganisation(form.cmbContract().getValue().getContractOrganisation(), ""); } else voCollLocation = domain.listLocationLite();*/ LocationLiteVoCollection voCollLocation = domain.listLocationByContractAndService(form.cmbContract().getValue(), form.qmbService().getValue()); if (voCollLocation != null && voCollLocation.size() > 0) { for (LocationLiteVo voLoc : voCollLocation) form.cmbLocation().newRow(voLoc, voLoc.getName()); } form.cmbLocation().setValue(form.getLocalContext().getreferralVoIsNotNull() && form.getLocalContext().getreferralVo().getID_ReferralLetterDetailsIsNotNull() ? form.getLocalContext().getreferralVo().getLocation() : null); if (form.cmbLocation().getValue() == null && form.getLocalContext().getreferralVo() == null) defaultLocation(); form.lblLocation().setVisible(true); form.cmbLocation().setVisible(true); } else { form.lblLocation().setVisible(false); form.cmbLocation().setVisible(false); form.cmbLocation().setValue(null); } }