Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package gosi.business.socialinsurance.occupationalhazards.injury.session;
- // Import Statements
- import gosi.core.util.beans.FileUploadInfoBean;
- import gosi.common.letters.beans.LetterHeaderBean;
- import gosi.common.letters.util.LetterUtilities;
- import gosi.common.reports.beans.ReportConstants;
- import gosi.core.security.beans.UserBean;
- import gosi.core.security.common.beans.SecurityAndWorkflowConstants;
- import gosi.core.util.ServiceLocator;
- import gosi.core.util.GOSIDebug;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.Timestamp;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.GregorianCalendar;
- import java.util.HashMap;
- import java.util.Hashtable;
- import java.util.TreeMap;
- import java.util.Objects;
- import javax.ejb.SessionContext;
- import javax.ejb.EJBException;
- import java.rmi.RemoteException;
- import gosi.core.util.CommonTransactions;
- import gosi.core.util.GOSIException;
- import gosi.core.util.GOSIConstants;
- import gosi.core.util.GOSIErrorMessages;
- import gosi.core.util.GOSIUtilities;
- import gosi.core.util.GOSIDateUtilities;
- import gosi.core.util.GOSIApplicationProperties;
- import gosi.core.util.beans.AuditBean;
- import gosi.core.util.beans.NotificationLetterBean;
- import gosi.business.socialinsurance.common.beans.SITables;
- import gosi.core.workflow.beans.WorkflowParamBean;
- import gosi.business.socialinsurance.occupationalhazards.common.beans.OHUtilities;
- import gosi.business.socialinsurance.occupationalhazards.common.beans.OHConstants;
- import gosi.business.socialinsurance.occupationalhazards.medicalboard.beans.OHDAssessmentHeaderBean;
- import gosi.business.socialinsurance.occupationalhazards.injury.beans.AddInjuryHelperBean;
- import gosi.business.socialinsurance.occupationalhazards.injury.beans.HospitalListBean;
- import gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean;
- import gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean;
- import gosi.business.socialinsurance.occupationalhazards.injury.beans.SFDABean;
- import gosi.business.socialinsurance.occupationalhazards.injury.beans.SFDAMapBean;
- import gosi.business.socialinsurance.occupationalhazards.injury.beans.SummayEClaimErrorBean;
- import gosi.business.socialinsurance.occupationalhazards.injury.beans.SummayEClaimFileResultBean;
- import gosi.business.socialinsurance.occupationalhazards.injury.beans.TreatmentPeriodBean;
- import gosi.business.socialinsurance.occupationalhazards.injury.beans.TreatmentHeaderBean;
- import gosi.business.socialinsurance.occupationalhazards.injury.beans.TreatmentServiceBean;
- import gosi.business.socialinsurance.occupationalhazards.injury.beans.InvoiceSearchBean;
- import gosi.business.socialinsurance.occupationalhazards.injury.beans.TreatmentInvoiceQueryListBean;
- import gosi.business.socialinsurance.occupationalhazards.injury.beans.OHBenefitChequeBean;
- import gosi.business.socialinsurance.occupationalhazards.hospital.beans.HospitalDiscountDetailBean;
- import gosi.business.socialinsurance.registration.establishment.beans.EstablishmentBean;
- import gosi.business.socialinsurance.registration.establishment.beans.EstablishmentUtility;
- import gosi.database.socialinsurance.occupationalhazards.injury.entity.RegHospitalInvoiceDetailEntity;
- import gosi.database.socialinsurance.occupationalhazards.injury.entity.RegHospitalInvoiceDetailEntityHome;
- import gosi.database.socialinsurance.occupationalhazards.injury.entity.RegHospitalInvoiceHeaderEntity;
- import gosi.database.socialinsurance.occupationalhazards.injury.entity.RegHospitalInvoiceHeaderEntityHome;
- import gosi.database.socialinsurance.occupationalhazards.injury.entity.SFDAMapEntity;
- import gosi.database.socialinsurance.occupationalhazards.injury.entity.SFDAMapEntityHome;
- import gosi.database.socialinsurance.occupationalhazards.injury.entity.TreatmentServiceDetailEntity;
- import gosi.database.socialinsurance.occupationalhazards.injury.entity.TreatmentServiceDetailEntityHome;
- import gosi.database.socialinsurance.occupationalhazards.injury.entity.TreatmentServiceHeaderEntity;
- import gosi.database.socialinsurance.occupationalhazards.injury.entity.TreatmentServiceHeaderEntityHome;
- import gosi.rules.socialinsurance.occupationalhazards.beans.OHRuleBean;
- /* Files imported for finance interface*/
- import gosi.business.socialinsurance.occupationalhazards.injury.beans.SickleaveBean;
- import gosi.business.interfaces.beans.InvoiceInterfaceBean;
- import gosi.business.interfaces.beans.InvoiceInterfaceDetailBean;
- import gosi.business.interfaces.beans.FAInterfaceConstants;
- import gosi.business.interfaces.beans.CNInterfaceBeanOH;
- import gosi.business.interfaces.FinanceImplProxy;
- import gosi.business.interfaces.FinancialAccountingInterface;
- import gosi.core.dms.beans.DMSRequestHeaderBean;
- import gosi.core.dms.beans.DMSConstants;
- import gosi.core.dms.util.DMSUtilities;
- import gosi.core.batch.beans.BatchParametersBean;
- import gosi.core.batch.beans.BatchRequestBean ;
- /**
- * @CLASS NAME : MaintainRegHospitalInvoiceSessionEJB
- * @TYPE : SessionEJB
- * @AUTHOR : TCS
- * @VERSION : 1
- * @EXTENDS : Nil
- * @INFORMATION : Session EJB object is used to calculate registred hospital invoice and related functions
- * @IMPLEMENTS : SessionBean
- * @TABLES REFERRED : T_injury,T_trmtserviceshdr,t_trmtservicesdet,T_disbassmt,T_contributor,T_reghospinvoicehdr,T_reghospinvoicedet
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public class MaintainRegHospitalInvoiceSessionEJB implements
- javax.ejb.SessionBean
- {
- SessionContext ctx = null;
- Connection con = null;
- /**
- * @METHOD NAME : MaintainRegHospitalInvoiceSessionEJB
- * @INFORMATION : This method is the constructor$
- * @PARAM : class java.lang.String
- * @RETURN : class java.lang.Class
- * @EXCEPTION :
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public MaintainRegHospitalInvoiceSessionEJB ()
- {
- }
- /**
- * @METHOD NAME : ejbCreate
- * @INFORMATION : This method is to ejb Create
- * @PARAM :
- * @RETURN : void
- * @EXCEPTION :
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public void ejbCreate ()
- {
- }
- /**
- * @METHOD NAME : ejbRemove
- * @INFORMATION : This method is to ejb Remove
- * @PARAM :
- * @RETURN : void
- * @EXCEPTION :
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public void ejbRemove ()
- {
- }
- /**
- * @METHOD NAME : ejbActivate
- * @INFORMATION : This method is to ejb Activate
- * @PARAM :
- * @RETURN : void
- * @EXCEPTION :
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public void ejbActivate ()
- {
- }
- /**
- * @METHOD NAME : ejbPassivate
- * @INFORMATION : This method is to ejb Passivate
- * @PARAM :
- * @RETURN : void
- * @EXCEPTION :
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public void ejbPassivate ()
- {
- }
- /**
- * @METHOD NAME : setSessionContext
- * @INFORMATION : This method is to set Session Context
- * @PARAM : interface javax.ejb.SessionContext
- * @RETURN : void
- * @EXCEPTION : class javax.ejb.EJBException,
- class java.rmi.RemoteException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public void setSessionContext (SessionContext sc)
- throws EJBException,RemoteException
- {
- this.ctx = sc;
- }
- /**
- * @METHOD NAME : getRegisteredHospitalList
- * @INFORMATION : This method is to get all the Registered Hospitals in a field office
- * @PARAM : class java.lang.Short
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public ArrayList getRegisteredHospitalList(Short location)
- throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- ArrayList hospitalList = new ArrayList();
- try
- {
- // query to get all registered hospitals in the field office
- String sqlQuery = "select distinct a.HOSPITALCODE, HOSPITALNAMEARB,"+
- " a.HOSPITALNAMEENG from "+
- SITables.T_HOSPITAL + " a , "+
- SITables.T_HOSPITALFOASSOCIATION +" b "+
- " where a.HOSPITALCODE = b.HOSPITALCODE "+
- " and a.HOSPITALTYPE = ? "+
- " and b.FIELDOFFICECODE = ? ";
- con = GOSIUtilities.getConnection
- (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement(sqlQuery);
- ps.setShort(1,OHConstants.REG_HOSPITAL.shortValue());
- ps.setShort(2,location.shortValue());
- rs = ps.executeQuery();
- while (rs.next())
- {
- HospitalListBean hospitalBean = new HospitalListBean();
- hospitalBean.setHospitalCode
- (new Long(rs.getLong("HOSPITALCODE")));
- hospitalBean.setHospitalNameArb
- (rs.getString("HOSPITALNAMEARB"));
- hospitalBean.setHospitalType(OHConstants.REG_HOSPITAL);
- hospitalList.add(hospitalBean);
- }
- return hospitalList;
- }
- catch(GOSIException ge)
- {
- //GOSIDebug.debugMessages("session:getRegisteredHospital:ge:"+ge);
- throw ge;
- }
- catch (Exception e)
- {
- //GOSIDebug.debugMessages("session:getRegisteredHospital:e:"+e);
- throw new GOSIException( GOSIConstants.SEVERITY_TWO,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "getInjuryNumber()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(con,ps,rs);
- }
- }
- /**
- * @METHOD NAME : validateInvoiceDates
- * @INFORMATION : This method is to validate the Invoice Dates entered
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public RegHospInvoiceHeaderBean validateInvoiceDates
- (RegHospInvoiceHeaderBean headerBean ) throws GOSIException
- {
- // validate invoice dates are month start and month end
- try
- {
- String startDateStr = headerBean.getStartDateStr();
- //GOSIDebug.debugMessages("------startDateStr:"+startDateStr);
- if(startDateStr!=null && !"".equals(startDateStr))
- {
- GOSIDateUtilities.checkDateFormat(startDateStr);
- String entFmt = OHUtilities.getDateFormat(startDateStr);
- headerBean.setStartDateEntFmt(entFmt);
- headerBean.setStartDate
- (OHUtilities.getGregDate(startDateStr,entFmt));
- }
- String endDateStr = headerBean.getEndDateStr();
- //GOSIDebug.debugMessages("------endDateStr:"+endDateStr);
- if(endDateStr!=null && !"".equals(endDateStr))
- {
- GOSIDateUtilities.checkDateFormat(endDateStr);
- String entFmt = OHUtilities.getDateFormat(endDateStr);
- headerBean.setEndDateEntFmt(entFmt);
- headerBean.setEndDate
- (OHUtilities.getGregDate(endDateStr,entFmt));
- }
- //GOSIDebug.debugMessages("before InvoiceDateStr");
- String invoiceDateStr = headerBean.getInvoiceDateStr();
- //GOSIDebug.debugMessages("------invoiceDateStr:"+invoiceDateStr);
- if(invoiceDateStr!=null && !"".equals(invoiceDateStr))
- {
- GOSIDateUtilities.checkDateFormat(invoiceDateStr);
- String entFmt = OHUtilities.getDateFormat(invoiceDateStr);
- headerBean.setInvoiceDateEntFmt(entFmt);
- headerBean.setInvoiceDate
- (OHUtilities.getGregDate(invoiceDateStr,entFmt));
- }
- if(headerBean.getStartDate()!=null && headerBean.getEndDate()!=null&&
- headerBean.getStartDate().compareTo(headerBean.getEndDate())> 0)
- {
- //GOSIDebug.debugMessages("startDate After endDate");
- // String message = GOSIErrorMessages.getErrorDesc("SOI_ERR_5110");
- //"Invoice start Date Should be before invoice end Date";
- throw new GOSIException(GOSIConstants.SEVERITY_THREE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "validateInvoiceDates()",null,"SOI_ERR_5110");
- }else
- {
- //GOSIDebug.debugMessages("startDate before endDate");
- }
- if(headerBean.getStartDate()!=null )
- {
- Timestamp currentDate = new Timestamp(System.currentTimeMillis());
- if(currentDate.compareTo(headerBean.getStartDate())<0)
- {
- // String message ="Invoice Start date should not be a future date ";
- throw new GOSIException(GOSIConstants.SEVERITY_THREE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "validateInvoiceDates()",null,"SOI_ERR_5311");
- }
- String startDateGreg = GOSIUtilities.getDateFullString(
- headerBean.getStartDate());
- String startDateHij = GOSIDateUtilities.convertToHijra
- (OHUtilities.getDateStr
- (headerBean.getStartDate(),OHConstants.GREGORIAN)) ;
- String endDateHij = GOSIDateUtilities.convertToHijra
- (OHUtilities.getDateStr
- (headerBean.getEndDate(),OHConstants.GREGORIAN)) ;
- if(!(1 == OHUtilities.getDay(startDateHij) ||
- 1 == OHUtilities.getDay(startDateGreg) ))
- {
- //String message = "Invoice start date should be the first date of a hijra month";
- throw new GOSIException(GOSIConstants.SEVERITY_THREE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "validateInvoiceDates()",null,"SOI_ERR_5183");
- }
- String monthEndDateHij = OHUtilities.getMonthEndDate(startDateHij);
- String monthEndDateGreg = OHUtilities.getMonthEndDate(startDateGreg);
- Timestamp monthEndDate = OHUtilities.getGregDate
- (monthEndDateHij,OHConstants.HIJRAH);
- Timestamp gregMonthEndDate = OHUtilities.getGregDate
- (monthEndDateGreg,OHConstants.GREGORIAN);
- //GOSIDebug.debugMessages("month end date greg:"+gregMonthEndDate);
- if(!(monthEndDate.compareTo(headerBean.getEndDate())== 0 ||
- gregMonthEndDate.compareTo(headerBean.getEndDate())== 0
- ))
- {
- String entFmt = OHUtilities.getDateFormat(startDateStr);
- String message =GOSIErrorMessages.getErrorDesc("SOI_ERR_5368");
- //+" "+
- //"Invoice end date should be"+" "+
- //OHUtilities.getDateStr(monthEndDate,entFmt);
- throw new GOSIException(GOSIConstants.SEVERITY_THREE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "validateInvoiceDates()",message,null,"SOI_ERR_5368");
- }
- if(currentDate.compareTo(headerBean.getEndDate())<0)
- {
- // String message ="Invoice end date should not be a future date ";
- throw new GOSIException(GOSIConstants.SEVERITY_THREE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "validateInvoiceDates()",null,"SOI_ERR_5184");
- }
- }
- return headerBean;
- }
- catch(GOSIException ge)
- {
- //GOSIDebug.debugMessages("session:validateInvoiceDates:ge:"+ge);
- throw ge;
- }
- catch (Exception e)
- {
- //GOSIDebug.debugMessages("session:validateInvoiceDates:e:"+e);
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "validateInvoiceDates()",e,"CMN_ERR_1000");
- }
- }
- /**
- * @METHOD NAME : validateInvoiceDetailDates
- * @INFORMATION : This method is to validate Invoice Detail Dates
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean,
- class java.lang.String
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private RegHospInvoiceDetailBean validateInvoiceDetailDates
- (RegHospInvoiceDetailBean detailsBean ,String entFmt) throws GOSIException
- {
- try
- {
- // conveting the time stamp dates to String dates
- detailsBean.setTrmtStartDateStr(OHUtilities.getDateStr
- (detailsBean.getTrmtStartDate(),entFmt));
- detailsBean.setTrmtStartDateEntFmt(entFmt);
- detailsBean.setTrmtEndDateStr(OHUtilities.getDateStr
- (detailsBean.getTrmtEndDate(),entFmt));
- detailsBean.setTrmtEndDateEntFmt(entFmt);
- return detailsBean;
- }
- catch(GOSIException ge)
- {
- //GOSIDebug.debugMessages("session:validateInvoiceDetailDates:ge:"+ge);
- throw ge;
- }
- catch (Exception e)
- {
- //GOSIDebug.debugMessages("session:validateInvoiceDetailDates:e:"+e);
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "validateInvoiceDetailDates()",e,"CMN_ERR_1000");
- }
- }
- /**
- * @METHOD NAME : generateRegHospitalInvoice
- * @INFORMATION : This method is to generate Registered Hospital Invoice
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @RETURN : class java.util.HashMap
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public HashMap generateRegHospitalInvoice
- (RegHospInvoiceHeaderBean headerBean ) throws GOSIException
- {
- /*
- first the invoice dates are validated and the treatment
- services entered for the hospital on and before that month
- is listed and summed up
- query hospital to get the discount for applying discount
- */
- PreparedStatement ps = null;
- ResultSet rs = null;
- ArrayList hospitalList = new ArrayList();
- HashMap details = new HashMap();
- try
- {
- // validating the invoice dates
- headerBean = validateInvoiceDates(headerBean);
- Timestamp startDate = headerBean.getStartDate();
- Timestamp endDate = headerBean.getEndDate();
- String entFmt = OHConstants.DEFAULT_ENT_FMT;
- if(headerBean.getStartDateEntFmt()!=null &&
- !"".equals(headerBean.getStartDateEntFmt()))
- {
- entFmt=headerBean.getStartDateEntFmt();
- }
- Short fieldOffice = headerBean.getFieldOffice();
- con = GOSIUtilities.getConnection
- (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- Long hospitalCode = headerBean.getHospitalCode();
- ArrayList serviceList = new ArrayList();
- //GOSIDebug.debugMessages("fileNumber:"+headerBean.getFileNumber());
- //if(headerBean.getFileNumber()!=null)
- //{
- // serviceList =
- // getServiceList(headerBean.getFileNumber() ,hospitalCode);
- //}else {
- //method to get the service list for the hospital and file number for the period
- serviceList =
- getServiceList(startDate,endDate,
- hospitalCode,headerBean.getFileNumber());
- //}
- // getting the discount list for the hospital
- ArrayList discountList = getDiscountList(hospitalCode,fieldOffice);
- // getting the unique injury list for the service list
- ArrayList uniqueInjuryList = getUniqueInjuryList(serviceList);
- //GOSIDebug.debugMessages("uniqueInjuryList::::"+uniqueInjuryList.size());
- // getting the unique disability assessment list for the service list
- ArrayList uniqueDisbAssmtList = getUniqueDisbAssmtList(serviceList);
- //GOSIDebug.debugMessages("uniqueDisbList"+uniqueDisbAssmtList.size());
- ArrayList regHospInvoiceDetailList = new ArrayList();
- // itrating unique injury list to sum up the details
- for(int j=0; j<uniqueInjuryList.size(); j++)
- {
- Long injuryId=(Long)uniqueInjuryList.get(j);
- //GOSIDebug.debugMessages(" _______Details (Injury) :"+injuryId);
- // method to get the sum upped details for the injury
- RegHospInvoiceDetailBean invoiceDetailBean =
- getInjuryInvoiceDetails(injuryId,serviceList);
- regHospInvoiceDetailList.add(invoiceDetailBean);
- }
- // itrating unique disability list to sum up the details
- for(int j=0; j<uniqueDisbAssmtList.size(); j++)
- {
- Long disbAssmtId=(Long)uniqueDisbAssmtList.get(j);
- //GOSIDebug.debugMessages("______ Details (Disbassmt) :"+disbAssmtId);
- // mehtod to get the summed up details for the disability
- RegHospInvoiceDetailBean invoiceDetailBean =
- getDisbAssmtInvoiceDetails(disbAssmtId,serviceList);
- regHospInvoiceDetailList.add(invoiceDetailBean);
- }
- // setting invoice header details
- //RegHospInvoiceHeaderBean headerBean = new RegHospInvoiceHeaderBean()
- //getRegHospitalInvoiceHeader(regHospInvoiceDetailList);
- //Long headerId =GOSIUtilities.getPrimaryKey("T_REGHOSPINVOICEHDR",systemId));
- //Long invoiceNumber = GOSIUtilities.getPrimaryKey("REGHOSPINVOICENUMBER",systemId));
- Timestamp currentDate = new Timestamp(System.currentTimeMillis());
- //headerBean.setInvoiceHeaderId(headerId);
- headerBean.setInvoiceNumber(GOSIUtilities.
- getPrimaryKey("REGHOSINVOICENUMBER",new Long("1")));
- //headerBean.setHospitalCode(hospicalCode);
- //headerBean.setFieldOffice(location);
- headerBean.setInvoiceDate(currentDate);
- headerBean.setInvoiceDateEntFmt
- (headerBean.getStartDateEntFmt());
- headerBean.setInvoiceDateEntFmt(entFmt);
- headerBean.setInvoiceDateStr
- (OHUtilities.getDateStr(currentDate,entFmt));
- headerBean.setInvoiceStatus
- (OHConstants.REG_HOSP_INVC_ENTERED);
- //GOSIDebug.debugMessages("Details List size :"+regHospInvoiceDetailList.size());
- for(int j=0; j<regHospInvoiceDetailList.size(); j++)
- {
- RegHospInvoiceDetailBean detailBean =
- (RegHospInvoiceDetailBean)regHospInvoiceDetailList.get(j);
- // method to convert the invoice detail dates to user entered format
- detailBean = validateInvoiceDetailDates
- (detailBean,entFmt);
- }
- // formating invoice detail list , adding file number page number etc
- regHospInvoiceDetailList = formatInvoiceDetailsList
- (regHospInvoiceDetailList,headerBean);
- details.put("serviceList",serviceList);
- details.put("detailsList",regHospInvoiceDetailList);
- // calculate total amount for the invoice
- headerBean = calculateTotalAmount
- (regHospInvoiceDetailList,headerBean,discountList);
- details.put("headerBean", headerBean);
- return details;
- }
- catch(GOSIException ge)
- {
- //GOSIDebug.debugMessages("session:getRegisteredHospital:ge:"+ge);
- throw ge;
- }
- catch (Exception e)
- {
- //GOSIDebug.debugMessages("session:getRegisteredHospital:e:"+e);
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "getInjuryNumber()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(con,ps,rs);
- }
- }
- /**
- * @METHOD NAME : calculateTotalAmount
- * @INFORMATION : This method is to calculate Total Amount
- * @PARAM : class java.util.ArrayList,
- class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean,
- class java.util.ArrayList
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private RegHospInvoiceHeaderBean calculateTotalAmount
- (ArrayList detailsList , RegHospInvoiceHeaderBean headerBean,
- ArrayList discountList) throws GOSIException
- {
- try
- {
- double rejectedAmount = 0.00;
- double medicineAmount = 0.00;
- double serviceAmount = 0.00;
- double discountAmount = 0.00;
- // itrating the details list
- for(int i=0 ; i<detailsList.size(); i++)
- {
- RegHospInvoiceDetailBean detailsBean =
- (RegHospInvoiceDetailBean) detailsList.get(i);
- // add service amount , medicine amount ,rejected amount seperately
- if(detailsBean.getMedicinesAmount()!= null)
- {
- medicineAmount = medicineAmount+
- detailsBean.getMedicinesAmount().doubleValue();
- }
- if(detailsBean.getServicesAmount()!= null)
- {
- serviceAmount = serviceAmount+
- detailsBean.getServicesAmount().doubleValue();
- }
- if(detailsBean.getRejectedAmount()!= null)
- {
- rejectedAmount = rejectedAmount+
- detailsBean.getRejectedAmount().doubleValue();
- }
- /*if(detailsBean.getDiscountAmount()!= null)
- {
- discountAmount = discountAmount+detailsBean.getDiscountAmount().doubleValue();
- }*/
- }
- // appply discount for medicine
- if(medicineAmount!=0)
- {
- discountAmount = getDiscountAmount(discountList,
- medicineAmount,OHConstants.DISC_MEDICINES);
- }
- // apply discount for service
- if(serviceAmount!=0)
- {
- discountAmount =discountAmount +
- getDiscountAmount(discountList,serviceAmount,
- OHConstants.DISC_SERVICES);
- }
- // setting calculated amount into the header bean
- headerBean.setMedicinesAmount(new Double(medicineAmount));
- headerBean.setServicesAmount(new Double(serviceAmount));
- headerBean.setRejectedAmount(new Double(rejectedAmount));
- headerBean.setDiscountAmount(new Double(discountAmount));
- return headerBean;
- }
- catch (Exception e)
- {
- //GOSIDebug.debugMessages("session:calculateTotalAmount:e:"+e);
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "calculateTotalAmount()",e,"CMN_ERR_1000");
- }
- }
- /**
- * @METHOD NAME : getDiscountList
- * @INFORMATION : This method is to get Discount List for a hospital
- * @PARAM : class java.lang.Long,
- class java.lang.Short
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private ArrayList getDiscountList(Long hospitalCode,Short fieldOffice )
- throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- ArrayList discountList = new ArrayList();
- try
- {
- // query to get the discount details of hospital from the hospital
- // contract table
- String sqlQuery = " select " +
- " HOSPITALDISCOUNTID,"+
- " HOSPITALCONTRACTID,"+
- " DISCOUNTTYPE, "+
- " LOWDISCLIMIT, "+
- " UPPDISCLIMIT, "+
- " DISCPERCENTAGE "+
- " from "+SITables.T_HOSPITALDISCOUNT +
- " where HOSPITALCONTRACTID = "+
- " (select HOSPCONTRID "+
- " from "+SITables.T_HOSPITALCONTRACT+
- " where HOSPITALCODE = ? and AGREESTATUS = ? )";
- // " where HOSPITALCODE = ? and AGREESTATUS = ? and "+
- // " FIELDOFFICECODE = ? )";
- //GOSIDebug.debugMessages("sqlQuery:\n"+sqlQuery);
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,hospitalCode.longValue());
- ps.setByte(2,OHConstants.AGREESTATUS_YES.byteValue());
- //ps.setShort(3,fieldOffice.shortValue());
- rs = ps.executeQuery();
- while (rs.next())
- {
- HospitalDiscountDetailBean discountBean =
- new HospitalDiscountDetailBean();
- discountBean.setDiscountType
- (new Byte(rs.getByte("DISCOUNTTYPE"))) ;
- discountBean.setLowDiscLimit
- (new Double(rs.getDouble("LOWDISCLIMIT"))) ;
- discountBean.setUppDiscLimit
- (new Double(rs.getDouble("UPPDISCLIMIT"))) ;
- discountBean.setDiscPercentage
- (new Float(rs.getFloat("DISCPERCENTAGE"))) ;
- discountList.add(discountBean);
- }
- return discountList;
- }
- catch (Exception e)
- {
- //GOSIDebug.debugMessages("session:getDiscountList:e:"+e);
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "getDiscountList()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(ps,rs);
- }
- }
- /**
- * @METHOD NAME : getDiscountAmount
- * @INFORMATION : This method is to calculate Discount Amount using discount list
- * @PARAM : class java.util.ArrayList,
- double,
- class java.lang.Byte
- * @RETURN : double
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private double getDiscountAmount(ArrayList discountList ,
- double amount,Byte discountType )
- throws GOSIException
- {
- double discountAmount = 0.00;
- try
- {
- // logic for applying the discount
- // if the amount between the discount amount apply the discount percentage
- for(int i=0;i<discountList.size();i++ )
- {
- HospitalDiscountDetailBean discountBean =
- (HospitalDiscountDetailBean)discountList.get(i);
- double upperLimit =
- discountBean.getUppDiscLimit().doubleValue();
- double lowerLimit =
- discountBean.getLowDiscLimit().doubleValue();
- Byte beanDiscountType = discountBean.getDiscountType();
- if(discountType.equals(beanDiscountType) ||
- OHConstants.DISC_TOT_AMOUNT.equals(discountType) )
- {
- if(lowerLimit == 0 && upperLimit ==0 )
- {
- float discountPercentage =
- (discountBean.
- getDiscPercentage().floatValue())/100;
- discountAmount = amount * discountPercentage;
- break;
- }else
- if(amount >= lowerLimit && amount <= upperLimit )
- {
- float discountPercentage =
- (discountBean.
- getDiscPercentage().floatValue())/100;
- discountAmount = amount * discountPercentage;
- break;
- }
- }
- }
- return discountAmount;
- }
- catch (Exception e)
- {
- //GOSIDebug.debugMessages("session:getDiscountAmount:e:"+e);
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "getDiscountAmount()",e,"CMN_ERR_1000");
- }
- }
- /**
- * @METHOD NAME : getServiceList
- * @INFORMATION : This method is to get Service List (approved treatment for the period )
- * @PARAM : class java.sql.Timestamp,
- class java.sql.Timestamp,
- class java.lang.Long,
- class java.lang.Long
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private ArrayList getServiceList(Timestamp startDate , Timestamp endDate,
- Long hospitalCode,Long fileNumber ) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- ArrayList serviceList = new ArrayList();
- try
- {
- // query to get all treatment service details for the hospital
- // and file number till the end date
- // if file number is not provided get detils only for the month
- String sqlQuery = ""+
- " select a.TRMTSERVICEDETID, b.TRMTSERVICEHDRID, a.TRMTDATE,"+
- " a.TRMTAMT, a.UNITS,"+
- " a.ICD10TRMTDIAGNOSISCODE, a.UNITPRICE, a.APPROVEDUNITS,"+
- " a.FILENUMBER, a.PAGENUMBER , "+
- " a.TRMTSRVCSTATUS, b.INJURYID, b.DISASSMTID " +
- " from "+SITables.T_TRMTSERVICESDET +" a, " +
- SITables.T_TRMTSERVICESHDR +
- " b where a.TRMTSERVICEHDRID = b.TRMTSERVICEHDRID and "+
- " a.TRMTDATE <= ? and ";
- if(fileNumber == null)
- {
- sqlQuery = sqlQuery +" a.TRMTDATE >=? and ";
- }
- sqlQuery = sqlQuery +
- " a.TRMTSRVCSTATUS = ? "+
- " and (a.PAYMENTSTATUS != ? or a.PAYMENTSTATUS is null ) "+
- " and b.HOSPITALCODE = ? ";
- if(fileNumber!=null)
- {
- sqlQuery = sqlQuery+" and a.FILENUMBER =? ";
- }else
- {
- sqlQuery = sqlQuery+" and a.FILENUMBER is null ";
- }
- sqlQuery = sqlQuery +
- " order by b.DISASSMTID, b.INJURYID,"+
- " b.TRMTSERVICEHDRID,a.TRMTSERVICEDETID ";
- //GOSIDebug.debugMessages("sqlQuery::\n"+sqlQuery);
- ps = con.prepareStatement(sqlQuery);
- int i=0;
- ps.setTimestamp(++i,endDate);
- if(fileNumber == null)
- {
- ps.setTimestamp(++i,startDate);
- }
- ps.setShort(++i,OHConstants.TRMT_SRVC_STS_APPROVED.shortValue());
- ps.setLong(++i,OHConstants.TRMT_SRVC_PAY_STS_PAID.shortValue());
- ps.setLong(++i,hospitalCode.longValue());
- if(fileNumber!=null)
- {
- ps.setLong(++i,fileNumber.longValue());
- }
- rs= ps.executeQuery();
- while(rs.next())
- {
- TreatmentServiceBean serviceBean = new TreatmentServiceBean();
- serviceBean.setTrmtServiceDetId
- (new Long(rs.getLong("TRMTSERVICEDETID")));
- serviceBean.setTrmtServiceHdrId
- (new Long(rs.getLong("TRMTSERVICEHDRID")));
- serviceBean.setTrmtDateGreg(rs.getTimestamp("TRMTDATE"));
- serviceBean.setTrmtAmt(new Double(rs.getDouble("TRMTAMT")));
- if(rs.getObject("UNITS")!= null)
- {
- serviceBean.setUnits(rs.getFloat("UNITS"));
- }
- serviceBean.setTrmtCode(rs.getString("ICD10TRMTDIAGNOSISCODE"));
- if(rs.getObject("UNITPRICE")!= null)
- {
- serviceBean.setUnitPrice
- (new Double(rs.getDouble("UNITPRICE")));
- }
- if(rs.getObject("APPROVEDUNITS")!= null)
- {
- serviceBean.setApprovedUnits(rs.getFloat("APPROVEDUNITS"));
- }
- serviceBean.setTrmtSrvcStatus
- (new Short(rs.getShort("TRMTSRVCSTATUS")));
- if(rs.getObject("INJURYID")!=null)
- {
- serviceBean.setInjuryId
- (new Long(rs.getLong("INJURYID")));
- }
- if(rs.getObject("DISASSMTID")!=null)
- {
- serviceBean.setDisbAssmtId
- (new Long(rs.getLong("DISASSMTID")));
- }
- if (rs.getObject("FILENUMBER")!=null)
- {
- serviceBean.setFileNumber(new Long(rs.getLong("FILENUMBER")));
- }
- if (rs.getObject("PAGENUMBER")!=null)
- {
- serviceBean.setPageNumber(new Long(rs.getLong("PAGENUMBER")));
- }
- //GOSIDebug.debugMessages("TrmtServiceDetailId :"+serviceBean.getTrmtServiceDetId()+","+serviceBean.getInjuryId()+","+serviceBean.getTrmtCode()+","+serviceBean.getUnits()+","+serviceBean.getApprovedUnits());
- serviceList.add(serviceBean);
- }
- // if service list is null throw error message
- if(serviceList.size()==0)
- {
- //String message = GOSIErrorMessages.getErrorDesc("SOI_ERR_5111");
- //"Invoice cannot be generated as no treatment "+
- // "expenses found for the given period";
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "getServiceList()",null,"SOI_ERR_5111");
- }
- return serviceList;
- }
- catch (GOSIException ge )
- {
- //GOSIDebug.debugMessages("session:getServiceList:ge:"+ge);
- throw ge;
- }
- catch (Exception e )
- {
- //GOSIDebug.debugMessages("session:getServiceList:e:"+e);
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "getServiceList()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(ps,rs);
- }
- }
- /**
- * @METHOD NAME : getServiceList
- * @INFORMATION : This method is to get Service List for a particular file number and hospital
- * @PARAM : class java.lang.Long,
- class java.lang.Long
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private ArrayList getServiceList(Long fileNumber,
- Long hospitalCode) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- ArrayList serviceList = new ArrayList();
- try
- {
- // query to get service details for a hospital and file number
- // method not currenly used
- String sqlQuery = ""+
- " select a.TRMTSERVICEDETID, b.TRMTSERVICEHDRID, a.TRMTDATE,"+
- " a.TRMTAMT, a.UNITS,"+
- " a.ICD10TRMTDIAGNOSISCODE, a.UNITPRICE, a.APPROVEDUNITS,"+
- " a.FILENUMBER, a.PAGENUMBER , "+
- " a.TRMTSRVCSTATUS, b.INJURYID, b.DISASSMTID " +
- " from "+SITables.T_TRMTSERVICESDET +" a, " +
- SITables.T_TRMTSERVICESHDR +
- " b where a.TRMTSERVICEHDRID = b.TRMTSERVICEHDRID and "+
- " FILENUMBER =? and "+
- " a.TRMTSRVCSTATUS = ? "+
- " and (a.PAYMENTSTATUS != ? or a.PAYMENTSTATUS is null ) "+
- " and b.HOSPITALCODE = ? "+
- " order by b.DISASSMTID, b.INJURYID,"+
- " b.TRMTSERVICEHDRID,a.TRMTSERVICEDETID ";
- //GOSIDebug.debugMessages("sqlQuery::\n"+sqlQuery);
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,fileNumber.longValue());
- ps.setShort(2,OHConstants.TRMT_SRVC_STS_APPROVED.shortValue());
- ps.setLong(3,OHConstants.TRMT_SRVC_PAY_STS_PAID.shortValue());
- ps.setLong(4,hospitalCode.longValue());
- rs= ps.executeQuery();
- while(rs.next())
- {
- TreatmentServiceBean serviceBean = new TreatmentServiceBean();
- serviceBean.setTrmtServiceDetId
- (new Long(rs.getLong("TRMTSERVICEDETID")));
- serviceBean.setTrmtServiceHdrId
- (new Long(rs.getLong("TRMTSERVICEHDRID")));
- serviceBean.setTrmtDateGreg(rs.getTimestamp("TRMTDATE"));
- serviceBean.setTrmtAmt(new Double(rs.getDouble("TRMTAMT")));
- if(rs.getObject("UNITS")!= null)
- {
- serviceBean.setUnits(rs.getFloat("UNITS"));
- }
- serviceBean.setTrmtCode(rs.getString("ICD10TRMTDIAGNOSISCODE"));
- if(rs.getObject("UNITPRICE")!= null)
- {
- serviceBean.setUnitPrice
- (new Double(rs.getDouble("UNITPRICE")));
- }
- if(rs.getObject("APPROVEDUNITS")!= null)
- {
- serviceBean.setApprovedUnits(rs.getFloat("APPROVEDUNITS"));
- }
- serviceBean.setTrmtSrvcStatus
- (new Short(rs.getShort("TRMTSRVCSTATUS")));
- if(rs.getObject("INJURYID")!=null)
- {
- serviceBean.setInjuryId
- (new Long(rs.getLong("INJURYID")));
- }
- if(rs.getObject("DISASSMTID")!=null)
- {
- serviceBean.setDisbAssmtId
- (new Long(rs.getLong("DISASSMTID")));
- }
- if (rs.getObject("FILENUMBER")!=null)
- {
- serviceBean.setFileNumber(new Long(rs.getLong("FILENUMBER")));
- }
- if (rs.getObject("PAGENUMBER")!=null)
- {
- serviceBean.setPageNumber(new Long(rs.getLong("PAGENUMBER")));
- }
- //GOSIDebug.debugMessages("TrmtServiceDetailId :"+serviceBean.getTrmtServiceDetId()+","+serviceBean.getInjuryId()+","+serviceBean.getTrmtCode()+","+serviceBean.getUnits()+","+serviceBean.getApprovedUnits());
- serviceList.add(serviceBean);
- }
- if(serviceList.size()==0)
- {
- //String message = GOSIErrorMessages.getErrorDesc("SOI_ERR_5111");
- //"Invoice cannot be generated as no treatment "+
- // "expenses found for the given period";
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "getServiceList()",null,"SOI_ERR_5111");
- }
- return serviceList;
- }
- catch (GOSIException ge )
- {
- //GOSIDebug.debugMessages("session:getServiceList:ge:"+ge);
- throw ge;
- }
- catch (Exception e )
- {
- //GOSIDebug.debugMessages("session:getServiceList:e:"+e);
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "getServiceList()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(ps,rs);
- }
- }
- /**
- * @METHOD NAME : getUniqueInjuryList
- * @INFORMATION : This method is to get Unique Injury List
- * @PARAM : class java.util.ArrayList
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private ArrayList getUniqueInjuryList(ArrayList serviceList)
- throws GOSIException
- {
- ArrayList uniqueInjuryList = new ArrayList();
- try
- {
- // logic to find the unique injuries in the list
- for(int i=0 ; i< serviceList.size() ; i++)
- {
- TreatmentServiceBean serviceBean =
- (TreatmentServiceBean)serviceList.get(i);
- Long injuryId = serviceBean.getInjuryId();
- if(uniqueInjuryList.size()==0 && injuryId != null)
- {
- uniqueInjuryList.add(injuryId);
- }else if(injuryId != null)
- {
- boolean isInjuryIdAbsent = true;
- for(int j=0 ; j<uniqueInjuryList.size(); j++)
- {
- Long uniqueInjuryId = (Long)uniqueInjuryList.get(j);
- if(injuryId.equals(uniqueInjuryId))
- {
- isInjuryIdAbsent = false;
- break;
- }
- }
- if(isInjuryIdAbsent)
- {
- //GOSIDebug.debugMessages("injuryId:"+injuryId);
- uniqueInjuryList.add(injuryId);
- }
- }
- }
- return uniqueInjuryList;
- }
- catch (Exception e)
- {
- //GOSIDebug.debugMessages("session:getUniqueInjuryList:e:"+e);
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "getUniqueInjuryList()",e,"CMN_ERR_1000");
- }
- }
- /**
- * @METHOD NAME : getUniqueDisbAssmtList
- * @INFORMATION : This method is to get Unique Disb Assmt List
- * @PARAM : class java.util.ArrayList
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private ArrayList getUniqueDisbAssmtList(ArrayList serviceList)
- throws GOSIException
- {
- ArrayList uniqueDisbAssmtList = new ArrayList();
- try
- {
- // logic to find the unique disability in the list
- for(int i=0 ; i< serviceList.size() ; i++)
- {
- TreatmentServiceBean serviceBean =
- (TreatmentServiceBean)serviceList.get(i);
- Long disbAssmtId = serviceBean.getDisbAssmtId();
- if(uniqueDisbAssmtList.size()==0 && disbAssmtId != null)
- {
- uniqueDisbAssmtList.add(disbAssmtId);
- }else if(disbAssmtId != null)
- {
- boolean isDisbAssmtIdAbsent = true;
- for(int j=0 ; j<uniqueDisbAssmtList.size(); j++)
- {
- Long uniqueDisbAssmtId =
- (Long)uniqueDisbAssmtList.get(j);
- if(disbAssmtId.equals(uniqueDisbAssmtId))
- {
- isDisbAssmtIdAbsent = false;
- break;
- }
- }
- if(isDisbAssmtIdAbsent)
- {
- uniqueDisbAssmtList.add(disbAssmtId);
- }
- }
- }
- return uniqueDisbAssmtList;
- }
- catch (Exception e)
- {
- //GOSIDebug.debugMessages("session:getUniqueDisbAssmtList:e:"+e);
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "getUniqueInjuryList()",e,"CMN_ERR_1000");
- }
- }
- /**
- * @METHOD NAME : getInjuryInvoiceDetails
- * @INFORMATION : This method is to calculate the Injury Invoice Details
- * @PARAM : class java.lang.Long,
- class java.util.ArrayList
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private RegHospInvoiceDetailBean getInjuryInvoiceDetails(Long injuryId ,
- ArrayList serviceList)throws GOSIException
- {
- RegHospInvoiceDetailBean detailBean = null;
- try
- {
- // logic to get the serviceAmount,medicineAmount,rejectedAmount
- // for a particular injury id
- double serviceAmount = 0.00;
- double medicineAmount = 0.00;
- double rejectedAmount = 0.00;
- //double discountAmount = 0.00;
- Long pageNumber = null;
- Timestamp startDate = null;
- Timestamp endDate = null;
- for (int i=0;i<serviceList.size(); i++ )
- {
- TreatmentServiceBean serviceBean =
- (TreatmentServiceBean)serviceList.get(i);
- Long serviceInjuryId = serviceBean.getInjuryId();
- if(serviceInjuryId != null &&
- serviceBean.getInjuryId().equals(injuryId))
- {
- // setting the trmt dates for the injury
- if(startDate == null)
- {
- startDate = serviceBean.getTrmtDateGreg();
- }else
- {
- if(startDate.compareTo(serviceBean.getTrmtDateGreg())>0)
- {
- startDate = serviceBean.getTrmtDateGreg();
- }
- }
- if(endDate == null)
- {
- endDate = serviceBean.getTrmtDateGreg();
- }else
- {
- if (endDate.compareTo(serviceBean.getTrmtDateGreg())<0)
- {
- endDate = serviceBean.getTrmtDateGreg();
- }
- }
- if(serviceBean.getPageNumber()!=null)
- {
- pageNumber = serviceBean.getPageNumber();
- }
- //GOSIDebug.debugMessages("PageNumber:"+pageNumber);
- String trmtCode = serviceBean.getTrmtCode();
- //GOSIDebug.debugMessages("trmtCode:"+trmtCode);
- if(OHConstants.ICD_MEDICINE_CODE.equals(trmtCode))
- {
- medicineAmount=medicineAmount +
- serviceBean.getTrmtAmt().doubleValue();
- // discountAmount = discountAmount + getDiscountAmount
- // (discountList, medicineAmount, OHConstants.DISC_MEDICINES);
- }else if(OHConstants.TRMT_SRVC_BULK_ENTRY.equals(trmtCode))
- {
- serviceAmount=serviceAmount + serviceBean.getTrmtAmt().doubleValue();
- }
- else
- {
- int units = serviceBean.getUnits().intValue();
- double unitPrice =
- serviceBean.getUnitPrice().doubleValue();
- int approvedUnits = serviceBean.getUnits().intValue();
- if(serviceBean.getApprovedUnits()!=null)
- {
- approvedUnits =
- serviceBean.getApprovedUnits().intValue();
- }
- //GOSIDebug.debugMessages(" units:"+units);
- //GOSIDebug.debugMessages("Approved units:"+approvedUnits);
- if(units != approvedUnits )
- {
- serviceAmount = serviceAmount +
- (approvedUnits*unitPrice);
- rejectedAmount = rejectedAmount +
- ((units - approvedUnits)*unitPrice);
- //discountAmount = discountAmount + getDiscountAmount
- // (discountList, (approvedUnits*unitPrice), OHConstants.DISC_SERVICES);
- }else
- {
- serviceAmount = serviceAmount +
- (approvedUnits*unitPrice);
- //discountAmount = discountAmount + getDiscountAmount
- //(discountList, (approvedUnits*unitPrice), OHConstants.DISC_SERVICES);
- }
- //GOSIDebug.debugMessages("serviceAmount :"+serviceAmount);
- //GOSIDebug.debugMessages("rejectedAmount:"+rejectedAmount);
- }
- }
- }
- // setting the details into the detail bean
- if(serviceAmount !=0 || medicineAmount != 0 || rejectedAmount != 0)
- {
- detailBean = new RegHospInvoiceDetailBean();
- detailBean.setInjuryId(injuryId);
- detailBean.setServicesAmount(new Double(serviceAmount));
- detailBean.setMedicinesAmount(new Double(medicineAmount));
- detailBean.setRejectedAmount(new Double(rejectedAmount));
- //detailBean.setDiscountAmount(new Double(discountAmount));
- detailBean.setTrmtStartDate(startDate);
- detailBean.setTrmtEndDate(endDate);
- detailBean = getInjuryDetails(detailBean);
- detailBean.setPageNumber(pageNumber);
- }
- return detailBean;
- }
- catch (Exception e)
- {
- //GOSIDebug.debugMessages("session:getInjuryInvoiceDetails:e:"+e);
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "getUniqueInjuryList()",e,"CMN_ERR_1000");
- }
- }
- /**
- * @METHOD NAME : getDisbAssmtInvoiceDetails
- * @INFORMATION : This method is to calculate the Disb Assmt Invoice Details
- * @PARAM : class java.lang.Long,
- class java.util.ArrayList
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private RegHospInvoiceDetailBean getDisbAssmtInvoiceDetails
- (Long disbAssmtId , ArrayList serviceList)throws GOSIException
- {
- RegHospInvoiceDetailBean detailBean = null;
- try
- {
- // logic to get the serviceAmount,medicineAmount,rejectedAmount
- // for a particular disbassmt id
- double serviceAmount = 0.00;
- double medicineAmount = 0.00;
- double rejectedAmount = 0.00;
- Long pageNumber = null;
- //double discountAmount = 0.00;
- Timestamp startDate = null;
- Timestamp endDate = null;
- for (int i=0;i<serviceList.size(); i++ )
- {
- TreatmentServiceBean serviceBean =
- (TreatmentServiceBean)serviceList.get(i);
- Long serviceDisbAssmtId = serviceBean.getDisbAssmtId();
- if(serviceDisbAssmtId != null &&
- serviceBean.getDisbAssmtId().equals(disbAssmtId))
- {
- // setting the treatment start and end dates
- if(startDate == null)
- {
- startDate = serviceBean.getTrmtDateGreg();
- }else
- {
- if(startDate.compareTo(serviceBean.getTrmtDateGreg())>0)
- {
- startDate = serviceBean.getTrmtDateGreg();
- }
- }
- if(endDate == null)
- {
- endDate = serviceBean.getTrmtDateGreg();
- }else
- {
- if (endDate.compareTo(serviceBean.getTrmtDateGreg())<0)
- {
- endDate = serviceBean.getTrmtDateGreg();
- }
- }
- if(serviceBean.getPageNumber() != null)
- {
- pageNumber = serviceBean.getPageNumber();
- }
- // calculating the varios totals
- String trmtCode = serviceBean.getTrmtCode();
- if(OHConstants.ICD_MEDICINE_CODE.equals(trmtCode))
- {
- medicineAmount=medicineAmount +
- serviceBean.getTrmtAmt().doubleValue();
- //discountAmount = discountAmount + getDiscountAmount
- // (discountList, medicineAmount, OHConstants.DISC_MEDICINES);
- }
- else if(OHConstants.TRMT_SRVC_BULK_ENTRY.equals(trmtCode))
- {
- serviceAmount=serviceAmount + serviceBean.getTrmtAmt().doubleValue();
- }
- else
- {
- int units = serviceBean.getUnits().intValue();
- double unitPrice =
- serviceBean.getUnitPrice().doubleValue();
- int approvedUnits = serviceBean.getUnits().intValue();
- if(serviceBean.getApprovedUnits()!=null)
- {
- approvedUnits =
- serviceBean.getApprovedUnits().intValue();
- }
- if(units != approvedUnits )
- {
- serviceAmount = serviceAmount +
- (approvedUnits*unitPrice);
- rejectedAmount = rejectedAmount +
- ((units - approvedUnits)*unitPrice);
- //discountAmount = discountAmount + getDiscountAmount
- // (discountList, (approvedUnits*unitPrice), OHConstants.DISC_SERVICES);
- }else
- {
- serviceAmount = serviceAmount +
- (approvedUnits*unitPrice);
- //discountAmount = discountAmount + getDiscountAmount
- // (discountList, (approvedUnits*unitPrice), OHConstants.DISC_SERVICES);
- }
- }
- }
- }
- // setting the detail amounts into the detail bean
- if(serviceAmount !=0 || medicineAmount != 0 || rejectedAmount != 0)
- {
- detailBean = new RegHospInvoiceDetailBean();
- detailBean.setDisbAssmtId(disbAssmtId);
- detailBean.setServicesAmount(new Double(serviceAmount));
- detailBean.setMedicinesAmount(new Double(medicineAmount));
- detailBean.setRejectedAmount(new Double(rejectedAmount));
- //detailBean.setDiscountAmount (new Double(discountAmount));
- detailBean.setTrmtStartDate(startDate);
- detailBean.setTrmtEndDate(endDate);
- detailBean = getDisbAssmtDetails(detailBean);
- detailBean.setPageNumber(pageNumber);
- }
- //GOSIDebug.debugMessages("detailsBean:"+detailBean);
- return detailBean;
- }
- catch (Exception e)
- {
- //GOSIDebug.debugMessages("session:getDisbAssmtInvoiceDetails:e:"+e);
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "getDisbAssmtInvoiceDetails()",e,"CMN_ERR_1000");
- }
- }
- /* Functions for batch ends here */
- /**
- * @METHOD NAME : saveRegHospitalInvoice
- * @INFORMATION : This method is to save the Registered Hospital Invoice
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean,
- class java.util.ArrayList,
- class java.util.ArrayList,
- class gosi.core.workflow.beans.WorkflowParamBean,
- class gosi.core.dms.beans.DMSRequestHeaderBean
- * @RETURN : class java.lang.String
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public String saveRegHospitalInvoice
- (RegHospInvoiceHeaderBean headerBean ,ArrayList detailsList ,
- ArrayList serviceList ,WorkflowParamBean workflowParamBean,
- DMSRequestHeaderBean dmsHeaderBean)
- throws GOSIException
- {
- RegHospInvoiceDetailBean detailBean = null;
- try
- {
- Long userId = new Long(workflowParamBean.getUserId());
- Timestamp currentTime = new Timestamp(System.currentTimeMillis());
- Long headerId = GOSIUtilities.getPrimaryKey
- ("T_REGHOSPINVOICEHDR",userId);
- Long workflowId = GOSIUtilities.getPrimaryKey
- ("TRMTSRVCWRKFLOID",userId);
- headerBean.setInvoiceHeaderId(headerId);
- headerBean.setWorkflowId(workflowId);
- // setting audit information
- headerBean.setCreatedBy(userId);
- headerBean.setCreationTimestamp(currentTime);
- headerBean.setInvoiceStatus(OHConstants.REG_HOSP_INVC_ENTERED);
- headerBean = validateInvoiceDates(headerBean);
- // calling DMS interface and setting key values
- if(dmsHeaderBean != null)
- {
- dmsHeaderBean.setSourceRecordId
- ("" + headerBean.getInvoiceHeaderId());
- dmsHeaderBean.
- setSourceTable(SITables.T_REGHOSPINVOICEHDR);
- dmsHeaderBean.setCreatedBy
- (new Long (workflowParamBean.getUserId()));
- //GOSIDebug.debugMessages("invoice number" +headerBean.getInvoiceNumber());
- //GOSIDebug.debugMessages("val" + DMSConstants.HOSPITAL_INVOICE_NUMBER);
- //GOSIDebug.debugMessages("val length " +DMSConstants.HOSPITAL_INVOICE_NUMBER.length());
- //dmsHeaderBean.setKeyList
- //(DMSConstants.HOSPITAL_INVOICE_NUMBER,
- //"" + headerBean.getInvoiceNumber());
- dmsHeaderBean.setKeyList
- (DMSConstants.HOSPITAL_INVOICE_NUMBER,"" + headerBean.getInvoiceNumber());
- DMSUtilities.startDMS(dmsHeaderBean);
- }
- RegHospitalInvoiceHeaderEntityHome headerHome= (RegHospitalInvoiceHeaderEntityHome)
- ServiceLocator.getInstance().getRemoteHome(
- OHConstants.REG_HOSP_INVOICE_HEADER_ENTITY_JNDI,
- RegHospitalInvoiceHeaderEntityHome.class);
- // inserting header
- headerHome.create(headerBean);
- workflowParamBean.setPrimaryKeyOfTherecord(headerId.toString());
- // calling invoice details entity
- RegHospitalInvoiceDetailEntityHome detailsHome= (RegHospitalInvoiceDetailEntityHome)
- ServiceLocator.getInstance().getRemoteHome(
- OHConstants.REG_HOSP_INVOICE_DETAILS_ENTITY_JNDI,
- RegHospitalInvoiceDetailEntityHome.class);
- int detailListSize = detailsList.size();
- Long detailKey[]= GOSIUtilities.
- getPrimaryKeyList("T_REGHOSPINVOICEDET",detailListSize,userId);
- for(int i=0 ; i< detailListSize ;i++)
- {
- Long primarykey =detailKey[i];
- RegHospInvoiceDetailBean detailsBean =
- (RegHospInvoiceDetailBean)detailsList.get(i);
- detailsBean.setInvoiceDetailsId(primarykey);
- detailsBean.setInvoiceHeaderId(headerId);
- //setting detials audit information
- detailsBean.setCreatedBy(userId);
- detailsBean.setCreationTimestamp(currentTime);
- detailsBean.setStatus(OHConstants.REG_HOSP_INVC_ENTERED);
- // inseting details
- detailsHome.create(detailsBean);
- }
- // calling treatment service details home
- TreatmentServiceDetailEntityHome serviceHome= (TreatmentServiceDetailEntityHome)
- ServiceLocator.getInstance().getRemoteHome(
- OHConstants.TRMT_SRVC_DET_ENTITY_JNDI,
- TreatmentServiceDetailEntityHome.class);
- for(int i=0 ; i<serviceList.size();i++)
- {
- TreatmentServiceBean serviceBean = (TreatmentServiceBean)
- serviceList.get(i);
- serviceBean.setTrmtSrvcWrkfloId(workflowId);
- serviceBean.setPaymentStatus
- (OHConstants.TRMT_SRVC_PAY_STS_PAID);
- // setting audit information
- serviceBean.setLastModifiedBy(userId);
- serviceBean.setLastModifiedTimestamp(currentTime);
- TreatmentServiceDetailEntity serviceRemote = serviceHome.
- findByPrimaryKey(serviceBean.getTrmtServiceDetId());
- // modifying treatment service details
- serviceRemote.modifyPaymentStatus(serviceBean);
- }
- // calling workflow interface
- String userName = GOSIUtilities.startWorkflow(workflowParamBean);
- String message = GOSIErrorMessages.getErrorDesc("SOI_ERR_5112") +
- userName;
- //"Treatment service invoice saved and send to the inbox of " +userName;
- return message;
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly();
- //GOSIDebug.debugMessages("session:getDisbAssmtInvoiceDetails:e:"+e);
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "saveRegHospitalInvoice()",e,"CMN_ERR_1000");
- }
- }
- /**
- * @METHOD NAME : searchRegHospitalInvoice
- * @INFORMATION : This method is to search Registered Hospital Invoice in workflow
- * @PARAM : class java.lang.Long
- * @RETURN : class java.util.HashMap
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public HashMap searchRegHospitalInvoice(Long primaryKey)
- throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- HashMap details = new HashMap();
- try
- {
- GOSIDebug.debugMessages("Starting searchRegHospitalInvoice - MaintainRegHospitalInvoiceSessionEJB");
- // Query to search reg hospital invoice during workflow
- String sqlQuery = " "+
- " select " +
- " INVOICEHEADERID," +
- " INVOICENUMBER," +
- " HOSPITALCODE," +
- " FIELDOFFICE," +
- " INVOICEDATE," +
- " INVOICEDATEENTFMT," +
- " STARTDATE," +
- " STARTDATEENTFMT," +
- " ENDDATE," +
- " ENDDATEENTFMT," +
- " PAYMENTMODE," +
- " PAYEENAME," +
- " BANKCODE," +
- " BANKBRANCHCODE," +
- " BANKACCOUNTNUMBER," +
- " INVOICESTATUS," +
- " CREATEDBY," +
- " CREATIONTIMESTAMP," +
- " LASTMODIFIEDBY," +
- " LASTMODIFIEDTIMESTAMP," +
- " REJECTIONCODE, "+
- " DISCOUNTAMOUNT, "+
- " TOTALAMOUNT, "+
- " FILENUMBER, "+
- " WORKFLOWID, " +
- " ROUTINGFLAG, "+
- " JOURNALHEADERID, "+
- " APPEALSTARTDATE "+
- " from " +
- SITables.T_REGHOSPINVOICEHDR +
- " where " +
- " INVOICEHEADERID = ? ";
- //GOSIDebug.debugMessages("sqlQuery:\n"+sqlQuery);
- String entFmt = "";
- con = GOSIUtilities.getConnection
- (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1, primaryKey.longValue());
- rs = ps.executeQuery();
- RegHospInvoiceHeaderBean headerBean = null;
- while(rs.next())
- {
- //GOSIDebug.debugMessages("inside while");
- headerBean = new RegHospInvoiceHeaderBean();
- headerBean.setInvoiceHeaderId
- (new Long(rs.getLong("INVOICEHEADERID")));
- if(rs.getObject("INVOICENUMBER")!=null)
- {
- headerBean.setInvoiceNumber
- (new Long(rs.getLong("INVOICENUMBER"))) ;
- }
- headerBean.setHospitalCode
- (new Long(rs.getLong("HOSPITALCODE"))) ;
- headerBean.setFieldOffice
- (new Short (rs.getShort ("FIELDOFFICE"))) ;
- headerBean.setInvoiceDate (rs.getTimestamp("INVOICEDATE")) ;
- headerBean.setInvoiceDateEntFmt
- (rs.getString("INVOICEDATEENTFMT"));
- headerBean.setStartDate (rs.getTimestamp("STARTDATE")) ;
- headerBean.setStartDateEntFmt (rs.getString("STARTDATEENTFMT"));
- entFmt = headerBean.getStartDateEntFmt();
- headerBean.setEndDate (rs.getTimestamp("ENDDATE"));
- headerBean.setEndDateEntFmt (rs.getString("ENDDATEENTFMT"));
- headerBean.setInvoiceDateStr(OHUtilities.getDateStr(
- headerBean.getInvoiceDate(),
- headerBean.getInvoiceDateEntFmt()));
- headerBean.setStartDateStr(OHUtilities.getDateStr(
- headerBean.getStartDate(),headerBean.getStartDateEntFmt()));
- headerBean.setEndDateStr(OHUtilities.getDateStr(
- headerBean.getEndDate(),headerBean.getEndDateEntFmt()));
- if(rs.getObject("PAYMENTMODE")!= null)
- {
- headerBean.setPaymentMode
- (new Short (rs.getShort ("PAYMENTMODE")));
- }
- if(rs.getObject("PAYEENAME")!= null)
- {
- headerBean.setPayeeName (rs.getString("PAYEENAME"));
- }
- if(rs.getObject("BANKCODE")!= null)
- {
- headerBean.setBankCode
- (new Integer(rs.getInt("BANKCODE")));
- }
- if(rs.getObject("BANKBRANCHCODE")!= null)
- {
- headerBean.setBankBranchCode
- (rs.getString("BANKBRANCHCODE"));
- }
- if(rs.getObject("BANKACCOUNTNUMBER")!= null)
- {
- headerBean.setBankAccountNumber
- (rs.getString("BANKACCOUNTNUMBER"));
- }
- if(rs.getObject("REJECTIONCODE")!=null)
- {
- headerBean.setRejectionCode
- (new Short(rs.getShort("REJECTIONCODE")));
- }
- if(rs.getObject("FILENUMBER")!=null)
- {
- headerBean.setFileNumber
- (new Long(rs.getLong("FILENUMBER")));
- }
- headerBean.setInvoiceStatus
- (new Short (rs.getShort("INVOICESTATUS")));
- if(rs.getObject("DISCOUNTAMOUNT")!= null)
- {
- headerBean.setDiscountAmount
- (new Double(rs.getDouble("DISCOUNTAMOUNT")));
- }
- if(rs.getObject("TOTALAMOUNT")!= null)
- {
- //headerBean.setTotalAmount
- // (new Double(rs.getDouble("TOTALAMOUNT")));
- }
- if(rs.getString("routingflag")!=null)
- {
- headerBean.setRoutingFlag(new Short(rs.getShort("RoutingFlag")));
- }
- if(rs.getString("JOURNALHEADERID") != null)
- {
- headerBean.setJournalHeaderId(new Long(rs.getLong("JOURNALHEADERID")));
- }
- headerBean.setAppealStartDate(rs.getTimestamp("APPEALSTARTDATE")) ;
- headerBean.setWorkflowId( new Long(rs.getLong("WORKFLOWID")));
- // method to calculate total amount
- headerBean = getTotalAmount(headerBean);
- }
- GOSIUtilities.cleanUp(con,ps,rs);
- InvoiceSearchBean searchBean = new InvoiceSearchBean();
- searchBean.setHeaderId(primaryKey);
- searchBean.setEntFmt(entFmt);
- searchBean.setButtonClicked(searchBean.BUTTON_SEARCH);
- // getting details list for invoice header
- ArrayList detailsList = searchDetailsList(searchBean);
- Long detailsSize=getNumberOfTrmtInvoiceDetails(primaryKey);
- details.put("detailsList", detailsList);
- details.put("headerBean", headerBean);
- details.put("detailsSize",detailsSize);
- GOSIDebug.debugMessages("Ending searchRegHospitalInvoice - MaintainRegHospitalInvoiceSessionEJB");
- return details;
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly();
- //GOSIDebug.debugMessages("session:getDisbAssmtInvoiceDetails:e:"+e);
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "saveRegHospitalInvoice()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(con,ps,rs);
- }
- }
- /**
- * @METHOD NAME : modifyRegHospitalInvoice
- * @INFORMATION : This method is to modify Registered Hospital Invoice
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean,
- class java.util.ArrayList,
- class gosi.core.workflow.beans.WorkflowParamBean,
- class gosi.core.dms.beans.DMSRequestHeaderBean
- * @RETURN : class java.lang.String
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public String modifyRegHospitalInvoice
- (RegHospInvoiceHeaderBean headerBean,ArrayList detailsList ,
- WorkflowParamBean workflowParamBean,
- DMSRequestHeaderBean dmsheaderBean)throws GOSIException
- {
- try
- {
- Long workflowId = headerBean.getWorkflowId();
- Long userId = new Long (workflowParamBean.getUserId());
- Long headerId = headerBean.getInvoiceHeaderId();
- Short invoiceStatus = null;
- workflowParamBean.setPrimaryKeyOfTherecord(headerId.toString());
- // setting invoice status based on user input
- if(GOSIConstants.CANCELLED.equals
- (workflowParamBean.getRoutingCriterion()))
- {
- invoiceStatus = OHConstants.REG_HOSP_INVC_CANCELLED;
- ArrayList serviceList = getServiceList(workflowId);
- modifyServiceList(serviceList,userId);
- }else if(GOSIConstants.REJECTED.equals
- (workflowParamBean.getRoutingCriterion()))
- {
- invoiceStatus = OHConstants.REG_HOSP_INVC_PENDING_APPROVED;
- if("REG_HOS_INVC_APP_OH_SUP".equals
- (workflowParamBean.getStepShortName()))
- {
- invoiceStatus = OHConstants.REG_HOSP_INVC_REJECTED;
- ArrayList serviceList = getServiceList(workflowId);
- modifyServiceList(serviceList,userId);
- }
- }
- else if(headerBean.getIsSaveAsRejected())
- {
- invoiceStatus = OHConstants.REG_HOSP_INVC_REJECTED;
- ArrayList serviceList = getServiceList(workflowId);
- modifyServiceList(serviceList,userId);
- }
- else
- {
- invoiceStatus = OHConstants.REG_HOSP_INVC_PENDING_APPROVED;
- if(headerBean.getIsFinalApproval())
- {
- invoiceStatus = OHConstants.REG_HOSP_INVC_APPROVED;
- }
- }
- //setting invoice audit information
- Timestamp currentTime = new Timestamp(System.currentTimeMillis());
- headerBean.setInvoiceStatus(invoiceStatus);
- headerBean.setLastModifiedBy(userId);
- headerBean.setLastModifiedTimestamp(currentTime);
- // if final approval call finance interface to raise invoice
- if(headerBean.getIsFinalApproval())
- {
- Long creditNoteId = null;
- creditNoteId = interfaceMethod(headerBean,workflowParamBean);
- if(creditNoteId != null)
- {
- headerBean.setJournalHeaderId(creditNoteId);
- //Call the batch for recfrom employer
- GOSIDebug.debugMessages("Parameters Passed to createAutomatedRecoveryBatchRequest");
- GOSIDebug.debugMessages("\t Param 1 :" + workflowParamBean.getUserId() + ":");
- GOSIDebug.debugMessages("\t Param 2 :" + headerId + ":");
- GOSIDebug.debugMessages("\t Param 3 :" + OHConstants.RECOVERY_TYPE_REG_HOSP_INVOICE + ":");
- Long requestId = createAutomatedRecoveryBatchRequest(
- new Long(workflowParamBean.getUserId()),
- headerId,OHConstants.RECOVERY_TYPE_REG_HOSP_INVOICE);
- GOSIDebug.debugMessages("Batch RequestId :" + requestId + ":");
- }
- }
- if(!isTotalAmountOfInvoiceHeaderCorrect(headerBean)){
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "isTotalAmountOfInvoiceHeaderCorrect()",
- null,
- "CMN_ERR_1000");
- }
- RegHospitalInvoiceHeaderEntityHome headerHome= (RegHospitalInvoiceHeaderEntityHome)
- ServiceLocator.getInstance().getRemoteHome(
- OHConstants.REG_HOSP_INVOICE_HEADER_ENTITY_JNDI,
- RegHospitalInvoiceHeaderEntityHome.class);
- RegHospitalInvoiceHeaderEntity headerRemote =
- headerHome.findByPrimaryKey(headerId);
- headerRemote.modifyRegHospInvoiceHeader(headerBean);
- // calling DMS interface and setting key balues
- if(dmsheaderBean != null)
- {
- dmsheaderBean.setSourceRecordId
- ("" + headerBean.getInvoiceHeaderId());
- dmsheaderBean.
- setSourceTable(SITables.T_REGHOSPINVOICEHDR);
- dmsheaderBean.setCreatedBy
- (new Long (workflowParamBean.getUserId()));
- //GOSIDebug.debugMessages("invoice number" +headerBean.getInvoiceNumber());
- //dmsheaderBean.setKeyList
- //(DMSConstants.HOSPITAL_INVOICE_NUMBER,
- //"" + headerBean.getInvoiceNumber());
- dmsheaderBean.setKeyList
- (DMSConstants.HOSPITAL_INVOICE_NUMBER,"" + headerBean.getInvoiceNumber());
- DMSUtilities.startDMS(dmsheaderBean);
- }
- //GOSIDebug.debugMessages("IS finalApprova.... "+headerBean.getIsFinalApproval());
- String name = GOSIUtilities.startWorkflow(workflowParamBean);
- String msg = GOSIErrorMessages.getErrorDesc("SOI_ERR_5113");
- //"Registered Hospital Treatment Expence Invoice saved";
- if(name!= null &&!"".equals(name))
- {
- msg = GOSIErrorMessages.getErrorDesc("SOI_ERR_5112")+
- name ;
- //"Registered Hospital Treatment Expence Invoice saved and sent to the Inbox of "+ name;
- }
- return msg;
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly();
- //GOSIDebug.debugMessages("session:getDisbAssmtInvoiceDetails:e:"+e);
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "saveRegHospitalInvoice()",e,"CMN_ERR_1000");
- }
- }
- /**
- * @METHOD NAME : getServiceList
- * @INFORMATION : This method is to get the Service List used to calculate invoice
- * @PARAM : class java.lang.Long
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private ArrayList getServiceList(Long workflowId)throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- ArrayList serviceList = new ArrayList();
- try
- {
- // Query to get service list for a workflow id
- con = GOSIUtilities.getConnection
- (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- String sqlQuery = "select "+
- "TRMTSERVICEDETID, TRMTSRVCWRKFLOID, PAYMENTSTATUS " +
- " from " +SITables.T_TRMTSERVICESDET +
- " where TRMTSRVCWRKFLOID = ? ";
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,workflowId.longValue());
- rs = ps.executeQuery();
- while(rs.next())
- {
- TreatmentServiceBean serviceBean = new TreatmentServiceBean();
- serviceBean.setTrmtServiceDetId
- (new Long(rs.getLong("TRMTSERVICEDETID")));
- serviceBean.setTrmtSrvcWrkfloId
- (new Long(rs.getLong("TRMTSRVCWRKFLOID")));
- serviceBean.setPaymentStatus
- (new Short(rs.getShort("PAYMENTSTATUS")));
- serviceList.add(serviceBean);
- }
- return serviceList;
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly();
- //GOSIDebug.debugMessages("session:getDisbAssmtInvoiceDetails:e:"+e);
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "getServiceList()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(con,ps,rs);
- }
- }
- /**
- * @METHOD NAME : modifyServiceList
- * @INFORMATION : This method is to modify Service List used to calculate invoice
- * @PARAM : class java.util.ArrayList,
- class java.lang.Long
- * @RETURN : void
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private void modifyServiceList(ArrayList serviceList,Long userId)
- throws GOSIException
- {
- try
- {
- Timestamp currentTime = new Timestamp(System.currentTimeMillis());
- TreatmentServiceDetailEntityHome serviceHome= (TreatmentServiceDetailEntityHome)
- ServiceLocator.getInstance().getRemoteHome(
- OHConstants.TRMT_SRVC_DET_ENTITY_JNDI,
- TreatmentServiceDetailEntityHome.class);
- // updating the service list in case the invoice is cancelled
- for(int i=0 ; i<serviceList.size();i++)
- {
- TreatmentServiceBean serviceBean = (TreatmentServiceBean)
- serviceList.get(i);
- //serviceBean.setTrmtSrvcWrkfloId(workflowId);
- serviceBean.setPaymentStatus
- (OHConstants.TRMT_SRVC_PAY_STS_NOT_PAID);
- serviceBean.setLastModifiedBy(userId);
- serviceBean.setLastModifiedTimestamp(currentTime);
- TreatmentServiceDetailEntity serviceRemote = serviceHome.
- findByPrimaryKey(serviceBean.getTrmtServiceDetId());
- serviceRemote.modifyPaymentStatus(serviceBean);
- }
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly();
- //GOSIDebug.debugMessages("session:getDisbAssmtInvoiceDetails:e:"+e);
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "getServiceList()",e,"CMN_ERR_1000");
- }
- }
- /**
- * @METHOD NAME : getInjuryDetails
- * @INFORMATION : This method is to get Injury Details
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private RegHospInvoiceDetailBean getInjuryDetails
- (RegHospInvoiceDetailBean detailsBean)throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs= null;
- try
- {
- // Query to get injury details for each invoice detail
- Long injuryId = detailsBean.getInjuryId();
- String sqlQuery = "select "+
- " a.INJURYNUMBER, "+
- " a.CONTRIBUTORID, "+
- " a.INJURYDATE, " +
- " a.DATECOMPLICATION, " +
- " a.SOCINSNUMBER, "+
- " d.firstname || ' ' || NVL(d.secondname,'')|| ' ' || "+
- " NVL(d.thirdname,'')||' ' || NVL(d.surname,'') CONTRIBUTORNAME "+
- " from "+ SITables.T_INJURY + " a ,"+
- SITables.T_CONTRIBUTOR +" b, "+
- SITables.T_PERSON + " d "+
- " where "+
- " a.INJURYID =? "+
- " and a.CONTRIBUTORID = b.CONTRIBUTORID "+
- " and b.PERSONID = d.PERSONID ";
- //GOSIDebug.debugMessages("SqlQuery:\n"+sqlQuery);
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,injuryId.longValue());
- rs = ps.executeQuery();
- while (rs.next())
- {
- detailsBean.setInjuryNumber
- (new Long(rs.getLong("INJURYNUMBER")));
- detailsBean.setSocInsNumber
- (new Long(rs.getLong("SOCINSNUMBER")));
- detailsBean.setInjuryDate
- (rs.getTimestamp("INJURYDATE"));
- if(rs.getObject("DATECOMPLICATION")!= null)
- {
- detailsBean.setInjuryDate
- (rs.getTimestamp("DATECOMPLICATION"));
- detailsBean.setServiceType(OHConstants.SERVICE_TYPE_COMPLICATION_TRMT);
- }
- detailsBean.setInjuryDateStr(OHUtilities.getDateStr
- (detailsBean.getInjuryDate(),"G"));
- detailsBean.setName(rs.getString("CONTRIBUTORNAME"));
- }
- return detailsBean;
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly();
- //GOSIDebug.debugMessages("session:getInjuryDetails:e:"+e);
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "getInjuryDetails()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(ps,rs);
- }
- }
- /**
- * @METHOD NAME : getDisbAssmtDetails
- * @INFORMATION : This method is to get Disb Assmt Details
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private RegHospInvoiceDetailBean getDisbAssmtDetails
- (RegHospInvoiceDetailBean detailsBean)throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs= null;
- try
- {
- // query to get disability detail for each disability trmt service
- Long disbAssmtId = detailsBean.getDisbAssmtId();
- String sqlQuery = " select "
- + " a.SCHEDULEID, "
- + " NVL(a.ASSESSMENTDATE,e.SESSIONDATE) ASSESSMENTDATE , "
- + " NVL(a.SOCIALINSURANCENUMBER,E.SOCINSNUMBER) as SOCIALINSURANCENUMBER, "
- + " d.firstname || ' ' || NVL(d.secondname,'')|| ' ' || "
- + " NVL(d.thirdname,'')||' ' || NVL(d.surname,'') CONTRIBUTORNAME ,"
- + " e.SESSIONNUMBER "
- + " from "
- + SITables.T_CONTRIBUTOR + " b, "
- + SITables.T_PERSON + " d, "
- + SITables.T_MBAPPOINTMENT + " e LEFT JOIN "
- + SITables.T_DISBASSMT + " a ON a.SCHEDULEID = e.SCHEDULEID"
- + " where "
- + " e.SCHEDULEID = ? "
- + " and b.CONTRIBUTORID = (select CONTRIBUTORID from "
- + SITables.T_CONTRIBUTOR
- + " where SOCIALINSURANCENUMBER = NVL(a.SOCIALINSURANCENUMBER,E.SOCINSNUMBER)) "
- + " and b.PERSONID = d.PERSONID ";
- GOSIDebug.debugMessages("SqlQuery:" + sqlQuery + ":");
- GOSIDebug.debugMessages("\t\t Param 1 :" + disbAssmtId.longValue() + ":");
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,disbAssmtId.longValue());
- rs = ps.executeQuery();
- while (rs.next())
- {
- detailsBean.setInjuryNumber
- (new Long(rs.getLong("SCHEDULEID")));
- detailsBean.setSocInsNumber
- (new Long(rs.getLong("SOCIALINSURANCENUMBER")));
- detailsBean.setInjuryDate
- (rs.getTimestamp("ASSESSMENTDATE"));
- detailsBean.setInjuryDateStr(OHUtilities.getDateStr
- (detailsBean.getInjuryDate(),"G"));
- detailsBean.setName(rs.getString("CONTRIBUTORNAME"));
- detailsBean.setSessionNumber(new Long(rs.getLong("SESSIONNUMBER")));
- }
- return detailsBean;
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly();
- //GOSIDebug.debugMessages("session:getInjuryDetails:e:"+e);
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "getInjuryDetails()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(ps,rs);
- }
- }
- /**
- * @METHOD NAME : getDetailsSearchQuery
- * @INFORMATION : This method is to get invoice Details for Search Query
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.InvoiceSearchBean
- * @RETURN : interface java.sql.PreparedStatement
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private PreparedStatement getDetailsSearchQuery
- (InvoiceSearchBean searchBean) throws GOSIException
- {
- PreparedStatement ps = null;
- try
- {
- long headerId = searchBean.getHeaderId().longValue();
- long firstID = searchBean.getFirstId();
- long lastID = searchBean.getLastId();
- //Query to search registered hospital invoice details from the search screen
- String sqlQuery = "";
- byte buttonClicked = searchBean.getButtonClicked();
- if (buttonClicked == searchBean.BUTTON_SEARCH)
- {
- //GOSIDebug.debugMessages("the value of criteria is inside if" );
- sqlQuery= " select "+
- " INVOICEDETAILSID, "+
- " INVOICEHEADERID, " +
- " INJURYID, " +
- " DISBASSMTID, " +
- " TRMTSTARTDATE, " +
- " TRMTSTARTDATEENTFMT, " +
- " TRMTENDDATE, " +
- " TRMTENDDATEENTFMT, " +
- " SERVICESAMOUNT, " +
- " MEDICINESAMOUNT, " +
- " NODISCOUNTAMOUNT, " +
- " REJECTEDSERVICESAMOUNT, " +
- " REJECTEDMEDICINESAMOUNT, " +
- " REJECTEDNODISCOUNTAMOUNT, " +
- " STATUS, " +
- " CREATEDBY, " +
- " CREATIONTIMESTAMP, " +
- " LASTMODIFIEDBY, " +
- " LASTMODIFIEDTIMESTAMP "+
- " from " +
- SITables.T_REGHOSPINVOICEDET +
- " where "+
- " INVOICEHEADERID = ? "+
- " order by INVOICEDETAILSID ";
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,headerId);
- }
- else if (buttonClicked == searchBean.BUTTON_NEXT)
- {
- //GOSIDebug.debugMessages("the value of criteria is inside Forward" );
- sqlQuery= " select "+
- " INVOICEDETAILSID, "+
- " INVOICEHEADERID, " +
- " INJURYID, " +
- " DISBASSMTID, " +
- " TRMTSTARTDATE, " +
- " TRMTSTARTDATEENTFMT, " +
- " TRMTENDDATE, " +
- " TRMTENDDATEENTFMT, " +
- " SERVICESAMOUNT, " +
- " MEDICINESAMOUNT, " +
- " NODISCOUNTAMOUNT, " +
- " REJECTEDSERVICESAMOUNT, " +
- " REJECTEDMEDICINESAMOUNT, " +
- " REJECTEDNODISCOUNTAMOUNT, " +
- " STATUS, " +
- " CREATEDBY, " +
- " CREATIONTIMESTAMP, " +
- " LASTMODIFIEDBY, " +
- " LASTMODIFIEDTIMESTAMP "+
- " from " +
- SITables.T_REGHOSPINVOICEDET +
- " where "+
- " INVOICEHEADERID = ? "+
- " and INVOICEDETAILSID > ?"+
- " order by INVOICEDETAILSID ";
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,headerId);
- ps.setLong(2,lastID);
- }
- else if (buttonClicked == searchBean.BUTTON_PREVIOUS)
- {
- sqlQuery= " select "+
- " INVOICEDETAILSID, "+
- " INVOICEHEADERID, " +
- " INJURYID, " +
- " DISBASSMTID, " +
- " TRMTSTARTDATE, " +
- " TRMTSTARTDATEENTFMT, " +
- " TRMTENDDATE, " +
- " TRMTENDDATEENTFMT, " +
- " SERVICESAMOUNT, " +
- " MEDICINESAMOUNT, " +
- " NODISCOUNTAMOUNT, " +
- " REJECTEDSERVICESAMOUNT, " +
- " REJECTEDMEDICINESAMOUNT, " +
- " REJECTEDNODISCOUNTAMOUNT, " +
- " STATUS, " +
- " CREATEDBY, " +
- " CREATIONTIMESTAMP, " +
- " LASTMODIFIEDBY, " +
- " LASTMODIFIEDTIMESTAMP "+
- " from " +
- SITables.T_REGHOSPINVOICEDET +
- " where "+
- " INVOICEHEADERID = ? "+
- " and INVOICEDETAILSID < ?"+
- " order by INVOICEDETAILSID DESC ";
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,headerId);
- ps.setLong(2,firstID);
- }
- }catch(Exception e)
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "getDetailsSearchQuery()",e,"CMN_ERR_1000");
- }
- return ps;
- }
- /**
- * @METHOD NAME : searchDetailsList
- * @INFORMATION : This method is to search Invoice details List
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.InvoiceSearchBean
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public ArrayList searchDetailsList(InvoiceSearchBean searchBean)
- throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- ArrayList detailsList = new ArrayList();
- try
- {
- GOSIDebug.debugMessages("Starting searchDetailsList - MaintainRegHospitalInvoiceSessionEJB");
- // getting invoice details for a particular invoice header
- int count=1;
- byte buttonClicked = searchBean.getButtonClicked();
- String entFmt = searchBean.getEntFmt();
- con = GOSIUtilities.getConnection
- (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = getDetailsSearchQuery(searchBean);
- ps.setMaxRows((GOSIApplicationProperties.MAX_PAGE_SIZE*searchBean.getPageIndex())+1);
- rs = ps.executeQuery();
- while(rs.next())
- {
- //GOSIDebug.debugMessages("inside while 2");
- RegHospInvoiceDetailBean detailsBean =
- new RegHospInvoiceDetailBean();
- detailsBean.setInvoiceDetailsId
- (new Long(rs.getLong("INVOICEDETAILSID")));
- detailsBean.setInvoiceHeaderId
- (new Long(rs.getLong("INVOICEHEADERID")));
- if(rs.getObject("INJURYID")!= null)
- {
- detailsBean.setInjuryId
- (new Long(rs.getLong("INJURYID")));
- }
- if(rs.getObject("DISBASSMTID")!= null)
- {
- detailsBean.setDisbAssmtId
- (new Long(rs.getLong("DISBASSMTID")));
- }
- detailsBean.setTrmtStartDate
- (rs.getTimestamp("TRMTSTARTDATE"));
- detailsBean.setTrmtStartDateEntFmt
- (rs.getString("TRMTSTARTDATEENTFMT"));
- detailsBean.setTrmtEndDate
- (rs.getTimestamp("TRMTENDDATE"));
- detailsBean.setTrmtEndDateEntFmt
- (rs.getString("TRMTENDDATEENTFMT"));
- detailsBean.setTrmtStartDateStr(OHUtilities.getDateStr(
- detailsBean.getTrmtStartDate(),entFmt));
- detailsBean.setTrmtEndDateStr(OHUtilities.getDateStr(
- detailsBean.getTrmtEndDate(),entFmt));
- if(rs.getObject("SERVICESAMOUNT")!= null)
- {
- detailsBean.setServicesAmount
- (new Double(rs.getDouble("SERVICESAMOUNT")));
- }
- if(rs.getObject("MEDICINESAMOUNT")!= null)
- {
- detailsBean.setMedicinesAmount
- (new Double(rs.getDouble("MEDICINESAMOUNT")));
- }
- if(rs.getObject("NODISCOUNTAMOUNT")!= null)
- {
- detailsBean.setNoDiscountAmount
- (new Double(rs.getDouble("NODISCOUNTAMOUNT")));
- }
- if(rs.getObject("REJECTEDSERVICESAMOUNT")!= null)
- {
- detailsBean.setRejectedServiceAmount
- (new Double(rs.getDouble("REJECTEDSERVICESAMOUNT")));
- }
- if(rs.getObject("REJECTEDMEDICINESAMOUNT")!= null)
- {
- detailsBean.setRejectedMedicineAmount
- (new Double(rs.getDouble("REJECTEDMEDICINESAMOUNT")));
- }
- if(rs.getObject("REJECTEDNODISCOUNTAMOUNT")!= null)
- {
- detailsBean.setRejectedNoDiscountAmount
- (new Double(rs.getDouble("REJECTEDNODISCOUNTAMOUNT")));
- }
- GOSIDebug.debugMessages("Injuryid in Session :" + detailsBean.getInjuryId() +":");
- GOSIDebug.debugMessages("SCHEDULEID in Session :" + detailsBean.getDisbAssmtId() +":");
- if(detailsBean.getInjuryId()!= null)
- {
- detailsBean.setServiceType(OHConstants.SERVICE_TYPE_TRMT);
- detailsBean = getInjuryDetails(detailsBean);
- }else if(detailsBean.getDisbAssmtId()!= null)
- {
- detailsBean.setServiceType(OHConstants.SERVICE_TYPE_DISB_TRMT);
- detailsBean = getDisbAssmtDetails(detailsBean);
- }
- detailsBean.setStatus(new Short (rs.getShort("STATUS")));
- GOSIDebug.debugMessages("SessionNumber in Session :" + detailsBean.getSessionNumber() + ":");
- detailsList.add(detailsBean);
- if(buttonClicked == searchBean.BUTTON_SEARCH ||
- buttonClicked == searchBean.BUTTON_NEXT)
- {
- //GOSIDebug.debugMessages("inside while in search");
- if (count ==1)
- {
- searchBean.setFirstId
- (detailsBean.getInvoiceDetailsId().longValue());
- }
- else if(count < (GOSIApplicationProperties.MAX_PAGE_SIZE*searchBean.getPageIndex())+1)
- {
- searchBean.setLastId
- (detailsBean.getInvoiceDetailsId().longValue());
- }
- //GOSIDebug.debugMessages("inside while in search after");
- }
- if(buttonClicked == searchBean.BUTTON_PREVIOUS)
- {
- //GOSIDebug.debugMessages("inside while in back");
- if (count ==1)
- {
- searchBean.setLastId
- (detailsBean.getInvoiceDetailsId().longValue());
- }
- else if(count < (GOSIApplicationProperties.MAX_PAGE_SIZE*searchBean.getPageIndex())+1)
- {
- searchBean.setFirstId
- (detailsBean.getInvoiceDetailsId().longValue());
- }
- //GOSIDebug.debugMessages("inside while in back after");
- }
- count=count+1;
- }
- detailsList.add(searchBean);
- GOSIDebug.debugMessages("Ending searchDetailsList - MaintainRegHospitalInvoiceSessionEJB");
- return detailsList;
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "searchDetailsList()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(con,ps,rs);
- }
- }
- /**
- * @METHOD NAME : getTotalAmount
- * @INFORMATION : This method is to get Total Amount of an invoice
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private RegHospInvoiceHeaderBean getTotalAmount
- (RegHospInvoiceHeaderBean headerBean)throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- // query to get the total of amounts for a invoice header
- // called during workflow
- double rejectedAmount = 0.00;
- String sqlQuery = " select "+
- " sum(SERVICESAMOUNT) TOTALSERVICESAMOUNT, "+
- " sum(MEDICINESAMOUNT) TOTALMEDICINESAMOUNT, "+
- " sum(NODISCOUNTAMOUNT) TOTALNODISCOUNTAMOUNT, "+
- " sum(REJECTEDSERVICESAMOUNT) TOTALREJECTEDSERVICESAMOUNT, "+
- " sum(REJECTEDMEDICINESAMOUNT) TOTALREJECTEDMEDICINESAMOUNT, "+
- " sum(REJECTEDNODISCOUNTAMOUNT) TOTALREJECTEDNODISCOUNTAMOUNT, "+
- " sum(REJECTEDAMOUNT) TOTALREJECTEDAMOUNT "+
- " from "+
- SITables.T_REGHOSPINVOICEDET +
- " where INVOICEHEADERID = ? "+
- " and STATUS != ? ";
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1, headerBean.getInvoiceHeaderId().longValue());
- ps.setLong(2,OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED.shortValue());
- rs =ps.executeQuery();
- while(rs.next())
- {
- if(rs.getObject("TOTALSERVICESAMOUNT")!=null)
- {
- headerBean.setServicesAmount(new Double
- (rs.getDouble("TOTALSERVICESAMOUNT")));
- }
- if(rs.getObject("TOTALMEDICINESAMOUNT")!=null)
- {
- headerBean.setMedicinesAmount(new Double
- (rs.getDouble("TOTALMEDICINESAMOUNT")));
- }
- if(rs.getObject("TOTALNODISCOUNTAMOUNT")!= null)
- {
- headerBean.setNoDiscountAmount(new Double
- (rs.getDouble("TOTALNODISCOUNTAMOUNT")));
- }
- if(rs.getObject("TOTALREJECTEDSERVICESAMOUNT")!= null)
- {
- headerBean.setRejectedServiceAmount(new Double
- (rs.getDouble("TOTALREJECTEDSERVICESAMOUNT")));
- rejectedAmount = rejectedAmount +
- headerBean.getRejectedServiceAmount().doubleValue();
- }
- if(rs.getObject("TOTALREJECTEDMEDICINESAMOUNT")!= null)
- {
- headerBean.setRejectedMedicineAmount(new Double
- (rs.getDouble("TOTALREJECTEDMEDICINESAMOUNT")));
- rejectedAmount = rejectedAmount +
- headerBean.getRejectedMedicineAmount().doubleValue();
- }
- if(rs.getObject("TOTALREJECTEDNODISCOUNTAMOUNT")!= null)
- {
- headerBean.setRejectedNoDiscountAmount(new Double
- (rs.getDouble("TOTALREJECTEDNODISCOUNTAMOUNT")));
- rejectedAmount = rejectedAmount +
- headerBean.getRejectedNoDiscountAmount().doubleValue();
- }
- if(rs.getObject("TOTALREJECTEDAMOUNT")!=null)
- {
- headerBean.setRejectedAmount(new Double
- (rs.getDouble("TOTALREJECTEDAMOUNT")));
- }else
- {
- headerBean.setRejectedAmount(new Double(rejectedAmount));
- }
- }
- return headerBean;
- }catch (Exception e)
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "getTotalAmount()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(ps,rs);
- }
- }
- /**
- * @METHOD NAME : getBankDetails
- * @INFORMATION : This method is to get Bank Details of hospital
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public RegHospInvoiceHeaderBean getBankDetails
- ( RegHospInvoiceHeaderBean headerBean) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- // query to get payee details of hospital from hospital contract table
- String sqlQuery = " select "+
- " PAYEENAME, "+
- " PAYMENTMODE, "+
- " BANKCODE, "+
- " BANKBRANCHCODE, "+
- " BANKACCNUMBER "+
- " from "+
- SITables.T_HOSPITALCONTRACT+
- " where HOSPITALCODE = ? "+
- " and AGREESTATUS =? ";
- con = GOSIUtilities.getConnection
- (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,headerBean.getHospitalCode().longValue());
- ps.setByte(2,OHConstants.AGREESTATUS_YES.byteValue());
- rs = ps.executeQuery();
- while(rs.next())
- {
- if(rs.getObject("PAYMENTMODE")!= null)
- {
- headerBean.setPaymentMode
- (new Short(rs.getString("PAYMENTMODE")));
- }
- if(rs.getObject("PAYEENAME")!= null)
- {
- headerBean.setPayeeName(rs.getString("PAYEENAME"));
- }
- if(rs.getObject("BANKCODE")!= null)
- {
- headerBean.setBankCode
- (new Integer(rs.getInt("BANKCODE")));
- }
- if(rs.getObject("BANKBRANCHCODE")!= null)
- {
- headerBean.setBankBranchCode
- (rs.getString("BANKBRANCHCODE"));
- }
- if(rs.getObject("BANKACCNUMBER")!= null)
- {
- headerBean.setBankAccountNumber
- (rs.getString("BANKACCNUMBER"));
- }
- }
- return headerBean;
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "getBankDetails()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(con,ps,rs);
- }
- }
- /**
- * @METHOD NAME : interfaceMethod
- * @INFORMATION : This method is to interface Method for generating creditnote in finance
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean,
- class gosi.core.workflow.beans.WorkflowParamBean
- * @RETURN : class java.lang.Long
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private Long interfaceMethod
- (RegHospInvoiceHeaderBean headerBean ,
- WorkflowParamBean workflowParamBean) throws GOSIException
- {
- String narrationMessage = "";
- Long creditNoteId = null;
- InvoiceInterfaceBean interfaceBean = new InvoiceInterfaceBean();
- try
- {
- // finance interface method
- if(headerBean != null)
- {
- //GOSIDebug.debugMessages("In the interface method not null");
- interfaceBean.setInvoiceType(new Integer
- (FAInterfaceConstants.HOSPITAL_INVOICE));
- interfaceBean.setInvoiceDate
- (new Timestamp(System.currentTimeMillis()));
- Short fieldOffice = new Short
- (workflowParamBean.getUserLocationId());
- interfaceBean.setLocation(new Integer
- (""+fieldOffice));
- //GOSIDebug.debugMessages("user location" + fieldOffice);
- // setting party details
- interfaceBean.setPartyType(new Integer
- (FAInterfaceConstants.HOSPITALS_PARTYTYPE));
- interfaceBean.setPartyCode
- (headerBean.getHospitalCode());
- //GOSIDebug.debugMessages("hosp code ****" +headerBean.getHospitalCode() );
- //GOSIDebug.debugMessages("party code ***" +interfaceBean.getPartyCode() );
- interfaceBean.setCurrency
- (new Integer(FAInterfaceConstants.LC_CURRENCY));
- int baseCurrency = GOSIUtilities.getBaseCurrency();
- //GOSIDebug.debugMessages("base currency " + baseCurrency );
- if(baseCurrency ==
- FAInterfaceConstants.LC_CURRENCY)
- {
- interfaceBean.setExchangeRateType(new Integer
- (FAInterfaceConstants.ERT_NONE));
- interfaceBean.setExchangeRate
- (new Double(FAInterfaceConstants.
- LC_EXCHANGERATE));
- }
- else
- {
- interfaceBean.setExchangeRateType(new Integer
- (FAInterfaceConstants.ERT_CORPORATE));
- }
- //GOSIDebug.debugMessages("exchange rate type " +interfaceBean.getExchangeRateType());
- interfaceBean.setInvoiceAmountFC
- (headerBean.getTotalAmount());
- interfaceBean.setDiscountAmountFC
- (headerBean.getDiscountAmount());
- interfaceBean.setPartyInvoiceDateHijra
- (headerBean.getInvoiceDateStr());
- interfaceBean.setPartyInvoiceDateEntFmt
- (headerBean.getInvoiceDateEntFmt());
- interfaceBean.setPayee(headerBean.getPayeeName());
- narrationMessage = GOSIErrorMessages.getErrorDesc("SOI_ERR_5138");
- narrationMessage += " " + headerBean.getTotalAmount();
- narrationMessage += " " + GOSIErrorMessages.getErrorDesc("SOI_ERR_5139");
- narrationMessage += " " + headerBean.getPayeeName();
- narrationMessage += " " + headerBean.getStartDateStr();
- narrationMessage += " - " + headerBean.getEndDateStr();
- narrationMessage += " " + GOSIErrorMessages.getErrorDesc("SOI_ERR_5591");
- narrationMessage += " " + headerBean.getFileNumber();
- GOSIDebug.debugMessages("StartDate: " + headerBean.getStartDateStr());
- GOSIDebug.debugMessages("EndDate: " + headerBean.getEndDateStr());
- GOSIDebug.debugMessages("Narration Message :" + narrationMessage + ":");
- String narationApp ="";
- if(OHConstants.PAYMENT_MODE_CHEQUE.equals(headerBean.getPaymentMode()))
- {
- narationApp = " "+ GOSIErrorMessages.getErrorDesc("SOI_ERR_5314");
- //" by cheque ";
- }else
- {
- narationApp = " "+ GOSIErrorMessages.getErrorDesc("SOI_ERR_5315");
- //" by bank transfer to bank account ";
- narationApp = narationApp +" "+headerBean.getBankAccountNumber();
- Short shortBankCode = new Short(headerBean.getBankCode().shortValue());
- Short shortBranchCode = new Short(headerBean.getBankBranchCode());
- //GOSIDebug.debugMessages("shortBranchCode:"+shortBranchCode);
- //GOSIDebug.debugMessages("BankName:"+GOSIUtilities.getDomainDesc("Bank",shortBankCode.shortValue()));
- //GOSIDebug.debugMessages("BranchName:"+GOSIUtilities.getDependentDomainDesc("BankBranch",shortBankCode.toString(),shortBranchCode.shortValue()));
- narationApp = narationApp +" , "+
- GOSIUtilities.getDomainDesc("Bank",shortBankCode.shortValue())+" , " +
- GOSIUtilities.getDependentDomainDesc("BankBranch",shortBankCode.toString(),shortBranchCode.shortValue());
- }
- narrationMessage = narrationMessage+narationApp;
- //GOSIDebug.debugMessages("\n\n NARATION:"+narrationMessage);
- //GOSIDebug.debugMessages("narration msg" +narrationMessage);
- interfaceBean.setNarration(narrationMessage);
- if(OHConstants.PAYMENT_MODE_BANK_TRANSFER.
- equals(headerBean.getPaymentMode()))
- {
- interfaceBean.setPaymentMode
- (new Integer
- (FAInterfaceConstants.ACCOUNT_TRANSFER));
- }
- else if(OHConstants.PAYMENT_MODE_CHEQUE.
- equals(headerBean.getPaymentMode()))
- {
- interfaceBean.setPaymentMode
- (new Integer
- (FAInterfaceConstants.LC_CHEQUE));
- }
- interfaceBean.setPaymentTerm(new Integer
- (FAInterfaceConstants.IMMEDIATE_PAYMENTTERM));
- interfaceBean.setStatus(new Integer
- (FAInterfaceConstants.POSTED));
- interfaceBean.setInvoiceInterfaceDetailList
- (interfaceDetailMethod(headerBean));
- interfaceBean.setModuleId
- (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- interfaceBean.setCreatedBy(headerBean.
- getLastModifiedBy());
- interfaceBean.setCreationTimestamp
- (new Timestamp
- (System.currentTimeMillis()));
- HashMap interfaceHash = new HashMap();
- interfaceHash.put("methodDescription",
- FAInterfaceConstants.INVOICE_INTERFACE);
- interfaceHash.put("interfaceBean",interfaceBean);
- FinancialAccountingInterface fai;
- // calling finance interface and returning the invoice id
- fai = FinanceImplProxy.getFAInterface();
- HashMap retVal = fai.invokeService(interfaceHash);
- creditNoteId = (Long)retVal.get("invoiceRecId");
- GOSIDebug.debugMessages("credit note id *****"+creditNoteId);
- }
- }
- catch(GOSIException ge)
- {
- throw ge;
- }
- catch(Exception e)
- {
- ctx.setRollbackOnly();
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "interfaceMethod()",e,"CMN_ERR_1000");
- }
- return creditNoteId;
- }
- /**
- * @METHOD NAME : interfaceDetailMethod
- * @INFORMATION : This method is to interface Detail Method used to populate the details bean for creditnote
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private ArrayList interfaceDetailMethod
- (RegHospInvoiceHeaderBean headerBean)
- throws GOSIException
- {
- ArrayList debitDetailsArray = new ArrayList();
- try
- {
- InvoiceInterfaceDetailBean debitDetailBean =
- new InvoiceInterfaceDetailBean();
- // method to set the interface details for the interface method
- debitDetailBean.setAmountFC(
- headerBean.getTotalAmount());
- debitDetailBean.setReasonCode(new Integer
- (FAInterfaceConstants.TREATMENT_EXPENSE_RC));
- debitDetailBean.setShortDesc
- (GOSIErrorMessages.getErrorDesc
- ("SOI_ERR_4897"));
- debitDetailBean.setCrDrIndicator(new Integer
- ("" + FAInterfaceConstants.DR_INDICATOR));
- debitDetailsArray.add(debitDetailBean);
- }
- catch(Exception e)
- {
- ctx.setRollbackOnly();
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),"interfaceDetailMethod()",
- e,"CMN_ERR_1000");
- }
- return debitDetailsArray;
- }
- /**
- * @METHOD NAME : formatInvoiceDetailsList
- * @INFORMATION : This method is to format Invoice Details List for display to user using page number
- * @PARAM : class java.util.ArrayList,
- class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private ArrayList formatInvoiceDetailsList(ArrayList detailList,
- RegHospInvoiceHeaderBean headerBean) throws GOSIException
- {
- try
- {
- // too set the page number and file number in detail pages
- int detailListSize = detailList.size();
- if(headerBean.getFileNumber()==null)
- {
- int recordsPerPage = OHRuleBean.getInvoiceRecordsPerPage();
- for(int i = 1; i<=detailListSize ;i++)
- {
- int pageNumber= (i/recordsPerPage)+1;
- RegHospInvoiceDetailBean detailBean =
- (RegHospInvoiceDetailBean)detailList.get(i-1);
- detailBean.setPageNumber(new Long((long)pageNumber));
- }
- }
- return detailList;
- }catch(Exception e)
- {
- ctx.setRollbackOnly();
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),"formatInvoiceDetailsList()",
- e,"CMN_ERR_1000");
- }
- }
- /**
- * @METHOD NAME : getHospitalDetails
- * @INFORMATION : This method is to get the hospital details
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @EXCEPTION : class gosi.core.util.GOSIException,
- class java.rmi.RemoteException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public RegHospInvoiceHeaderBean getHospitalDetails
- (RegHospInvoiceHeaderBean headerBean )
- throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String sqlQuery = " select HOSPITALCODE, HOSPITALNAMEARB, HOSPITALTYPE , INVOICEPAPERSTOPDATE , INVOICEPAPERSTOPDATEFMT "
- + " from "+ SITables.T_HOSPITAL
- + " where HOSPITALCODE = ? ";
- con = GOSIUtilities.getConnection(GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,headerBean.getHospitalCode().longValue());
- rs = ps.executeQuery();
- if(rs.next())
- {
- headerBean.setHospitalName(rs.getString("HOSPITALNAMEARB"));
- if(rs.getObject("INVOICEPAPERSTOPDATE")!=null)
- {
- headerBean.setInvoicePaperStopDate(rs.getTimestamp("INVOICEPAPERSTOPDATE"));
- }
- if(rs.getObject("INVOICEPAPERSTOPDATEFMT")!=null)
- {
- headerBean.setInvoicePaperStopDateFmt(rs.getString("INVOICEPAPERSTOPDATEFMT"));
- }
- Short hospitalType = new Short(rs.getShort("HOSPITALTYPE"));
- if(headerBean.getMode() == headerBean.NEW_MODE && !OHConstants.REG_HOSPITAL.equals(hospitalType))
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getHospitalDetails()",null,"SOI_ERR_5200");
- }
- sqlQuery = "select HOSPITALCODE, PAYEENAME, AGREESTATUS "
- + " from "+SITables.T_HOSPITALCONTRACT
- + " where HOSPITALCODE = ? and AGREESTATUS = ? ";
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,headerBean.getHospitalCode().longValue());
- ps.setByte(2,OHConstants.AGREESTATUS_YES.byteValue());
- rs = ps.executeQuery();
- if(rs.next())
- {
- headerBean.setPayeeName(rs.getString("PAYEENAME"));
- headerBean.setPaymentMode(OHConstants.PAYMENT_MODE_CHEQUE);
- }
- }
- else
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getHospitalDetails()",null,"SOI_ERR_4014");
- }
- }
- catch(GOSIException ge)
- {
- throw ge;
- }
- catch(Exception e)
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getHospitalDetails()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(con,ps,rs);
- }
- return headerBean;
- }
- /**
- * @METHOD NAME : saveInvoiceHeader
- * @INFORMATION : This method is to save the invoice header befor calculating the invoice
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @EXCEPTION : class gosi.core.util.GOSIException,
- class java.rmi.RemoteException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public RegHospInvoiceHeaderBean saveInvoiceHeader
- (RegHospInvoiceHeaderBean headerBean,DMSRequestHeaderBean dmsHeaderBean)
- throws GOSIException
- {
- try
- {
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- GOSIDebug.debugMessages("Starting saveInvoiceHeader - MaintainRegHospitalInvoiceSessionEJB");
- Long userId = null;
- Timestamp currentTime = new Timestamp(System.currentTimeMillis());
- RegHospitalInvoiceHeaderEntityHome headerHome= (RegHospitalInvoiceHeaderEntityHome)
- ServiceLocator.getInstance().getRemoteHome(
- OHConstants.REG_HOSP_INVOICE_HEADER_ENTITY_JNDI,
- RegHospitalInvoiceHeaderEntityHome.class);
- GOSIDebug.debugMessages("Mode:" + headerBean.getMode() + ":");
- if(headerBean.getMode() == AuditBean.NEW_MODE)
- {
- String startDateGreg = GOSIUtilities.getDateFullString(headerBean.getStartDate());
- String monthEndDateGreg = OHUtilities.getMonthEndDate(startDateGreg);
- String currentDateStr = GOSIUtilities.getDateFullString(currentTime);
- headerBean.setEndDateStr(monthEndDateGreg);
- headerBean.setEndDateEntFmt(OHConstants.GREGORIAN);
- headerBean.setEndDate(OHUtilities.getGregDate
- (headerBean.getEndDateStr(),headerBean.getEndDateEntFmt()));
- headerBean = validateInvoiceDates(headerBean);
- userId = headerBean.getCreatedBy();
- if (! isInvoiceFileNumberUnique (headerBean))
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "saveInvoiceHeader()",
- null,
- "SOI_ERR_5574");
- }
- Long headerId = GOSIUtilities.getPrimaryKey
- ("T_REGHOSPINVOICEHDR",userId);
- Long workflowId = GOSIUtilities.getPrimaryKey
- ("TRMTSRVCWRKFLOID",userId);
- Long invoiceNumber = GOSIUtilities.getPrimaryKey
- ("REGHOSINVOICENUMBER",userId);
- headerBean.setInvoiceHeaderId(headerId);
- headerBean.setWorkflowId(workflowId);
- headerBean.setInvoiceNumber(invoiceNumber);
- headerBean.setCreationTimestamp(currentTime);
- headerBean.setInvoiceStatus(OHConstants.REG_HOSP_INVC_PENDING_DATA_ENTRY);
- headerBean.setInvoiceDate(OHUtilities.getGregDate(currentDateStr,OHConstants.GREGORIAN));
- headerBean.setInvoiceDateEntFmt(OHConstants.GREGORIAN);
- // inserting header
- headerHome.create(headerBean);
- headerBean.setMode(AuditBean.MODIFY_MODE);
- }else
- if(headerBean.getMode() == AuditBean.MODIFY_MODE)
- {
- headerBean.setLastModifiedTimestamp(currentTime);
- RegHospitalInvoiceHeaderEntity headerRemote = headerHome.
- findByPrimaryKey(headerBean.getInvoiceHeaderId());
- headerRemote.modifyRegHospInvoiceHeader(headerBean);
- }
- // calling DMS interface and setting key values
- if(dmsHeaderBean != null)
- {
- dmsHeaderBean.setSourceRecordId
- ("" + headerBean.getInvoiceHeaderId());
- dmsHeaderBean.setSourceTable(SITables.T_REGHOSPINVOICEHDR);
- dmsHeaderBean.setCreatedBy(userId);
- dmsHeaderBean.setKeyList(DMSConstants.HOSPITAL_INVOICE_NUMBER,
- ""+headerBean.getInvoiceNumber());
- DMSUtilities.startDMS(dmsHeaderBean);
- }
- }
- catch(GOSIException ge)
- {
- ctx.setRollbackOnly();
- throw ge;
- }
- catch(Exception e)
- {
- ctx.setRollbackOnly();
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "saveInvoiceHeader()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con);
- }
- GOSIDebug.debugMessages("Ending saveInvoiceHeader - MaintainRegHospitalInvoiceSessionEJB");
- return headerBean;
- }
- /**
- * @METHOD NAME : searchaveMapMedicineCodeList
- * @INFORMATION : This method is to Search SFDA Medicine List
- * of hospital in Arraylist
- * @PARAM : class java.lang.Long
- * class java.lang.String
- * class java.lang.String
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public ArrayList searchMapMedicineCodeList(Long hospitalCode, String medCode,String mapCode)throws GOSIException
- {
- ArrayList hospitalMapMedicineList=new ArrayList();
- PreparedStatement ps = null;
- ResultSet rs = null;
- int i=1;
- try
- {
- StringBuilder sqlQuery = new StringBuilder ( "SELECT A.ID , A.HOSPITALCODE , A.SFDACODE , A.MEDICINEMAPCODE , A.STATUS ,")
- .append(" B.TRADENAME , B.STRENGTHVALUE , B.UNITOFSTRENGTH , B.UNITOFSTRENGTH , ")
- .append("B.VOLUME , B.UNITOFVOLUME , B.PACKAGETYPE , B.PUBLICPRICE FROM ")
- .append(SITables.T_SFDAMAP +" A LEFT JOIN "+SITables.T_SFDA + " B ON A.SFDACODE=B.REGISTRATIONNUM")
- .append(" WHERE A.HOSPITALCODE= ? AND A.STATUS in ( ? , ? ) ");
- if(medCode!=null && !medCode.equals(""))
- sqlQuery.append("AND A.SFDACODE= ? ");
- if(mapCode!=null && !mapCode.equals(""))
- sqlQuery.append("AND A.MEDICINEMAPCODE= ? ");
- GOSIDebug.debugMessages(sqlQuery.toString());
- con = GOSIUtilities.getConnection(GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement(sqlQuery.toString());
- ps.setLong(i++,hospitalCode.longValue());
- ps.setShort(i++,OHConstants.SFDA_MAP_ENTER);
- ps.setShort(i++,OHConstants.SFDA_MAP_MODIFIED);
- if(medCode!=null && !medCode.equals(""))
- ps.setString(i++,medCode);
- if(mapCode!=null && !mapCode.equals(""))
- ps.setString(i++,mapCode);
- rs = ps.executeQuery();
- while(rs.next())
- {
- SFDAMapBean mapBean=new SFDAMapBean();
- mapBean.setId(rs.getLong("ID"));
- mapBean.setHospitalCode(rs.getLong("HOSPITALCODE"));
- mapBean.setSFDACode(rs.getString("SFDACODE"));
- mapBean.setMedicineMapCode(rs.getString("MEDICINEMAPCODE"));
- String tradeName=rs.getString("TRADENAME");
- String strengthValue=rs.getString("STRENGTHVALUE");
- String unitOfStrength=rs.getString("UNITOFSTRENGTH");
- String strength= strengthValue!=null &&unitOfStrength!=null?
- " "+strengthValue+unitOfStrength:"";
- String volumeValue=rs.getString("VOLUME");
- String unitOfVolume=rs.getString("UNITOFVOLUME");
- String volume=unitOfVolume!=null && !volumeValue.equalsIgnoreCase("null") ?
- " Volume:"+volumeValue+unitOfVolume:"";
- String name=tradeName+strength+volume;
- mapBean.setMedicineDesc(name);
- mapBean.setPackageType(rs.getString("PACKAGETYPE"));
- mapBean.setPublicPrice(rs.getString("PUBLICPRICE"));
- mapBean.setStatus(rs.getShort("STATUS"));
- hospitalMapMedicineList.add(mapBean);
- }
- return hospitalMapMedicineList;
- }
- catch(GOSIException ge)
- {
- throw ge;
- }
- catch(Exception e)
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "searchMapMedicineCodeList()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(con,ps,rs);
- }
- }
- /**
- * @METHOD NAME : saveMapMedicineCodeList
- * @INFORMATION : This method is to save the invoice header befor calculating the invoice
- * @PARAM : class java.util.ArrayList
- * @RETURN : class java.lang.String
- * @EXCEPTION : class gosi.core.util.GOSIException,
- class java.rmi.RemoteException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public HashMap saveMapMedicineCodeList(ArrayList mapMedicineCodeList)throws GOSIException
- {
- String message="";
- Long userId=null;
- String errorCode="";
- StringBuilder cases=new StringBuilder("");
- HashMap duplicateList=new HashMap();
- PreparedStatement ps = null;
- ResultSet rs = null;
- HashMap trmtServices=new HashMap();
- HashMap SFDACodes=new HashMap();
- HashMap MapCodes=new HashMap();
- SFDAMapEntityHome mapHome= (SFDAMapEntityHome)
- ServiceLocator.getInstance().getRemoteHome(
- OHConstants.SFDA_MAP_ENTITY_JNDI,
- SFDAMapEntityHome.class);
- Boolean isHasSaved=false;
- Boolean isHasModified=false;
- try
- {
- duplicateList=validateMapMedicineCodeList(mapMedicineCodeList);
- trmtServices=(HashMap)duplicateList.get("TreatmentService");
- SFDACodes=(HashMap)duplicateList.get("SFDACode");
- MapCodes=(HashMap)duplicateList.get("MapCode");
- for(int i=0;i<mapMedicineCodeList.size();i++)
- {
- SFDAMapBean mapBean=(SFDAMapBean)mapMedicineCodeList.get(i);
- Boolean isModifyMode=mapBean.getId()!=null && mapBean.getMode()==AuditBean.MODIFY_MODE;
- if((trmtServices==null || !trmtServices.containsValue(mapBean.getMedicineMapCode()))
- && (MapCodes==null || !MapCodes.containsValue(mapBean.getMedicineMapCode()))
- && (SFDACodes==null || !SFDACodes.containsValue(mapBean.getSFDACode()) || isModifyMode ) )
- {
- if(isModifyMode)
- {
- SFDAMapEntity mapEntity=(SFDAMapEntity)mapHome.findByPrimaryKey(mapBean.getId());
- mapEntity.updateSFDAMap(mapBean);
- isHasModified=true;
- }
- else
- {
- userId=mapBean.getCreatedBy();
- Long id= GOSIUtilities.getPrimaryKey("T_SFDAMAP",userId);
- mapBean.setId(id);
- mapHome.create(mapBean);
- isHasSaved=true;
- mapBean.setMode(AuditBean.DELETE_MODE);
- }
- }
- }
- for(int i=0;i<mapMedicineCodeList.size();i++)
- {
- SFDAMapBean mapBean=(SFDAMapBean)mapMedicineCodeList.get(i);
- if(mapBean.getMode()==AuditBean.DELETE_MODE)
- mapMedicineCodeList.remove(i);
- }
- duplicateList.put("isHasSaved", isHasSaved);
- duplicateList.put("isHasModified",isHasModified );
- duplicateList.put("mapMedicineCodeList", mapMedicineCodeList);
- return duplicateList;
- }
- catch(GOSIException ge)
- {
- ctx.setRollbackOnly();
- throw ge;
- }
- catch(Exception e)
- {
- ctx.setRollbackOnly();
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "saveMapMedicineCodeList()",e,"CMN_ERR_1000");
- }
- /*finally{
- return message;
- }*/
- }
- /**
- * @METHOD NAME : validateMapMedicineCodeList
- * @INFORMATION : This method is to validate Map Medicine Code List with SFDA List
- * @PARAM : class java.util.ArrayList
- * @RETURN : class java.lang.String
- * @EXCEPTION : class gosi.core.util.GOSIException,
- class java.rmi.RemoteException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private HashMap validateMapMedicineCodeList(ArrayList mapMedicineCodeList)throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- HashMap duplicateList=new HashMap();
- HashMap trmtServices=new HashMap();
- HashMap SFDACodes=new HashMap();
- HashMap MapCodes=new HashMap();
- int j=0;
- try
- {
- Long hospitalCode=((SFDAMapBean)mapMedicineCodeList.get(0)).getHospitalCode();
- StringBuilder sqlQuery = new StringBuilder ( "select Treatmentcode from ")
- .append(SITables.T_TRTMSERVICELIST )
- .append(" where hospitalcode=? and Treatmentcode in ( ?");
- for(int i=1;i<mapMedicineCodeList.size();i++){
- sqlQuery.append(" , ?");
- }
- sqlQuery.append(" )");
- con = GOSIUtilities.getConnection(GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement(sqlQuery.toString());
- ps.setLong(1,hospitalCode.longValue());
- for(int i=1;i<=mapMedicineCodeList.size();i++){
- ps.setString(i+1,((SFDAMapBean)mapMedicineCodeList.get(i-1)).getMedicineMapCode());
- }
- rs = ps.executeQuery();
- j=0;
- while(rs.next())
- {
- trmtServices.put("TreatmentService"+j,rs.getString("TREATMENTCODE"));
- j++;
- }
- GOSIUtilities.cleanUp(ps,rs);
- sqlQuery = new StringBuilder ( "select SFDACODE from ")
- .append(SITables.T_SFDAMAP)
- .append(" t where hospitalcode=? and SFDACODE in ( ?");
- for(int i=1;i<mapMedicineCodeList.size();i++){
- sqlQuery.append(" , ?");
- }
- sqlQuery.append(" )");
- ps = con.prepareStatement(sqlQuery.toString());
- ps.setLong(1,hospitalCode.longValue());
- for(int i=1;i<=mapMedicineCodeList.size();i++){
- ps.setString(i+1,((SFDAMapBean)mapMedicineCodeList.get(i-1)).getSFDACode());
- }
- rs = ps.executeQuery();
- j=0;
- while(rs.next())
- {
- SFDACodes.put("SFDACode"+j,rs.getString("SFDACODE"));
- j++;
- }
- GOSIUtilities.cleanUp(ps,rs);
- sqlQuery = new StringBuilder ( "select MEDICINEMAPCODE from ")
- .append(SITables.T_SFDAMAP)
- .append(" t where hospitalcode=? and MEDICINEMAPCODE in ( ?");
- for(int i=1;i<mapMedicineCodeList.size();i++){
- sqlQuery.append(" , ?");
- }
- sqlQuery.append(" )");
- ps = con.prepareStatement(sqlQuery.toString());
- ps.setLong(1,hospitalCode.longValue());
- for(int i=1;i<=mapMedicineCodeList.size();i++){
- ps.setString(i+1,((SFDAMapBean)mapMedicineCodeList.get(i-1)).getMedicineMapCode());
- }
- rs = ps.executeQuery();
- j=0;
- while(rs.next())
- {
- MapCodes.put("MapCode"+j,rs.getString("MEDICINEMAPCODE"));
- j++;
- }
- if(!trmtServices.isEmpty())
- duplicateList.put("TreatmentService", trmtServices);
- if(!SFDACodes.isEmpty())
- duplicateList.put("SFDACode", SFDACodes);
- if(!MapCodes.isEmpty())
- duplicateList.put("MapCode", MapCodes);
- return duplicateList;
- }
- catch(GOSIException ge)
- {
- ctx.setRollbackOnly();
- throw ge;
- }
- catch(Exception e)
- {
- ctx.setRollbackOnly();
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "validateMapMedicineCodeList()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(con,ps,rs);
- // return errorMessage.toString();
- }
- }
- /**
- * @METHOD NAME : getPageList
- * @INFORMATION : This method is to get the number of pages of the invoice details
- * @PARAM : class java.lang.Long
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException,
- class java.rmi.RemoteException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public ArrayList getPageList(Long invoiceHeaderId)
- throws GOSIException
- {
- ArrayList pageList = new ArrayList();
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String sqlQuery = "select distinct (PAGENUMBER) from "
- + SITables.T_REGHOSPINVOICEDET
- + " where INVOICEHEADERID = ? " + " and STATUS != ? ORDER BY PAGENUMBER ASC ";
- con = GOSIUtilities.getConnection(GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,invoiceHeaderId.longValue());
- ps.setShort(2,OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED.shortValue());
- rs = ps.executeQuery();
- while(rs.next())
- {
- pageList.add(new Long(rs.getLong("PAGENUMBER")));
- }
- }
- catch(GOSIException ge)
- {
- throw ge;
- }
- catch(Exception e)
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getPageList()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(con,ps,rs);
- }
- return pageList;
- }
- /**
- * @METHOD NAME : getNumberOfTrmtInvoiceDetails
- * @INFORMATION : This method is to get the number of pages of the invoice details
- * @PARAM : class java.lang.Long
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException,
- class java.rmi.RemoteException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private Long getNumberOfTrmtInvoiceDetails(Long invoiceHeaderId)
- throws GOSIException
- {
- Long count = null;
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String sqlQuery = "select count (INVOICEDETAILSID) as NUM FROM "
- + SITables.T_REGHOSPINVOICEDET
- + " where INVOICEHEADERID = ? " + " and STATUS != ? ";
- if(con.isClosed())
- con = GOSIUtilities.getConnection(GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,invoiceHeaderId.longValue());
- ps.setShort(2,OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED.shortValue());
- rs = ps.executeQuery();
- if(rs.next())
- {
- count=new Long(rs.getLong("NUM"));
- }
- }
- catch(GOSIException ge)
- {
- throw ge;
- }
- catch(Exception e)
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getNumberOfTrmtInvoiceDetails()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(ps,rs);
- }
- return count;
- }
- /**
- * @METHOD NAME : searchRegHospitalInvoiceDetails
- * @INFORMATION : This method is to search Invoice details List
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.InvoiceSearchBean
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public ArrayList searchRegHospitalInvoiceDetails(Long invoiceheaderId,
- Long pageNumber)throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- ArrayList detailsList = new ArrayList();
- try
- {
- // getting invoice details for a particular invoice header
- int count=1;
- con = GOSIUtilities.getConnection
- (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- String sqlQuery = " select "+
- " INVOICEDETAILSID, "+
- " INVOICEHEADERID, " +
- " INJURYID, " +
- " DISBASSMTID, " +
- " TRMTSTARTDATE, " +
- " TRMTSTARTDATEENTFMT, " +
- " TRMTENDDATE, " +
- " TRMTENDDATEENTFMT, " +
- " SERVICESAMOUNT, " +
- " MEDICINESAMOUNT, " +
- " REJECTEDAMOUNT, " +
- " STATUS, " +
- " CREATEDBY, " +
- " CREATIONTIMESTAMP, " +
- " LASTMODIFIEDBY, " +
- " LASTMODIFIEDTIMESTAMP, "+
- " PAGENUMBER, " +
- " REJECTEDMEDICINESAMOUNT, " +
- " REJECTEDSERVICESAMOUNT, " +
- " NODISCOUNTAMOUNT, " +
- " REJECTEDNODISCOUNTAMOUNT, " +
- " ROUTINGCRITERIA, " +
- " SOCIALINSURANCENUMBER "+
- " from " +
- SITables.T_REGHOSPINVOICEDET +
- " where "+
- " INVOICEHEADERID = ? and PAGENUMBER = ? "+
- " and STATUS != ? "+
- " order by INVOICEDETAILSID ";
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,invoiceheaderId.longValue());
- ps.setInt(2,pageNumber.intValue());
- ps.setShort(3,OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED.shortValue());
- rs = ps.executeQuery();
- while(rs.next())
- {
- //GOSIDebug.debugMessages("inside while 2");
- RegHospInvoiceDetailBean detailsBean =
- new RegHospInvoiceDetailBean();
- detailsBean.setInvoiceDetailsId
- (new Long(rs.getLong("INVOICEDETAILSID")));
- detailsBean.setInvoiceHeaderId
- (new Long(rs.getLong("INVOICEHEADERID")));
- if(rs.getObject("INJURYID")!= null)
- {
- detailsBean.setInjuryId
- (new Long(rs.getLong("INJURYID")));
- }
- if(rs.getObject("DISBASSMTID")!= null)
- {
- detailsBean.setDisbAssmtId
- (new Long(rs.getLong("DISBASSMTID")));
- }
- detailsBean.setTrmtStartDate
- (rs.getTimestamp("TRMTSTARTDATE"));
- if(detailsBean.getTrmtStartDate()!=null)
- {
- detailsBean.setTrmtStartDateEntFmt
- (rs.getString("TRMTSTARTDATEENTFMT"));
- detailsBean.setTrmtStartDateStr(OHUtilities.getDateStr(
- detailsBean.getTrmtStartDate(),
- detailsBean.getTrmtStartDateEntFmt()));
- }
- detailsBean.setTrmtEndDate
- (rs.getTimestamp("TRMTENDDATE"));
- if(detailsBean.getTrmtEndDate() != null)
- {
- detailsBean.setTrmtEndDateEntFmt
- (rs.getString("TRMTENDDATEENTFMT"));
- detailsBean.setTrmtEndDateStr(OHUtilities.getDateStr(
- detailsBean.getTrmtEndDate(),
- detailsBean.getTrmtEndDateEntFmt()));
- }
- if(rs.getObject("SERVICESAMOUNT")!= null)
- {
- detailsBean.setServicesAmount
- (new Double(rs.getDouble("SERVICESAMOUNT")));
- }
- if(rs.getObject("MEDICINESAMOUNT")!= null)
- {
- detailsBean.setMedicinesAmount
- (new Double(rs.getDouble("MEDICINESAMOUNT")));
- }
- if(rs.getObject("REJECTEDAMOUNT")!= null)
- {
- detailsBean.setRejectedAmount
- (new Double(rs.getDouble("REJECTEDAMOUNT")));
- }
- if(rs.getObject("REJECTEDMEDICINESAMOUNT")!= null)
- {
- detailsBean.setRejectedMedicineAmount
- (new Double(rs.getDouble("REJECTEDMEDICINESAMOUNT")));
- }
- if(rs.getObject("REJECTEDSERVICESAMOUNT")!= null)
- {
- detailsBean.setRejectedServiceAmount
- (new Double(rs.getDouble("REJECTEDSERVICESAMOUNT")));
- }
- if(rs.getObject("NODISCOUNTAMOUNT")!= null)
- {
- detailsBean.setNoDiscountAmount
- (new Double(rs.getDouble("NODISCOUNTAMOUNT")));
- }
- if(rs.getObject("REJECTEDNODISCOUNTAMOUNT")!= null)
- {
- detailsBean.setRejectedNoDiscountAmount
- (new Double(rs.getDouble("REJECTEDNODISCOUNTAMOUNT")));
- }
- if(rs.getObject("SOCIALINSURANCENUMBER")!= null)
- {
- detailsBean.setSocInsNumber
- (new Long(rs.getLong("SOCIALINSURANCENUMBER")));
- }
- if(rs.getObject("ROUTINGCRITERIA")!= null)
- {
- detailsBean.setRoutingCriteria
- (new Short(rs.getShort("ROUTINGCRITERIA")));
- }
- if(detailsBean.getInjuryId()!= null)
- {
- detailsBean.setServiceType(OHConstants.SERVICE_TYPE_TRMT);
- detailsBean = getInjuryDetails(detailsBean);
- }else if(detailsBean.getDisbAssmtId()!= null)
- {
- detailsBean = getDisbAssmtDetails(detailsBean);
- detailsBean.setServiceType(OHConstants.SERVICE_TYPE_DISB_TRMT);
- }else if(detailsBean.getSocInsNumber()!= null)
- {
- detailsBean = getContributorDetails(detailsBean);
- detailsBean.setServiceType(OHConstants.SERVICE_TYPE_MISC);
- }
- detailsBean.setStatus(new Short (rs.getShort("STATUS")));
- detailsBean.setPageNumber(new Long (rs.getLong("PAGENUMBER")));
- detailsBean.setMode(detailsBean.OLD_MODE);
- detailsList.add(detailsBean);
- }
- return detailsList;
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "searchDetailsList()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(con,ps,rs);
- }
- }
- /**
- * @METHOD NAME : getContributorDetails
- * @INFORMATION : This method is to get Injury Details
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private RegHospInvoiceDetailBean getContributorDetails
- (RegHospInvoiceDetailBean detailsBean)throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs= null;
- try
- {
- // Query to get injury details for each invoice detail
- String sqlQuery = "select b.SOCIALINSURANCENUMBER, "+
- " d.firstname || ' ' || NVL(d.secondname,'')|| ' ' || "+
- " NVL(d.thirdname,'')||' ' || NVL(d.surname,'') CONTRIBUTORNAME "+
- " from "+ SITables.T_CONTRIBUTOR +" b, "+
- SITables.T_PERSON + " d "+
- " where "+
- " b.SOCIALINSURANCENUMBER = ? "+
- " and b.PERSONID = d.PERSONID ";
- GOSIDebug.debugMessages("SqlQuery:\n"+sqlQuery);
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,detailsBean.getSocInsNumber().longValue());
- rs = ps.executeQuery();
- while (rs.next())
- {
- detailsBean.setSocInsNumber(new Long(rs.getLong("SOCIALINSURANCENUMBER")));
- detailsBean.setName(rs.getString("CONTRIBUTORNAME"));
- }
- return detailsBean;
- }
- catch (Exception e)
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "getContributorDetails()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(ps,rs);
- }
- }
- /**
- * @METHOD NAME : saveInvoiceServiceDetails
- * @INFORMATION : This method is save the entered invoice service details for the invoice header
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public String saveInvoiceServiceDetails(RegHospInvoiceDetailBean invoiceDetailBean,
- DMSRequestHeaderBean dmsHeaderBean)throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs= null;
- String message = "";
- try
- {
- GOSIDebug.debugMessages("Starting saveInvoiceServiceDetails - MaintainRegHospitalInvoiceSessionEJB");
- String sqlQuery = "";
- Long userId = null;
- if(invoiceDetailBean.getMode()==invoiceDetailBean.NEW_MODE)
- {
- userId = invoiceDetailBean.getCreatedBy();
- }else
- {
- userId = invoiceDetailBean.getLastModifiedBy();
- }
- Timestamp currentDate = new Timestamp(System.currentTimeMillis());
- GOSIDebug.debugMessages("Service Type:"+invoiceDetailBean.getServiceType());
- con = GOSIUtilities.getConnection(GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- if(OHConstants.SERVICE_TYPE_TRMT.equals(invoiceDetailBean.getServiceType()))
- {
- sqlQuery = "select INJURYID from "
- + SITables.T_INJURY
- + " where SOCINSNUMBER = ? and "
- + " INJURYDATE = ? and "
- + " INJURYSTATUS not in (?,?,?) and "
- + " DATECOMPLICATION IS NULL "
- + " ORDER BY INJURYID DESC ";
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,invoiceDetailBean.getSocInsNumber().longValue());
- ps.setTimestamp(2,invoiceDetailBean.getInjuryDate());
- ps.setShort(3,OHConstants.INJ_STS_FIRST_NOTIFIED.shortValue());
- ps.setShort(4,OHConstants.INJ_STS_NOTIFIED.shortValue());
- ps.setShort(5,OHConstants.INJ_STS_CANCELLED.shortValue());
- GOSIDebug.debugMessages("SqlQuery :" + sqlQuery + ":");
- GOSIDebug.debugMessages("\t\t Param 1 :" + invoiceDetailBean.getSocInsNumber().longValue() + ":");
- GOSIDebug.debugMessages("\t\t Param 2 :" + invoiceDetailBean.getInjuryDate() + ":");
- GOSIDebug.debugMessages("\t\t Param 3 :" + OHConstants.INJ_STS_FIRST_NOTIFIED.shortValue() + ":");
- GOSIDebug.debugMessages("\t\t Param 4 :" + OHConstants.INJ_STS_NOTIFIED.shortValue() + ":");
- GOSIDebug.debugMessages("\t\t Param 5 :" + OHConstants.INJ_STS_CANCELLED.shortValue() + ":");
- rs = ps.executeQuery();
- if(rs.next())
- {
- invoiceDetailBean.setInjuryId(new Long(rs.getLong("INJURYID")));
- }else
- {
- invoiceDetailBean.setInjuryId(null);
- //SOI_ERR_4531
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "saveInvoiceServiceDetails()",null,"SOI_ERR_5203");
- }
- GOSIDebug.debugMessages("================>>>>invoiceDetailBean.getTrmtStartDate():" + invoiceDetailBean.getTrmtStartDate() + ":");
- if(null!= invoiceDetailBean.getTrmtStartDate() && invoiceDetailBean.getInjuryDate().after
- (invoiceDetailBean.getTrmtStartDate()))
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "saveInvoiceServiceDetails()",null,"SOI_ERR_4025");
- }
- }else
- if(OHConstants.SERVICE_TYPE_DISB_TRMT.equals(invoiceDetailBean.getServiceType()))
- {
- sqlQuery = "select SCHEDULEID from "
- + SITables.T_DISBASSMT
- + " where SOCIALINSURANCENUMBER = ? and ASSESSMENTDATE = ? ";
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,invoiceDetailBean.getSocInsNumber().longValue());
- ps.setTimestamp(2,invoiceDetailBean.getInjuryDate());
- rs = ps.executeQuery();
- if(rs.next())
- {
- invoiceDetailBean.setDisbAssmtId(new Long(rs.getLong("SCHEDULEID")));
- }else
- {
- invoiceDetailBean.setDisbAssmtId(null);
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "saveInvoiceServiceDetails()",null,"SOI_ERR_4146");
- }
- }else
- if(OHConstants.SERVICE_TYPE_COMPLICATION_TRMT.equals(invoiceDetailBean.getServiceType()))
- {
- sqlQuery = "select INJURYID from "
- + SITables.T_INJURY
- + " where SOCINSNUMBER = ? and "
- + " DATECOMPLICATION = ? and "
- + " INJURYSTATUS not in (?,?,?) "
- + " ORDER BY INJURYID DESC ";
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,invoiceDetailBean.getSocInsNumber().longValue());
- ps.setTimestamp(2,invoiceDetailBean.getInjuryDate());
- ps.setShort(3,OHConstants.INJ_STS_FIRST_NOTIFIED.shortValue());
- ps.setShort(4,OHConstants.INJ_STS_NOTIFIED.shortValue());
- ps.setShort(5,OHConstants.INJ_STS_CANCELLED.shortValue());
- rs = ps.executeQuery();
- if(rs.next())
- {
- invoiceDetailBean.setInjuryId(new Long(rs.getLong("INJURYID")));
- }else
- {
- invoiceDetailBean.setInjuryId(null);
- //SOI_ERR_4531
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "saveInvoiceServiceDetails()",null,"SOI_ERR_5203");
- }
- if(null!= invoiceDetailBean.getTrmtStartDate() && invoiceDetailBean.getInjuryDate().after
- (invoiceDetailBean.getTrmtStartDate()))
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "saveInvoiceServiceDetails()",null,"SOI_ERR_4025");
- }
- }
- else
- {
- }
- // checking the validation of the treatment dates
- if(invoiceDetailBean.getTrmtStartDate()!= null &&
- invoiceDetailBean.getTrmtEndDate()!= null)
- {
- if(invoiceDetailBean.getTrmtStartDate().after
- (invoiceDetailBean.getTrmtEndDate()))
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "saveInvoiceServiceDetails()",null,"SOI_ERR_4024");
- }
- if(invoiceDetailBean.getTrmtStartDate().after
- (currentDate))
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "saveInvoiceServiceDetails()",null,"SOI_ERR_5198");
- }
- if(invoiceDetailBean.getTrmtEndDate().after
- (currentDate))
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "saveInvoiceServiceDetails()",null,"SOI_ERR_5199");
- }
- if(!invoiceDetailBean.getStatus().equals(OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED)&&(OHConstants.SERVICE_TYPE_COMPLICATION_TRMT.equals(invoiceDetailBean.getServiceType())
- ||OHConstants.SERVICE_TYPE_TRMT.equals(invoiceDetailBean.getServiceType())))
- {
- if(invoiceDetailBean.getMode()==invoiceDetailBean.NEW_MODE)
- {
- sqlQuery = " select STATUS from "
- + SITables.T_REGHOSPINVOICEDET
- + " where INJURYID = ? "
- + " and STATUS != ? and "
- + " TRMTSTARTDATE <= ? AND TRMTENDDATE >= ? ";
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,invoiceDetailBean.getInjuryId().longValue());
- ps.setShort(2,OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED.shortValue());
- ps.setTimestamp(3,invoiceDetailBean.getTrmtEndDate());
- ps.setTimestamp(4,invoiceDetailBean.getTrmtStartDate());
- rs = ps.executeQuery();
- if(rs.next())
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "saveInvoiceServiceDetails()",null,"SOI_ERR_5903");
- }
- }
- else if(invoiceDetailBean.getMode()==invoiceDetailBean.MODIFY_MODE) {
- sqlQuery = " select STATUS,TRMTSTARTDATE,TRMTENDDATE, TRMTENDDATEENTFMT, TRMTSTARTDATEENTFMT from "
- + SITables.T_REGHOSPINVOICEDET
- + " where INJURYID = ? "
- + " and STATUS != ? and "
- + " TRMTSTARTDATE <= ? AND TRMTENDDATE >= ? ";
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,invoiceDetailBean.getInjuryId().longValue());
- ps.setShort(2,OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED.shortValue());
- ps.setTimestamp(3,invoiceDetailBean.getTrmtEndDate());
- ps.setTimestamp(4,invoiceDetailBean.getTrmtStartDate());
- rs = ps.executeQuery();
- Timestamp trmtEndDate=null;
- String trmtEndDateEntFmt= "";
- String trmtEndDateStr ="";
- Timestamp trmtStartDate=null;
- String trmtStartDateEntFmt= "";
- String trmtStartDateStr ="";
- boolean canModify=true;
- while(rs.next())
- {
- trmtStartDate=rs.getTimestamp("TRMTSTARTDATE");
- trmtStartDateEntFmt= rs.getString("TRMTSTARTDATEENTFMT");
- trmtStartDateStr =OHUtilities.getDateStr(trmtStartDate, trmtStartDateEntFmt);
- trmtEndDate=rs.getTimestamp("TRMTENDDATE");
- trmtEndDateEntFmt= rs.getString("TRMTENDDATEENTFMT");
- trmtEndDateStr =OHUtilities.getDateStr(trmtEndDate, trmtEndDateEntFmt);
- if(invoiceDetailBean.getTrmtStartDateStr().equals(trmtStartDateStr)
- && invoiceDetailBean.getTrmtEndDateStr().equals(trmtEndDateStr))
- {
- canModify=true;
- break;
- }
- else
- canModify=false;
- }
- if(!canModify){
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "saveInvoiceServiceDetails()",null,"SOI_ERR_5903");
- }
- }
- sqlQuery = "select TREATMENTSTATUS,HOSPITALCODE, STARTDATE, ENDDATE from "
- + SITables.T_TREATMENT
- + " where INJURYID = ? and "
- + " STARTDATE <= ? AND ENDDATE >= ? AND TREATMENTSTATUS <> ?" +
- " ORDER BY STARTDATE asc ";
- GOSIDebug.debugMessages("sqlQuery : "+sqlQuery);
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,invoiceDetailBean.getInjuryId().longValue());
- ps.setTimestamp(2,invoiceDetailBean.getTrmtEndDate());
- ps.setTimestamp(3,invoiceDetailBean.getTrmtStartDate());
- ps.setShort(4,OHConstants.TRMT_STS_CANCELLED);
- rs = ps.executeQuery();
- Timestamp startDate=null;
- Timestamp endDate=null;
- if(rs.next())
- {
- do
- {
- Long hospitalCode = rs.getLong("HOSPITALCODE");
- Short treatmentStatus=rs.getShort("TREATMENTSTATUS");
- Timestamp startDateTemp=rs.getTimestamp("STARTDATE");
- Timestamp endDateTemp=rs.getTimestamp("ENDDATE");
- if(!hospitalCode.equals(invoiceDetailBean.getHospitalCode()))
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "saveInvoiceServiceDetails()",null,"SOI_ERR_5904");
- }
- if(!treatmentStatus.equals(OHConstants.TRMT_STS_APPROVED))
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "saveInvoiceServiceDetails()",null,"SOI_ERR_5905");
- }
- if(endDate!=null && !endDate.equals(OHUtilities.getPrevDate(startDateTemp)))
- {
- // there exist gap
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "saveInvoiceServiceDetails()",null,"SOI_ERR_5906");
- }
- if (startDate==null)
- startDate=startDateTemp;
- endDate=endDateTemp;
- }while (rs.next()); // end will
- if (invoiceDetailBean.getTrmtStartDate().before(startDate)
- || invoiceDetailBean.getTrmtEndDate().after(endDate))
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "saveInvoiceServiceDetails()",null,"SOI_ERR_5906");
- }
- }
- else
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "saveInvoiceServiceDetails()",null,"SOI_ERR_5906");
- }
- }
- }
- RegHospitalInvoiceDetailEntityHome detailsHome= (RegHospitalInvoiceDetailEntityHome)
- ServiceLocator.getInstance().getRemoteHome(
- OHConstants.REG_HOSP_INVOICE_DETAILS_ENTITY_JNDI,
- RegHospitalInvoiceDetailEntityHome.class);
- if(invoiceDetailBean.getMode()==invoiceDetailBean.NEW_MODE)
- {
- message = isInvoiceDetailAlreadyPresent(invoiceDetailBean);
- Long primaryKey= GOSIUtilities.getPrimaryKey("T_REGHOSPINVOICEDET",userId);
- invoiceDetailBean.setInvoiceDetailsId(primaryKey);
- invoiceDetailBean.setCreationTimestamp(currentDate);
- if(message != null && !message.equals(""))
- {
- invoiceDetailBean.setStatus(OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED);
- }
- detailsHome.create(invoiceDetailBean);
- }else
- {
- RegHospitalInvoiceDetailEntity detailsRemote = detailsHome.
- findByPrimaryKey(invoiceDetailBean.getInvoiceDetailsId());
- invoiceDetailBean.setLastModifiedTimestamp(currentDate);
- detailsRemote.modifyRegHospitalInvoiceDetails(invoiceDetailBean);
- }
- if(dmsHeaderBean != null)
- {
- dmsHeaderBean.setSourceRecordId
- ("" + invoiceDetailBean.getInvoiceDetailsId());
- dmsHeaderBean.
- setSourceTable(SITables.T_REGHOSPINVOICEDET);
- dmsHeaderBean.setCreatedBy(userId);
- dmsHeaderBean.setKeyList(DMSConstants.HOSPITAL_INVOICE_NUMBER,
- ""+invoiceDetailBean.getInvoiceNumber());
- dmsHeaderBean.setKeyList(DMSConstants.SI_NUMBER,
- ""+invoiceDetailBean.getSocInsNumber());
- DMSUtilities.startDMS(dmsHeaderBean);
- }
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly();
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "saveInvoiceServiceDetails()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(con,ps,rs);
- }
- GOSIDebug.debugMessages("Ending saveInvoiceServiceDetails - MaintainRegHospitalInvoiceSessionEJB");
- return message;
- }
- /**
- * @METHOD NAME : saveInvoiceDetailsPage
- * @INFORMATION : This method is save the entered invoice service details for a page
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public String saveInvoiceDetailsPage(RegHospInvoiceHeaderBean headerBean,
- ArrayList detailsList,WorkflowParamBean workflowParamBean,
- DMSRequestHeaderBean dmsHeaderBean)throws GOSIException
- {
- String message;
- try
- {
- Long pageNumber = null;
- Long userId = new Long(workflowParamBean.getUserId());
- Timestamp currentTime = new Timestamp(System.currentTimeMillis());
- Short invoiceDetailStatus = null;
- if("RH_APPROVE_INVOICE_DETAIL_INT_AUD_CLK".equals
- (workflowParamBean.getStepShortName()) &&
- GOSIConstants.COMPLETED.equals(workflowParamBean.getRoutingCriterion()))
- {
- invoiceDetailStatus = OHConstants.REG_HOSP_INVC_DETAILS_APPROVED;
- }else if("RH_REENTER_INVOICE_DETAIL".equals
- (workflowParamBean.getStepShortName()) &&
- GOSIConstants.CANCELLED.equals(workflowParamBean.getRoutingCriterion()))
- {
- invoiceDetailStatus = OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED;
- }
- else
- {
- invoiceDetailStatus = OHConstants.REG_HOSP_INVC_DETAILS_IN_WORKFLOW;
- }
- RegHospitalInvoiceDetailEntityHome detailsHome= (RegHospitalInvoiceDetailEntityHome)
- ServiceLocator.getInstance().getRemoteHome(
- OHConstants.REG_HOSP_INVOICE_DETAILS_ENTITY_JNDI,
- RegHospitalInvoiceDetailEntityHome.class);
- for (int i=0;i<detailsList.size() ;i++ )
- {
- RegHospInvoiceDetailBean invoiceDetailBean =
- (RegHospInvoiceDetailBean)detailsList.get(i);
- invoiceDetailBean.setStatus(invoiceDetailStatus);
- invoiceDetailBean.setLastModifiedBy(userId);
- invoiceDetailBean.setLastModifiedTimestamp(currentTime);
- if(headerBean.getRoutingFlag()!= null)
- {
- invoiceDetailBean.setRoutingCriteria(headerBean.getRoutingFlag());
- }
- pageNumber = invoiceDetailBean.getPageNumber();
- RegHospitalInvoiceDetailEntity detailsRemote = detailsHome.
- findByPrimaryKey(invoiceDetailBean.getInvoiceDetailsId());
- invoiceDetailBean.setLastModifiedTimestamp(currentTime);
- detailsRemote.modifyRegHospitalInvoiceDetails(invoiceDetailBean);
- }
- String primaryKey = headerBean.getInvoiceHeaderId()+"~"+pageNumber;
- if(dmsHeaderBean != null)
- {
- dmsHeaderBean.setSourceRecordId(primaryKey);
- dmsHeaderBean.setSourceTable(SITables.T_REGHOSPINVOICEDET);
- dmsHeaderBean.setCreatedBy(userId);
- dmsHeaderBean.setKeyList(DMSConstants.HOSPITAL_INVOICE_NUMBER,
- ""+headerBean.getInvoiceNumber());
- dmsHeaderBean.setKeyList("Page Number",
- ""+pageNumber);
- DMSUtilities.startDMS(dmsHeaderBean);
- }
- workflowParamBean.setPrimaryKeyOfTherecord(primaryKey);
- GOSIDebug.debugMessages("completedStep"+workflowParamBean.getStepShortName());
- GOSIDebug.debugMessages("routingCriteria"+workflowParamBean.getRoutingCriterion());
- String userName = GOSIUtilities.startWorkflow(workflowParamBean);
- if(null != userName && !"".equals(userName))
- {
- message = GOSIErrorMessages.getErrorDesc("SOI_ERR_5502")+":"+userName;
- }else
- {
- message = GOSIErrorMessages.getErrorDesc("SOI_ERR_1007");
- }
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly();
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "saveInvoiceDetailsPage()",e,"CMN_ERR_1000");
- }
- return message;
- }
- /**
- * @METHOD NAME : calculateRegHospitalInvoice
- * @INFORMATION : This method is to calculate the hospital invoice.
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public RegHospInvoiceHeaderBean calculateRegHospitalInvoice(
- RegHospInvoiceHeaderBean headerBean)throws GOSIException
- {
- try
- {
- HashMap details = searchRegHospitalInvoice(headerBean.getInvoiceHeaderId());
- if(details.get("headerBean")!= null)
- {
- headerBean = (RegHospInvoiceHeaderBean)details.get("headerBean");
- headerBean = getHospitalDetails(headerBean);
- }
- con = GOSIUtilities.getConnection(GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ArrayList discountList = getDiscountList(headerBean.getHospitalCode(),
- headerBean.getFieldOffice());
- double medicineAmount = 0.00;
- double serviceAmount = 0.00;
- double noDiscountAmount = 0.00;
- double rejectedAmount = 0.00;
- double discountAmount = 0.00;
- if(headerBean.getMedicinesAmount()!= null)
- {
- medicineAmount = headerBean.getMedicinesAmount().doubleValue();
- }
- if(headerBean.getRejectedMedicineAmount()!= null)
- {
- medicineAmount = medicineAmount - headerBean.
- getRejectedMedicineAmount().doubleValue();
- rejectedAmount = headerBean.
- getRejectedMedicineAmount().doubleValue();
- }
- if(headerBean.getServicesAmount()!= null)
- {
- serviceAmount = headerBean.getServicesAmount().doubleValue();
- }
- if(headerBean.getRejectedServiceAmount()!= null)
- {
- serviceAmount = serviceAmount - headerBean.
- getRejectedServiceAmount().doubleValue();
- rejectedAmount = rejectedAmount +headerBean.
- getRejectedServiceAmount().doubleValue();
- }
- if(headerBean.getNoDiscountAmount()!= null)
- {
- noDiscountAmount = headerBean.getNoDiscountAmount().doubleValue();
- }
- if(headerBean.getRejectedNoDiscountAmount()!= null)
- {
- noDiscountAmount = noDiscountAmount - headerBean.
- getRejectedNoDiscountAmount().doubleValue();
- rejectedAmount = rejectedAmount +headerBean.
- getRejectedNoDiscountAmount().doubleValue();
- }
- GOSIDebug.debugMessages("medicineAmount :"+medicineAmount);
- GOSIDebug.debugMessages("serviceAmount :"+serviceAmount);
- GOSIDebug.debugMessages("noDiscountAmount :"+noDiscountAmount);
- // apply discount for medicine
- if(medicineAmount!=0.00)
- {
- discountAmount = getDiscountAmount(discountList,
- medicineAmount,OHConstants.DISC_MEDICINES);
- }
- // apply discount for service
- if(serviceAmount!=0.00)
- {
- discountAmount =discountAmount +
- getDiscountAmount(discountList,serviceAmount,
- OHConstants.DISC_SERVICES);
- }
- double totalAmount = medicineAmount+serviceAmount+noDiscountAmount;
- GOSIDebug.debugMessages("totalAmount :"+totalAmount);
- GOSIDebug.debugMessages("rejectedAmount :"+rejectedAmount);
- GOSIDebug.debugMessages("discountAmount :"+discountAmount);
- headerBean.setDiscountAmount(new Double(GOSIUtilities.roundToPrecision(discountAmount, FAInterfaceConstants.LC_CURRENCY)));
- headerBean.setRejectedAmount(new Double(GOSIUtilities.roundToPrecision(rejectedAmount, FAInterfaceConstants.LC_CURRENCY)));
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "calculateRegHospitalInvoice()",e,"CMN_ERR_1000");
- }
- finally
- {
- // this connection is used for getting the discount details
- // all the other methods used in here has its on connection.
- GOSIUtilities.cleanUp(con);
- }
- return headerBean;
- }
- /**
- * @METHOD NAME : canSendHeaderToWorkflow
- * @INFORMATION : This method is to check if there is any unapproved details for the invoice header
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public boolean canSendHeaderToWorkflow(
- RegHospInvoiceHeaderBean headerBean)throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- boolean canSendHeaderToWorkflow = true;
- try
- {
- String errorPage = "";
- String sqlQuery = " select distinct(PAGENUMBER) PAGENUMBER from "
- + SITables.T_REGHOSPINVOICEDET
- + " where "
- + " INVOICEHEADERID = ? "
- + " and STATUS in (?,?) "
- + " order by PAGENUMBER ";
- con = GOSIUtilities.getConnection(GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,headerBean.getInvoiceHeaderId().longValue());
- ps.setShort(2,OHConstants.REG_HOSP_INVC_DETAILS_ENTERED.shortValue());
- ps.setShort(3,OHConstants.REG_HOSP_INVC_DETAILS_IN_WORKFLOW.shortValue());
- ps.setMaxRows(5);
- rs = ps.executeQuery();
- while(rs.next())
- {
- canSendHeaderToWorkflow = false;
- if("".equals(errorPage))
- {
- errorPage = rs.getString("PAGENUMBER");
- }else
- {
- errorPage = errorPage+","+rs.getString("PAGENUMBER");
- }
- }
- if(!canSendHeaderToWorkflow)
- {
- String message = GOSIErrorMessages.getErrorDesc("SOI_ERR_5572")+
- " :"+errorPage;
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "canSendHeaderToWorkflow()",message,null,"CMN_ERR_1000");
- }
- sqlQuery = " select INVOICEHEADERID from "
- + SITables.T_REGHOSPINVOICEDET
- + " where "
- + " INVOICEHEADERID = ? "
- + " and STATUS != ? ";
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,headerBean.getInvoiceHeaderId().longValue());
- ps.setShort(2,OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED.shortValue());
- ps.setMaxRows(1);
- rs = ps.executeQuery();
- if(rs.next())
- {
- canSendHeaderToWorkflow = true;
- }else
- {
- canSendHeaderToWorkflow = false;
- }
- if(!canSendHeaderToWorkflow)
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "canSendHeaderToWorkflow()",null,"SOI_ERR_5111");
- }
- return canSendHeaderToWorkflow;
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "canSendHeaderToWorkflow()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(con,ps,rs);
- }
- }
- /**
- * @METHOD NAME : saveInvoiceHeader
- * @INFORMATION : This method is to save the invoice header befor calculating the invoice
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @EXCEPTION : class gosi.core.util.GOSIException,
- class java.rmi.RemoteException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public String saveInvoiceHeader
- (RegHospInvoiceHeaderBean headerBean,DMSRequestHeaderBean dmsHeaderBean,
- WorkflowParamBean workflowParamBean) throws GOSIException
- {
- String message = "";
- try
- {
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- Long userId = new Long(workflowParamBean.getUserId());
- Timestamp currentTime = new Timestamp(System.currentTimeMillis());
- Short invoiceStatus = null;
- if("RH_APPROVE_INVOICE_INT_AUD_CLK".equals
- (workflowParamBean.getStepShortName()) &&
- GOSIConstants.COMPLETED.equals(workflowParamBean.getRoutingCriterion()))
- {
- invoiceStatus = OHConstants.REG_HOSP_INVC_APPROVED;
- }else if("RH_REENTER_INVOICE".equals
- (workflowParamBean.getStepShortName()) &&
- GOSIConstants.CANCELLED.equals(workflowParamBean.getRoutingCriterion()))
- {
- invoiceStatus = OHConstants.REG_HOSP_INVC_CANCELLED;
- }
- else
- {
- invoiceStatus = OHConstants.REG_HOSP_INVC_ENTERED;
- }
- headerBean.setInvoiceStatus(invoiceStatus);
- headerBean.setLastModifiedBy(userId);
- headerBean.setLastModifiedTimestamp(currentTime);
- if (! isInvoiceFileNumberUnique (headerBean))
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "saveInvoiceHeader()",
- null,
- "SOI_ERR_5671");
- }
- if(headerBean.getInvoiceStatus().equals(OHConstants.REG_HOSP_INVC_APPROVED))
- {
- Long creditNoteId = null;
- creditNoteId = interfaceMethod(headerBean,workflowParamBean);
- if(creditNoteId != null)
- {
- headerBean.setJournalHeaderId(creditNoteId);
- //Call the batch for recfrom employer
- GOSIDebug.debugMessages("Parameters Passed to createAutomatedRecoveryBatchRequest");
- GOSIDebug.debugMessages("\t Param 1 :" + workflowParamBean.getUserId() + ":");
- GOSIDebug.debugMessages("\t Param 2 :" + headerBean.getInvoiceHeaderId() + ":");
- GOSIDebug.debugMessages("\t Param 3 :" + OHConstants.RECOVERY_TYPE_REG_HOSP_INVOICE + ":");
- Long requestId = createAutomatedRecoveryBatchRequest(
- new Long(workflowParamBean.getUserId()),
- headerBean.getInvoiceHeaderId(),OHConstants.RECOVERY_TYPE_REG_HOSP_INVOICE);
- GOSIDebug.debugMessages("Batch RequestId :" + requestId + ":");
- }
- }
- RegHospitalInvoiceHeaderEntityHome headerHome= (RegHospitalInvoiceHeaderEntityHome)
- ServiceLocator.getInstance().getRemoteHome(
- OHConstants.REG_HOSP_INVOICE_HEADER_ENTITY_JNDI,
- RegHospitalInvoiceHeaderEntityHome.class);
- RegHospitalInvoiceHeaderEntity headerRemote = headerHome.
- findByPrimaryKey(headerBean.getInvoiceHeaderId());
- headerRemote.modifyRegHospInvoiceHeader(headerBean);
- if(dmsHeaderBean != null)
- {
- dmsHeaderBean.setSourceRecordId
- ("" + headerBean.getInvoiceHeaderId());
- dmsHeaderBean.setSourceTable(SITables.T_REGHOSPINVOICEHDR);
- dmsHeaderBean.setCreatedBy(userId);
- dmsHeaderBean.setKeyList(DMSConstants.HOSPITAL_INVOICE_NUMBER,
- ""+headerBean.getInvoiceNumber());
- DMSUtilities.startDMS(dmsHeaderBean);
- }
- workflowParamBean.setPrimaryKeyOfTherecord(headerBean.
- getInvoiceHeaderId().toString());
- String userName = GOSIUtilities.startWorkflow(workflowParamBean);
- if(null != userName && !"".equals(userName))
- {
- message = GOSIErrorMessages.getErrorDesc("SOI_ERR_5502")+":"+userName;
- }else
- {
- message = GOSIErrorMessages.getErrorDesc("SOI_ERR_1007");
- }
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly();
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "saveInvoiceHeader()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con);
- }
- return message;
- }
- /**
- * @METHOD NAME : isInvoiceFileNumberUnique
- * @INFORMATION : This method is to check if the invoice file number for the specified period is already used or not
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @RETURN : boolean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private boolean isInvoiceFileNumberUnique (RegHospInvoiceHeaderBean headerBean) throws GOSIException
- {
- boolean isInvoiceFileNumberUnique = false;
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String sqlQuery = "SELECT COUNT (*) AS num_invoices"
- + " FROM " + SITables.T_REGHOSPINVOICEHDR
- + " WHERE hospitalcode = ? "
- + " AND fieldoffice = ? "
- + " AND startdate = ? "
- + " AND filenumber = ? "
- + " AND invoicestatus <> ? ";
- if (headerBean.getInvoiceHeaderId() != null)
- {
- sqlQuery += " AND invoiceheaderid <> ? ";
- }
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, headerBean.getHospitalCode());
- ps.setShort (2, headerBean.getFieldOffice());
- ps.setTimestamp (3, headerBean.getStartDate());
- ps.setLong (4, headerBean.getFileNumber());
- ps.setShort (5, OHConstants.REG_HOSP_INVC_CANCELLED);
- if (headerBean.getInvoiceHeaderId() != null)
- {
- ps.setLong (6, headerBean.getInvoiceHeaderId());
- }
- rs = ps.executeQuery ();
- if (rs.next() && rs.getInt("num_invoices") == 0)
- {
- isInvoiceFileNumberUnique = true;
- }
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "isInvoiceFileNumberUnique()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (ps, rs);
- }
- return isInvoiceFileNumberUnique;
- }
- /**
- * @METHOD NAME : isInvoiceDetailAlreadyPresent
- * @INFORMATION : This method is to check if the invoice detail is already entered or not
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @EXCEPTION : class gosi.core.util.GOSIException,
- class java.rmi.RemoteException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private String isInvoiceDetailAlreadyPresent(RegHospInvoiceDetailBean invoiceDetailBean)
- throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- String message = "";
- try
- {
- String sqlQuery = " select distinct(a.PAGENUMBER), "
- + " b.INVOICENUMBER "
- + " from "
- + SITables.T_REGHOSPINVOICEDET +" a , "
- + SITables.T_REGHOSPINVOICEHDR +" b "
- + " where a.INVOICEHEADERID = b.INVOICEHEADERID "
- + " and a.SOCIALINSURANCENUMBER = ? "
- + " and a.STATUS != ? ";
- if(invoiceDetailBean.getTrmtStartDate() == null)
- {
- sqlQuery = sqlQuery + " and a.TRMTSTARTDATE is null ";
- }
- else
- {
- sqlQuery = sqlQuery + " and a.TRMTSTARTDATE = ? ";
- }
- if(invoiceDetailBean.getTrmtEndDate() == null)
- {
- sqlQuery = sqlQuery + " and a.TRMTENDDATE is null ";
- }
- else
- {
- sqlQuery = sqlQuery + " and a.TRMTENDDATE = ? ";
- }
- if(invoiceDetailBean.getServicesAmount() == null)
- {
- sqlQuery = sqlQuery + " and a.SERVICESAMOUNT is null ";
- }
- else
- {
- sqlQuery = sqlQuery + " and a.SERVICESAMOUNT = ? ";
- }
- if(invoiceDetailBean.getMedicinesAmount() == null)
- {
- sqlQuery = sqlQuery + " and a.MEDICINESAMOUNT is null ";
- }
- else
- {
- sqlQuery = sqlQuery + " and a.MEDICINESAMOUNT = ? ";
- }
- con = GOSIUtilities.getConnection(GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,invoiceDetailBean.getSocInsNumber().longValue());
- ps.setShort(2,OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED.shortValue());
- int i=2;
- if(invoiceDetailBean.getTrmtStartDate()!=null)
- {
- ps.setTimestamp(++i,invoiceDetailBean.getTrmtStartDate());
- }
- if(invoiceDetailBean.getTrmtEndDate()!=null)
- {
- ps.setTimestamp(++i,invoiceDetailBean.getTrmtEndDate());
- }
- if (invoiceDetailBean.getServicesAmount()!=null)
- {
- ps.setDouble(++i,invoiceDetailBean.getServicesAmount().doubleValue());
- }
- if(invoiceDetailBean.getMedicinesAmount()!=null)
- {
- ps.setDouble(++i,invoiceDetailBean.getMedicinesAmount().doubleValue());
- }
- rs = ps.executeQuery();
- String errorPage = "";
- String errorFile = "";
- while(rs.next())
- {
- Long invoiceNumber=null;
- invoiceNumber = new Long(rs.getLong("INVOICENUMBER"));
- if("".equals(errorPage))
- {
- errorPage = rs.getString("PAGENUMBER");
- errorFile = rs.getString("INVOICENUMBER");
- }else
- {
- errorPage = errorPage+","+rs.getString("PAGENUMBER");
- errorFile = errorFile+","+rs.getString("INVOICENUMBER");
- }
- //message = " Please check for duplicate ,The contributor has another invoice detail record on page "+errorPage
- if (invoiceDetailBean.getInvoiceNumber().equals(invoiceNumber))
- {
- message = GOSIErrorMessages.getErrorDesc("SOI_ERR_5575")+" : "+errorPage;
- }
- //message = " Please check for duplicate ,The contributor has another invoice detail record in invoice number "+errorFile
- else
- {
- message = GOSIErrorMessages.getErrorDesc("SOI_ERR_5618")+" : "+errorFile;
- }
- }
- return message;
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "isInvoiceAlreadyEntered()",e,"CMN_ERR_1000");
- }finally
- {
- GOSIUtilities.cleanUp(con,ps,rs);
- }
- }
- /**
- * @METHOD NAME : canAddDetailToPage
- * @INFORMATION : This method is to check if a page is in workflow and an user is trying to add a record in modify mode
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean
- * @RETURN : class boolean
- * @EXCEPTION : class gosi.core.util.GOSIException,
- class java.rmi.RemoteException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public boolean canAddDetailToPage(RegHospInvoiceDetailBean invoiceDetailBean)
- throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- boolean canAddDetailToPage = true;
- try
- {
- String sqlQuery = " select STATUS from "
- + SITables.T_REGHOSPINVOICEDET
- + " where INVOICEHEADERID = ? "
- + " and PAGENUMBER = ? "
- + " and STATUS = ? ";
- con = GOSIUtilities.getConnection(GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,invoiceDetailBean.getInvoiceHeaderId().longValue());
- ps.setLong(2,invoiceDetailBean.getPageNumber().longValue());
- ps.setShort(3,OHConstants.REG_HOSP_INVC_DETAILS_IN_WORKFLOW.shortValue());
- rs = ps.executeQuery();
- if(rs.next())
- {
- canAddDetailToPage = false;
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "canAddDetailToPage()",null,"SOI_ERR_5576");
- }
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "canAddDetailToPage()",e,"CMN_ERR_1000");
- }finally
- {
- GOSIUtilities.cleanUp(con,ps,rs);
- }
- return canAddDetailToPage;
- }
- /**
- * @METHOD NAME : createAutomatedRecoveryBatchRequest
- * @INFORMATION : This method is to recover the amount spent on rejected injury from the employer.
- * @PARAM : class java.lang.Long, class java.lang.Long,
- class java.lang.Short
- * @RETURN : class java.lang.Long
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private Long createAutomatedRecoveryBatchRequest(Long userId,
- Long invoiceHeaderId, Short recoveryType) throws GOSIException
- {
- GOSIDebug.debugMessages("Starting createAutomatedRecoveryBatchRequest - MaintainRegHospitalInvoiceSessionEJB");
- Long requestId = null;
- try
- {
- BatchRequestBean requestBean = new BatchRequestBean();
- requestBean.setBatchId("OHZ_017");
- requestBean.setRunDate(GOSIUtilities.getTimestamp
- (GOSIUtilities.getDateFullString
- (new Timestamp(System.currentTimeMillis()))));
- requestBean.setRequestedBy(userId);
- requestBean.setRequestedTimeStamp(
- new Timestamp(System.currentTimeMillis()));
- ArrayList paramValueList = new ArrayList();
- GOSIDebug.debugMessages("BATCH ID:" + requestBean.getBatchId());
- BatchParametersBean batchBean1
- = new BatchParametersBean();
- batchBean1.setParamValue("" + invoiceHeaderId.longValue());
- batchBean1.setParamName("RECORDID");
- paramValueList.add(batchBean1);
- BatchParametersBean batchBean2
- = new BatchParametersBean();
- batchBean2.setParamValue("" + recoveryType.longValue());
- batchBean2.setParamName("RECOVERYTYPE");
- paramValueList.add(batchBean2);
- for(int i=0;i<paramValueList.size();i++)
- {
- BatchParametersBean bean =(BatchParametersBean)paramValueList.get(i);
- GOSIDebug.debugMessages ("" + bean.getParamName() + " : " + bean.getParamValue());
- }
- requestBean.setParamValueList(paramValueList);
- requestBean.setModuleId(GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- requestId = GOSIUtilities.createRequest(requestBean);
- GOSIDebug.debugMessages("Ending createAutomatedRecoveryBatchRequest - MaintainRegHospitalInvoiceSessionEJB");
- return requestId;
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),"createAutomatedRecoveryBatchRequest()",
- e,"CMN_ERR_1000");
- }
- }
- /**
- * @METHOD NAME : getRegHospitalChequeDetails
- * @INFORMATION : This method is to get the registered hospital cheque details from finance.
- * @PARAM : class java.lang.Long
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public ArrayList getRegHospitalChequeDetails(Long journalHeaderId)
- throws GOSIException
- {
- GOSIDebug.debugMessages("Start getRegHospitalChequeDetails - MaintainRegHospitalInvoiceSessionEJB");
- try
- {
- //String payeeName = null;
- ArrayList chequeDetailsList = new ArrayList();
- if(null != journalHeaderId)
- {
- FinancialAccountingInterface faInterface;
- faInterface = FinanceImplProxy.getFAInterface();
- /*for (int i=0;i<journalHeaderIdList.size() ;i++ )
- {
- //journalHeaderId = (Long)journalHeaderIdList.get(i);*/
- HashMap detailsMap = new HashMap();
- detailsMap.put("moduleId",
- new Short(GOSIConstants.OCCUPATIONAL_HAZARDS_ID));
- CNInterfaceBeanOH cnInterfaceBeanOH = new CNInterfaceBeanOH();
- cnInterfaceBeanOH.setCreditNoteRecordId(journalHeaderId);
- cnInterfaceBeanOH.setModuleId(GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- detailsMap.put("interfaceBeanOH",cnInterfaceBeanOH);
- detailsMap.put("methodDescription",
- FAInterfaceConstants.GET_INV_CHEQUEDETAILS);
- HashMap returnMap = faInterface.invokeService(detailsMap);
- GOSIDebug.debugMessages("returnMap :" + returnMap);
- if(returnMap != null && returnMap.containsKey("interfaceBeanOH"))
- {
- CNInterfaceBeanOH interfaceBeanOH = (CNInterfaceBeanOH)
- returnMap.get("interfaceBeanOH");
- OHBenefitChequeBean chequeBean = new OHBenefitChequeBean();
- chequeBean.setChequeNumber(interfaceBeanOH.getPaymentInstruNumber());
- chequeBean.setChequeAmount(interfaceBeanOH.getChequeAmount());
- if(interfaceBeanOH.getInstrumentDate()!=null)
- {
- chequeBean.setChequeIssueDate(interfaceBeanOH.getInstrumentDate());
- chequeBean.setChequeIssueDateStr
- (OHUtilities.getDateStr(interfaceBeanOH.getInstrumentDate(),
- OHConstants.GREGORIAN));
- }
- chequeBean.setPayeeName(interfaceBeanOH.getPayeeName());
- chequeDetailsList.add(chequeBean);
- }
- // }
- }
- GOSIDebug.debugMessages("End getRegHospitalChequeDetails - MaintainRegHospitalInvoiceSessionEJB");
- return chequeDetailsList;
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,this.getClass().toString(),
- "getRegHospitalChequeDetails()",e,"CMN_ERR_1000");
- }
- finally
- {
- }
- }
- /**
- * @METHOD NAME : deleteInvoiceHeader
- * @INFORMATION : This method is to delete the invoice header that is pending data entry
- * @PARAM : class java.lang.Long
- * @RETURN : void
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public void deleteInvoiceHeader (Long invoiceHeaderId,Long userId) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- // check invoice status
- ps = con.prepareStatement ("SELECT invoicestatus " +
- " FROM " + SITables.T_REGHOSPINVOICEHDR +
- " WHERE invoiceheaderid = ? ");
- ps.setLong (1, invoiceHeaderId);
- rs = ps.executeQuery ();
- if (rs.next())
- {
- if (rs.getShort("invoicestatus") != OHConstants.REG_HOSP_INVC_PENDING_DATA_ENTRY)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "deleteInvoiceHeader()",
- null,
- "SOI_ERR_5668");
- }
- }
- GOSIUtilities.cleanUp (ps, rs);
- // check invoice details
- ps = con.prepareStatement ("SELECT count(*) AS details_count " +
- " FROM " + SITables.T_REGHOSPINVOICEDET +
- " WHERE invoiceheaderid = ? AND status <> ?");
- ps.setLong (1, invoiceHeaderId);
- ps.setShort(2, OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED.shortValue());
- rs = ps.executeQuery ();
- if (rs.next() && rs.getInt("details_count") > 0)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "deleteInvoiceHeader()",
- null,
- "SOI_ERR_5670");
- }
- RegHospitalInvoiceHeaderEntityHome home = (RegHospitalInvoiceHeaderEntityHome) ServiceLocator.getInstance ()
- .getRemoteHome (OHConstants.REG_HOSP_INVOICE_HEADER_ENTITY_JNDI, RegHospitalInvoiceHeaderEntityHome.class);
- RegHospitalInvoiceHeaderEntity invoiceEntity = home.findByPrimaryKey (invoiceHeaderId);
- // delete invoice
- GOSIUtilities.cleanUp (ps, rs);
- // check invoice details
- ps = con.prepareStatement ("SELECT count(*) AS details_count " +
- " FROM " + SITables.T_REGHOSPINVOICEDET +
- " WHERE invoiceheaderid = ? ");
- ps.setLong (1, invoiceHeaderId);
- rs = ps.executeQuery ();
- if (rs.next() && rs.getInt("details_count") > 0)
- {
- invoiceEntity.cancelRegHospInvoiceHeader(userId);
- }
- else{
- invoiceEntity.remove ();
- }
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "deleteInvoiceHeader()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- }
- /**
- * @METHOD NAME : getPendingTreatmentInvoiceList
- * @INFORMATION : This method is to get Pending Treatment Invoice List
- * @PARAM : class java.lang.Long
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public ArrayList getPendingTreatmentInvoiceList (Long hospitalCode) throws GOSIException
- {
- ArrayList treatmentInvoiceList = new ArrayList ();
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String currentDate=GOSIUtilities.getDateFullString(new Timestamp(System.currentTimeMillis()));
- int month=OHUtilities.getMonth(currentDate);
- int year=OHUtilities.getYear(currentDate);
- Timestamp startDate= OHUtilities.getGregDate(GOSIDateUtilities.getMonthEndDate(month, year-2),"G");
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- StringBuilder sqlQuery=new StringBuilder();
- sqlQuery.append("SELECT a.invoiceheaderid, a.invoicenumber, a.fieldoffice, a.startdate, a.enddate, ");
- sqlQuery.append(" COUNT (b.invoicedetailsid) AS numberofservices, SUM (b.servicesamount) AS servicesamount, " );
- sqlQuery.append(" SUM (B.rejectedservicesamount ) AS rejectedservicesamount, SUM (b.medicinesamount) AS medicinesamount," );
- sqlQuery.append(" SUM (B.rejectedmedicinesamount ) AS rejectedmedicinesamount , a.totalamount, a.discountamount, " );
- sqlQuery.append(" SUM (b.nodiscountamount) AS nodiscountamount, SUM (B.rejectednodiscountamount ) AS rejectednodiscountamount, ");
- sqlQuery.append(" (a.totalamount - NVL (a.discountamount, 0)) AS totalpayableamount, a.invoicestatus ");
- sqlQuery.append(" FROM " + SITables.T_REGHOSPINVOICEHDR + " a LEFT JOIN " + SITables.T_REGHOSPINVOICEDET + " b ");
- sqlQuery.append(" ON a.invoiceheaderid = b.invoiceheaderid ");
- sqlQuery.append(" WHERE a.hospitalcode = ? " );
- sqlQuery.append(" AND a.invoicestatus NOT IN (?, ?, ?) " );
- sqlQuery.append(" AND a.filenumber IS NULL AND A.STARTDATE>= ? " );
- sqlQuery.append(" AND (b.status IS NULL OR b.status <> ?) " );
- sqlQuery.append("GROUP BY a.invoiceheaderid, a.invoicenumber, a.fieldoffice, a.startdate, a.enddate, a.totalamount, " );
- sqlQuery.append(" a.discountamount, a.invoicestatus " );
- sqlQuery.append("ORDER BY a.startdate DESC ");
- GOSIDebug.debugMessages("getPendingTreatmentInvoiceList Query :"+sqlQuery.toString());
- ps = con.prepareStatement (sqlQuery.toString(), ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
- ps.setLong (1, hospitalCode);
- ps.setShort (2, OHConstants.REG_HOSP_INVC_REJECTED);
- ps.setShort (3, OHConstants.REG_HOSP_INVC_CANCELLED);
- ps.setShort (4, OHConstants.REG_HOSP_INVC_PAID);
- ps.setTimestamp(5, startDate);
- ps.setShort (6, OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED);
- //ps.setMaxRows (GOSIApplicationProperties.MAX_PAGE_SIZE);
- rs = ps.executeQuery ();
- while (rs.next())
- {
- TreatmentInvoiceQueryListBean invoiceListBean = new TreatmentInvoiceQueryListBean ();
- invoiceListBean.setHeaderId (rs.getLong("INVOICEHEADERID"));
- invoiceListBean.setInvoiceNumber (rs.getLong("INVOICENUMBER"));
- invoiceListBean.setFieldOfficeCode (rs.getShort("FIELDOFFICE"));
- invoiceListBean.setStartDate (rs.getTimestamp("STARTDATE"));
- invoiceListBean.setEndDate (rs.getTimestamp("ENDDATE"));
- invoiceListBean.setNumberOfServices (rs.getInt("NUMBEROFSERVICES"));
- invoiceListBean.setServiceAmount (rs.getDouble("SERVICESAMOUNT"));
- invoiceListBean.setRejectedServiceAmount (rs.getDouble("REJECTEDSERVICESAMOUNT"));
- invoiceListBean.setMedicineAmount (rs.getDouble("MEDICINESAMOUNT"));
- invoiceListBean.setRejectedMedicineAmount(rs.getDouble("REJECTEDMEDICINESAMOUNT"));
- invoiceListBean.setNonDiscountAmount (rs.getDouble("NODISCOUNTAMOUNT"));
- invoiceListBean.setRejectedNonDiscountAmount(rs.getDouble("REJECTEDNODISCOUNTAMOUNT"));
- invoiceListBean.setTotalCalculatedAmount (rs.getDouble("TOTALAMOUNT"));
- invoiceListBean.setDiscountAmount (rs.getDouble("DISCOUNTAMOUNT"));
- invoiceListBean.setTotalPayableAmount (rs.getDouble("TOTALPAYABLEAMOUNT"));
- invoiceListBean.setInvoiceStatus (rs.getShort("INVOICESTATUS"));
- treatmentInvoiceList.add (invoiceListBean);
- }
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getPendingTreatmentInvoiceList()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- return treatmentInvoiceList;
- }
- /**
- * @METHOD NAME : getPendingTreatmentInvoiceList
- * @INFORMATION : This method is to get Pending Treatment Invoice List
- * @PARAM : class java.lang.Long
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public ArrayList getPendingTreatmentInvoiceList (Long hospitalCode, int month , int year) throws GOSIException
- {
- ArrayList treatmentInvoiceList = new ArrayList ();
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String currentDate=GOSIUtilities.getDateFullString(new Timestamp(System.currentTimeMillis()));
- Timestamp startDate= OHUtilities.getGregDate(OHUtilities.getMonthStartDate(month, year),"G");
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- StringBuilder sqlQuery=new StringBuilder();
- sqlQuery.append("SELECT a.invoiceheaderid, a.invoicenumber, a.fieldoffice, a.startdate, a.enddate, ");
- sqlQuery.append(" COUNT (b.invoicedetailsid) AS numberofservices, SUM (b.servicesamount) AS servicesamount, " );
- sqlQuery.append(" SUM (B.rejectedservicesamount ) AS rejectedservicesamount, SUM (b.medicinesamount) AS medicinesamount," );
- sqlQuery.append(" SUM (B.rejectedmedicinesamount ) AS rejectedmedicinesamount , a.totalamount, a.discountamount, " );
- sqlQuery.append(" SUM (b.nodiscountamount) AS nodiscountamount, SUM (B.rejectednodiscountamount ) AS rejectednodiscountamount, ");
- sqlQuery.append(" (a.totalamount - NVL (a.discountamount, 0)) AS totalpayableamount, a.invoicestatus ");
- sqlQuery.append(" FROM " + SITables.T_REGHOSPINVOICEHDR + " a LEFT JOIN " + SITables.T_REGHOSPINVOICEDET + " b ");
- sqlQuery.append(" ON a.invoiceheaderid = b.invoiceheaderid ");
- sqlQuery.append(" WHERE a.hospitalcode = ? " );
- sqlQuery.append(" AND a.invoicestatus NOT IN (?, ?) " );
- sqlQuery.append(" AND a.filenumber IS NULL AND A.STARTDATE= ? " );
- sqlQuery.append(" AND (b.status IS NULL OR b.status <> ?) " );
- sqlQuery.append("GROUP BY a.invoiceheaderid, a.invoicenumber, a.fieldoffice, a.startdate, a.enddate, a.totalamount, " );
- sqlQuery.append(" a.discountamount, a.invoicestatus " );
- sqlQuery.append("ORDER BY a.startdate DESC ");
- GOSIDebug.debugMessages("getPendingTreatmentInvoiceList Query :"+sqlQuery.toString());
- ps = con.prepareStatement (sqlQuery.toString(), ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
- ps.setLong (1, hospitalCode);
- ps.setShort (2, OHConstants.REG_HOSP_INVC_REJECTED);
- ps.setShort (3, OHConstants.REG_HOSP_INVC_CANCELLED);
- ps.setTimestamp(4, startDate);
- ps.setShort (5, OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED);
- //ps.setMaxRows (GOSIApplicationProperties.MAX_PAGE_SIZE);
- rs = ps.executeQuery ();
- while (rs.next())
- {
- TreatmentInvoiceQueryListBean invoiceListBean = new TreatmentInvoiceQueryListBean ();
- invoiceListBean.setHeaderId (rs.getLong("INVOICEHEADERID"));
- invoiceListBean.setInvoiceNumber (rs.getLong("INVOICENUMBER"));
- invoiceListBean.setFieldOfficeCode (rs.getShort("FIELDOFFICE"));
- invoiceListBean.setStartDate (rs.getTimestamp("STARTDATE"));
- invoiceListBean.setEndDate (rs.getTimestamp("ENDDATE"));
- invoiceListBean.setNumberOfServices (rs.getInt("NUMBEROFSERVICES"));
- invoiceListBean.setServiceAmount (rs.getDouble("SERVICESAMOUNT"));
- invoiceListBean.setRejectedServiceAmount (rs.getDouble("REJECTEDSERVICESAMOUNT"));
- invoiceListBean.setMedicineAmount (rs.getDouble("MEDICINESAMOUNT"));
- invoiceListBean.setRejectedMedicineAmount(rs.getDouble("REJECTEDMEDICINESAMOUNT"));
- invoiceListBean.setNonDiscountAmount (rs.getDouble("NODISCOUNTAMOUNT"));
- invoiceListBean.setRejectedNonDiscountAmount(rs.getDouble("REJECTEDNODISCOUNTAMOUNT"));
- invoiceListBean.setTotalCalculatedAmount (rs.getDouble("TOTALAMOUNT"));
- invoiceListBean.setDiscountAmount (rs.getDouble("DISCOUNTAMOUNT"));
- invoiceListBean.setTotalPayableAmount (rs.getDouble("TOTALPAYABLEAMOUNT"));
- invoiceListBean.setInvoiceStatus (rs.getShort("INVOICESTATUS"));
- treatmentInvoiceList.add (invoiceListBean);
- }
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getPendingTreatmentInvoiceList()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- return treatmentInvoiceList;
- }
- /**
- * @METHOD NAME : getTreatmentInvoiceHeaderBean
- * @INFORMATION : This method is to get Treatment Invoice Header Bean
- * @PARAM : class java.lang.Long,
- class java.lang.Long
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public RegHospInvoiceHeaderBean getTreatmentInvoiceHeaderBean (Long treatmentInvoiceHeaderId, Long hospitalCode) throws GOSIException
- {
- RegHospInvoiceHeaderBean invoiceHeaderBean = null;
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String sqlQuery = "SELECT invoiceheaderid, invoicenumber, hospitalcode, fieldoffice, invoicedate, " +
- " invoicedateentfmt, startdate, startdateentfmt, enddate, enddateentfmt, " +
- " paymentmode, payeename, bankcode, bankbranchcode, bankaccountnumber, " +
- " paymentdate, paymentdateentfmt, journalheaderid, invoicestatus, lastmodifiedtimestamp , appealstartdate " +
- " FROM " + SITables.T_REGHOSPINVOICEHDR +
- " WHERE invoiceheaderid = ? " +
- " AND invoicestatus <> ? ";
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, treatmentInvoiceHeaderId);
- ps.setShort (2, OHConstants.REG_HOSP_INVC_CANCELLED);
- rs = ps.executeQuery ();
- if (rs.next())
- {
- invoiceHeaderBean = new RegHospInvoiceHeaderBean ();
- if (! hospitalCode.equals(rs.getLong("HOSPITALCODE")))
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getTreatmentInvoiceHeaderBean()",
- null,
- "SOI_ERR_5864");
- }
- invoiceHeaderBean.setInvoiceHeaderId (new Long(rs.getLong("INVOICEHEADERID")));
- invoiceHeaderBean.setInvoiceNumber (new Long(rs.getLong("INVOICENUMBER")));
- invoiceHeaderBean.setHospitalCode (new Long(rs.getLong("HOSPITALCODE")));
- invoiceHeaderBean.setFieldOffice (new Short(rs.getShort("FIELDOFFICE")));
- invoiceHeaderBean.setInvoiceDate (rs.getTimestamp("INVOICEDATE"));
- invoiceHeaderBean.setInvoiceDateEntFmt (rs.getString("INVOICEDATEENTFMT"));
- invoiceHeaderBean.setInvoiceDateStr (OHUtilities.getDateStr(invoiceHeaderBean.getInvoiceDate(), invoiceHeaderBean.getInvoiceDateEntFmt()));
- invoiceHeaderBean.setStartDate (rs.getTimestamp("STARTDATE"));
- invoiceHeaderBean.setStartDateEntFmt (rs.getString("STARTDATEENTFMT"));
- invoiceHeaderBean.setStartDateStr (OHUtilities.getDateStr(invoiceHeaderBean.getStartDate(), invoiceHeaderBean.getStartDateEntFmt()));
- invoiceHeaderBean.setEndDate (rs.getTimestamp("ENDDATE"));
- invoiceHeaderBean.setEndDateEntFmt (rs.getString("ENDDATEENTFMT"));
- invoiceHeaderBean.setEndDateStr (OHUtilities.getDateStr(invoiceHeaderBean.getEndDate(), invoiceHeaderBean.getEndDateEntFmt()));
- invoiceHeaderBean.setPaymentMode (new Short(rs.getShort("PAYMENTMODE")));
- invoiceHeaderBean.setPayeeName (rs.getString("PAYEENAME"));
- invoiceHeaderBean.setAppealStartDate (rs.getTimestamp("APPEALSTARTDATE"));
- if (rs.getObject("BANKCODE") != null)
- {
- invoiceHeaderBean.setBankCode (new Integer(rs.getInt("BANKCODE")));
- invoiceHeaderBean.setBankBranchCode (rs.getString("BANKBRANCHCODE"));
- invoiceHeaderBean.setBankAccountNumber (rs.getString("BANKACCOUNTNUMBER"));
- }
- if (rs.getObject("PAYMENTDATE") != null)
- {
- invoiceHeaderBean.setPaymentDate (rs.getTimestamp("PAYMENTDATE"));
- invoiceHeaderBean.setPaymentDateEntFmt (rs.getString("PAYMENTDATEENTFMT"));
- }
- if (rs.getObject("JOURNALHEADERID") != null)
- {
- invoiceHeaderBean.setJournalHeaderId (new Long(rs.getLong("JOURNALHEADERID")));
- }
- invoiceHeaderBean.setInvoiceStatus (new Short(rs.getShort("INVOICESTATUS")));
- if (rs.getObject("LASTMODIFIEDTIMESTAMP") != null)
- {
- invoiceHeaderBean.setLastModifiedTimestamp (rs.getTimestamp("LASTMODIFIEDTIMESTAMP"));
- }
- }
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getTreatmentInvoiceHeaderBean()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- return invoiceHeaderBean;
- }
- /**
- * @METHOD NAME : getPatientCaseInformation
- * @INFORMATION : This method is to get Patient Case Information
- * @PARAM : class java.lang.Long,
- class java.sql.Timestamp
- * @RETURN : class java.util.Hashtable
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public Hashtable getPatientCaseInformation (Long socInsNumber, Timestamp caseDate) throws GOSIException
- {
- Hashtable patientCaseInformation = null;
- PreparedStatement ps = null;
- ResultSet rs = null;
- ResultSet rs2 = null;
- try
- {
- String sqlQuery = "SELECT inj.injuryid, inj.injurynumber, inj.contributorid, inj.socinsnumber, inj.injurydate, inj.injurystatus , " +
- " inj.datecomplication ,inj.enteredby , inj.hospitalcode , est.establishmentid, est.registrationnumber, est.establishmentnamearb, " +
- " per.firstname, per.secondname, per.thirdname, per.surname ,pmr.patientnumber" +
- " FROM " + SITables.T_INJURY + " inj " +
- " LEFT JOIN " + SITables.T_ESTABLISHMENT + " est ON inj.establishmentid = est.establishmentid " +
- " LEFT JOIN " + SITables.T_CONTRIBUTOR + " con ON inj.contributorid = con.contributorid " +
- " LEFT JOIN " + SITables.T_PERSON + " per ON con.personid = per.personid " +
- " LEFT JOIN " + SITables.T_PMR + " pmr ON inj.injuryid = pmr.injuryid " +
- " WHERE socinsnumber = ? " +
- " AND (datecomplication = ? OR (injurydate = ? AND datecomplication IS NULL)) " +
- " AND injurystatus <> ? ";
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, socInsNumber);
- ps.setTimestamp (2, caseDate);
- ps.setTimestamp (3, caseDate);
- ps.setShort (4, OHConstants.INJ_STS_CANCELLED);
- rs = ps.executeQuery ();
- if (rs.next())
- {
- AddInjuryHelperBean injuryBean = new AddInjuryHelperBean ();
- injuryBean.setInjuryId (new Long(rs.getLong("INJURYID")));
- injuryBean.setInjuryNumber (new Long(rs.getLong("INJURYNUMBER")));
- injuryBean.setContributorId (new Long(rs.getLong("CONTRIBUTORID")));
- injuryBean.setSocInsNumber (new Long(rs.getLong("SOCINSNUMBER")));
- injuryBean.setInjuryDate (rs.getTimestamp("INJURYDATE"));
- if (rs.getObject("DATECOMPLICATION") != null)
- {
- injuryBean.setDateComplication (rs.getTimestamp("DATECOMPLICATION"));
- }
- if (rs.getObject("HOSPITALCODE") != null)
- {
- injuryBean.setHospitalCode(rs.getLong(("HOSPITALCODE")));
- }
- if (rs.getObject("ENTEREDBY") != null)
- {
- injuryBean.setEnteredBy (rs.getShort(("ENTEREDBY")));
- }
- if (rs.getObject("INJURYSTATUS") != null)
- {
- injuryBean.setInjuryStatus (rs.getShort(("INJURYSTATUS")));
- }
- injuryBean.setEstablishmentId (new Long(rs.getLong("ESTABLISHMENTID")));
- injuryBean.setRegNumber (new Long(rs.getLong("REGISTRATIONNUMBER")));
- injuryBean.setEstablishmentName (rs.getString("ESTABLISHMENTNAMEARB"));
- injuryBean.setName (OHUtilities.getFullName(rs.getString("FIRSTNAME"), rs.getString("SECONDNAME"),
- rs.getString("THIRDNAME"), rs.getString("SURNAME")));
- injuryBean.setPatientNumber(rs.getString("PATIENTNUMBER"));
- patientCaseInformation = new Hashtable ();
- patientCaseInformation.put ("injuryBean", injuryBean);
- }
- else
- {
- GOSIUtilities.cleanUp (ps, rs);
- sqlQuery = "SELECT disbassmt.disabilityassessmentid, disbassmt.disabilitynumber, disbassmt.socialinsurancenumber, " +
- " disbassmt.assessmentdate, disbassmt.disabilitytype , disbassmt.scheduleid , per.firstname, per.secondname, per.thirdname, per.surname " +
- " FROM " + SITables.T_DISBASSMT + " disbassmt " +
- " LEFT JOIN " + SITables.T_CONTRIBUTOR + " con ON disbassmt.socialinsurancenumber = con.socialinsurancenumber " +
- " LEFT JOIN " + SITables.T_PERSON + " per ON con.personid = per.personid " +
- " WHERE disbassmt.socialinsurancenumber = ? " +
- " AND disbassmt.assessmentdate = ? " +
- " AND disbassmt.assessmentstatus <> ? ";
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, socInsNumber);
- ps.setTimestamp (2, caseDate);
- ps.setShort (3, OHConstants.ASSMT_CANCELLED);
- rs = ps.executeQuery ();
- if (rs.next())
- {
- OHDAssessmentHeaderBean disabilityAssessmentBean = new OHDAssessmentHeaderBean ();
- disabilityAssessmentBean.setDisabilityAssessmentID (new Long(rs.getLong("DISABILITYASSESSMENTID")));
- disabilityAssessmentBean.setDisabilityAssessmentNumber (new Long(rs.getLong("DISABILITYNUMBER")));
- disabilityAssessmentBean.setSocialInsuranceNumber (new Long(rs.getLong("SOCIALINSURANCENUMBER")));
- disabilityAssessmentBean.setAssessmentDateTmsp (rs.getTimestamp("ASSESSMENTDATE"));
- disabilityAssessmentBean.setContributorName (OHUtilities.getFullName(rs.getString("FIRSTNAME"), rs.getString("SECONDNAME"),
- rs.getString("THIRDNAME"), rs.getString("SURNAME")));
- disabilityAssessmentBean.setScheduleID(new Long(rs.getLong("SCHEDULEID")));
- disabilityAssessmentBean.setDisabilityType(new Short (rs.getShort("DISABILITYTYPE"))) ;
- if(disabilityAssessmentBean.getDisabilityType().equals(OHConstants.HEIRDISB_ASSMT.shortValue()))
- {
- sqlQuery = "SELECT per.firstname, per.secondname, per.thirdname, per.surname " +
- " FROM " + SITables.T_MBAPPOINTMENT + " mba " +
- " LEFT JOIN " + SITables.T_PERSON + " per ON mba.heirpersonid = per.personid " +
- " WHERE mba.scheduleid = ? " ;
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, disabilityAssessmentBean.getScheduleID());
- rs2 = ps.executeQuery ();
- if (rs2.next())
- {
- disabilityAssessmentBean.setHeirName(OHUtilities.getFullName(rs2.getString("FIRSTNAME"), rs2.getString("SECONDNAME"),
- rs2.getString("THIRDNAME"), rs2.getString("SURNAME")));
- }
- }
- patientCaseInformation = new Hashtable ();
- patientCaseInformation.put ("disabilityAssessmentBean", disabilityAssessmentBean);
- }
- }
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getPatientCaseInformation()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- return patientCaseInformation;
- }
- /**
- * @METHOD NAME : checkIsPatientCaseAssociatedWithFieldOffice
- * @INFORMATION : This method is to check Is Patient Case Associated With Field Office
- * @PARAM : class java.lang.Long,
- class java.lang.Long,
- class java.lang.Long
- * @RETURN : class java.lang.Boolean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public Boolean checkIsPatientCaseAssociatedWithFieldOffice (Long injuryId, Long disbAssmtId, Long treatmentInvoiceHeaderId) throws GOSIException
- {
- Boolean isPatientCaseAssociatedWithFieldOffice = null;
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String sqlQuery = null;
- if (injuryId != null)
- {
- sqlQuery = "SELECT inj.fieldofficecode AS PATIENT_CASE_FIELD_OFFICE, ihdr.fieldoffice AS TREATMENT_INVOICE_FIELD_OFFICE " +
- " FROM " + SITables.T_INJURY + " inj, " + SITables.T_REGHOSPINVOICEHDR + " ihdr " +
- " WHERE inj.injuryid = ? " +
- " AND ihdr.invoiceheaderid = ? " +
- "UNION " +
- "SELECT transfer.transfertofldoffcde AS PATIENT_CASE_FIELD_OFFICE, ihdr.fieldoffice AS TREATMENT_INVOICE_FIELD_OFFICE " +
- " FROM " + SITables.T_TRANSFEROH + " transfer, " + SITables.T_REGHOSPINVOICEHDR + " ihdr " +
- " WHERE transfer.injuryid = ? " +
- " AND ihdr.invoiceheaderid = ? " +
- " AND transfer.status NOT IN (?, ?) " +
- "UNION " +
- "SELECT transfer.transferfromfldoffcde AS PATIENT_CASE_FIELD_OFFICE, ihdr.fieldoffice AS TREATMENT_INVOICE_FIELD_OFFICE " +
- " FROM " + SITables.T_TRANSFEROH + " transfer, " + SITables.T_REGHOSPINVOICEHDR + " ihdr " +
- " WHERE transfer.injuryid = ? " +
- " AND ihdr.invoiceheaderid = ? " +
- " AND transfer.transferfromfldoffcde IS NOT NULL " +
- " AND transfer.status NOT IN (?, ?) ";
- }
- else
- {
- sqlQuery = "SELECT disb.fieldoffice AS PATIENT_CASE_FIELD_OFFICE, ihdr.fieldoffice AS TREATMENT_INVOICE_FIELD_OFFICE " +
- " FROM " + SITables.T_DISBASSMT + " disb, " + SITables.T_REGHOSPINVOICEHDR + " ihdr " +
- " WHERE disb.SCHEDULEID = ? " +
- " AND ihdr.invoiceheaderid = ? ";
- }
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery);
- if (injuryId != null)
- {
- ps.setLong (1, injuryId);
- ps.setLong (2, treatmentInvoiceHeaderId);
- ps.setLong (3, injuryId);
- ps.setLong (4, treatmentInvoiceHeaderId);
- ps.setShort (5, OHConstants.TRANSFER_STS_REJECTED);
- ps.setShort (6, OHConstants.TRANSFER_STS_CANCELLED);
- ps.setLong (7, injuryId);
- ps.setLong (8, treatmentInvoiceHeaderId);
- ps.setShort (9, OHConstants.TRANSFER_STS_REJECTED);
- ps.setShort (10, OHConstants.TRANSFER_STS_CANCELLED);
- }
- else
- {
- ps.setLong (1, disbAssmtId);
- ps.setLong (2, treatmentInvoiceHeaderId);
- }
- rs = ps.executeQuery ();
- while (rs.next())
- {
- if (rs.getShort("PATIENT_CASE_FIELD_OFFICE") == rs.getShort("TREATMENT_INVOICE_FIELD_OFFICE"))
- {
- isPatientCaseAssociatedWithFieldOffice = Boolean.TRUE;
- break;
- }
- else
- isPatientCaseAssociatedWithFieldOffice = Boolean.FALSE;
- }
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "checkIsPatientCaseAssociatedWithFieldOffice()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- return isPatientCaseAssociatedWithFieldOffice;
- }
- /**
- * @METHOD NAME : isPreviouslyEnteredByFieldOffice
- * @INFORMATION : This method is to check is Previously Entered By Field Office
- * @PARAM : class java.lang.Long,
- class java.lang.Long,
- class java.lang.Long
- * @RETURN : class java.lang.Boolean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public Boolean isPreviouslyEnteredByFieldOffice (Long injuryId, Long disbAssmtId, Long hospitalCode) throws GOSIException
- {
- Boolean isPreviouslyEnteredByFieldOffice = null;
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String sqlQuery = "SELECT COUNT (*) AS num_records " +
- " FROM " + SITables.T_REGHOSPINVOICEHDR + " ihdr, " + SITables.T_REGHOSPINVOICEDET + " idet " +
- " WHERE ihdr.invoiceheaderid = idet.invoiceheaderid " +
- (injuryId != null ? " AND injuryid = ? " : " AND disbassmtid = ? ") +
- " AND ihdr.hospitalcode = ? " +
- " AND ihdr.filenumber IS NOT NULL " +
- " AND ihdr.invoicestatus <> ? " +
- " AND idet.status <> ? ";
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, injuryId != null ? injuryId : disbAssmtId);
- ps.setLong (2, hospitalCode);
- ps.setShort (3, OHConstants.REG_HOSP_INVC_CANCELLED);
- ps.setShort (4, OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED);
- rs = ps.executeQuery ();
- if (rs.next())
- {
- if (rs.getInt("NUM_RECORDS") > 0)
- isPreviouslyEnteredByFieldOffice = Boolean.TRUE;
- else if (rs.getInt("NUM_RECORDS") == 0)
- isPreviouslyEnteredByFieldOffice = Boolean.FALSE;
- }
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "isPreviouslyEnteredByFieldOffice()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- return isPreviouslyEnteredByFieldOffice;
- }
- /**
- * @METHOD NAME : isPreviouslyEnteredByHospital
- * @INFORMATION : This method is to check is Previously Entered By Hospital
- * @PARAM : class java.lang.Long,
- class java.lang.Long,
- class java.lang.Long
- * @RETURN : class java.lang.Boolean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public Boolean isPreviouslyEnteredByHospital (Long injuryId, Long disbAssmtId, Long hospitalCode) throws GOSIException
- {
- Boolean isPreviouslyEnteredByHospital = null;
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String sqlQuery = "SELECT COUNT (*) AS num_records " +
- " FROM " + SITables.T_REGHOSPINVOICEHDR + " ihdr, " + SITables.T_REGHOSPINVOICEDET + " idet " +
- " WHERE ihdr.invoiceheaderid = idet.invoiceheaderid " +
- (injuryId != null ? " AND injuryid = ? " : " AND disbassmtid = ? ") +
- " AND ihdr.hospitalcode = ? " +
- " AND ihdr.filenumber IS NULL " +
- " AND ihdr.invoicestatus <> ? " +
- " AND idet.status <> ? ";
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, injuryId != null ? injuryId : disbAssmtId);
- ps.setLong (2, hospitalCode);
- ps.setShort (3, OHConstants.REG_HOSP_INVC_CANCELLED);
- ps.setShort (4, OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED);
- rs = ps.executeQuery ();
- if (rs.next())
- {
- if (rs.getInt("NUM_RECORDS") > 0)
- isPreviouslyEnteredByHospital = Boolean.TRUE;
- else if (rs.getInt("NUM_RECORDS") == 0)
- isPreviouslyEnteredByHospital = Boolean.FALSE;
- }
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "isPreviouslyEnteredByHospital()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- return isPreviouslyEnteredByHospital;
- }
- /**
- * @METHOD NAME : checkTreatmentPeriodCoverage
- * @INFORMATION : This method is to check Treatment Period Coverage
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.TreatmentServiceBean
- * @RETURN : void
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public TreatmentPeriodBean checkTreatmentPeriodCoverage (TreatmentServiceBean treatmentServiceBean) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- TreatmentPeriodBean treatmentPeriodBean =null;
- try
- {
- String sqlQuery = "SELECT treatmentid, hospitalcode, treatmentstatus, treatmenttype ," +
- " startdate, startdateentfmt, enddate , enddateentfmt" +
- " FROM " + SITables.T_TREATMENT +
- " WHERE injuryid = ? " +
- " AND startdate <= ? " +
- " AND enddate >= ? " +
- " AND treatmentstatus <> ? ";
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, treatmentServiceBean.getInjuryId());
- ps.setTimestamp (2, treatmentServiceBean.getTrmtDateGreg());
- ps.setTimestamp (3, treatmentServiceBean.getTrmtDateGreg());
- ps.setShort (4, OHConstants.TRMT_STS_CANCELLED);
- rs = ps.executeQuery ();
- if (rs.next())
- {
- boolean hasTreatmentPeriodAtThisHospital = false;
- boolean hasApprovedTreatmentPeriod = false;
- do
- {
- if (rs.getLong("HOSPITALCODE") == treatmentServiceBean.getHospitalCode())
- {
- hasTreatmentPeriodAtThisHospital = true;
- if (rs.getShort("TREATMENTSTATUS") == OHConstants.TRMT_STS_APPROVED)
- {
- treatmentPeriodBean=new TreatmentPeriodBean();
- treatmentPeriodBean.setTreatmentId(rs.getLong("TREATMENTID"));
- treatmentPeriodBean.setHospitalCode(rs.getLong("HOSPITALCODE"));
- treatmentPeriodBean.setTreatmentStatus(rs.getShort("TREATMENTSTATUS"));
- treatmentPeriodBean.setTreatmentType(rs.getShort("TREATMENTTYPE"));
- treatmentPeriodBean.setStartDateGreg(rs.getTimestamp("STARTDATE"));
- treatmentPeriodBean.setStartDateEntFmt(rs.getString("STARTDATEENTFMT"));
- treatmentPeriodBean.setStartDateGreg(rs.getTimestamp("ENDDATE"));
- treatmentPeriodBean.setStartDateEntFmt(rs.getString("ENDDATEENTFMT"));
- hasApprovedTreatmentPeriod = true;
- break;
- }
- }
- }
- while (rs.next());
- if (! hasTreatmentPeriodAtThisHospital)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "checkTreatmentPeriodCoverage()",
- null,
- "SOI_ERR_5904");
- }
- if (! hasApprovedTreatmentPeriod)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "checkTreatmentPeriodCoverage()",
- null,
- "SOI_ERR_5905");
- }
- }
- else
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "checkTreatmentPeriodCoverage()",
- null,
- "SOI_ERR_5906");
- }
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "checkTreatmentPeriodCoverage()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- return treatmentPeriodBean;
- }
- /**
- * @METHOD NAME : calculateTreatmentServiceAmount
- * @INFORMATION : This method is to calculate Treatment Service Amount
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.TreatmentServiceBean
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.TreatmentServiceBean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public TreatmentServiceBean calculateTreatmentServiceAmount (TreatmentServiceBean treatmentServiceBean , ArrayList treatmentServicesList) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- StringBuilder sqlQuery =new StringBuilder();
- StringBuilder sqlQuery2 =new StringBuilder();
- PreparedStatement ps2 = null;
- ResultSet rs2 = null;
- try
- {
- if(treatmentServiceBean.getTreatmentType().equals(OHConstants.TRMT_SRVC_TYPE_TREATMENT_SERVICE.shortValue()))
- {
- sqlQuery.append("SELECT NVL (treatmentdescarb, treatmentdesceng) AS description, ");
- sqlQuery.append(" price, needsapproval ,isNonDiscount ");
- sqlQuery.append(" FROM " + SITables.T_TRTMSERVICELIST );
- sqlQuery.append(" WHERE hospitalcode = ? " );
- sqlQuery.append(" AND treatmentcode = ? " );
- sqlQuery.append(" AND status = ? ");
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- GOSIDebug.debugMessages("sqlQuery : "+sqlQuery.toString());
- ps = con.prepareStatement (sqlQuery.toString());
- ps.setLong (1, treatmentServiceBean.getHospitalCode());
- ps.setString (2, treatmentServiceBean.getTrmtCode());
- ps.setShort (3, OHConstants.VS_APPROVED);
- rs = ps.executeQuery ();
- if (rs.next())
- {
- treatmentServiceBean.setTrmt (rs.getString ("DESCRIPTION"));
- treatmentServiceBean.setTrmtDesc (rs.getString ("DESCRIPTION"));
- treatmentServiceBean.setUnitPrice (new Double(rs.getDouble("PRICE")));
- treatmentServiceBean.setIsNonDiscount(rs.getByte("ISNONDISCOUNT"));
- treatmentServiceBean.setTrmtAmt ((treatmentServiceBean.getUnitPrice() * treatmentServiceBean.getUnits())*(1-(treatmentServiceBean.getDiscountPercentage()/100)));
- if (rs.getShort("NEEDSAPPROVAL") == OHConstants.TRTM_NEEDSAPPROVAL_NEED)
- {
- /* Doctor approval is necessary for this treatment service */
- GOSIUtilities.cleanUp (ps, rs);
- sqlQuery=new StringBuilder();
- String trmtDateString=GOSIUtilities.getDateFullString(treatmentServiceBean.getTrmtDateGreg());
- sqlQuery.append("SELECT sum (numberofservices) as numberofservices " );
- sqlQuery.append(" FROM T_TRMTSERVICEREQUESTAPPROVAL WHERE" );
- if(treatmentServiceBean.getInjuryId()!=null)
- sqlQuery.append(" injuryid = ? ");
- else
- sqlQuery.append(" disabilityassessmentid = ? ");
- sqlQuery.append(" AND hospitalcode = ? " );
- sqlQuery.append(" AND treatmentcode = ? " );
- sqlQuery.append(" AND requeststatus = ? ");
- sqlQuery.append(" AND requestdate >= ? ");
- sqlQuery.append(" AND requestdate <= ? ");
- GOSIDebug.debugMessages("sqlQuery : "+sqlQuery.toString());
- ps = con.prepareStatement (sqlQuery.toString());
- ps.setLong (1, treatmentServiceBean.getInjuryId()!=null?treatmentServiceBean.getInjuryId():treatmentServiceBean.getDisbAssmtId());
- ps.setLong (2, treatmentServiceBean.getHospitalCode());
- ps.setString (3, treatmentServiceBean.getTrmtCode());
- ps.setShort (4, OHConstants.TRMT_REQ_APPROVED);
- ps.setTimestamp(5, OHUtilities.getGregDate(OHUtilities.getMonthStartDate(OHUtilities.getMonth(trmtDateString),
- OHUtilities.getYear(trmtDateString)),OHConstants.GREGORIAN));
- ps.setTimestamp (6, OHUtilities.getGregDate(OHUtilities.getMonthEndDate(trmtDateString),OHConstants.GREGORIAN));
- rs = ps.executeQuery ();
- if (rs.next())
- {
- int numberOfRequestServices=rs.getInt("NUMBEROFSERVICES");
- int numberOfAvailableServices=0;
- int numberOfTreatmentServices=0;
- int numberOfTreatmentServicesThatUsed = 0;
- for (int i = 0; i < treatmentServicesList.size(); i++)
- {
- TreatmentServiceBean existingTreatmentServiceBean = (TreatmentServiceBean) treatmentServicesList.get (i);
- if (existingTreatmentServiceBean.getTrmtCode().equals(treatmentServiceBean.getTrmtCode()))
- {
- numberOfTreatmentServicesThatUsed+=treatmentServiceBean.getUnits();
- }
- }
- /*if (rs.getShort("REQUESTSTATUS") == OHConstants.TRMT_REQ_ENTERED)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "calculateTreatmentServiceAmount()",
- null,
- "SOI_ERR_5900");
- }*/
- sqlQuery2=new StringBuilder();
- sqlQuery2.append("SELECT SUM (NVL (D.APPROVEDUNITS, D.UNITS)) AS NUMBEROFTRMTSERVICE ");
- sqlQuery2.append(" FROM T_TRMTSERVICESHDR H LEFT JOIN T_TRMTSERVICESDET D ON D.TRMTSERVICEHDRID = H.TRMTSERVICEHDRID WHERE");
- if(treatmentServiceBean.getInjuryId()!=null)
- sqlQuery2.append(" H.INJURYID = ?");
- else
- sqlQuery2.append(" H.DISASSMTID=? ");
- sqlQuery2.append(" AND H.HOSPITALCODE = ? AND D.ICD10TRMTDIAGNOSISCODE= ? ");
- sqlQuery2.append(" AND d.TRMTDATE >= ? AND d.TRMTDATE <= ? AND D.TRMTSRVCSTATUS NOT IN (? ,?)");
- GOSIDebug.debugMessages("sqlQuery : "+sqlQuery2.toString());
- ps2 = con.prepareStatement (sqlQuery2.toString());
- ps2.setLong (1, treatmentServiceBean.getInjuryId()!=null?treatmentServiceBean.getInjuryId():treatmentServiceBean.getDisbAssmtId());
- ps2.setLong (2, treatmentServiceBean.getHospitalCode());
- ps2.setString (3, treatmentServiceBean.getTrmtCode());
- ps2.setTimestamp(4, OHUtilities.getGregDate(OHUtilities.getMonthStartDate(OHUtilities.getMonth(trmtDateString),
- OHUtilities.getYear(trmtDateString)),OHConstants.GREGORIAN));
- ps2.setTimestamp (5, OHUtilities.getGregDate(OHUtilities.getMonthEndDate(trmtDateString),OHConstants.GREGORIAN));
- ps2.setShort (6, OHConstants.TRMT_SRVC_STS_REJECTED);
- ps2.setShort (7, OHConstants.TRMT_SRVC_STS_CANCELLED);
- rs2 = ps2.executeQuery ();
- if (rs2.next())
- {
- if (rs2.getObject("NUMBEROFTRMTSERVICE")!=null)
- numberOfTreatmentServices=rs2.getInt("NUMBEROFTRMTSERVICE");
- }
- numberOfAvailableServices=numberOfRequestServices-numberOfTreatmentServices-numberOfTreatmentServicesThatUsed;
- if (numberOfAvailableServices==0)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "calculateTreatmentServiceAmount()",
- null,
- "SOI_ERR_5902");
- }
- else if (numberOfAvailableServices < treatmentServiceBean.getUnits())
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "calculateTreatmentServiceAmount()",
- null,
- "SOI_ERR_5901");
- }
- }
- else
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "calculateTreatmentServiceAmount()",
- null,
- "SOI_ERR_5902");
- }
- }
- }
- else
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "calculateTreatmentServiceAmount()",
- null,
- "SOI_ERR_5899");
- }
- }
- else if(treatmentServiceBean.getTreatmentType().equals(OHConstants.TRMT_SRVC_TYPE_MEDICINE.shortValue()))
- {
- sqlQuery =new StringBuilder();
- sqlQuery.append("SELECT ID, REGISTRATIONNUM , TRADENAME, STRENGTHVALUE, ");
- sqlQuery.append(" UNITOFSTRENGTH, VOLUME, UNITOFVOLUME, PUBLICPRICE FROM T_SFDA");
- sqlQuery.append(" WHERE REGISTRATIONNUM = ? ");
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- GOSIDebug.debugMessages("sqlQuery : "+sqlQuery.toString());
- ps = con.prepareStatement (sqlQuery.toString());
- ps.setString (1, treatmentServiceBean.getSFDACode());
- rs = ps.executeQuery ();
- if (rs.next())
- {
- String tradeName=rs.getString("TRADENAME");
- String strengthValue=rs.getString("STRENGTHVALUE");
- String unitOfStrength=rs.getString("UNITOFSTRENGTH");
- String strength= strengthValue!=null &&unitOfStrength!=null?
- " "+strengthValue+unitOfStrength:"";
- String volumeValue=rs.getString("VOLUME");
- String unitOfVolume=rs.getString("UNITOFVOLUME");
- String volume=unitOfVolume!=null && !volumeValue.equalsIgnoreCase("null") ?
- " Volume:"+volumeValue+unitOfVolume:"";
- String name=tradeName+strength+volume;
- treatmentServiceBean.setTrmtAmt ((treatmentServiceBean.getMedicineAmount() * treatmentServiceBean.getUnits())*(1-(treatmentServiceBean.getDiscountPercentage()/100)));
- treatmentServiceBean.setMedicineDescription(name);
- GOSIDebug.debugMessages("TrmtAmt : "+treatmentServiceBean.getTrmtAmt());
- }
- else
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "calculateTreatmentServiceAmount()",
- null,
- "SOI_ERR_5899");
- }
- }
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "calculateTreatmentServiceAmount()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- return treatmentServiceBean;
- }
- /**
- * @METHOD NAME : isTreatmentServiceAlreadyEntered
- * @INFORMATION : This method is to is Treatment Service Already Entered
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.TreatmentServiceBean
- * @RETURN : class java.lang.Boolean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public Boolean isTreatmentServiceAlreadyEntered (TreatmentServiceBean treatmentServiceBean) throws GOSIException
- {
- Boolean isTreatmentServiceAlreadyEntered = null;
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- StringBuilder sqlQuery=new StringBuilder();
- sqlQuery.append("SELECT COUNT(*) AS num_trmt_services ");
- sqlQuery.append(" FROM " + SITables.T_TRMTSERVICESHDR + " hdr, " + SITables.T_TRMTSERVICESDET + " det ");
- sqlQuery.append(" WHERE hdr.trmtservicehdrid = det.trmtservicehdrid ");
- sqlQuery.append(" AND " + (treatmentServiceBean.getInjuryId() != null ? "hdr.injuryid = ? ": "hdr.disassmtid = ? "));
- sqlQuery.append(" AND hdr.hospitalcode = ? ");
- sqlQuery.append(" AND det.trmtdate = ? " );
- sqlQuery.append(" AND det.trmtsrvcstatus <> ? ");
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- if(treatmentServiceBean.getSFDACode()!=null){
- sqlQuery.append(" AND det.sfdacode = ? ");
- }
- else{
- sqlQuery.append(" AND det.icd10trmtdiagnosiscode = ? ") ;
- }
- GOSIDebug.debugMessages(sqlQuery.toString());
- ps = con.prepareStatement (sqlQuery.toString());
- int i=1;
- ps.setLong (i++, treatmentServiceBean.getInjuryId() != null ? treatmentServiceBean.getInjuryId()
- : treatmentServiceBean.getDisbAssmtId());
- ps.setLong (i++, treatmentServiceBean.getHospitalCode());
- ps.setTimestamp (i++, treatmentServiceBean.getTrmtDateGreg());
- ps.setShort (i++, OHConstants.TRMT_SRVC_STS_CANCELLED);
- if(treatmentServiceBean.getSFDACode()!=null)
- {
- ps.setString (i++, treatmentServiceBean.getSFDACode());
- }
- else
- {
- ps.setString (i++, treatmentServiceBean.getTrmtCode());
- }
- rs = ps.executeQuery ();
- if (rs.next() && rs.getInt("NUM_TRMT_SERVICES") > 0)
- {
- isTreatmentServiceAlreadyEntered = Boolean.TRUE;
- }
- else
- {
- isTreatmentServiceAlreadyEntered = Boolean.FALSE;
- }
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "isTreatmentServiceAlreadyEntered()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- return isTreatmentServiceAlreadyEntered;
- }
- /**
- * @METHOD NAME : saveDeductionOnTreatmentServices
- * @INFORMATION : This method is to save Treatment Services
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.TreatmentHeaderBean,
- class java.util.ArrayList
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.TreatmentHeaderBean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public TreatmentHeaderBean saveDeductionOnTreatmentServices (TreatmentHeaderBean treatmentServicesHeaderBean, ArrayList treatmentServicesList) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- TreatmentServiceHeaderEntityHome treatmentServiceHeaderEntityHome = (TreatmentServiceHeaderEntityHome)
- ServiceLocator.getInstance ().getRemoteHome (OHConstants.TRMT_SRVC_HDR_ENTITY_JNDI, TreatmentServiceHeaderEntityHome.class);
- TreatmentServiceDetailEntityHome treatmentServiceDetailEntityHome = (TreatmentServiceDetailEntityHome)
- ServiceLocator.getInstance ().getRemoteHome (OHConstants.TRMT_SRVC_DET_ENTITY_JNDI, TreatmentServiceDetailEntityHome.class);
- Long workflowId = GOSIUtilities.getPrimaryKey ("TRMTSRVCWRKFLOID", treatmentServicesHeaderBean.getLastModifiedBy());
- TreatmentServiceHeaderEntity treatmentServiceHeaderEntity=
- treatmentServiceHeaderEntityHome.findByPrimaryKey(treatmentServicesHeaderBean.getTrmtServiceHdrId());
- treatmentServiceHeaderEntity.setAppealStatus(treatmentServicesHeaderBean.getAppealStatus(), treatmentServicesHeaderBean.getLastModifiedBy()
- , treatmentServicesHeaderBean.getLastModifiedTimestamp());
- for (int i = 0; i < treatmentServicesList.size(); i++)
- {
- TreatmentServiceBean treatmentServiceBean = (TreatmentServiceBean) treatmentServicesList.get (i);
- treatmentServiceBean.setAppealDedcutionWfId(workflowId);
- TreatmentServiceDetailEntity treatmentServiceEntity= treatmentServiceDetailEntityHome.findByPrimaryKey(
- treatmentServiceBean.getTrmtServiceDetId());
- treatmentServiceEntity.modifyAppealDedcution(treatmentServiceBean);
- }
- WorkflowParamBean workflowParamBean = new WorkflowParamBean ();
- workflowParamBean.setUserId (treatmentServicesHeaderBean.getLastModifiedBy());
- workflowParamBean.setUserLocationId (treatmentServicesHeaderBean.getFieldOffice());
- workflowParamBean.setRoleId (OHConstants.ROLE_ID_HOSPITAL_USER);
- workflowParamBean.setModuleId (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- workflowParamBean.setKeyVal1 (treatmentServicesHeaderBean.getSocInsNumber().toString());
- workflowParamBean.setKeyVal2 (GOSIUtilities.getDateFullString(treatmentServicesHeaderBean.getInjuryDate()));
- workflowParamBean.setStepShortName ("ADD_TRMT_SRVC");
- workflowParamBean.setrecordDescription (GOSIErrorMessages.getErrorDesc("SOI_ERR_5933") + " - " +
- treatmentServicesHeaderBean.getSocInsNumber());
- workflowParamBean.setRoutingCriterion (GOSIConstants.COMPLETED);
- workflowParamBean.setPrimaryKeyOfTherecord (workflowId.toString());
- GOSIUtilities.startWorkflow (workflowParamBean);
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly ();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly ();
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "saveDeductionOnTreatmentServices()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- return treatmentServicesHeaderBean;
- }
- /**
- * @METHOD NAME : saveTreatmentServices
- * @INFORMATION : This method is to save Treatment Services
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.TreatmentHeaderBean,
- class java.util.ArrayList
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.TreatmentHeaderBean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public TreatmentHeaderBean saveTreatmentServices (TreatmentHeaderBean treatmentServicesHeaderBean, ArrayList treatmentServicesList) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String patientNumber = treatmentServicesHeaderBean.getPatientNumber ();
- /* Validate patient number */
- boolean isPatientNumberValid = true;
- if (! Character.isLetterOrDigit(patientNumber.charAt(0))) isPatientNumberValid = false;
- for (int i = 1; i < patientNumber.length()-1; i++)
- if (! Character.isLetterOrDigit(patientNumber.charAt(i))
- && patientNumber.charAt(i) != '-') isPatientNumberValid = false;
- if (! Character.isLetterOrDigit
- (patientNumber.charAt(patientNumber.length()-1))) isPatientNumberValid = false;
- if (! isPatientNumberValid)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "saveTreatmentServices()",
- null,
- "SOI_ERR_5880");
- }
- String sqlQuery = "SELECT trmtservicehdrid " +
- " FROM " + SITables.T_TRMTSERVICESHDR +
- " WHERE " + (treatmentServicesHeaderBean.getInjuryId() != null ? "injuryid = ?"
- : "disassmtid = ?") +
- " AND hospitalcode = ? " +
- " AND patientnumber = '" + patientNumber + "' " +
- " AND invoicedetailsid IN (SELECT invoicedetailsid " +
- " FROM " + SITables.T_REGHOSPINVOICEDET +
- " WHERE invoiceheaderid = ?) ";
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, treatmentServicesHeaderBean.getInjuryId() != null ? treatmentServicesHeaderBean.getInjuryId()
- : treatmentServicesHeaderBean.getDisAssmtId());
- ps.setLong (2, treatmentServicesHeaderBean.getHospitalCode());
- ps.setLong (3, treatmentServicesHeaderBean.getInvoiceHeaderId());
- rs = ps.executeQuery ();
- if (rs.next())
- {
- treatmentServicesHeaderBean.setTrmtServiceHdrId (rs.getLong("TRMTSERVICEHDRID"));
- }
- else
- {
- treatmentServicesHeaderBean.setTrmtServiceHdrId (GOSIUtilities.getPrimaryKey (SITables.T_TRMTSERVICESHDR, treatmentServicesHeaderBean.getCreatedBy()));
- treatmentServicesHeaderBean.setCreationTimestamp (new Timestamp(System.currentTimeMillis()));
- TreatmentServiceHeaderEntityHome treatmentServiceHeaderEntityHome = (TreatmentServiceHeaderEntityHome)
- ServiceLocator.getInstance ().getRemoteHome (OHConstants.TRMT_SRVC_HDR_ENTITY_JNDI, TreatmentServiceHeaderEntityHome.class);
- treatmentServiceHeaderEntityHome.create (treatmentServicesHeaderBean);
- }
- Long keys[] = GOSIUtilities.getPrimaryKeyList (SITables.T_TRMTSERVICESDET, treatmentServicesList.size(), treatmentServicesHeaderBean.getCreatedBy());
- Long workflowId = GOSIUtilities.getPrimaryKey ("TRMTSRVCWRKFLOID", treatmentServicesHeaderBean.getCreatedBy());
- for (int i = 0; i < treatmentServicesList.size(); i++)
- {
- TreatmentServiceBean treatmentServiceBean = (TreatmentServiceBean) treatmentServicesList.get (i);
- treatmentServiceBean.setTrmtServiceHdrId (treatmentServicesHeaderBean.getTrmtServiceHdrId());
- treatmentServiceBean.setTrmtServiceDetId (keys[i]);
- treatmentServiceBean.setTrmtSrvcWrkfloId (workflowId);
- treatmentServiceBean.setCreatedBy (treatmentServicesHeaderBean.getCreatedBy());
- treatmentServiceBean.setCreationTimestamp (new Timestamp(System.currentTimeMillis()));
- TreatmentServiceDetailEntityHome treatmentServiceDetailEntityHome = (TreatmentServiceDetailEntityHome)
- ServiceLocator.getInstance ().getRemoteHome (OHConstants.TRMT_SRVC_DET_ENTITY_JNDI, TreatmentServiceDetailEntityHome.class);
- treatmentServiceDetailEntityHome.create (treatmentServiceBean);
- }
- WorkflowParamBean workflowParamBean = new WorkflowParamBean ();
- workflowParamBean.setUserId (treatmentServicesHeaderBean.getCreatedBy());
- workflowParamBean.setUserLocationId (treatmentServicesHeaderBean.getFieldOffice());
- workflowParamBean.setRoleId (OHConstants.ROLE_ID_HOSPITAL_USER);
- workflowParamBean.setModuleId (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- workflowParamBean.setKeyVal1 (treatmentServicesHeaderBean.getSocInsNumber().toString());
- workflowParamBean.setKeyVal2 (GOSIUtilities.getDateFullString(treatmentServicesHeaderBean.getInjuryDate()));
- workflowParamBean.setStepShortName ("ADD_TRMT_SRVC");
- workflowParamBean.setrecordDescription (GOSIErrorMessages.getErrorDesc("SOI_ERR_5909") + " - " +
- treatmentServicesHeaderBean.getSocInsNumber());
- workflowParamBean.setRoutingCriterion (GOSIConstants.COMPLETED);
- workflowParamBean.setPrimaryKeyOfTherecord (workflowId.toString());
- GOSIUtilities.startWorkflow (workflowParamBean);
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly ();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly ();
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "saveTreatmentServices()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- return treatmentServicesHeaderBean;
- }
- /**
- * @METHOD NAME : canRecalculateTreatmentInvoice
- * @INFORMATION : This method is to can Recalculate Treatment Invoice
- * @PARAM : class java.lang.Long
- * @RETURN : class java.lang.Boolean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public Boolean canRecalculateTreatmentInvoice (Long treatmentServiceHeaderId) throws GOSIException
- {
- Boolean canRecalculateTreatmentInvoice = null;
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String sqlQuery1 = "SELECT hdr.invoicedetailsid " +
- " FROM " + SITables.T_TRMTSERVICESHDR + " hdr " +
- " WHERE hdr.trmtservicehdrid = ? ";
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery1);
- ps.setLong (1, treatmentServiceHeaderId);
- rs = ps.executeQuery ();
- if (rs.next())
- {
- if (rs.getObject("INVOICEDETAILSID") != null)
- {
- canRecalculateTreatmentInvoice = Boolean.TRUE;
- }
- else
- {
- canRecalculateTreatmentInvoice = Boolean.FALSE;
- }
- }
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly ();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly ();
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "canRecalculateTreatmentInvoice()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- return canRecalculateTreatmentInvoice;
- }
- /**
- * @METHOD NAME : recalculateTreatmentInvoiceDetail
- * @INFORMATION : This method is to recalculate Treatment Invoice Detail
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.TreatmentHeaderBean,
- class java.util.ArrayList,
- class java.lang.Long,
- class java.lang.Long,
- class java.lang.Boolean
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public RegHospInvoiceDetailBean recalculateTreatmentInvoiceDetail (TreatmentHeaderBean treatmentServicesHeaderBean,
- ArrayList treatmentServices,
- Long treatmentInvoiceHeaderId,
- Long userId,
- Boolean isFinallyApproved) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- boolean isHasDeduction=false;
- if(treatmentServices!=null
- && ((TreatmentServiceBean) treatmentServices.get(0)).getAppealDedcutionWfId()!=null
- && ((TreatmentServiceBean) treatmentServices.get(0)).getAppealDedcutionStatus()!=null){
- isHasDeduction=true;
- }
- String sqlQuery1 = "SELECT hdr.invoicedetailsid " +
- " FROM " + SITables.T_TRMTSERVICESHDR + " hdr " +
- " WHERE hdr.trmtservicehdrid = ? ";
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery1);
- ps.setLong (1, treatmentServicesHeaderBean.getTrmtServiceHdrId());
- rs = ps.executeQuery ();
- if (rs.next())
- {
- if (rs.getObject("INVOICEDETAILSID") != null)
- {
- treatmentServicesHeaderBean.setInvoiceDetailsId (rs.getLong("INVOICEDETAILSID"));
- }
- }
- GOSIUtilities.cleanUp (ps, rs);
- String sqlQuery2 = "SELECT det.trmtservicedetid, " +
- " CASE det.icd10trmtdiagnosiscode WHEN ? THEN ? ELSE ? END AS trmtcode, trmtdate, NVL(trmtamt,0) AS trmtamt, " +
- " NVL(SUM(REJECTEDTRMTAMT),0) AS rejectedamount, det.trmtsrvcstatus , det.isnondiscount " +
- " FROM " + SITables.T_TRMTSERVICESHDR + " hdr LEFT JOIN " + SITables.T_TRMTSERVICESDET + " det " +
- " ON det.trmtservicehdrid = hdr.trmtservicehdrid WHERE hdr.trmtservicehdrid = ? " +
- (treatmentServices != null ?( isHasDeduction?" AND (det.appealdedcutionwfid <> ? OR det.appealdedcutionwfid is NULL)":
- " AND det.trmtsrvcwrkfloid <> ? " ): "") +
- " AND det.trmtsrvcstatus <> ? " +
- " GROUP BY det.trmtservicedetid, icd10trmtdiagnosiscode, trmtdate, NVL(trmtamt,0) , det.trmtsrvcstatus , det.isnondiscount ";
- GOSIDebug.debugMessages("Qeury :"+sqlQuery2);
- ps = con.prepareStatement (sqlQuery2);
- ps.setString (1, OHConstants.ICD_MEDICINE_CODE);
- ps.setString (2, OHConstants.ICD_MEDICINE_CODE);
- ps.setString (3, OHConstants.TRMT_SRVC_BULK_ENTRY);
- ps.setLong (4, treatmentServicesHeaderBean.getTrmtServiceHdrId());
- GOSIDebug.debugMessages("getTrmtServiceHdrId :"+treatmentServicesHeaderBean.getTrmtServiceHdrId());
- if (treatmentServices == null)
- {
- ps.setShort (5, OHConstants.TRMT_SRVC_STS_CANCELLED);
- }
- else
- {
- if(isHasDeduction){
- ps.setLong (5, ((TreatmentServiceBean) treatmentServices.get(0)).getAppealDedcutionWfId());
- }
- else
- {
- ps.setLong (5, ((TreatmentServiceBean) treatmentServices.get(0)).getTrmtSrvcWrkfloId());
- }
- GOSIDebug.debugMessages("getTrmtSrvcWrkfloId :"+((TreatmentServiceBean) treatmentServices.get(0)).getTrmtSrvcWrkfloId());
- ps.setShort (6, OHConstants.TRMT_SRVC_STS_CANCELLED);
- }
- rs = ps.executeQuery ();
- Timestamp startDate = null;
- Timestamp endDate = null;
- double servicesAmount = 0.0;
- double rejectedServicesAmount = 0.0;
- double medicinesAmount = 0.0;
- double rejectedMedicinesAmount = 0.0;
- double nonDiscountAmount = 0.0;
- double rejectedNonDiscountAmount = 0.0;
- while (rs.next())
- {
- if (startDate == null || startDate.after(rs.getTimestamp("TRMTDATE")))
- {
- startDate = rs.getTimestamp ("TRMTDATE");
- }
- if (endDate == null || endDate.before(rs.getTimestamp("TRMTDATE")))
- {
- endDate = rs.getTimestamp ("TRMTDATE");
- }
- if (rs.getString("TRMTCODE").equals(OHConstants.TRMT_SRVC_BULK_ENTRY))
- {
- if (rs.getByte("ISNONDISCOUNT")==OHConstants.TRTM_ISNONDISCOUNT_YES.byteValue())
- {
- nonDiscountAmount += rs.getDouble ("TRMTAMT");
- if (rs.getShort("TRMTSRVCSTATUS") != OHConstants.TRMT_SRVC_STS_REJECTED)
- {
- rejectedNonDiscountAmount += rs.getDouble ("REJECTEDAMOUNT");
- }
- else
- {
- rejectedNonDiscountAmount += rs.getDouble ("TRMTAMT");
- }
- }
- else
- {
- servicesAmount += rs.getDouble ("TRMTAMT");
- if (rs.getShort("TRMTSRVCSTATUS") != OHConstants.TRMT_SRVC_STS_REJECTED)
- {
- rejectedServicesAmount += rs.getDouble ("REJECTEDAMOUNT");
- }
- else
- {
- rejectedServicesAmount += rs.getDouble ("TRMTAMT");
- }
- }
- }
- else if(rs.getString("TRMTCODE").equals(OHConstants.ICD_MEDICINE_CODE))
- {
- medicinesAmount += rs.getDouble ("TRMTAMT");
- if (rs.getShort("TRMTSRVCSTATUS") != OHConstants.TRMT_SRVC_STS_REJECTED)
- {
- rejectedMedicinesAmount += rs.getDouble ("REJECTEDAMOUNT");
- }
- else
- {
- rejectedMedicinesAmount += rs.getDouble ("TRMTAMT");
- }
- }
- }
- // TODO : add new ATT for isNonDiscountService
- for (int i = 0; treatmentServices != null && i < treatmentServices.size(); i++)
- {
- TreatmentServiceBean treatmentService = (TreatmentServiceBean) treatmentServices.get (i);
- if (treatmentService.getTrmtSrvcStatus().equals(OHConstants.TRMT_SRVC_STS_CANCELLED) || treatmentService.getMode() == AuditBean.DELETE_MODE)
- {
- continue;
- }
- if (startDate == null || startDate.after(treatmentService.getTrmtDateGreg()))
- {
- startDate = treatmentService.getTrmtDateGreg ();
- }
- if (endDate == null || endDate.before(treatmentService.getTrmtDateGreg()))
- {
- endDate = treatmentService.getTrmtDateGreg ();
- }
- Double treatmentAmount = treatmentService.getTrmtAmt ();
- Double rejectedTrmtAmt = treatmentService.getRejectedTrmtAmt();
- if (treatmentService.getTrmtCode().equals(OHConstants.ICD_MEDICINE_CODE))
- {
- medicinesAmount += treatmentAmount;
- if (treatmentService.getTrmtSrvcStatus().equals(OHConstants.TRMT_SRVC_STS_REJECTED))
- {
- rejectedMedicinesAmount += treatmentAmount;
- }
- else
- {
- rejectedMedicinesAmount += rejectedTrmtAmt;
- }
- }
- else
- {
- if (treatmentService.getIsNonDiscount().equals(OHConstants.TRTM_ISNONDISCOUNT_YES))
- {
- nonDiscountAmount += treatmentAmount;
- if (treatmentService.getTrmtSrvcStatus().equals(OHConstants.TRMT_SRVC_STS_REJECTED))
- {
- rejectedNonDiscountAmount += treatmentAmount;
- }
- else
- {
- rejectedNonDiscountAmount += rejectedTrmtAmt;
- }
- }
- else
- {
- servicesAmount += treatmentAmount;
- if (treatmentService.getTrmtSrvcStatus().equals(OHConstants.TRMT_SRVC_STS_REJECTED))
- {
- rejectedServicesAmount += treatmentAmount;
- }
- else
- {
- rejectedServicesAmount += rejectedTrmtAmt;
- }
- }
- }
- }
- GOSIDebug.debugMessages("servicesAmount :"+servicesAmount);
- GOSIDebug.debugMessages("rejectedServicesAmount :"+rejectedServicesAmount);
- GOSIDebug.debugMessages("medicinesAmount :"+medicinesAmount);
- GOSIDebug.debugMessages("rejectedMedicinesAmount :"+rejectedMedicinesAmount);
- if (treatmentServicesHeaderBean.getInvoiceDetailsId() == null)
- {
- RegHospInvoiceDetailBean treatmentInvoiceDetailBean = new RegHospInvoiceDetailBean ();
- treatmentInvoiceDetailBean.setInvoiceDetailsId (GOSIUtilities.getPrimaryKey("T_REGHOSPINVOICEDET", userId));
- treatmentInvoiceDetailBean.setInvoiceHeaderId (treatmentInvoiceHeaderId);
- treatmentInvoiceDetailBean.setInjuryId (treatmentServicesHeaderBean.getInjuryId());
- treatmentInvoiceDetailBean.setDisbAssmtId (treatmentServicesHeaderBean.getDisAssmtId());
- treatmentInvoiceDetailBean.setSocInsNumber (treatmentServicesHeaderBean.getSocInsNumber());
- treatmentInvoiceDetailBean.setTrmtStartDate (startDate);
- treatmentInvoiceDetailBean.setTrmtStartDateEntFmt (OHConstants.GREGORIAN);
- treatmentInvoiceDetailBean.setTrmtEndDate (endDate);
- treatmentInvoiceDetailBean.setTrmtEndDateEntFmt (OHConstants.GREGORIAN);
- treatmentInvoiceDetailBean.setServicesAmount (servicesAmount);
- treatmentInvoiceDetailBean.setRejectedServiceAmount (rejectedServicesAmount);
- treatmentInvoiceDetailBean.setMedicinesAmount (medicinesAmount);
- treatmentInvoiceDetailBean.setRejectedMedicineAmount (rejectedMedicinesAmount);
- treatmentInvoiceDetailBean.setNoDiscountAmount (nonDiscountAmount);
- treatmentInvoiceDetailBean.setRejectedNoDiscountAmount(rejectedNonDiscountAmount);
- treatmentInvoiceDetailBean.setPageNumber (getCurrentTreatmentInvoicePageNumber(treatmentInvoiceHeaderId));
- treatmentInvoiceDetailBean.setStatus (OHConstants.REG_HOSP_INVC_DETAILS_IN_WORKFLOW);
- treatmentInvoiceDetailBean.setCreatedBy (userId);
- treatmentInvoiceDetailBean.setCreationTimestamp (new Timestamp(System.currentTimeMillis()));
- RegHospitalInvoiceDetailEntityHome invoiceDetailEntityHome = (RegHospitalInvoiceDetailEntityHome)
- ServiceLocator.getInstance ().getRemoteHome (OHConstants.REG_HOSP_INVOICE_DETAILS_ENTITY_JNDI, RegHospitalInvoiceDetailEntityHome.class);
- invoiceDetailEntityHome.create (treatmentInvoiceDetailBean);
- TreatmentServiceHeaderEntityHome treatmentServiceEntityHome = (TreatmentServiceHeaderEntityHome)
- ServiceLocator.getInstance ().getRemoteHome (OHConstants.TRMT_SRVC_HDR_ENTITY_JNDI, TreatmentServiceHeaderEntityHome.class);
- TreatmentServiceHeaderEntity treatmentServiceEntity = treatmentServiceEntityHome.findByPrimaryKey (treatmentServicesHeaderBean.getTrmtServiceHdrId());
- treatmentServiceEntity.setInvoiceDetailsId (treatmentInvoiceDetailBean.getInvoiceDetailsId());
- treatmentServiceEntity.setLastModifiedBy (userId);
- treatmentServiceEntity.setLastModifiedTimestamp (new Timestamp(System.currentTimeMillis()));
- return treatmentInvoiceDetailBean;
- }
- else
- {
- RegHospInvoiceDetailBean treatmentInvoiceDetailBean = new RegHospInvoiceDetailBean ();
- treatmentInvoiceDetailBean.setInvoiceDetailsId (treatmentServicesHeaderBean.getInvoiceDetailsId());
- treatmentInvoiceDetailBean.setInjuryId (treatmentServicesHeaderBean.getInjuryId());
- treatmentInvoiceDetailBean.setDisbAssmtId (treatmentServicesHeaderBean.getDisAssmtId());
- treatmentInvoiceDetailBean.setSocInsNumber (treatmentServicesHeaderBean.getSocInsNumber());
- treatmentInvoiceDetailBean.setTrmtStartDate (startDate);
- treatmentInvoiceDetailBean.setTrmtStartDateEntFmt (OHConstants.GREGORIAN);
- treatmentInvoiceDetailBean.setTrmtEndDate (endDate);
- treatmentInvoiceDetailBean.setTrmtEndDateEntFmt (OHConstants.GREGORIAN);
- treatmentInvoiceDetailBean.setServicesAmount (servicesAmount);
- treatmentInvoiceDetailBean.setRejectedServiceAmount (rejectedServicesAmount);
- treatmentInvoiceDetailBean.setMedicinesAmount (medicinesAmount);
- treatmentInvoiceDetailBean.setRejectedMedicineAmount (rejectedMedicinesAmount);
- treatmentInvoiceDetailBean.setNoDiscountAmount (nonDiscountAmount);
- treatmentInvoiceDetailBean.setRejectedNoDiscountAmount(rejectedNonDiscountAmount);
- RegHospitalInvoiceDetailEntityHome invoiceDetailEntityHome = (RegHospitalInvoiceDetailEntityHome)
- ServiceLocator.getInstance ().getRemoteHome (OHConstants.REG_HOSP_INVOICE_DETAILS_ENTITY_JNDI, RegHospitalInvoiceDetailEntityHome.class);
- RegHospitalInvoiceDetailEntity invoiceDetailEntity = invoiceDetailEntityHome.findByPrimaryKey (treatmentServicesHeaderBean.getInvoiceDetailsId());
- invoiceDetailEntity.setTreatmentServiceDates (startDate, OHConstants.GREGORIAN, endDate, OHConstants.GREGORIAN);
- invoiceDetailEntity.setTreatmentServiceAmounts (servicesAmount, rejectedServicesAmount, medicinesAmount, rejectedMedicinesAmount,
- nonDiscountAmount, rejectedNonDiscountAmount);
- if(treatmentServicesHeaderBean.getAppealStatus()!=null)
- {
- TreatmentServiceHeaderEntityHome treatmentServiceHeaderEntityHome = (TreatmentServiceHeaderEntityHome)
- ServiceLocator.getInstance ().getRemoteHome (OHConstants.TRMT_SRVC_HDR_ENTITY_JNDI, TreatmentServiceHeaderEntityHome.class);
- TreatmentServiceHeaderEntity treatmentServiceHeaderEntity=
- treatmentServiceHeaderEntityHome.findByPrimaryKey(treatmentServicesHeaderBean.getTrmtServiceHdrId());
- treatmentServiceHeaderEntity.setAppealStatus(treatmentServicesHeaderBean.getAppealStatus(), treatmentServicesHeaderBean.getLastModifiedBy()
- , treatmentServicesHeaderBean.getLastModifiedTimestamp());
- }
- if (isFinallyApproved)
- {
- invoiceDetailEntity.setStatus (OHConstants.REG_HOSP_INVC_DETAILS_APPROVED);
- }
- invoiceDetailEntity.setLastModifiedBy (userId);
- invoiceDetailEntity.setLastModifiedTimestamp (new Timestamp(System.currentTimeMillis()));
- return treatmentInvoiceDetailBean;
- }
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly ();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly ();
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "recalculateTreatmentInvoiceDetail()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- }
- /**
- * @METHOD NAME : getCurrentTreatmentInvoicePageNumber
- * @INFORMATION : This method is to get Current Invoice Page Number
- * @PARAM : class java.lang.Long
- * @RETURN : Long
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private Long getCurrentTreatmentInvoicePageNumber (Long treatmentInvoiceHeaderId) throws GOSIException
- {
- Long currentTreatmentInvoicePageNumber = null;
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String sqlQuery = "SELECT pagenumber, COUNT (pagenumber) AS num_entries " +
- " FROM " + SITables.T_REGHOSPINVOICEDET + " det " +
- " WHERE invoiceheaderid = ? " +
- "GROUP BY pagenumber " +
- "ORDER BY pagenumber DESC NULLS LAST ";
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, treatmentInvoiceHeaderId);
- ps.setMaxRows (1);
- rs = ps.executeQuery ();
- if (rs.next())
- {
- if (rs.getInt("NUM_ENTRIES") < GOSIApplicationProperties.MAX_PAGE_SIZE)
- {
- currentTreatmentInvoicePageNumber = rs.getLong ("PAGENUMBER");
- }
- else
- {
- currentTreatmentInvoicePageNumber = rs.getLong ("PAGENUMBER") + 1;
- }
- }
- else
- {
- currentTreatmentInvoicePageNumber = new Long ("1");
- }
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getCurrentTreatmentInvoicePageNumber()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (ps, rs);
- }
- return currentTreatmentInvoicePageNumber;
- }
- /**
- * @METHOD NAME : markTreatmentInvoiceAsPendingApprove
- * @INFORMATION : This method is to mark Treatment Invoice As Entered
- * @PARAM : class java.lang.Long,
- class java.lang.Long,
- class java.lang.Long
- * @RETURN : void
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public void markTreatmentInvoiceAsPendingApproved (Long treatmentInvoiceHeaderId, Long hospitalCode, Long userId) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String sqlQuery = "SELECT hospitalcode, invoicestatus " +
- " FROM " + SITables.T_REGHOSPINVOICEHDR +
- " WHERE invoiceheaderid = ? ";
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, treatmentInvoiceHeaderId);
- rs = ps.executeQuery ();
- if (rs.next())
- {
- if (! hospitalCode.equals(rs.getLong("HOSPITALCODE")))
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "markTreatmentInvoiceAsEntered()",
- null,
- "SOI_ERR_5864");
- }
- else if (rs.getShort("INVOICESTATUS") != OHConstants.REG_HOSP_INVC_ENTERED)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "markTreatmentInvoiceAsPendingApprove()",
- null,
- "SOI_ERR_5865");
- }
- RegHospitalInvoiceHeaderEntityHome treatmentInvoiceEntityHome = (RegHospitalInvoiceHeaderEntityHome)
- ServiceLocator.getInstance ().getRemoteHome (OHConstants.REG_HOSP_INVOICE_HEADER_ENTITY_JNDI, RegHospitalInvoiceHeaderEntityHome.class);
- RegHospitalInvoiceHeaderEntity treatmentInvoiceEntity = treatmentInvoiceEntityHome.findByPrimaryKey (treatmentInvoiceHeaderId);
- treatmentInvoiceEntity.markRegHospInvoiceHeaderAsPendingApproved (userId);
- }
- else
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "markTreatmentInvoiceAsPendingApprove()",
- null,
- "SOI_ERR_5863");
- }
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly ();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly ();
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "markTreatmentInvoiceAsPendingApprove()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- }
- /**
- * @METHOD NAME : markTreatmentInvoiceAsEntered
- * @INFORMATION : This method is to mark Treatment Invoice As Entered
- * @PARAM : class java.lang.Long,
- class java.lang.Long,
- class java.lang.Long
- * @RETURN : void
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public void markTreatmentInvoiceAsEntered (Long treatmentInvoiceHeaderId, Long hospitalCode, Long userId) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String sqlQuery = "SELECT hospitalcode, invoicestatus " +
- " FROM " + SITables.T_REGHOSPINVOICEHDR +
- " WHERE invoiceheaderid = ? ";
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, treatmentInvoiceHeaderId);
- rs = ps.executeQuery ();
- if (rs.next())
- {
- if (! hospitalCode.equals(rs.getLong("HOSPITALCODE")))
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "markTreatmentInvoiceAsEntered()",
- null,
- "SOI_ERR_5864");
- }
- else if (rs.getShort("INVOICESTATUS") != OHConstants.REG_HOSP_INVC_PENDING_DATA_ENTRY)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "markTreatmentInvoiceAsEntered()",
- null,
- "SOI_ERR_5865");
- }
- RegHospitalInvoiceHeaderEntityHome treatmentInvoiceEntityHome = (RegHospitalInvoiceHeaderEntityHome)
- ServiceLocator.getInstance ().getRemoteHome (OHConstants.REG_HOSP_INVOICE_HEADER_ENTITY_JNDI, RegHospitalInvoiceHeaderEntityHome.class);
- RegHospitalInvoiceHeaderEntity treatmentInvoiceEntity = treatmentInvoiceEntityHome.findByPrimaryKey (treatmentInvoiceHeaderId);
- treatmentInvoiceEntity.markRegHospInvoiceHeaderAsEntered (userId);
- }
- else
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "markTreatmentInvoiceAsEntered()",
- null,
- "SOI_ERR_5863");
- }
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly ();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly ();
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "markTreatmentInvoiceAsEntered()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- }
- /**
- * @METHOD NAME : recalculateTreatmentInvoice
- * @INFORMATION : This method is to recalculate Treatment Invoice
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean,
- class java.lang.Long,
- class gosi.core.workflow.beans.WorkflowParamBean
- * @RETURN : void
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public void recalculateTreatmentInvoice (RegHospInvoiceDetailBean treatmentInvoiceDetailBean, Long treatmentServicesWorkflowid, WorkflowParamBean workflowParamBean) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String sqlQuery = "SELECT hdr.invoiceheaderid, hdr.startdate, hdr.enddate, hdr.hospitalcode, hos.hospitalnamearb, hdr.invoicestatus, "
- +" hdr.fieldoffice, hdr.invoicenumber , "+
- " SUM (det.servicesamount) AS totalservicesamount, " +
- " SUM (det.rejectedservicesamount) AS rejectedservicesamount, " +
- " SUM (det.medicinesamount) AS totalmedicinesamount, " +
- " SUM (det.rejectedmedicinesamount) AS rejectedmedicinesamount, " +
- " SUM (det.nodiscountamount) AS totalnodiscountamount, " +
- " SUM (det.rejectednodiscountamount) AS rejectednodiscountamount " +
- " FROM " + SITables.T_REGHOSPINVOICEHDR + " hdr LEFT JOIN " +
- "(SELECT * from "+SITables.T_REGHOSPINVOICEDET + " where invoicedetailsid <> ? ) det on hdr.invoiceheaderid = det.invoiceheaderid " +
- "LEFT JOIN "+ SITables.T_HOSPITAL + " hos on hdr.hospitalcode = hos.hospitalcode " +
- " WHERE hdr.invoiceheaderid = (SELECT invoiceheaderid " +
- " FROM " + SITables.T_REGHOSPINVOICEDET +
- " WHERE invoicedetailsid = ?) " +
- "GROUP BY hdr.invoiceheaderid, hdr.startdate, hdr.enddate, hdr.hospitalcode, hos.hospitalnamearb, hdr.invoicestatus , hdr.fieldoffice, hdr.invoicenumber ";
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, treatmentInvoiceDetailBean.getInvoiceDetailsId());
- ps.setLong (2, treatmentInvoiceDetailBean.getInvoiceDetailsId());
- rs = ps.executeQuery ();
- if (rs.next()
- && (rs.getShort("INVOICESTATUS") == OHConstants.REG_HOSP_INVC_ENTERED
- || rs.getShort("INVOICESTATUS") == OHConstants.REG_HOSP_INVC_PENDING_APPROVED )
- && !hasPendingTreatmentServices(rs.getLong("INVOICEHEADERID"), treatmentServicesWorkflowid))
- {
- ArrayList discountList = getDiscountList (rs.getLong("HOSPITALCODE"), null);
- double totalServicesAmount = rs.getDouble ("TOTALSERVICESAMOUNT");
- double rejectedServicesAmount = rs.getDouble ("REJECTEDSERVICESAMOUNT");
- double totalMedicinesAmount = rs.getDouble ("TOTALMEDICINESAMOUNT");
- double rejectedMedicinesAmount = rs.getDouble ("REJECTEDMEDICINESAMOUNT");
- double totalNoDiscountAmount = rs.getDouble ("TOTALNODISCOUNTAMOUNT");
- double rejectedNoDiscountAmount = rs.getDouble ("REJECTEDNODISCOUNTAMOUNT");
- totalServicesAmount += treatmentInvoiceDetailBean.getServicesAmount ();
- rejectedServicesAmount += treatmentInvoiceDetailBean.getRejectedServiceAmount ();
- totalMedicinesAmount += treatmentInvoiceDetailBean.getMedicinesAmount ();
- rejectedMedicinesAmount += treatmentInvoiceDetailBean.getRejectedMedicineAmount ();
- totalNoDiscountAmount += treatmentInvoiceDetailBean.getNoDiscountAmount ();
- rejectedNoDiscountAmount += treatmentInvoiceDetailBean.getRejectedNoDiscountAmount ();
- double discountAmount = 0.0;
- discountAmount += getDiscountAmount (discountList, totalServicesAmount - rejectedServicesAmount, OHConstants.DISC_SERVICES);
- discountAmount += getDiscountAmount (discountList, totalMedicinesAmount - rejectedMedicinesAmount, OHConstants.DISC_MEDICINES);
- RegHospitalInvoiceHeaderEntityHome treatmentInvoiceEntityHome = (RegHospitalInvoiceHeaderEntityHome)
- ServiceLocator.getInstance ().getRemoteHome (OHConstants.REG_HOSP_INVOICE_HEADER_ENTITY_JNDI, RegHospitalInvoiceHeaderEntityHome.class);
- Long invoiceHeaderId=rs.getLong("INVOICEHEADERID");
- Long hospitalCode=rs.getLong("HOSPITALCODE");
- Short fieldOfficeCode =rs.getShort("FIELDOFFICE");
- Long invoiceNumber=rs.getLong("INVOICENUMBER");
- String hospitalNameArb=rs.getString("HOSPITALNAMEARB");
- Timestamp appealStartDate=new Timestamp (System.currentTimeMillis());
- Timestamp startDate=rs.getTimestamp("STARTDATE");
- Timestamp endDate=rs.getTimestamp("STARTDATE");
- RegHospitalInvoiceHeaderEntity treatmentInvoiceEntity = treatmentInvoiceEntityHome.findByPrimaryKey (invoiceHeaderId);
- treatmentInvoiceEntity.setDiscountAmount (discountAmount);
- treatmentInvoiceEntity.setTotalAmount (totalServicesAmount - rejectedServicesAmount +
- totalMedicinesAmount - rejectedMedicinesAmount +
- totalNoDiscountAmount - rejectedNoDiscountAmount);
- treatmentInvoiceEntity.setLastModifiedBy (treatmentInvoiceDetailBean.getLastModifiedBy());
- treatmentInvoiceEntity.setLastModifiedTimestamp (new Timestamp (System.currentTimeMillis()));
- if(workflowParamBean!=null){
- GOSIUtilities.cleanUp (con, ps, rs);
- String description = GOSIErrorMessages.getErrorDesc("SOI_ERR_5109") + " " + hospitalNameArb
- + " (" + GOSIUtilities.getDateFullString(startDate)
- + " - " + GOSIUtilities.getDateFullString(endDate) + ") ";
- workflowParamBean.setModuleId (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- workflowParamBean.setStepShortName ("REG_HOS_INVC_ENTER");
- workflowParamBean.setrecordDescription (description);
- workflowParamBean.setRoutingCriterion (GOSIConstants.COMPLETED);
- workflowParamBean.setKeyVal1 (hospitalCode.toString());
- workflowParamBean.setPrimaryKeyOfTherecord (invoiceHeaderId.toString());
- workflowParamBean.setDestinationLocationId(fieldOfficeCode);
- Long userId=workflowParamBean.getUserId();
- Boolean ishadDeduction=false;
- if((treatmentInvoiceDetailBean.getRejectedServiceAmount()!=null && treatmentInvoiceDetailBean.getRejectedServiceAmount()>0 &&
- treatmentInvoiceDetailBean.getRejectedServiceAmount()!=treatmentInvoiceDetailBean.getServicesAmount()) ||
- (treatmentInvoiceDetailBean.getRejectedMedicineAmount()!=null && treatmentInvoiceDetailBean.getRejectedMedicineAmount()>0 &&
- treatmentInvoiceDetailBean.getRejectedMedicineAmount()!=treatmentInvoiceDetailBean.getMedicinesAmount()) ||
- (treatmentInvoiceDetailBean.getRejectedNoDiscountAmount()!=null && treatmentInvoiceDetailBean.getRejectedNoDiscountAmount()>0 &&
- treatmentInvoiceDetailBean.getRejectedNoDiscountAmount()!=treatmentInvoiceDetailBean.getNoDiscountAmount()))
- ishadDeduction=true;
- ArrayList deductionList=null;
- if(!ishadDeduction)
- deductionList=getDeductionTreatmentInvoiceDetails(invoiceHeaderId, hospitalCode);
- if (ishadDeduction || (deductionList != null && !deductionList.isEmpty()))
- {
- treatmentInvoiceEntity.setAppealStartDate(appealStartDate);
- LetterHeaderBean letterHeader = null;
- HashMap letterMap=null;
- TreeMap parameterList = null;
- long printSerialNumber = 0;
- EstablishmentBean hospitalBean = EstablishmentUtility.
- getEstablishmentDetails(hospitalCode.longValue(),
- true,false);
- Long contactId = hospitalBean.getEstablishmentContactId();
- if(hospitalCode!=null && isRegisteredHospital(hospitalCode))
- {
- letterHeader = new LetterHeaderBean();
- letterHeader.setRequestedBy(userId);
- letterHeader.setReportId("16_02_0025");
- letterHeader.setLetterStatusFlag(new Short("5"));
- letterHeader.setRecordId(""+invoiceHeaderId);
- letterHeader.setFieldOfficeCode(fieldOfficeCode);
- letterMap = new HashMap();
- letterHeader.setStakeHolders(new Short(
- ReportConstants.STAKE_HOLDER_REG_HOSPITAL),
- contactId,
- invoiceNumber.toString());
- letterMap.put("HOSPITALNAME", ""+hospitalNameArb);
- letterMap.put("INVOICENUMBER", ""+invoiceNumber);
- letterMap.put("STARTDATE",""+GOSIUtilities.getDateFullString(startDate));
- // These S.O.P is tp Test Dynamic Field Values for Master Data
- GOSIDebug.debugMessages("Field HOSPITALNAME : "+ letterMap.get("HOSPITALNAME"));
- GOSIDebug.debugMessages("Field INVOICENUMBER : "+ letterMap.get("INVOICENUMBER"));
- GOSIDebug.debugMessages("Field STARTDATE : " + letterMap.get("STARTDATE"));
- GOSIDebug.debugMessages("Field FIELDOFFICE : "+ letterMap.get("FIELDOFFICE"));
- parameterList = new TreeMap();
- parameterList.put("1", letterMap);
- printSerialNumber = LetterUtilities.createSingleLetter(
- parameterList, letterHeader);
- GOSIDebug.debugMessages(" PRINT SERIAL NUMBER :"
- + printSerialNumber);
- /*Start Notification Letter*/
- String longName = CommonTransactions.getTransactionLongName(GOSIConstants.OCCUPATIONAL_HAZARDS_ID,"REG_HOSPITAL_INVOICE");
- Long transactionId = CommonTransactions.getTransactionId(GOSIConstants.OCCUPATIONAL_HAZARDS_ID,"REG_HOSPITAL_INVOICE");
- ArrayList identifiers = new ArrayList();
- identifiers.add(hospitalCode);
- identifiers.add(SecurityAndWorkflowConstants.HOSPITAL_EMPLOYEE);
- identifiers.add(SecurityAndWorkflowConstants.HOSPITAL_ADMIN);
- //Hospital:
- NotificationLetterBean objNotificationLetterBean2 = new NotificationLetterBean();
- objNotificationLetterBean2.setPrintSerialNumber(printSerialNumber);
- objNotificationLetterBean2.setNotificationTitle(description);
- objNotificationLetterBean2.setTransactionName(longName);
- objNotificationLetterBean2.setTransactionID(transactionId);
- objNotificationLetterBean2.setTargetUsers(GOSIConstants.GOL_GIVEN_REG_NUM_AND_ROLES.shortValue());
- objNotificationLetterBean2.setIdentifiers(identifiers);
- objNotificationLetterBean2.setCreatedBy(userId);
- objNotificationLetterBean2.setIssuingFieldOffice(fieldOfficeCode);
- objNotificationLetterBean2.setReportID(letterHeader.getReportId());
- GOSIUtilities.sendNotificationLetter(GOSIConstants.OCCUPATIONAL_HAZARDS_ID, objNotificationLetterBean2);
- /*End*/
- }
- }
- else
- {
- treatmentInvoiceEntity.markRegHospInvoiceHeaderAsPendingApproved(userId);
- }
- GOSIUtilities.startWorkflow (workflowParamBean);
- }
- }
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly ();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly ();
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "recalculateTreatmentInvoice()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- }
- /**
- * @METHOD NAME : recalculateTreatmentInvoice
- * @INFORMATION : This method is to recalculate Treatment Invoice
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean,
- class java.lang.Long,
- class gosi.core.workflow.beans.WorkflowParamBean
- * @RETURN : void
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private void recalculateTreatmentInvoiceHeaderCreatedByBatch (Long invoiceHeaderId, UserBean userBean) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String sqlQuery = "SELECT hdr.invoiceheaderid, hdr.startdate, hdr.enddate, hdr.hospitalcode, hos.hospitalnamearb, hdr.invoicestatus, "
- +" hdr.fieldoffice, hdr.invoicenumber , "+
- " SUM (det.servicesamount) AS totalservicesamount, " +
- " SUM (det.rejectedservicesamount) AS rejectedservicesamount, " +
- " SUM (det.medicinesamount) AS totalmedicinesamount, " +
- " SUM (det.rejectedmedicinesamount) AS rejectedmedicinesamount, " +
- " SUM (det.nodiscountamount) AS totalnodiscountamount, " +
- " SUM (det.rejectednodiscountamount) AS rejectednodiscountamount " +
- " FROM " + SITables.T_REGHOSPINVOICEHDR + " hdr LEFT JOIN " +
- SITables.T_REGHOSPINVOICEDET + " det on hdr.invoiceheaderid = det.invoiceheaderid " +
- "LEFT JOIN "+ SITables.T_HOSPITAL + " hos on hdr.hospitalcode = hos.hospitalcode " +
- " WHERE hdr.invoiceheaderid = ? " +
- "GROUP BY hdr.invoiceheaderid, hdr.startdate, hdr.enddate, hdr.hospitalcode, hos.hospitalnamearb, hdr.invoicestatus , hdr.fieldoffice, hdr.invoicenumber ";
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, invoiceHeaderId.longValue());
- rs = ps.executeQuery ();
- if (rs.next())
- {
- ArrayList discountList = getDiscountList (rs.getLong("HOSPITALCODE"), null);
- double totalServicesAmount = rs.getDouble ("TOTALSERVICESAMOUNT");
- double rejectedServicesAmount = rs.getDouble ("REJECTEDSERVICESAMOUNT");
- double totalMedicinesAmount = rs.getDouble ("TOTALMEDICINESAMOUNT");
- double rejectedMedicinesAmount = rs.getDouble ("REJECTEDMEDICINESAMOUNT");
- double totalNoDiscountAmount = rs.getDouble ("TOTALNODISCOUNTAMOUNT");
- double rejectedNoDiscountAmount = rs.getDouble ("REJECTEDNODISCOUNTAMOUNT");
- double discountAmount = 0.0;
- discountAmount += getDiscountAmount (discountList, totalServicesAmount - rejectedServicesAmount, OHConstants.DISC_SERVICES);
- discountAmount += getDiscountAmount (discountList, totalMedicinesAmount - rejectedMedicinesAmount, OHConstants.DISC_MEDICINES);
- RegHospitalInvoiceHeaderEntityHome treatmentInvoiceEntityHome = (RegHospitalInvoiceHeaderEntityHome)
- ServiceLocator.getInstance ().getRemoteHome (OHConstants.REG_HOSP_INVOICE_HEADER_ENTITY_JNDI, RegHospitalInvoiceHeaderEntityHome.class);
- Long hospitalCode=rs.getLong("HOSPITALCODE");
- Short fieldOfficeCode =rs.getShort("FIELDOFFICE");
- Long invoiceNumber=rs.getLong("INVOICENUMBER");
- String hospitalNameArb=rs.getString("HOSPITALNAMEARB");
- Timestamp appealStartDate=new Timestamp (System.currentTimeMillis());
- Timestamp startDate=rs.getTimestamp("STARTDATE");
- Timestamp endDate=rs.getTimestamp("ENDDATE");
- RegHospitalInvoiceHeaderEntity treatmentInvoiceEntity = treatmentInvoiceEntityHome.findByPrimaryKey (invoiceHeaderId);
- treatmentInvoiceEntity.setDiscountAmount (discountAmount);
- treatmentInvoiceEntity.setTotalAmount (totalServicesAmount - rejectedServicesAmount +
- totalMedicinesAmount - rejectedMedicinesAmount +
- totalNoDiscountAmount - rejectedNoDiscountAmount);
- treatmentInvoiceEntity.setLastModifiedBy (userBean.getUserCode());
- treatmentInvoiceEntity.setLastModifiedTimestamp (new Timestamp (System.currentTimeMillis()));
- WorkflowParamBean workflowParamBean=userBean.getWorkflowParamBean();
- String description = GOSIErrorMessages.getErrorDesc("SOI_ERR_5109") + " " + hospitalNameArb
- + " (" + GOSIUtilities.getDateFullString(startDate)
- + " - " + GOSIUtilities.getDateFullString(endDate) + ") ";
- workflowParamBean.setModuleId (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- workflowParamBean.setStepShortName ("REG_HOS_INVC_ENTER");
- workflowParamBean.setrecordDescription (description);
- workflowParamBean.setRoutingCriterion (GOSIConstants.COMPLETED);
- workflowParamBean.setKeyVal1 (hospitalCode.toString());
- workflowParamBean.setPrimaryKeyOfTherecord (invoiceHeaderId.toString());
- workflowParamBean.setDestinationLocationId(fieldOfficeCode);
- Long userId=workflowParamBean.getUserId();
- ArrayList deductionList=null;
- deductionList=getDeductionTreatmentInvoiceDetails(invoiceHeaderId, hospitalCode);
- if ((deductionList != null && !deductionList.isEmpty()))
- {
- treatmentInvoiceEntity.setAppealStartDate(appealStartDate);
- LetterHeaderBean letterHeader = null;
- HashMap letterMap=null;
- TreeMap parameterList = null;
- long printSerialNumber = 0;
- EstablishmentBean hospitalBean = EstablishmentUtility.
- getEstablishmentDetails(hospitalCode.longValue(),
- true,false);
- Long contactId = hospitalBean.getEstablishmentContactId();
- if(hospitalCode!=null && isRegisteredHospital(hospitalCode))
- {
- letterHeader = new LetterHeaderBean();
- letterHeader.setRequestedBy(userId);
- letterHeader.setReportId("16_02_0025");
- letterHeader.setLetterStatusFlag(new Short("5"));
- letterHeader.setRecordId(""+invoiceHeaderId);
- letterHeader.setFieldOfficeCode(fieldOfficeCode);
- letterMap = new HashMap();
- letterHeader.setStakeHolders(new Short(ReportConstants.STAKE_HOLDER_REG_HOSPITAL),contactId,invoiceNumber.toString());
- letterMap.put("HOSPITALNAME", ""+hospitalNameArb);
- letterMap.put("INVOICENUMBER", ""+invoiceNumber);
- letterMap.put("STARTDATE",""+GOSIUtilities.getDateFullString(startDate));
- // These S.O.P is tp Test Dynamic Field Values for Master Data
- GOSIDebug.debugMessages("Field HOSPITALNAME : "+ letterMap.get("HOSPITALNAME"));
- GOSIDebug.debugMessages("Field INVOICENUMBER : "+ letterMap.get("INVOICENUMBER"));
- GOSIDebug.debugMessages("Field STARTDATE : " + letterMap.get("STARTDATE"));
- GOSIDebug.debugMessages("Field FIELDOFFICE : "+ letterMap.get("FIELDOFFICE"));
- parameterList = new TreeMap();
- parameterList.put("1", letterMap);
- printSerialNumber = LetterUtilities.createSingleLetter(
- parameterList, letterHeader);
- GOSIDebug.debugMessages(" PRINT SERIAL NUMBER :"
- + printSerialNumber);
- /*Start Notification Letter*/
- String longName = CommonTransactions.getTransactionLongName(GOSIConstants.OCCUPATIONAL_HAZARDS_ID,"REG_HOSPITAL_INVOICE");
- Long transactionId = CommonTransactions.getTransactionId(GOSIConstants.OCCUPATIONAL_HAZARDS_ID,"REG_HOSPITAL_INVOICE");
- ArrayList identifiers = new ArrayList();
- identifiers.add(hospitalCode);
- identifiers.add(SecurityAndWorkflowConstants.HOSPITAL_EMPLOYEE);
- identifiers.add(SecurityAndWorkflowConstants.HOSPITAL_ADMIN);
- //Hospital:
- NotificationLetterBean objNotificationLetterBean2 = new NotificationLetterBean();
- objNotificationLetterBean2.setPrintSerialNumber(printSerialNumber);
- objNotificationLetterBean2.setNotificationTitle(description);
- objNotificationLetterBean2.setTransactionName(longName);
- objNotificationLetterBean2.setTransactionID(transactionId);
- objNotificationLetterBean2.setTargetUsers(GOSIConstants.GOL_GIVEN_REG_NUM_AND_ROLES.shortValue());
- objNotificationLetterBean2.setIdentifiers(identifiers);
- objNotificationLetterBean2.setCreatedBy(userId);
- objNotificationLetterBean2.setIssuingFieldOffice(fieldOfficeCode);
- objNotificationLetterBean2.setReportID(letterHeader.getReportId());
- GOSIUtilities.sendNotificationLetter(GOSIConstants.OCCUPATIONAL_HAZARDS_ID, objNotificationLetterBean2);
- /*End*/
- }
- treatmentInvoiceEntity.markRegHospInvoiceHeaderAsEntered(userId);
- }
- else
- {
- treatmentInvoiceEntity.markRegHospInvoiceHeaderAsPendingApproved(userId);
- }
- GOSIUtilities.startWorkflow (workflowParamBean);
- }
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly ();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly ();
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "recalculateTreatmentInvoice()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- }
- /**
- * @METHOD NAME : hasPendingTreatmentServices
- * @INFORMATION : This method is to has Pending Treatment Services
- * @PARAM : class java.lang.Long,
- class java.lang.Long
- * @RETURN : class java.lang.Boolean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private Boolean hasPendingTreatmentServices (Long treatmentInvoiceHeaderId, Long treatmentServicesWorkflowId) throws GOSIException
- {
- Boolean hasPendingTreatmentServices = null;
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String sqlQuery = "SELECT COUNT (DISTINCT tdet.trmtservicedetid) AS num_pending_trmt_services " +
- " FROM " + SITables.T_REGHOSPINVOICEHDR + " ihdr, " +
- " " + SITables.T_REGHOSPINVOICEDET + " idet, " +
- " " + SITables.T_TRMTSERVICESHDR + " thdr, " +
- " " + SITables.T_TRMTSERVICESDET + " tdet " +
- " WHERE ihdr.invoiceheaderid = idet.invoiceheaderid " +
- " AND idet.invoicedetailsid = thdr.invoicedetailsid " +
- " AND thdr.trmtservicehdrid = tdet.trmtservicehdrid " +
- " AND ihdr.invoiceheaderid = ? " +
- " AND ( tdet.trmtsrvcwrkfloid <> ? OR tdet.trmtsrvcwrkfloid is null ) " +
- " AND tdet.trmtsrvcstatus in ( ? , ? , ? ) ";
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, treatmentInvoiceHeaderId);
- ps.setLong (2, treatmentServicesWorkflowId);
- ps.setShort (3, OHConstants.TRMT_SRVC_STS_ENTERED);
- ps.setShort (4, OHConstants.TRMT_SRVC_STS_PENDING_WORKFLOW_ENTRY);
- ps.setShort (5, OHConstants.TRMT_SRVC_STS_PENDING_WORKFLOW_ENTRY_RECORRECTED);
- rs = ps.executeQuery ();
- if (rs.next())
- {
- if (rs.getInt("NUM_PENDING_TRMT_SERVICES") > 0)
- {
- hasPendingTreatmentServices = Boolean.TRUE;
- }
- else
- {
- hasPendingTreatmentServices = Boolean.FALSE;
- }
- }
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "hasPendingTreatmentServices()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (ps, rs);
- }
- return hasPendingTreatmentServices;
- }
- /**
- * @METHOD NAME : hasPendingTreatmentServices
- * @INFORMATION : This method is to has Pending Treatment Services
- * @PARAM : class java.lang.Long,
- class java.lang.Long
- * @RETURN : class java.lang.Boolean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private Boolean hasPendingTreatmentServices (Long treatmentInvoiceDetailsId) throws GOSIException
- {
- Boolean hasPendingTreatmentServices = null;
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String sqlQuery = "SELECT COUNT (DISTINCT tdet.trmtservicedetid) AS num_pending_trmt_services " +
- " FROM " + SITables.T_REGHOSPINVOICEDET + " idet, " +
- " " + SITables.T_TRMTSERVICESHDR + " thdr, " +
- " " + SITables.T_TRMTSERVICESDET + " tdet " +
- " WHERE idet.invoicedetailsid = thdr.invoicedetailsid " +
- " AND thdr.trmtservicehdrid = tdet.trmtservicehdrid " +
- " AND idet.invoicedetailsid = ? " +
- " AND tdet.trmtsrvcstatus in ( ? , ? , ? ) ";
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, treatmentInvoiceDetailsId);
- ps.setShort (2, OHConstants.TRMT_SRVC_STS_ENTERED);
- ps.setShort (3, OHConstants.TRMT_SRVC_STS_PENDING_WORKFLOW_ENTRY);
- ps.setShort (4, OHConstants.TRMT_SRVC_STS_PENDING_WORKFLOW_ENTRY_RECORRECTED);
- rs = ps.executeQuery ();
- if (rs.next())
- {
- if (rs.getInt("NUM_PENDING_TRMT_SERVICES") > 0)
- {
- hasPendingTreatmentServices = Boolean.TRUE;
- }
- else
- {
- hasPendingTreatmentServices = Boolean.FALSE;
- }
- }
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "hasPendingTreatmentServices()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (ps, rs);
- }
- return hasPendingTreatmentServices;
- }
- /**
- * @METHOD NAME : getTreatmentInvoiceDetailsList
- * @INFORMATION : This method is to get Treatment Invoice Details List
- * @PARAM : class java.lang.Long,
- class java.lang.Long,
- class java.lang.Long
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public ArrayList getTreatmentInvoiceDetailsList (Long treatmentInvoiceHeaderId, Long treatmentInvoicePageNumber, Long hospitalCode
- , Long socInsNumber) throws GOSIException
- {
- ArrayList treatmentInvoiceDetailsList = new ArrayList ();
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- StringBuilder sqlQuery=new StringBuilder();
- sqlQuery.append("SELECT invcdet.invoicedetailsid, invcdet.invoiceheaderid, invcdet.trmtstartdate, " );
- sqlQuery.append(" invcdet.trmtstartdateentfmt, invcdet.trmtenddate, invcdet.trmtenddateentfmt, " );
- sqlQuery.append(" invcdet.servicesamount, invcdet.medicinesamount, invcdet.nodiscountamount, " );
- sqlQuery.append(" invcdet.rejectedservicesamount, invcdet.rejectedmedicinesamount, " );
- sqlQuery.append(" invcdet.rejectednodiscountamount, invcdet.pagenumber, invcdet.routingcriteria, invcdet.status, " );
- sqlQuery.append(" NVL (inj.socinsnumber, NVL (disbassmt.socialinsurancenumber, invcdet.socialinsurancenumber)) AS socinsnumber, " );
- sqlQuery.append(" NVL (inj.datecomplication, NVL (inj.injurydate, disbassmt.assessmentdate)) AS assessmentdate, " );
- sqlQuery.append(" NVL (inj.datecomplicationentfmt, NVL (inj.injurydateentfmt, disbassmt.assessmentdateentfmt)) AS assessmentdateentfmt, " );
- sqlQuery.append(" inj.injuryid, inj.datecomplication, inj.injurynumber, disbassmt.SCHEDULEID, disbassmt.disabilitynumber, mbappt.sessionnumber, " );
- sqlQuery.append(" per.firstname, per.secondname, per.thirdname, per.surname, invchdr.hospitalcode " );
- sqlQuery.append(" FROM "+ SITables.T_REGHOSPINVOICEHDR + " invchdr " );
- sqlQuery.append(" LEFT JOIN " + SITables.T_REGHOSPINVOICEDET + " invcdet ON invchdr.invoiceheaderid = invcdet.invoiceheaderid " );
- sqlQuery.append(" LEFT JOIN " + SITables.T_INJURY + " inj ON invcdet.injuryid = inj.injuryid " );
- sqlQuery.append(" LEFT JOIN " + SITables.T_DISBASSMT + " disbassmt ON invcdet.disbassmtid = disbassmt.SCHEDULEID " );
- sqlQuery.append(" LEFT JOIN " + SITables.T_MBAPPOINTMENT +" mbappt ON disbassmt.scheduleid = mbappt.scheduleid " );
- sqlQuery.append(" LEFT JOIN " + SITables.T_CONTRIBUTOR + " con ON (inj.contributorid IS NOT NULL AND inj.contributorid = con.contributorid) " );
- sqlQuery.append(" OR (inj.contributorid IS NULL AND " );
- sqlQuery.append(" NVL (disbassmt.socialinsurancenumber, invcdet.socialinsurancenumber) = con.socialinsurancenumber) " );
- sqlQuery.append(" LEFT JOIN " + SITables.T_PERSON + " per ON con.personid = per.personid " );
- sqlQuery.append(" WHERE invchdr.invoiceheaderid = ? " );
- if(socInsNumber!=null)
- {
- sqlQuery.append(" AND invcdet.socialinsurancenumber = ? ");
- }
- else
- {
- sqlQuery.append(" AND invcdet.pagenumber = ? " );
- }
- sqlQuery.append(" AND invchdr.invoicestatus <> ? " );
- sqlQuery.append(" AND invcdet.status <> ? ");
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- GOSIDebug.debugMessages("query : "+sqlQuery.toString());
- ps = con.prepareStatement (sqlQuery.toString());
- ps.setLong (1, treatmentInvoiceHeaderId);
- if(socInsNumber!=null)
- {
- ps.setLong (2, socInsNumber);
- }
- else
- {
- ps.setLong (2, treatmentInvoicePageNumber);
- }
- ps.setShort (3, OHConstants.REG_HOSP_INVC_CANCELLED);
- ps.setShort (4, OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED);
- rs = ps.executeQuery ();
- while (rs.next())
- {
- if (! hospitalCode.equals(rs.getLong("HOSPITALCODE")))
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getTreatmentInvoiceDetailsList()",
- null,
- "SOI_ERR_5864");
- }
- RegHospInvoiceDetailBean invoiceDetailBean = new RegHospInvoiceDetailBean ();
- invoiceDetailBean.setInvoiceDetailsId (new Long(rs.getLong("INVOICEDETAILSID")));
- invoiceDetailBean.setInvoiceHeaderId (new Long(rs.getLong("INVOICEHEADERID")));
- if (rs.getObject("TRMTSTARTDATE") != null)
- {
- invoiceDetailBean.setTrmtStartDate (rs.getTimestamp("TRMTSTARTDATE"));
- invoiceDetailBean.setTrmtStartDateEntFmt (rs.getString("TRMTSTARTDATEENTFMT"));
- invoiceDetailBean.setTrmtStartDateStr (OHUtilities.getDateStr(invoiceDetailBean.getTrmtStartDate(), invoiceDetailBean.getTrmtStartDateEntFmt()));
- }
- if (rs.getObject("TRMTENDDATE") != null)
- {
- invoiceDetailBean.setTrmtEndDate (rs.getTimestamp("TRMTENDDATE"));
- invoiceDetailBean.setTrmtEndDateEntFmt (rs.getString("TRMTENDDATEENTFMT"));
- invoiceDetailBean.setTrmtEndDateStr (OHUtilities.getDateStr(invoiceDetailBean.getTrmtEndDate(), invoiceDetailBean.getTrmtEndDateEntFmt()));
- }
- invoiceDetailBean.setServicesAmount (new Double(rs.getDouble("SERVICESAMOUNT")));
- invoiceDetailBean.setMedicinesAmount (new Double(rs.getDouble("MEDICINESAMOUNT")));
- invoiceDetailBean.setNoDiscountAmount (new Double(rs.getDouble("NODISCOUNTAMOUNT")));
- invoiceDetailBean.setRejectedServiceAmount (new Double(rs.getDouble("REJECTEDSERVICESAMOUNT")));
- invoiceDetailBean.setRejectedMedicineAmount (new Double(rs.getDouble("REJECTEDMEDICINESAMOUNT")));
- invoiceDetailBean.setRejectedNoDiscountAmount (new Double(rs.getDouble("REJECTEDNODISCOUNTAMOUNT")));
- invoiceDetailBean.setPageNumber (new Long (rs.getLong("PAGENUMBER")));
- if (rs.getObject("ROUTINGCRITERIA") != null)
- {
- invoiceDetailBean.setRoutingCriteria (new Short(rs.getShort("ROUTINGCRITERIA")));
- }
- invoiceDetailBean.setStatus (new Short(rs.getShort("STATUS")));
- invoiceDetailBean.setMode (invoiceDetailBean.OLD_MODE);
- if (rs.getObject("SOCINSNUMBER") != null)
- {
- invoiceDetailBean.setSocInsNumber (new Long(rs.getLong("SOCINSNUMBER")));
- }
- if (rs.getObject("ASSESSMENTDATE") != null)
- {
- invoiceDetailBean.setInjuryDate (rs.getTimestamp("ASSESSMENTDATE"));
- invoiceDetailBean.setInjuryDateEntFmt (rs.getString("ASSESSMENTDATEENTFMT"));
- invoiceDetailBean.setInjuryDateStr (OHUtilities.getDateStr(invoiceDetailBean.getInjuryDate(), invoiceDetailBean.getInjuryDateEntFmt()));
- }
- if (rs.getObject("INJURYID") != null)
- {
- invoiceDetailBean.setInjuryId (new Long(rs.getLong("INJURYID")));
- invoiceDetailBean.setInjuryNumber (new Long(rs.getLong("INJURYNUMBER")));
- invoiceDetailBean.setServiceType (OHConstants.SERVICE_TYPE_TRMT);
- if (rs.getObject("DATECOMPLICATION") != null)
- {
- invoiceDetailBean.setServiceType (OHConstants.SERVICE_TYPE_COMPLICATION_TRMT);
- invoiceDetailBean.setDateComplication(rs.getTimestamp("DATECOMPLICATION"));
- }
- }
- else if (rs.getObject("SCHEDULEID") != null)
- {
- invoiceDetailBean.setDisbAssmtId (new Long(rs.getLong("SCHEDULEID")));
- invoiceDetailBean.setInjuryNumber (new Long(rs.getLong("DISABILITYNUMBER")));
- invoiceDetailBean.setSessionNumber (new Long(rs.getLong("SESSIONNUMBER")));
- invoiceDetailBean.setServiceType (OHConstants.SERVICE_TYPE_DISB_TRMT);
- }
- else
- {
- invoiceDetailBean.setServiceType (OHConstants.SERVICE_TYPE_MISC);
- }
- invoiceDetailBean.setName (OHUtilities.getFullName(rs.getString("FIRSTNAME"), rs.getString("SECONDNAME"),
- rs.getString("THIRDNAME"), rs.getString("SURNAME")));
- treatmentInvoiceDetailsList.add (invoiceDetailBean);
- }
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getTreatmentInvoiceDetailsList()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- return treatmentInvoiceDetailsList;
- }
- /**
- * @METHOD NAME : getTreatmentInvoiceDetailBean
- * @INFORMATION : This method is to get Treatment Invoice Detail Bean
- * @PARAM : class java.lang.Long
- * @RETURN : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceDetailBean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public RegHospInvoiceDetailBean getTreatmentInvoiceDetailBean (Long treatmentInvoiceDetailId) throws GOSIException
- {
- RegHospInvoiceDetailBean invoiceDetailBean = null;
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String sqlQuery = "SELECT invcdet.invoicedetailsid, invcdet.invoiceheaderid, invcdet.trmtstartdate, " +
- " invcdet.trmtstartdateentfmt, invcdet.trmtenddate, invcdet.trmtenddateentfmt, " +
- " invcdet.servicesamount, invcdet.medicinesamount, invcdet.nodiscountamount, " +
- " invcdet.rejectedservicesamount, invcdet.rejectedmedicinesamount, " +
- " invcdet.rejectednodiscountamount, invcdet.pagenumber, invcdet.routingcriteria, invcdet.status, " +
- " NVL (inj.socinsnumber, NVL (disbassmt.socialinsurancenumber, invcdet.socialinsurancenumber)) AS socinsnumber, " +
- " NVL (inj.datecomplication, NVL (inj.injurydate, disbassmt.assessmentdate)) AS assessmentdate, " +
- " NVL (inj.datecomplicationentfmt, NVL (inj.injurydateentfmt, disbassmt.assessmentdateentfmt)) AS assessmentdateentfmt, " +
- " inj.injuryid, inj.datecomplication, inj.injurynumber, disbassmt.SCHEDULEID, disbassmt.disabilitynumber, mbappt.sessionnumber, " +
- " per.firstname, per.secondname, per.thirdname, per.surname " +
- " FROM " + SITables.T_REGHOSPINVOICEDET + " invcdet " +
- " LEFT JOIN " + SITables.T_INJURY + " inj ON invcdet.injuryid = inj.injuryid " +
- " LEFT JOIN " + SITables.T_DISBASSMT + " disbassmt ON invcdet.disbassmtid = disbassmt.SCHEDULEID " +
- " LEFT JOIN " + SITables.T_MBAPPOINTMENT + " mbappt ON disbassmt.scheduleid = mbappt.scheduleid " +
- " LEFT JOIN " + SITables.T_CONTRIBUTOR + " con ON (inj.contributorid IS NOT NULL AND inj.contributorid = con.contributorid) " +
- " OR (inj.contributorid IS NULL AND " +
- " NVL (disbassmt.socialinsurancenumber, invcdet.socialinsurancenumber) = con.socialinsurancenumber) " +
- " LEFT JOIN " + SITables.T_PERSON + " per ON con.personid = per.personid " +
- " WHERE invcdet.invoicedetailsid = ? " +
- " AND invcdet.status <> ? ";
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, treatmentInvoiceDetailId);
- ps.setShort (2, OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED);
- rs = ps.executeQuery ();
- if (rs.next())
- {
- invoiceDetailBean = new RegHospInvoiceDetailBean ();
- invoiceDetailBean.setInvoiceDetailsId (new Long(rs.getLong("INVOICEDETAILSID")));
- invoiceDetailBean.setInvoiceHeaderId (new Long(rs.getLong("INVOICEHEADERID")));
- if (rs.getObject("TRMTSTARTDATE") != null)
- {
- invoiceDetailBean.setTrmtStartDate (rs.getTimestamp("TRMTSTARTDATE"));
- invoiceDetailBean.setTrmtStartDateEntFmt (rs.getString("TRMTSTARTDATEENTFMT"));
- invoiceDetailBean.setTrmtStartDateStr (OHUtilities.getDateStr(invoiceDetailBean.getTrmtStartDate(), invoiceDetailBean.getTrmtStartDateEntFmt()));
- }
- if (rs.getObject("TRMTENDDATE") != null)
- {
- invoiceDetailBean.setTrmtEndDate (rs.getTimestamp("TRMTENDDATE"));
- invoiceDetailBean.setTrmtEndDateEntFmt (rs.getString("TRMTENDDATEENTFMT"));
- invoiceDetailBean.setTrmtEndDateStr (OHUtilities.getDateStr(invoiceDetailBean.getTrmtEndDate(), invoiceDetailBean.getTrmtEndDateEntFmt()));
- }
- invoiceDetailBean.setServicesAmount (new Double(rs.getDouble("SERVICESAMOUNT")));
- invoiceDetailBean.setMedicinesAmount (new Double(rs.getDouble("MEDICINESAMOUNT")));
- invoiceDetailBean.setNoDiscountAmount (new Double(rs.getDouble("NODISCOUNTAMOUNT")));
- invoiceDetailBean.setRejectedServiceAmount (new Double(rs.getDouble("REJECTEDSERVICESAMOUNT")));
- invoiceDetailBean.setRejectedMedicineAmount (new Double(rs.getDouble("REJECTEDMEDICINESAMOUNT")));
- invoiceDetailBean.setRejectedNoDiscountAmount (new Double(rs.getDouble("REJECTEDNODISCOUNTAMOUNT")));
- invoiceDetailBean.setPageNumber (new Long (rs.getLong("PAGENUMBER")));
- if (rs.getObject("ROUTINGCRITERIA") != null)
- {
- invoiceDetailBean.setRoutingCriteria (new Short(rs.getShort("ROUTINGCRITERIA")));
- }
- invoiceDetailBean.setStatus (new Short(rs.getShort("STATUS")));
- invoiceDetailBean.setMode (invoiceDetailBean.OLD_MODE);
- if (rs.getObject("SOCINSNUMBER") != null)
- {
- invoiceDetailBean.setSocInsNumber (new Long(rs.getLong("SOCINSNUMBER")));
- }
- if (rs.getObject("ASSESSMENTDATE") != null)
- {
- invoiceDetailBean.setInjuryDate (rs.getTimestamp("ASSESSMENTDATE"));
- invoiceDetailBean.setInjuryDateEntFmt (rs.getString("ASSESSMENTDATEENTFMT"));
- invoiceDetailBean.setInjuryDateStr (OHUtilities.getDateStr(invoiceDetailBean.getInjuryDate(), invoiceDetailBean.getInjuryDateEntFmt()));
- }
- if (rs.getObject("INJURYID") != null)
- {
- invoiceDetailBean.setInjuryId (new Long(rs.getLong("INJURYID")));
- invoiceDetailBean.setInjuryNumber (new Long(rs.getLong("INJURYNUMBER")));
- invoiceDetailBean.setServiceType (OHConstants.SERVICE_TYPE_TRMT);
- if (rs.getObject("DATECOMPLICATION") != null)
- {
- invoiceDetailBean.setServiceType (OHConstants.SERVICE_TYPE_COMPLICATION_TRMT);
- }
- }
- else if (rs.getObject("SCHEDULEID") != null)
- {
- invoiceDetailBean.setDisbAssmtId (new Long(rs.getLong("SCHEDULEID")));
- invoiceDetailBean.setInjuryNumber (new Long(rs.getLong("DISABILITYNUMBER")));
- invoiceDetailBean.setSessionNumber (new Long(rs.getLong("SESSIONNUMBER")));
- invoiceDetailBean.setServiceType (OHConstants.SERVICE_TYPE_DISB_TRMT);
- }
- else
- {
- invoiceDetailBean.setServiceType (OHConstants.SERVICE_TYPE_MISC);
- }
- invoiceDetailBean.setName (OHUtilities.getFullName(rs.getString("FIRSTNAME"), rs.getString("SECONDNAME"),
- rs.getString("THIRDNAME"), rs.getString("SURNAME")));
- }
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getTreatmentInvoiceDetailBean()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- return invoiceDetailBean;
- }
- /**
- * @METHOD NAME : getTreatmentServices
- * @INFORMATION : This method is to get Treatment Services
- * @PARAM : class java.lang.Long,
- class java.lang.Long
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public ArrayList getTreatmentServices (Long treatmentInvoiceDetailId, Long hospitalCode) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- PreparedStatement ps2 = null;
- ResultSet rs2= null;
- ArrayList treatmentServices = new ArrayList ();
- try
- {
- String sqlQuery = "SELECT trmtsvcsdet.trmtservicehdrid, trmtsvcsdet.trmtservicedetid, trmtsvcsdet.trmtdate, trmtsvcsdet.icd10trmtdiagnosiscode, trmtsvcsdet.trmtdesc, trmtsvcsdet.RejectedTrmtAmt , " +
- " trmtsvcsdet.units, trmtsvcsdet.approvedunits, trmtsvcsdet.unitprice, trmtsvcsdet.trmtamt, trmtsvcsdet.trmtsrvcstatus,trmtsvcsdet.uom , trmtsvcsdet.reasonfordeduction , trmtsvcsdet.IOFlag ," +
- " trmtsvcsdet.discountpercentage, trmtsvcsdet.approveddiscpercentage, trmtsvcsdet.SFDACode , inj.injuryid, disbassmt.SCHEDULEID, NVL(inj.socinsnumber,disbassmt.socialinsurancenumber) AS socinsnumber, " +
- " trmtsvcshdr.patientnumber, trmtsvcshdr.hospitalcode " +
- " FROM " + SITables.T_REGHOSPINVOICEDET + " invcdet " +
- " LEFT JOIN " + SITables.T_TRMTSERVICESHDR + " trmtsvcshdr ON invcdet.invoicedetailsid = trmtsvcshdr.invoicedetailsid " +
- " LEFT JOIN " + SITables.T_TRMTSERVICESDET + " trmtsvcsdet ON trmtsvcshdr.trmtservicehdrid = trmtsvcsdet.trmtservicehdrid " +
- " LEFT JOIN " + SITables.T_INJURY + " inj ON trmtsvcshdr.injuryid = inj.injuryid " +
- " LEFT JOIN " + SITables.T_DISBASSMT + " disbassmt ON trmtsvcshdr.disassmtid = disbassmt.SCHEDULEID " +
- " WHERE trmtsvcsdet.trmtservicedetid IS NOT NULL " +
- " AND invcdet.invoicedetailsid = ? " +
- " ORDER BY NVL(trmtsvcsdet.SFDACODE,trmtsvcsdet.ICD10TRMTDIAGNOSISCODE) , trmtsvcsdet.TRMTDATE ASC";
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, treatmentInvoiceDetailId);
- rs = ps.executeQuery ();
- while (rs.next())
- {
- if (! hospitalCode.equals(rs.getLong("HOSPITALCODE")))
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getTreatmentServices()",
- null,
- "SOI_ERR_5872");
- }
- TreatmentServiceBean serviceBean = new TreatmentServiceBean ();
- serviceBean.setTrmtServiceHdrId (new Long(rs.getLong("TRMTSERVICEHDRID")));
- serviceBean.setTrmtServiceDetId (new Long(rs.getLong("TRMTSERVICEDETID")));
- serviceBean.setTrmtDateGreg (rs.getTimestamp("TRMTDATE"));
- serviceBean.setTrmtCode (rs.getString("ICD10TRMTDIAGNOSISCODE"));
- serviceBean.setTrmt (rs.getString("TRMTDESC"));
- serviceBean.setUnits (rs.getFloat("UNITS"));
- if(rs.getObject("APPROVEDUNITS")!=null)
- serviceBean.setApprovedUnits (rs.getFloat("APPROVEDUNITS"));
- else
- serviceBean.setApprovedUnits (serviceBean.getUnits());
- serviceBean.setUnitPrice (new Double(rs.getDouble("UNITPRICE")));
- serviceBean.setTrmtAmt (new Double(rs.getDouble("TRMTAMT")));
- serviceBean.setTrmtSrvcStatus (new Short(rs.getShort("TRMTSRVCSTATUS")));
- if (rs.getObject("INJURYID") != null)
- {
- serviceBean.setInjuryId (new Long(rs.getLong("INJURYID")));
- }
- if (rs.getObject("SCHEDULEID") != null)
- {
- serviceBean.setDisbAssmtId (new Long(rs.getLong("SCHEDULEID")));
- }
- if (rs.getObject("SOCINSNUMBER") != null)
- {
- serviceBean.setSocInsNumber (new Long(rs.getLong("SOCINSNUMBER")));
- }
- if (rs.getObject("PATIENTNUMBER") != null)
- {
- serviceBean.setPatientNumber (rs.getString("PATIENTNUMBER"));
- }
- if (rs.getObject("UOM") != null)
- {
- serviceBean.setUOM(rs.getString("UOM"));
- }
- if (rs.getObject("DISCOUNTPERCENTAGE") != null)
- {
- serviceBean.setDiscountPercentage(rs.getDouble("DISCOUNTPERCENTAGE"));
- }
- if (rs.getObject("APPROVEDDISCPERCENTAGE") != null)
- {
- serviceBean.setApprovedDiscPercentage(rs.getDouble("APPROVEDDISCPERCENTAGE"));
- }
- if (rs.getObject("REASONFORDEDUCTION") != null)
- {
- serviceBean.setReasonForDeduction(rs.getString("REASONFORDEDUCTION"));
- }
- if (rs.getObject("IOFLAG") != null)
- {
- serviceBean.setIOFlag(rs.getString("IOFLAG").charAt(0));
- }
- if (rs.getObject("REJECTEDTRMTAMT") != null)
- {
- serviceBean.setRejectedTrmtAmt(rs.getDouble("REJECTEDTRMTAMT"));
- }
- if (rs.getObject("SFDACODE") != null)
- {
- String SFDACode=rs.getString("SFDACODE");
- serviceBean.setSFDACode(SFDACode);
- if(!SFDACode.equals(""))
- {
- sqlQuery="SELECT ID, REGISTRATIONNUM ,PUBLICPRICE , DRUGTYPE from T_SFDA where REGISTRATIONNUM=? ";
- ps2 = con.prepareStatement (sqlQuery);
- ps2.setString (1, SFDACode);
- rs2 = ps2.executeQuery ();
- if(rs2.next()) {
- if(rs2.getObject("PUBLICPRICE")!=null)
- serviceBean.setSFDAMedicinePrice(rs2.getDouble("PUBLICPRICE"));
- if(rs2.getObject("DRUGTYPE")!=null)
- serviceBean.setDrugType(rs2.getString("DRUGTYPE").charAt(0));
- }
- }
- GOSIUtilities.cleanUp (ps2, rs2);
- }
- treatmentServices.add (serviceBean);
- }
- return treatmentServices;
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getTreatmentServices()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- }
- /**
- * @METHOD NAME : getDeductionTreatmentServices
- * @INFORMATION : This method is to get Treatment Services
- * @PARAM : class java.lang.Long,
- class java.lang.Long
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public ArrayList getDeductionTreatmentServices (Long treatmentInvoiceDetailId, Long hospitalCode) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- PreparedStatement ps2 = null;
- ResultSet rs2= null;
- ArrayList treatmentServices = new ArrayList ();
- try
- {
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- if( hasPendingTreatmentServices(treatmentInvoiceDetailId) )
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getDeductionTreatmentServices()",
- null,
- "SOI_ERR_5930");
- }
- String sqlQuery = "SELECT trmtsvcsdet.trmtservicehdrid, trmtsvcsdet.trmtservicedetid, trmtsvcsdet.trmtdate, trmtsvcsdet.icd10trmtdiagnosiscode, " +
- "trmtsvcsdet.trmtdesc, trmtsvcsdet.RejectedTrmtAmt ,trmtsvcsdet.APPEALDEDCUTIONSTATUS , trmtsvcsdet.REASONOFAPPEALDEDCUTION , " +
- " trmtsvcsdet.units, trmtsvcsdet.approvedunits, trmtsvcsdet.unitprice, trmtsvcsdet.trmtamt, " +
- "trmtsvcsdet.trmtsrvcstatus,trmtsvcsdet.uom , trmtsvcsdet.reasonfordeduction , trmtsvcsdet.IOFlag ," +
- " trmtsvcsdet.approveddiscpercentage, trmtsvcsdet.SFDACode , inj.injuryid, disbassmt.SCHEDULEID," +
- " NVL(inj.socinsnumber,disbassmt.socialinsurancenumber) AS socinsnumber, trmtsvcsdet.discountpercentage , " +
- " trmtsvcshdr.patientnumber, trmtsvcshdr.hospitalcode " +
- " FROM " + SITables.T_REGHOSPINVOICEDET + " invcdet " +
- " LEFT JOIN " + SITables.T_TRMTSERVICESHDR + " trmtsvcshdr ON invcdet.invoicedetailsid = trmtsvcshdr.invoicedetailsid " +
- " LEFT JOIN " + SITables.T_TRMTSERVICESDET + " trmtsvcsdet ON trmtsvcshdr.trmtservicehdrid = trmtsvcsdet.trmtservicehdrid " +
- " LEFT JOIN " + SITables.T_INJURY + " inj ON trmtsvcshdr.injuryid = inj.injuryid " +
- " LEFT JOIN " + SITables.T_DISBASSMT + " disbassmt ON trmtsvcshdr.disassmtid = disbassmt.SCHEDULEID " +
- " WHERE trmtsvcsdet.trmtservicedetid IS NOT NULL AND ( trmtsvcsdet.RejectedTrmtAmt>0 OR TRMTSVCSDET.REASONFORDEDUCTION is not null ) " +
- " AND invcdet.invoicedetailsid = ? " +
- " ORDER BY NVL(trmtsvcsdet.SFDACODE,trmtsvcsdet.ICD10TRMTDIAGNOSISCODE) , trmtsvcsdet.TRMTDATE ASC";
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, treatmentInvoiceDetailId);
- rs = ps.executeQuery ();
- while (rs.next())
- {
- if (! hospitalCode.equals(rs.getLong("HOSPITALCODE")))
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getDeductionTreatmentServices()",
- null,
- "SOI_ERR_5872");
- }
- TreatmentServiceBean serviceBean = new TreatmentServiceBean ();
- serviceBean.setTrmtServiceHdrId (new Long(rs.getLong("TRMTSERVICEHDRID")));
- serviceBean.setTrmtServiceDetId (new Long(rs.getLong("TRMTSERVICEDETID")));
- serviceBean.setTrmtDateGreg (rs.getTimestamp("TRMTDATE"));
- serviceBean.setTrmtCode (rs.getString("ICD10TRMTDIAGNOSISCODE"));
- serviceBean.setTrmt (rs.getString("TRMTDESC"));
- serviceBean.setUnits (rs.getFloat("UNITS"));
- serviceBean.setApprovedUnits (rs.getFloat("APPROVEDUNITS"));
- serviceBean.setUnitPrice (new Double(rs.getDouble("UNITPRICE")));
- serviceBean.setTrmtAmt (new Double(rs.getDouble("TRMTAMT")));
- serviceBean.setTrmtSrvcStatus (new Short(rs.getShort("TRMTSRVCSTATUS")));
- if (rs.getObject("INJURYID") != null)
- {
- serviceBean.setInjuryId (new Long(rs.getLong("INJURYID")));
- }
- if (rs.getObject("SCHEDULEID") != null)
- {
- serviceBean.setDisbAssmtId (new Long(rs.getLong("SCHEDULEID")));
- }
- if (rs.getObject("SOCINSNUMBER") != null)
- {
- serviceBean.setSocInsNumber (new Long(rs.getLong("SOCINSNUMBER")));
- }
- if (rs.getObject("PATIENTNUMBER") != null)
- {
- serviceBean.setPatientNumber (rs.getString("PATIENTNUMBER"));
- }
- if (rs.getObject("UOM") != null)
- {
- serviceBean.setUOM(rs.getString("UOM"));
- }
- if (rs.getObject("DISCOUNTPERCENTAGE") != null)
- {
- serviceBean.setDiscountPercentage(rs.getDouble("DISCOUNTPERCENTAGE"));
- }
- if (rs.getObject("APPROVEDDISCPERCENTAGE") != null)
- {
- serviceBean.setApprovedDiscPercentage(rs.getDouble("APPROVEDDISCPERCENTAGE"));
- }
- if (rs.getObject("REASONFORDEDUCTION") != null)
- {
- serviceBean.setReasonForDeduction(rs.getString("REASONFORDEDUCTION"));
- }
- if (rs.getObject("IOFLAG") != null)
- {
- serviceBean.setIOFlag(rs.getString("IOFLAG").charAt(0));
- }
- if (rs.getObject("REJECTEDTRMTAMT") != null)
- {
- serviceBean.setRejectedTrmtAmt(rs.getDouble("REJECTEDTRMTAMT"));
- }
- if (rs.getObject("APPEALDEDCUTIONSTATUS") != null)
- {
- serviceBean.setAppealDedcutionStatus(rs.getShort("APPEALDEDCUTIONSTATUS"));
- }
- if (rs.getObject("REASONOFAPPEALDEDCUTION") != null)
- {
- serviceBean.setReasonOfAppealDedcution(rs.getString("REASONOFAPPEALDEDCUTION"));
- }
- if (rs.getObject("SFDACODE") != null)
- {
- String SFDACode=rs.getString("SFDACODE");
- serviceBean.setSFDACode(SFDACode);
- if(!SFDACode.equals(""))
- {
- sqlQuery="SELECT ID, REGISTRATIONNUM ,PUBLICPRICE , DRUGTYPE from T_SFDA where REGISTRATIONNUM=? ";
- ps2 = con.prepareStatement (sqlQuery);
- ps2.setString (1, SFDACode);
- rs2 = ps2.executeQuery ();
- if(rs2.next()) {
- if(rs2.getObject("PUBLICPRICE")!=null)
- serviceBean.setSFDAMedicinePrice(rs2.getDouble("PUBLICPRICE"));
- if(rs2.getObject("DRUGTYPE")!=null)
- serviceBean.setDrugType(rs2.getString("DRUGTYPE").charAt(0));
- }
- }
- GOSIUtilities.cleanUp (ps2, rs2);
- }
- treatmentServices.add (serviceBean);
- }
- return treatmentServices;
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getDeductionTreatmentServices()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- }
- /**
- * @METHOD NAME : getDeductionTreatmentInvoiceDetails
- * @INFORMATION : This method is to get Treatment Services
- * @PARAM : class java.lang.Long,
- class java.lang.Long
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public ArrayList getDeductionTreatmentInvoiceDetails (Long treatmentInvoiceHeaderId, Long hospitalCode) throws GOSIException
- {
- ArrayList treatmentInvoiceDetailsList = new ArrayList ();
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- StringBuilder sqlQuery=new StringBuilder();
- sqlQuery.append("SELECT distinct invcdet.invoicedetailsid, invcdet.invoiceheaderid, invcdet.trmtstartdate, ");
- sqlQuery.append( " invcdet.trmtstartdateentfmt, invcdet.trmtenddate, invcdet.trmtenddateentfmt, " );
- sqlQuery.append( " invcdet.servicesamount, invcdet.medicinesamount, invcdet.nodiscountamount, " );
- sqlQuery.append( " invcdet.rejectedservicesamount, invcdet.rejectedmedicinesamount, " );
- sqlQuery.append( " invcdet.rejectednodiscountamount, invcdet.pagenumber, invcdet.routingcriteria, invcdet.status, " );
- sqlQuery.append( " NVL (inj.socinsnumber, NVL (disbassmt.socialinsurancenumber, invcdet.socialinsurancenumber)) AS socinsnumber, " );
- sqlQuery.append( " NVL (inj.datecomplication, NVL (inj.injurydate, disbassmt.assessmentdate)) AS assessmentdate, " );
- sqlQuery.append( " NVL (inj.datecomplicationentfmt, NVL (inj.injurydateentfmt, disbassmt.assessmentdateentfmt)) AS assessmentdateentfmt, " );
- sqlQuery.append( " inj.injuryid, inj.datecomplication, inj.injurynumber, disbassmt.SCHEDULEID, disbassmt.disabilitynumber, mbappt.sessionnumber, " );
- sqlQuery.append( " per.firstname, per.secondname, per.thirdname, per.surname, invchdr.hospitalcode , trmthdr.appealstatus" );
- sqlQuery.append( " FROM " + SITables.T_REGHOSPINVOICEHDR + " invchdr " );
- sqlQuery.append( " LEFT JOIN " + SITables.T_REGHOSPINVOICEDET + " invcdet ON invchdr.invoiceheaderid = invcdet.invoiceheaderid " );
- sqlQuery.append( " LEFT JOIN " + SITables.T_INJURY + " inj ON invcdet.injuryid = inj.injuryid " );
- sqlQuery.append( " LEFT JOIN " + SITables.T_DISBASSMT + " disbassmt ON invcdet.disbassmtid = disbassmt.SCHEDULEID " );
- sqlQuery.append( " LEFT JOIN " + SITables.T_MBAPPOINTMENT + " mbappt ON disbassmt.scheduleid = mbappt.scheduleid " );
- sqlQuery.append( " LEFT JOIN " + SITables.T_TRMTSERVICESHDR+ " trmthdr ON invcdet.invoicedetailsid = trmthdr.invoicedetailsid " );
- sqlQuery.append( " LEFT JOIN " + SITables.T_TRMTSERVICESDET+ " trmtdet on trmthdr.trmtservicehdrid = trmtdet.trmtservicehdrid " );
- sqlQuery.append( " LEFT JOIN " + SITables.T_CONTRIBUTOR + " con ON (inj.contributorid IS NOT NULL AND inj.contributorid = con.contributorid) " );
- sqlQuery.append( " OR (inj.contributorid IS NULL AND " );
- sqlQuery.append( " NVL (disbassmt.socialinsurancenumber, invcdet.socialinsurancenumber) = con.socialinsurancenumber) " );
- sqlQuery.append( " LEFT JOIN " + SITables.T_PERSON + " per ON con.personid = per.personid " );
- sqlQuery.append( " WHERE invchdr.invoiceheaderid = ? " );
- sqlQuery.append( " AND invchdr.invoicestatus <> ? " );
- sqlQuery.append( " AND invcdet.status <> ? " );
- sqlQuery.append( " AND( (TRMTDET.REJECTEDTRMTAMT > 0 AND TRMTDET.TRMTSRVCSTATUS = ?)");
- sqlQuery.append( " OR trmthdr.appealstatus in ( ? , ? , ?) ) ");
- sqlQuery.append( " ORDER BY (invcdet.rejectedservicesamount+invcdet.rejectedmedicinesamount+invcdet.rejectednodiscountamount) desc ");
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery.toString());
- ps.setLong (1, treatmentInvoiceHeaderId);
- ps.setShort (2, OHConstants.REG_HOSP_INVC_CANCELLED);
- ps.setShort (3, OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED);
- ps.setShort (4, OHConstants.TRMT_SRVC_STS_APPROVED);
- ps.setShort (5, OHConstants.TRMT_SRVC_HDR_APPEAL_STS_ENTERED);
- ps.setShort (6, OHConstants.TRMT_SRVC_HDR_APPEAL_STS_APPROVED);
- ps.setShort (7, OHConstants.TRMT_SRVC_HDR_APPEAL_STS_REJECTED);
- rs = ps.executeQuery ();
- while (rs.next())
- {
- if (! hospitalCode.equals(rs.getLong("HOSPITALCODE")))
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getTreatmentInvoiceDetailsList()",
- null,
- "SOI_ERR_5864");
- }
- RegHospInvoiceDetailBean invoiceDetailBean = new RegHospInvoiceDetailBean ();
- invoiceDetailBean.setInvoiceDetailsId (new Long(rs.getLong("INVOICEDETAILSID")));
- invoiceDetailBean.setInvoiceHeaderId (new Long(rs.getLong("INVOICEHEADERID")));
- if (rs.getObject("TRMTSTARTDATE") != null)
- {
- invoiceDetailBean.setTrmtStartDate (rs.getTimestamp("TRMTSTARTDATE"));
- invoiceDetailBean.setTrmtStartDateEntFmt (rs.getString("TRMTSTARTDATEENTFMT"));
- invoiceDetailBean.setTrmtStartDateStr (OHUtilities.getDateStr(invoiceDetailBean.getTrmtStartDate(), invoiceDetailBean.getTrmtStartDateEntFmt()));
- }
- if (rs.getObject("TRMTENDDATE") != null)
- {
- invoiceDetailBean.setTrmtEndDate (rs.getTimestamp("TRMTENDDATE"));
- invoiceDetailBean.setTrmtEndDateEntFmt (rs.getString("TRMTENDDATEENTFMT"));
- invoiceDetailBean.setTrmtEndDateStr (OHUtilities.getDateStr(invoiceDetailBean.getTrmtEndDate(), invoiceDetailBean.getTrmtEndDateEntFmt()));
- }
- invoiceDetailBean.setServicesAmount (new Double(rs.getDouble("SERVICESAMOUNT")));
- invoiceDetailBean.setMedicinesAmount (new Double(rs.getDouble("MEDICINESAMOUNT")));
- invoiceDetailBean.setNoDiscountAmount (new Double(rs.getDouble("NODISCOUNTAMOUNT")));
- invoiceDetailBean.setRejectedServiceAmount (new Double(rs.getDouble("REJECTEDSERVICESAMOUNT")));
- invoiceDetailBean.setRejectedMedicineAmount (new Double(rs.getDouble("REJECTEDMEDICINESAMOUNT")));
- invoiceDetailBean.setRejectedNoDiscountAmount (new Double(rs.getDouble("REJECTEDNODISCOUNTAMOUNT")));
- invoiceDetailBean.setPageNumber (new Long (rs.getLong("PAGENUMBER")));
- if (rs.getObject("ROUTINGCRITERIA") != null)
- {
- invoiceDetailBean.setRoutingCriteria (new Short(rs.getShort("ROUTINGCRITERIA")));
- }
- invoiceDetailBean.setStatus (new Short(rs.getShort("STATUS")));
- invoiceDetailBean.setMode (invoiceDetailBean.OLD_MODE);
- if (rs.getObject("SOCINSNUMBER") != null)
- {
- invoiceDetailBean.setSocInsNumber (new Long(rs.getLong("SOCINSNUMBER")));
- }
- if (rs.getObject("ASSESSMENTDATE") != null)
- {
- invoiceDetailBean.setInjuryDate (rs.getTimestamp("ASSESSMENTDATE"));
- invoiceDetailBean.setInjuryDateEntFmt (rs.getString("ASSESSMENTDATEENTFMT"));
- invoiceDetailBean.setInjuryDateStr (OHUtilities.getDateStr(invoiceDetailBean.getInjuryDate(), invoiceDetailBean.getInjuryDateEntFmt()));
- }
- if (rs.getObject("INJURYID") != null)
- {
- invoiceDetailBean.setInjuryId (new Long(rs.getLong("INJURYID")));
- invoiceDetailBean.setInjuryNumber (new Long(rs.getLong("INJURYNUMBER")));
- invoiceDetailBean.setServiceType (OHConstants.SERVICE_TYPE_TRMT);
- if (rs.getObject("DATECOMPLICATION") != null)
- {
- invoiceDetailBean.setServiceType (OHConstants.SERVICE_TYPE_COMPLICATION_TRMT);
- }
- }
- else if (rs.getObject("SCHEDULEID") != null)
- {
- invoiceDetailBean.setDisbAssmtId (new Long(rs.getLong("SCHEDULEID")));
- invoiceDetailBean.setInjuryNumber (new Long(rs.getLong("DISABILITYNUMBER")));
- invoiceDetailBean.setSessionNumber (new Long(rs.getLong("SESSIONNUMBER")));
- invoiceDetailBean.setServiceType (OHConstants.SERVICE_TYPE_DISB_TRMT);
- }
- else
- {
- invoiceDetailBean.setServiceType (OHConstants.SERVICE_TYPE_MISC);
- }
- if (rs.getObject("APPEALSTATUS") != null)
- invoiceDetailBean.setAppealStatus (rs.getShort("APPEALSTATUS"));
- else
- invoiceDetailBean.setAppealStatus (OHConstants.TRMT_SRVC_HDR_APPEAL_STS_PENDING_DATA_ENTRY);
- invoiceDetailBean.setName (OHUtilities.getFullName(rs.getString("FIRSTNAME"), rs.getString("SECONDNAME"),
- rs.getString("THIRDNAME"), rs.getString("SURNAME")));
- treatmentInvoiceDetailsList.add (invoiceDetailBean);
- }
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getDeductionTreatmentInvoiceDetails()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- return treatmentInvoiceDetailsList;
- }
- /**
- * @METHOD NAME : setNoAppealDeductionTrmtServiceInvoice
- * @INFORMATION : This method is to get Treatment Services
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.TreatmentServiceBean,
- class java.lang.Long
- * @RETURN : class java.util.String
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public String setNoAppealDeductionTrmtServiceInvoice (Long treatmentInvoiceHeaderId, TreatmentServiceBean serviceBean) throws GOSIException
- {
- String message ="";
- TreatmentServiceDetailEntityHome serviceHome= (TreatmentServiceDetailEntityHome)
- ServiceLocator.getInstance().getRemoteHome( OHConstants.TRMT_SRVC_DET_ENTITY_JNDI,
- TreatmentServiceDetailEntityHome.class);
- TreatmentServiceHeaderEntityHome hdrServiceHome= (TreatmentServiceHeaderEntityHome)
- ServiceLocator.getInstance().getRemoteHome( OHConstants.TRMT_SRVC_HDR_ENTITY_JNDI,
- TreatmentServiceHeaderEntityHome.class);
- RegHospitalInvoiceHeaderEntityHome RegHosInvHome= (RegHospitalInvoiceHeaderEntityHome)
- ServiceLocator.getInstance().getRemoteHome( OHConstants.REG_HOSP_INVOICE_HEADER_ENTITY_JNDI,
- RegHospitalInvoiceHeaderEntityHome.class);
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String sqlQuery = "SELECT trmtsvcsdet.trmtservicedetid , trmtsvcshdr.trmtservicehdrid " +
- " FROM " + SITables.T_REGHOSPINVOICEDET + " invcdet " +
- " LEFT JOIN " + SITables.T_TRMTSERVICESHDR + " trmtsvcshdr ON invcdet.invoicedetailsid = trmtsvcshdr.invoicedetailsid " +
- " LEFT JOIN " + SITables.T_TRMTSERVICESDET + " trmtsvcsdet ON trmtsvcshdr.trmtservicehdrid = trmtsvcsdet.trmtservicehdrid " +
- " WHERE trmtsvcsdet.trmtservicedetid IS NOT NULL AND ( trmtsvcsdet.RejectedTrmtAmt>0 OR TRMTSVCSDET.REASONFORDEDUCTION is not null ) " +
- " AND invcdet.invoiceheaderid = ? AND invcdet.status <> ? ";
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, treatmentInvoiceHeaderId);
- ps.setShort (2, OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED);
- rs = ps.executeQuery ();
- while (rs.next())
- {
- Long trmtServiceDetId= rs.getLong("TRMTSERVICEDETID");
- Long trmtServiceHdrId= rs.getLong("TRMTSERVICEHDRID");
- TreatmentServiceDetailEntity serviceRemote = serviceHome.
- findByPrimaryKey(trmtServiceDetId);
- serviceRemote.modifyAppealDedcution(serviceBean);
- TreatmentServiceHeaderEntity hdrService=hdrServiceHome.findByPrimaryKey(trmtServiceHdrId);
- hdrService.setAppealStatus(OHConstants.TRMT_SRVC_HDR_APPEAL_STS_NO_APPEAL,serviceBean.getLastModifiedBy(),serviceBean.getLastModifiedTimestamp());
- message=GOSIErrorMessages.getErrorDesc("SOI_ERR_5927");
- }
- RegHospitalInvoiceHeaderEntity RegHosInvRemote = RegHosInvHome.
- findByPrimaryKey(treatmentInvoiceHeaderId);
- RegHosInvRemote.markRegHospInvoiceHeaderAsPendingApproved(serviceBean.getLastModifiedBy());
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "setNoAppealDeductionTrmtServiceInvoice()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- return message;
- }
- /**
- * @METHOD NAME : hasDeductionTreatmentServiceAlreadyEntered
- * @INFORMATION : This method is to get Treatment Services
- * @PARAM : class java.lang.Long
- * @RETURN : class java.util.String
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public Boolean hasDeductionTreatmentServiceAlreadyEntered (Long treatmentInvoiceHeaderId) throws GOSIException
- {
- Boolean hasDeductionTreatmentServiceAlreadyEntered =false;
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String sqlQuery = "SELECT trmtsvcshdr.invoicedetailsid " +
- " FROM " + SITables.T_REGHOSPINVOICEDET + " invcdet " +
- " LEFT JOIN " + SITables.T_TRMTSERVICESHDR + " trmtsvcshdr ON invcdet.invoicedetailsid = trmtsvcshdr.invoicedetailsid " +
- " WHERE invcdet.invoiceheaderid = ? AND invcdet.status <> ? "+
- " AND trmtsvcshdr.appealStatus in ( ? , ? )";
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, treatmentInvoiceHeaderId);
- ps.setShort (2, OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED);
- ps.setShort (3, OHConstants.TRMT_SRVC_HDR_APPEAL_STS_ENTERED);
- ps.setShort (4, OHConstants.TRMT_SRVC_HDR_APPEAL_STS_PENDING_DATA_ENTRY);
- rs = ps.executeQuery ();
- if (rs.next())
- {
- hasDeductionTreatmentServiceAlreadyEntered=true;
- }
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "hasDeductionTreatmentServiceAlreadyEntered()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- return hasDeductionTreatmentServiceAlreadyEntered;
- }
- /**
- * @METHOD NAME : isAppealStatusIsNoAppeal
- * @INFORMATION : This method is to get Treatment Services
- * @PARAM : class java.lang.Long
- * @RETURN : class java.util.String
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public Boolean isAppealStatusIsNoAppeal (Long treatmentInvoiceHeaderId) throws GOSIException
- {
- Boolean isAppealStatusIsNoAppeal =false;
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String sqlQuery = "SELECT trmtsvcsdet.trmtservicedetid" +
- " FROM " + SITables.T_REGHOSPINVOICEDET + " invcdet " +
- " LEFT JOIN " + SITables.T_TRMTSERVICESHDR + " trmtsvcshdr ON invcdet.invoicedetailsid = trmtsvcshdr.invoicedetailsid " +
- " LEFT JOIN " + SITables.T_TRMTSERVICESDET + " trmtsvcsdet ON trmtsvcshdr.trmtservicehdrid = trmtsvcsdet.trmtservicehdrid " +
- " WHERE trmtsvcsdet.trmtservicedetid IS NOT NULL AND ( trmtsvcsdet.RejectedTrmtAmt>0 OR TRMTSVCSDET.REASONFORDEDUCTION is not null ) " +
- " AND invcdet.invoiceheaderid = ? AND invcdet.status <> ? "+
- "AND trmtsvcsdet.APPEALDEDCUTIONSTATUS = ? AND trmtsvcsdet.APPEALDEDCUTIONDATE IS NOT NULL ";
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, treatmentInvoiceHeaderId);
- ps.setShort (2, OHConstants.REG_HOSP_INVC_DETAILS_CANCELLED);
- ps.setShort (3, OHConstants.TRMT_SRVC_APPEAL_STS_NO_APPEAL);
- rs = ps.executeQuery ();
- if (rs.next())
- {
- isAppealStatusIsNoAppeal=true;
- }
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "isAppealStatusIsNoAppeal()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- return isAppealStatusIsNoAppeal;
- }
- /**
- * @METHOD NAME : getInjuryListHaveApprovedTrmtForHos
- * @INFORMATION : This method is to get Injury List that have treatment which period date in the month of invoice
- * @PARAM : class java.lang.Long
- * class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public ArrayList getInjuryListHaveApprovedTrmtForHos (Long hospitalCode , RegHospInvoiceHeaderBean invoiceHeaderBean ) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- ArrayList injuryList=new ArrayList();
- try
- {
- String sqlQuery = "SELECT inj.injuryid, inj.injurynumber, inj.contributorid, inj.socinsnumber, inj.injurydate,inj.injurydateentfmt, " +
- " inj.datecomplication,inj.datecomplicationentfmt ,inj.enteredby , inj.hospitalcode , est.establishmentid, est.registrationnumber, est.establishmentnamearb, " +
- " per.firstname, per.secondname, per.thirdname, per.surname " +
- " FROM " + SITables.T_INJURY + " inj " +
- " LEFT JOIN " + SITables.T_ESTABLISHMENT + " est ON inj.establishmentid = est.establishmentid " +
- " LEFT JOIN " + SITables.T_CONTRIBUTOR + " con ON inj.contributorid = con.contributorid " +
- " LEFT JOIN " + SITables.T_PERSON + " per ON con.personid = per.personid " +
- " WHERE inj.injuryid in (select distinct t.injuryid from "+ SITables.T_TREATMENT+" t where t.hospitalcode=? and t.STARTDATE<=? AND t.ENDDATE>=? and t.treatmentstatus=? )" +
- " AND inj.fieldofficecode = ? AND inj.injurystatus <> ? order by inj.injuryid desc";
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- String endMonth=OHUtilities.getMonthEndDate(invoiceHeaderBean.getStartDateStr());
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, hospitalCode);
- ps.setTimestamp (2, OHUtilities.getGregDate(endMonth,OHConstants.GREGORIAN));
- ps.setTimestamp (3, OHUtilities.getGregDate(invoiceHeaderBean.getStartDateStr(),OHConstants.GREGORIAN));
- ps.setShort (4, OHConstants.TRMT_STS_APPROVED);
- ps.setShort (5, invoiceHeaderBean.getFieldOffice());
- ps.setShort (6, OHConstants.INJ_STS_CANCELLED);
- rs = ps.executeQuery ();
- while (rs.next())
- {
- AddInjuryHelperBean injuryBean = new AddInjuryHelperBean ();
- injuryBean.setInjuryId (new Long(rs.getLong("INJURYID")));
- injuryBean.setInjuryNumber (new Long(rs.getLong("INJURYNUMBER")));
- injuryBean.setContributorId (new Long(rs.getLong("CONTRIBUTORID")));
- injuryBean.setSocInsNumber (new Long(rs.getLong("SOCINSNUMBER")));
- injuryBean.setInjuryDate (rs.getTimestamp("INJURYDATE"));
- injuryBean.setInjuryDateEntFmt(rs.getString("INJURYDATEENTFMT"));
- injuryBean.setInjuryDateStr(OHUtilities.getDateStr(injuryBean.getInjuryDate()
- , injuryBean.getInjuryDateEntFmt()));
- if (rs.getObject("DATECOMPLICATION") != null)
- {
- injuryBean.setDateComplication (rs.getTimestamp("DATECOMPLICATION"));
- injuryBean.setDateComplicationEntFmt(rs.getString("DATECOMPLICATIONENTFMT"));
- injuryBean.setDateComplicationStr(OHUtilities.getDateStr(injuryBean.getDateComplication()
- , injuryBean.getDateComplicationEntFmt()));
- }
- if (rs.getObject("HOSPITALCODE") != null)
- {
- injuryBean.setHospitalCode(rs.getLong(("HOSPITALCODE")));
- }
- if (rs.getObject("ENTEREDBY") != null)
- {
- injuryBean.setEnteredBy (rs.getShort(("ENTEREDBY")));
- }
- injuryBean.setEstablishmentId (new Long(rs.getLong("ESTABLISHMENTID")));
- injuryBean.setRegNumber (new Long(rs.getLong("REGISTRATIONNUMBER")));
- injuryBean.setEstablishmentName (rs.getString("ESTABLISHMENTNAMEARB"));
- injuryBean.setName (OHUtilities.getFullName(rs.getString("FIRSTNAME"), rs.getString("SECONDNAME"),
- rs.getString("THIRDNAME"), rs.getString("SURNAME")));
- injuryList.add (injuryBean);
- }
- return injuryList;
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getInjuryListHaveApprovedTrmtForHos()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- }
- /**
- * @METHOD NAME : getTreatmentServices
- * @INFORMATION : This method is to get Treatment Services
- * @PARAM : class java.lang.Long
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public ArrayList getTreatmentServices (String idName ,Long Id) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- PreparedStatement ps2 = null;
- ResultSet rs2= null;
- ArrayList treatmentServices = new ArrayList ();
- try
- {
- String sqlQuery = "";
- if(idName.equalsIgnoreCase("injuryid"))
- {
- sqlQuery = "SELECT trmtsvcsdet.trmtservicehdrid, trmtsvcsdet.trmtservicedetid, trmtsvcsdet.trmtdate,trmtsvcsdet.uom ,trmtsvcsdet.approveddiscpercentage, trmtsvcsdet.SFDACode , " +
- " trmtsvcsdet.icd10trmtdiagnosiscode, trmtsvcsdet.trmtdesc, trmtsvcsdet.units, trmtsvcsdet.reasonfordeduction , trmtsvcsdet.IOFlag, trmtsvcsdet.RejectedTrmtAmt ," +
- " trmtsvcsdet.approvedunits, trmtsvcsdet.unitprice, trmtsvcsdet.trmtamt, trmtsvcsdet.trmtsrvcstatus, trmtsvcsdet.isperioddeducted , trmtsvcsdet.createdby ," +
- " inj.injuryid, inj.socinsnumber, trmtsvcshdr.patientnumber, trmtsvcshdr.hospitalcode , "+
- " regHdr.INVOICENUMBER" +
- " FROM " + SITables.T_TRMTSERVICESHDR + " trmtsvcshdr " +
- " LEFT JOIN " + SITables.T_TRMTSERVICESDET + " trmtsvcsdet ON trmtsvcshdr.trmtservicehdrid = trmtsvcsdet.trmtservicehdrid " +
- " LEFT JOIN " + SITables.T_INJURY + " inj ON trmtsvcshdr.injuryid = inj.injuryid " +
- " LEFT JOIN " + SITables.T_REGHOSPINVOICEDET + " regDet ON TRMTSVCSHDR.INVOICEDETAILSID = REGDET.INVOICEDETAILSID "+
- " LEFT JOIN " + SITables.T_REGHOSPINVOICEHDR + " regHdr ON REGDET.INVOICEHEADERID = regHdr.INVOICEHEADERID"+
- " WHERE trmtsvcsdet.trmtservicedetid IS NOT NULL AND inj.injuryid = ?";
- }
- else if(idName.equalsIgnoreCase("disbAssmtId"))
- {
- sqlQuery = "SELECT trmtsvcsdet.trmtservicehdrid, trmtsvcsdet.trmtservicedetid, trmtsvcsdet.trmtdate,trmtsvcsdet.uom ,trmtsvcsdet.approveddiscpercentage, trmtsvcsdet.SFDACode , " +
- " trmtsvcsdet.icd10trmtdiagnosiscode, trmtsvcsdet.trmtdesc, trmtsvcsdet.units, trmtsvcsdet.reasonfordeduction , trmtsvcsdet.IOFlag, trmtsvcsdet.RejectedTrmtAmt ," +
- " trmtsvcsdet.approvedunits, trmtsvcsdet.unitprice, trmtsvcsdet.trmtamt, trmtsvcsdet.trmtsrvcstatus, trmtsvcsdet.isperioddeducted , trmtsvcsdet.createdby ," +
- " trmtsvcshdr.patientnumber, trmtsvcshdr.hospitalcode , "+
- " disassmt.SCHEDULEID, disassmt.SOCIALINSURANCENUMBER, regHdr.INVOICENUMBER" +
- " FROM " + SITables.T_TRMTSERVICESHDR + " trmtsvcshdr " +
- " LEFT JOIN " + SITables.T_TRMTSERVICESDET + " trmtsvcsdet ON trmtsvcshdr.trmtservicehdrid = trmtsvcsdet.trmtservicehdrid " +
- " LEFT JOIN " + SITables.T_DISBASSMT + " disassmt ON trmtsvcshdr.DISASSMTID = disassmt.SCHEDULEID " +
- " LEFT JOIN " + SITables.T_REGHOSPINVOICEDET + " regDet ON TRMTSVCSHDR.INVOICEDETAILSID = REGDET.INVOICEDETAILSID "+
- " LEFT JOIN " + SITables.T_REGHOSPINVOICEHDR + " regHdr ON REGDET.INVOICEHEADERID = regHdr.INVOICEHEADERID"+
- " WHERE trmtsvcsdet.trmtservicedetid IS NOT NULL AND disassmt.SCHEDULEID = ? ";
- }
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- sqlQuery=sqlQuery+" ORDER BY NVL(trmtsvcsdet.SFDACODE,trmtsvcsdet.ICD10TRMTDIAGNOSISCODE) , trmtsvcsdet.TRMTDATE ASC";
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, Id);
- rs = ps.executeQuery ();
- while (rs.next())
- {
- TreatmentServiceBean serviceBean = new TreatmentServiceBean ();
- serviceBean.setTrmtServiceHdrId (new Long(rs.getLong("TRMTSERVICEHDRID")));
- serviceBean.setTrmtServiceDetId (new Long(rs.getLong("TRMTSERVICEDETID")));
- serviceBean.setTrmtDateGreg (rs.getTimestamp("TRMTDATE"));
- serviceBean.setTrmtCode (rs.getString("ICD10TRMTDIAGNOSISCODE"));
- serviceBean.setTrmt (rs.getString("TRMTDESC"));
- serviceBean.setUnits (new Float(rs.getFloat("UNITS")));
- serviceBean.setApprovedUnits (rs.getFloat("APPROVEDUNITS"));
- serviceBean.setUnitPrice (new Double(rs.getDouble("UNITPRICE")));
- serviceBean.setTrmtAmt (new Double(rs.getDouble("TRMTAMT")));
- serviceBean.setTrmtSrvcStatus (new Short(rs.getShort("TRMTSRVCSTATUS")));
- if(idName.equalsIgnoreCase("injuryid")) {
- serviceBean.setInjuryId (new Long(rs.getLong("INJURYID")));
- serviceBean.setSocInsNumber (new Long(rs.getLong("SOCINSNUMBER")));
- }
- else if(idName.equalsIgnoreCase("disbAssmtId")) {
- serviceBean.setDisbAssmtId (new Long(rs.getLong("SCHEDULEID")));
- serviceBean.setSocInsNumber (new Long(rs.getLong("SOCIALINSURANCENUMBER")));
- }
- serviceBean.setInvoiceNumber (new Long(rs.getLong("INVOICENUMBER")));
- if (rs.getObject("PATIENTNUMBER") != null)
- {
- serviceBean.setPatientNumber (rs.getString("PATIENTNUMBER"));
- }
- if (rs.getObject("HOSPITALCODE") != null)
- {
- serviceBean.setHospitalCode (new Long(rs.getLong("HOSPITALCODE")));
- }
- if (rs.getObject("UOM") != null)
- {
- serviceBean.setUOM(rs.getString("UOM"));
- }
- if (rs.getObject("APPROVEDDISCPERCENTAGE") != null)
- {
- serviceBean.setApprovedDiscPercentage(rs.getDouble("APPROVEDDISCPERCENTAGE"));
- }
- if (rs.getObject("REASONFORDEDUCTION") != null)
- {
- serviceBean.setReasonForDeduction(rs.getString("REASONFORDEDUCTION"));
- }
- if (rs.getObject("IOFLAG") != null)
- {
- serviceBean.setIOFlag(rs.getString("IOFLAG").charAt(0));
- }
- if (rs.getObject("REJECTEDTRMTAMT") != null)
- {
- serviceBean.setRejectedTrmtAmt(rs.getDouble("REJECTEDTRMTAMT"));
- }
- if (rs.getObject("SFDACODE") != null)
- {
- String SFDACode=rs.getString("SFDACODE");
- serviceBean.setSFDACode(SFDACode);
- if(!SFDACode.equals(""))
- {
- sqlQuery="SELECT ID, REGISTRATIONNUM ,PUBLICPRICE , DRUGTYPE from T_SFDA where REGISTRATIONNUM=? ";
- ps2 = con.prepareStatement (sqlQuery);
- ps2.setString (1, SFDACode);
- rs2 = ps2.executeQuery ();
- if(rs2.next()) {
- if(rs2.getObject("PUBLICPRICE")!=null)
- serviceBean.setSFDAMedicinePrice(rs2.getDouble("PUBLICPRICE"));
- if(rs2.getObject("DRUGTYPE")!=null)
- serviceBean.setDrugType(rs2.getString("DRUGTYPE").charAt(0));
- }
- }
- GOSIUtilities.cleanUp (ps2, rs2);
- }
- if (rs.getObject("ISPERIODDEDUCTED") != null)
- {
- serviceBean.setIsPeriodDeducted(rs.getByte("ISPERIODDEDUCTED"));
- }
- if (rs.getObject("CREATEDBY") != null)
- {
- serviceBean.setCreatedBy(rs.getLong("CREATEDBY"));
- }
- treatmentServices.add (serviceBean);
- }
- return treatmentServices;
- }
- catch (GOSIException ge)
- {
- throw ge;
- }
- catch (Exception e)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getTreatmentServices()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- }
- /**
- * @METHOD NAME : createTreatmentInvoice
- * @INFORMATION : This method is to create Treatment Invoice
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @RETURN : void
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public void createTreatmentInvoice (RegHospInvoiceHeaderBean treatmentInvoiceBean) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- if (treatmentInvoiceBean.getYear() > Calendar.getInstance().get(Calendar.YEAR))
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "createTreatmentInvoice()",
- null,
- "SOI_ERR_5855");
- }
- else if (treatmentInvoiceBean.getYear() == Calendar.getInstance().get(Calendar.YEAR))
- {
- if (treatmentInvoiceBean.getMonth() > Calendar.getInstance().get(Calendar.MONTH))
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "createTreatmentInvoice()",
- null,
- "SOI_ERR_5856");
- }
- }
- else if (treatmentInvoiceBean.getYear() < Calendar.getInstance().get(Calendar.YEAR) - 1)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "createTreatmentInvoice()",
- null,
- "SOI_ERR_5857");
- }
- GregorianCalendar calendar = new GregorianCalendar (treatmentInvoiceBean.getYear(), treatmentInvoiceBean.getMonth(), 1);
- treatmentInvoiceBean.setStartDate (new Timestamp(calendar.getTime().getTime()));
- treatmentInvoiceBean.setStartDateEntFmt (OHConstants.GREGORIAN);
- GOSIDebug.debugMessages("invoice start date :"+GOSIUtilities.getDateFullString(treatmentInvoiceBean.getStartDate()));
- calendar.set (Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
- treatmentInvoiceBean.setEndDate (new Timestamp(calendar.getTime().getTime()));
- treatmentInvoiceBean.setEndDateEntFmt (OHConstants.GREGORIAN);
- String sqlQuery = "SELECT COUNT (*) AS num_invoices " +
- " FROM " + SITables.T_REGHOSPINVOICEHDR +
- " WHERE hospitalcode = ? " +
- " AND fieldoffice = ? " +
- " AND startdate = ? " +
- " AND invoicestatus <> ? ";
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, treatmentInvoiceBean.getHospitalCode());
- ps.setShort (2, treatmentInvoiceBean.getFieldOffice());
- ps.setTimestamp (3, treatmentInvoiceBean.getStartDate());
- ps.setShort (4, OHConstants.REG_HOSP_INVC_CANCELLED);
- rs = ps.executeQuery ();
- if (rs.next() && rs.getInt("NUM_INVOICES") > 0)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "createTreatmentInvoice()",
- null,
- "SOI_ERR_5858");
- }
- GOSIUtilities.cleanUp (ps, rs);
- sqlQuery = "SELECT effectivestartdate, effectiveenddate " +
- " FROM " + SITables.T_HOSPITALFOASSOCIATION +
- " WHERE hospitalcode = ? " +
- " AND fieldofficecode = ? ";
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, treatmentInvoiceBean.getHospitalCode());
- ps.setShort (2, treatmentInvoiceBean.getFieldOffice());
- rs = ps.executeQuery ();
- if (! rs.next())
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "createTreatmentInvoice()",
- null,
- "SOI_ERR_5859");
- }
- else
- {
- boolean hasValidFOAssociation = false;
- do
- {
- if (rs.getTimestamp("EFFECTIVESTARTDATE").before(treatmentInvoiceBean.getStartDate()) &&
- (rs.getTimestamp("EFFECTIVEENDDATE") == null || rs.getTimestamp("EFFECTIVEENDDATE").after(treatmentInvoiceBean.getEndDate())))
- {
- hasValidFOAssociation = true;
- break;
- }
- }
- while (rs.next());
- if (! hasValidFOAssociation)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "createTreatmentInvoice()",
- null,
- "SOI_ERR_5860");
- }
- }
- GOSIUtilities.cleanUp (ps, rs);
- sqlQuery = "SELECT contrstdate, contrenddate " +
- " FROM " + SITables.T_HOSPITALCONTRACT +
- " WHERE hospitalcode = ? " +
- " AND agreestatus = ? ";
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, treatmentInvoiceBean.getHospitalCode());
- ps.setShort (2, OHConstants.AGREESTATUS_YES);
- rs = ps.executeQuery ();
- if (! rs.next())
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "createTreatmentInvoice()",
- null,
- "SOI_ERR_5861");
- }
- else
- {
- boolean hasContractCoverage = false;
- do
- {
- Timestamp contractStDate =rs.getTimestamp("CONTRSTDATE");
- Timestamp contractEndDate =rs.getTimestamp("CONTRENDDATE");
- if ((treatmentInvoiceBean.getStartDate().equals(contractStDate) ||
- treatmentInvoiceBean.getStartDate().after(contractStDate))
- && (contractEndDate==null
- || treatmentInvoiceBean.getEndDate().equals(contractEndDate)
- || treatmentInvoiceBean.getEndDate().before(contractEndDate)))
- {
- hasContractCoverage = true;
- break;
- }
- }
- while (rs.next());
- if (! hasContractCoverage)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "createTreatmentInvoice()",
- null,
- "SOI_ERR_5862");
- }
- }
- treatmentInvoiceBean.setInvoiceHeaderId (GOSIUtilities.getPrimaryKey ("T_REGHOSPINVOICEHDR", treatmentInvoiceBean.getCreatedBy()));
- treatmentInvoiceBean.setInvoiceNumber (GOSIUtilities.getPrimaryKey ("REGHOSINVOICENUMBER", treatmentInvoiceBean.getCreatedBy()));
- treatmentInvoiceBean.setCreationTimestamp (new Timestamp(System.currentTimeMillis()));
- treatmentInvoiceBean.setInvoiceStatus (OHConstants.REG_HOSP_INVC_PENDING_DATA_ENTRY);
- treatmentInvoiceBean.setInvoiceDate (OHUtilities.getCurrentDateTimestamp());
- treatmentInvoiceBean.setInvoiceDateEntFmt (OHConstants.GREGORIAN);
- RegHospitalInvoiceHeaderEntityHome treatmentInvoiceEntity = (RegHospitalInvoiceHeaderEntityHome)
- ServiceLocator.getInstance ().getRemoteHome (OHConstants.REG_HOSP_INVOICE_HEADER_ENTITY_JNDI, RegHospitalInvoiceHeaderEntityHome.class);
- treatmentInvoiceEntity.create (treatmentInvoiceBean);
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly ();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly ();
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "createTreatmentInvoice()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- }
- /**
- * @METHOD NAME : deleteTreatmentInvoice
- * @INFORMATION : This method is to delete Treatment Invoice
- * @PARAM : class java.lang.Long,
- class java.lang.Long,
- class java.lang.Long
- * @RETURN : void
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public void deleteTreatmentInvoice (Long invoiceHeaderId, Long hospitalCode, Long userId) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- String sqlQuery = "SELECT a.hospitalcode, a.invoicestatus, " +
- " COUNT (DISTINCT b.invoicedetailsid) AS numberofapprovedservices, " +
- " COUNT (DISTINCT c.invoicedetailsid) AS numberofservicesinworkflow, " +
- " COUNT (DISTINCT d.invoicedetailsid) AS numberofenteredservices " +
- " FROM " + SITables.T_REGHOSPINVOICEHDR + " a " +
- " LEFT JOIN " + SITables.T_REGHOSPINVOICEDET + " b ON a.invoiceheaderid = b.invoiceheaderid AND b.status = ? " +
- " LEFT JOIN " + SITables.T_REGHOSPINVOICEDET + " c ON a.invoiceheaderid = c.invoiceheaderid AND c.status = ? " +
- " LEFT JOIN " + SITables.T_REGHOSPINVOICEDET + " d ON a.invoiceheaderid = d.invoiceheaderid AND d.status = ? " +
- " WHERE a.invoiceheaderid = ? " +
- "GROUP BY a.hospitalcode, a.invoicestatus ";
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery);
- ps.setShort (1, OHConstants.REG_HOSP_INVC_DETAILS_APPROVED);
- ps.setShort (2, OHConstants.REG_HOSP_INVC_DETAILS_IN_WORKFLOW);
- ps.setShort (3, OHConstants.REG_HOSP_INVC_DETAILS_ENTERED);
- ps.setLong (4, invoiceHeaderId);
- rs = ps.executeQuery ();
- if (! rs.next() || rs.getShort("INVOICESTATUS") == OHConstants.REG_HOSP_INVC_CANCELLED)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "deleteTreatmentInvoice()",
- null,
- "SOI_ERR_5863");
- }
- else if (rs.getLong("HOSPITALCODE") != hospitalCode)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "deleteTreatmentInvoice()",
- null,
- "SOI_ERR_5864");
- }
- else if (rs.getShort("INVOICESTATUS") != OHConstants.REG_HOSP_INVC_PENDING_DATA_ENTRY)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "deleteTreatmentInvoice()",
- null,
- "SOI_ERR_5865");
- }
- else if (rs.getShort("NUMBEROFAPPROVEDSERVICES") > 0)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "deleteTreatmentInvoice()",
- null,
- "SOI_ERR_5866");
- }
- else if (rs.getShort("NUMBEROFSERVICESINWORKFLOW") > 0)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "deleteTreatmentInvoice()",
- null,
- "SOI_ERR_5867");
- }
- else if (rs.getShort("NUMBEROFENTEREDSERVICES") > 0)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "deleteTreatmentInvoice()",
- null,
- "SOI_ERR_5868");
- }
- RegHospitalInvoiceHeaderEntityHome treatmentInvoiceEntityHome = (RegHospitalInvoiceHeaderEntityHome)
- ServiceLocator.getInstance ().getRemoteHome (OHConstants.REG_HOSP_INVOICE_HEADER_ENTITY_JNDI, RegHospitalInvoiceHeaderEntityHome.class);
- RegHospitalInvoiceHeaderEntity treatmentInvoiceEntity = treatmentInvoiceEntityHome.findByPrimaryKey (invoiceHeaderId);
- treatmentInvoiceEntity.cancelRegHospInvoiceHeader (userId);
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly ();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly ();
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "deleteTreatmentInvoice()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- }
- /**
- * @METHOD NAME : canIssueTreatmentInvoice
- * @INFORMATION : This method is to delete Treatment Invoice
- * @PARAM : class java.lang.Long,
- class java.lang.Long,
- class java.lang.Long
- * @RETURN : void
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public ArrayList canIssueTreatmentInvoice (Long invoiceHeaderId, Long hospitalCode, UserBean userBean) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- ArrayList injuryList =new ArrayList();
- try
- {
- StringBuilder sqlQuery=new StringBuilder();
- sqlQuery.append("SELECT INVOICEHEADERID FROM T_REGHOSPINVOICEHDR H WHERE H.INVOICEHEADERID = ? AND H.HOSPITALCODE=? AND H.INVOICESTATUS=? AND H.BATCHPROCESSED IS NOT NULL ");
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- int index=0;
- ps = con.prepareStatement (sqlQuery.toString());
- ps.setLong(++index,invoiceHeaderId.longValue());
- ps.setLong(++index,hospitalCode.longValue());
- ps.setShort(++index,OHConstants.REG_HOSP_INVC_PENDING_DATA_ENTRY);
- rs=ps.executeQuery ();
- if (!rs.next())
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "issueTreatmentInvoice()",
- null,
- "CMN_ERR_1000");
- }
- // check if all approved injurys must have enter sickleave details
- GOSIUtilities.cleanUp(ps,rs);
- sqlQuery=new StringBuilder();
- sqlQuery.append("SELECT J.SOCINSNUMBER,J.INJURYID,J.INJURYDATE , ");
- sqlQuery.append("J.INJURYDATEENTFMT,J.DATECOMPLICATION,J.DATECOMPLICATIONENTFMT, ");
- sqlQuery.append("J.INJURYSTATUS,J.TRMTCLOSUREINJURYSTATUS , H.STARTDATE, H.INVOICENUMBER,S.STATUS ");
- sqlQuery.append("FROM t_REGHOSPINVOICEHDR H LEFT JOIN T_REGHOSPINVOICEDET D ON D.INVOICEHEADERID = H.INVOICEHEADERID ");
- sqlQuery.append("LEFT JOIN T_INJURY J ON J.INJURYID = D.INJURYID LEFT JOIN T_OHSICKLEAVE S ");
- sqlQuery.append("ON S.INJURYID = J.INJURYID AND S.MONTH =TO_CHAR(H.STARTDATE,'MM') ");
- sqlQuery.append("AND S.YEAR =TO_CHAR(H.STARTDATE,'YYYY')");
- sqlQuery.append("WHERE H.INVOICEHEADERID = ? AND H.HOSPITALCODE= ? ");
- sqlQuery.append("AND J.INJURYSTATUS IN (?,?,?) ");
- sqlQuery.append("AND ( S.STATUS IS NULL OR S.STATUS <> ? OR J.TRMTCLOSUREINJURYSTATUS IS NULL ) ");
- ps = con.prepareStatement (sqlQuery.toString());
- index=0;
- ps.setLong(++index,invoiceHeaderId.longValue());
- ps.setLong(++index,hospitalCode.longValue());
- ps.setShort(++index,OHConstants.INJ_STS_APPROVED);
- ps.setShort(++index,OHConstants.INJ_STS_NOTIFIED);
- ps.setShort(++index,OHConstants.INJ_STS_FIRST_NOTIFIED);
- ps.setShort(++index,OHConstants.EXTN_SICKLEAVE_STS_APPROVED);
- rs = ps.executeQuery ();
- while (rs.next())
- {
- SickleaveBean sickleaveBean = new SickleaveBean();
- sickleaveBean.setSocInsNumber(rs.getLong("SOCINSNUMBER"));
- sickleaveBean.setInjuryId(rs.getLong("INJURYID"));
- sickleaveBean.setInjuryDate(rs.getTimestamp("INJURYDATE"));
- if(rs.getObject("DATECOMPLICATION")!=null)
- {
- sickleaveBean.setComplicationDate(rs.getTimestamp("DATECOMPLICATION"));
- }
- if(rs.getObject("TRMTCLOSUREINJURYSTATUS")!=null)
- sickleaveBean.setClosureInjuryStatus(rs.getShort("TRMTCLOSUREINJURYSTATUS"));
- if(rs.getObject("STATUS")!=null)
- sickleaveBean.setStatus(rs.getShort("STATUS"));
- if(sickleaveBean.getStatus()==null || !sickleaveBean.getStatus().equals(OHConstants.EXTN_SICKLEAVE_STS_APPROVED))
- injuryList.add(sickleaveBean);
- }
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly ();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly ();
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "canIssueTreatmentInvoice()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- return injuryList;
- }
- }
- /**
- * @METHOD NAME : issueTreatmentInvoice
- * @INFORMATION : This method is to delete Treatment Invoice
- * @PARAM : class java.lang.Long,
- class java.lang.Long,
- class java.lang.Long
- * @RETURN : void
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public void issueTreatmentInvoice (Long invoiceHeaderId, Long hospitalCode, UserBean userBean) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- try
- {
- StringBuilder sqlQuery=new StringBuilder();
- sqlQuery.append("SELECT INVOICEHEADERID FROM T_REGHOSPINVOICEHDR H WHERE H.INVOICEHEADERID = ? AND H.HOSPITALCODE=? AND H.INVOICESTATUS=? AND H.BATCHPROCESSED IS NOT NULL ");
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- int index=0;
- ps = con.prepareStatement (sqlQuery.toString());
- ps.setLong(++index,invoiceHeaderId.longValue());
- ps.setLong(++index,hospitalCode.longValue());
- ps.setShort(++index,OHConstants.REG_HOSP_INVC_PENDING_DATA_ENTRY);
- rs=ps.executeQuery ();
- if (!rs.next())
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "issueTreatmentInvoice()",
- null,
- "CMN_ERR_1000");
- }
- // check if all approved injurys must have enter sickleave details
- GOSIUtilities.cleanUp(ps,rs);
- sqlQuery=new StringBuilder();
- sqlQuery.append("SELECT J.SOCINSNUMBER,J.INJURYID,J.INJURYDATE , ");
- sqlQuery.append("J.INJURYDATEENTFMT,J.DATECOMPLICATION,J.DATECOMPLICATIONENTFMT, ");
- sqlQuery.append("J.INJURYSTATUS,J.TRMTCLOSUREINJURYSTATUS , H.STARTDATE, H.INVOICENUMBER,S.STATUS ");
- sqlQuery.append("FROM t_REGHOSPINVOICEHDR H LEFT JOIN T_REGHOSPINVOICEDET D ON D.INVOICEHEADERID = H.INVOICEHEADERID ");
- sqlQuery.append("LEFT JOIN T_INJURY J ON J.INJURYID = D.INJURYID LEFT JOIN T_OHSICKLEAVE S ");
- sqlQuery.append("ON S.INJURYID = J.INJURYID AND S.MONTH =TO_CHAR(H.STARTDATE,'MM') ");
- sqlQuery.append("AND S.YEAR =TO_CHAR(H.STARTDATE,'YYYY') ");
- sqlQuery.append("WHERE H.INVOICEHEADERID = ? AND H.HOSPITALCODE= ? ");
- sqlQuery.append("AND J.INJURYSTATUS IN (?,?,?) ");
- sqlQuery.append("AND ( S.STATUS IS NULL OR S.STATUS <> ? OR J.TRMTCLOSUREINJURYSTATUS IS NULL ) ");
- ps = con.prepareStatement (sqlQuery.toString());
- index=0;
- ps.setLong(++index,invoiceHeaderId.longValue());
- ps.setLong(++index,hospitalCode.longValue());
- ps.setShort(++index,OHConstants.INJ_STS_APPROVED);
- ps.setShort(++index,OHConstants.INJ_STS_NOTIFIED);
- ps.setShort(++index,OHConstants.INJ_STS_FIRST_NOTIFIED);
- ps.setShort(++index,OHConstants.EXTN_SICKLEAVE_STS_APPROVED);
- rs = ps.executeQuery ();
- if (rs.next())
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "issueTreatmentInvoice()",
- null,
- "SOI_ERR_5970");
- }
- Boolean hasPendingServices =hasPendingTreatmentServices(invoiceHeaderId, new Long (0));
- RegHospitalInvoiceHeaderEntityHome treatmentInvoiceEntityHome = (RegHospitalInvoiceHeaderEntityHome)
- ServiceLocator.getInstance ().getRemoteHome (OHConstants.REG_HOSP_INVOICE_HEADER_ENTITY_JNDI, RegHospitalInvoiceHeaderEntityHome.class);
- RegHospitalInvoiceHeaderEntity treatmentInvoiceEntity = treatmentInvoiceEntityHome.findByPrimaryKey (invoiceHeaderId);
- if(hasPendingServices)
- treatmentInvoiceEntity.markRegHospInvoiceHeaderAsEntered (userBean.getUserCode());
- else
- recalculateTreatmentInvoiceHeaderCreatedByBatch(invoiceHeaderId,userBean);
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly ();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly ();
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "issueTreatmentInvoice()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- }
- /**
- * @METHOD NAME : getSFDAList
- * @INFORMATION : This method is to get SFDA Medicine List
- * List of hospital in Arraylist
- * @PARAM : None
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public ArrayList getSFDAList()throws GOSIException
- {
- ArrayList SFDAList = new ArrayList();
- SFDABean medicineBean = null;
- con = null;
- PreparedStatement ps = null;
- ResultSet rs = null;
- String sqlQuery = null;
- sqlQuery = "SELECT ID, REGISTRATIONNUM, GENERICNAME , TRADENAME, STRENGTHVALUE, " +
- "UNITOFSTRENGTH, DOSAGEFORM , ROUTEOFADMINISTRATION, ATCCODE1, ATCCODE2, VOLUME, " +
- "UNITOFVOLUME, PACKAGETYPE , PACKAGESIZE , LEGALSTATUS, PRODUCTCONTROL, PUBLICPRICE" +
- " , SHELFLIFE , STORAGECONDITIONS , MANUFACTURERNAME, COUNTRYOFMANUFACTURER " +
- ", MARKETINGCOMPANY,NATIONALITY , AGENTNAME , AUTHORIZATIONSTATUS , MARKETINGSTATUS" +
- " , REMARKS FROM T_SFDA";
- try
- {
- con = GOSIUtilities.getConnection(GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- // Load from the data base
- ps = con.prepareStatement(sqlQuery);
- rs = ps.executeQuery();
- while(rs.next())
- {
- medicineBean = new SFDABean();
- medicineBean.setId(rs.getLong("ID"));
- medicineBean.setRegistrationNumber(rs.getString("REGISTRATIONNUM"));
- medicineBean.setGenericName(rs.getString("GENERICNAME"));
- medicineBean.setTradeName(rs.getString("TRADENAME"));
- medicineBean.setStrengthValue(rs.getString("STRENGTHVALUE"));
- medicineBean.setUnitOfStrength(rs.getString("UNITOFSTRENGTH"));
- medicineBean.setDosageForm(rs.getString("DOSAGEFORM"));
- medicineBean.setRouteOfAdministration(rs.getString("ROUTEOFADMINISTRATION"));
- medicineBean.setAtcCode1(rs.getString("ATCCODE1"));
- medicineBean.setAtcCode2(rs.getString("ATCCODE2"));
- medicineBean.setVolume(rs.getString("VOLUME"));
- medicineBean.setUnitOfVolume(rs.getString("UNITOFVOLUME"));
- medicineBean.setPackageType(rs.getString("PACKAGETYPE"));
- medicineBean.setPackageSize(rs.getInt("PACKAGESIZE"));
- medicineBean.setLegalStatus(rs.getString("LEGALSTATUS"));
- medicineBean.setProductControl(rs.getString("PRODUCTCONTROL"));
- medicineBean.setPublicPrice(rs.getDouble("PUBLICPRICE"));
- medicineBean.setShelfLife(rs.getInt("SHELFLIFE"));
- medicineBean.setStorageConditions(rs.getString("STORAGECONDITIONS"));
- medicineBean.setManufacturername(rs.getString("MANUFACTURERNAME"));
- medicineBean.setCountryOfManufacturer(rs.getString("COUNTRYOFMANUFACTURER"));
- medicineBean.setMarketingCompany(rs.getString("MARKETINGCOMPANY"));
- medicineBean.setNationality(rs.getString("NATIONALITY"));
- medicineBean.setAgentName(rs.getString("AGENTNAME"));
- medicineBean.setAuthorizationStatus(rs.getString("AUTHORIZATIONSTATUS"));
- medicineBean.setMarketingStatus(rs.getString("MARKETINGSTATUS"));
- medicineBean.setRemarks(rs.getString("REMARKS"));
- SFDAList.add(medicineBean);
- }
- }
- catch(GOSIException ge)
- {
- GOSIDebug.debugMessages("The error in getTrtmServicesList is:"+ge);
- ctx.setRollbackOnly();
- throw ge;
- }
- catch(Exception se)
- {
- GOSIDebug.debugMessages("The error in getTrtmServicesList is:"+se);
- ctx.setRollbackOnly();
- se.printStackTrace();
- throw new GOSIException(GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getTrtmServicesList()",
- se,"CMN_ERR_1000" );
- }
- finally
- {
- GOSIUtilities.cleanUp(con, ps, rs);
- return SFDAList;
- }
- }
- /**
- * @METHOD NAME : isRegisteredHospital
- * @INFORMATION : This method is to delete Treatment Invoice
- * @PARAM : class java.lang.Long,
- class java.lang.Long,
- class java.lang.Long
- * @RETURN : void
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private boolean isRegisteredHospital(Long hospitalCode)
- throws GOSIException
- {
- boolean isRegistered = false;
- PreparedStatement ps = null;
- ResultSet rs = null;
- String sqlQuery = null;
- sqlQuery = " SELECT HOSPITALTYPE ";
- sqlQuery += " FROM " + SITables.T_HOSPITAL;
- sqlQuery += " WHERE HOSPITALCODE = ? " ;
- try
- {
- GOSIDebug.debugMessages("SQLQuery:" + sqlQuery + ":");
- GOSIDebug.debugMessages("\t\t Param 1 :" + hospitalCode.longValue() + ":");
- ps = con.prepareStatement(sqlQuery);
- ps.setLong(1,hospitalCode.longValue());
- rs = ps.executeQuery();
- if(rs.next())
- {
- if(OHConstants.REG_HOSPITAL.equals(new Short(rs.getShort("HOSPITALTYPE"))))
- {
- isRegistered = true;
- }
- }
- GOSIDebug.debugMessages("isRegisteredHospital:" + isRegistered + ":");
- return isRegistered;
- }
- catch (Exception e)
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "isRegisteredHospital()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(ps,rs);
- }
- }
- /**
- * @METHOD NAME : isTotalAmountOfInvoiceHeaderCorrect
- * @INFORMATION : This method is to check the total amount of inovices header
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @RETURN : boolean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- private boolean isTotalAmountOfInvoiceHeaderCorrect(RegHospInvoiceHeaderBean headerBean)
- throws GOSIException
- {
- /*
- * This method does not work when the discount percentage for the hospital has been changed
- * after the invoice has been entered or approved because the old hospital contract is no
- * longer linked (agreestatus indicator modified) and this results in invalid calculations.
- *
- * This cannot be fixed currently because there is no reliable way to extract data from the
- * previous contract. The starting and ending dates recorded in T_HOSPITALCONTRACT are missing
- * or incorrect.
- *
- * TODO: Rewrite last portion of the query to account for hospital contract changes while
- * invoice is in workflow, assuming data in T_HOSPITALCONTRACT has been restructured
- * or add a new exception for the affected invoice in the caller method to selectively
- * disable validation.
- *
- * January 12, 2014.
- */
- boolean isCorrect = false;
- PreparedStatement ps = null;
- ResultSet rs = null;
- StringBuilder sqlQuery = new StringBuilder();
- Double correctTotalAmount=null;
- Double correctDiscountAmount =null;
- Double invTotalAmount=null;
- Double invDiscountAmount =null;
- Double diffTotalAmount=null;
- Double diffDiscountAmount =null;
- sqlQuery.append("SELECT total.INVOICEHEADERID AS INVOICEHEADERID,");
- sqlQuery.append(" total.TOTALAMOUNT AS TOTALAMOUNT,");
- sqlQuery.append(" ( (total.totalServices * disc.discountServices)");
- sqlQuery.append(" + (total.totalMedicion * disc.discountmedicions))");
- sqlQuery.append(" AS DISCOUNTAMOUNT");
- sqlQuery.append(" FROM ( ");
- sqlQuery.append(" SELECT D.INVOICEHEADERID AS INVOICEHEADERID,");
- sqlQuery.append(" ( ( SUM (NVL (d.SERVICESAMOUNT, 0))");
- sqlQuery.append(" - SUM (NVL (D.REJECTEDSERVICESAMOUNT, 0)))");
- sqlQuery.append(" + ( SUM (NVL (D.MEDICINESAMOUNT, 0))");
- sqlQuery.append(" - SUM (NVL (D.REJECTEDMEDICINESAMOUNT, 0)))");
- sqlQuery.append(" + ( SUM (NVL (D.NONDISCOUNTAMOUNT, 0))");
- sqlQuery.append(" - SUM (NVL (D.REJECTEDNONDISCOUNTAMOUNT, 0))))");
- sqlQuery.append(" AS TOTALAMOUNT,");
- sqlQuery.append(" ( ( SUM (NVL (d.SERVICESAMOUNT, 0))");
- sqlQuery.append(" - SUM (NVL (D.REJECTEDSERVICESAMOUNT, 0))))");
- sqlQuery.append(" AS totalServices,");
- sqlQuery.append(" ( ( SUM (NVL (D.MEDICINESAMOUNT, 0))");
- sqlQuery.append(" - SUM (NVL (D.REJECTEDMEDICINESAMOUNT, 0))))");
- sqlQuery.append(" AS totalMedicion");
- sqlQuery.append(" FROM (SELECT DET.INVOICEHEADERID, result.*");
- sqlQuery.append(" FROM T_REGHOSPINVOICEDET det");
- sqlQuery.append(" LEFT JOIN");
- sqlQuery.append(" (SELECT NVL(NVL (serv.INVOICEDETAILSID,");
- sqlQuery.append(" med.INVOICEDETAILSID),servNonDis.INVOICEDETAILSID)");
- sqlQuery.append(" AS INVOICEDETAILSID,");
- sqlQuery.append(" NVL (serv.SERVICESAMOUNT, 0)");
- sqlQuery.append(" AS SERVICESAMOUNT,");
- sqlQuery.append(" NVL (serv.REJECTEDSERVICESAMOUNT, 0)");
- sqlQuery.append(" AS REJECTEDSERVICESAMOUNT,");
- sqlQuery.append(" NVL (servNonDis.SERVICESAMOUNT, 0)");
- sqlQuery.append(" AS NONDISCOUNTAMOUNT,");
- sqlQuery.append(" NVL (servNonDis.REJECTEDSERVICESAMOUNT, 0)");
- sqlQuery.append(" AS REJECTEDNONDISCOUNTAMOUNT,");
- sqlQuery.append(" NVL (med.MEDICINESAMOUNT, 0)");
- sqlQuery.append(" AS MEDICINESAMOUNT,");
- sqlQuery.append(" NVL (med.REJECTEDMEDICINESAMOUNT, 0)");
- sqlQuery.append(" AS REJECTEDMEDICINESAMOUNT");
- sqlQuery.append(" FROM ( SELECT TH.INVOICEDETAILSID,");
- sqlQuery.append(" SUM (TD.TRMTAMT)");
- sqlQuery.append(" AS SERVICESAMOUNT,");
- sqlQuery.append(" SUM (TD.REJECTEDTRMTAMT)");
- sqlQuery.append(" AS REJECTEDSERVICESAMOUNT");
- sqlQuery.append(" FROM T_REGHOSPINVOICEDET hd");
- sqlQuery.append(" LEFT JOIN T_TRMTSERVICESHDR th");
- sqlQuery.append(" ON TH.INVOICEDETAILSID =");
- sqlQuery.append(" HD.INVOICEDETAILSID");
- sqlQuery.append(" LEFT JOIN T_TRMTSERVICESDET td");
- sqlQuery.append(" ON TD.TRMTSERVICEHDRID =");
- sqlQuery.append(" TH.TRMTSERVICEHDRID");
- sqlQuery.append(" WHERE TD.ICD10TRMTDIAGNOSISCODE <> ?");
- sqlQuery.append(" AND TD.ISNONDISCOUNT= ?");
- sqlQuery.append(" AND TD.TRMTSRVCSTATUS NOT IN (?, ?)");
- sqlQuery.append(" GROUP BY TH.INVOICEDETAILSID) serv");
- sqlQuery.append(" FULL JOIN");
- sqlQuery.append(" ( SELECT TH.INVOICEDETAILSID,");
- sqlQuery.append(" SUM (TD.TRMTAMT)");
- sqlQuery.append(" AS SERVICESAMOUNT,");
- sqlQuery.append(" SUM (TD.REJECTEDTRMTAMT)");
- sqlQuery.append(" AS REJECTEDSERVICESAMOUNT");
- sqlQuery.append(" FROM T_REGHOSPINVOICEDET hd");
- sqlQuery.append(" LEFT JOIN T_TRMTSERVICESHDR th");
- sqlQuery.append(" ON TH.INVOICEDETAILSID =");
- sqlQuery.append(" HD.INVOICEDETAILSID");
- sqlQuery.append(" LEFT JOIN T_TRMTSERVICESDET td");
- sqlQuery.append(" ON TD.TRMTSERVICEHDRID =");
- sqlQuery.append(" TH.TRMTSERVICEHDRID");
- sqlQuery.append(" WHERE TD.ICD10TRMTDIAGNOSISCODE <> ?");
- sqlQuery.append(" AND TD.ISNONDISCOUNT= ?");
- sqlQuery.append(" AND TD.TRMTSRVCSTATUS NOT IN (?, ?)");
- sqlQuery.append(" GROUP BY TH.INVOICEDETAILSID) servNonDis");
- sqlQuery.append(" ON serv.INVOICEDETAILSID =");
- sqlQuery.append(" servNonDis.INVOICEDETAILSID");
- sqlQuery.append(" FULL JOIN");
- sqlQuery.append(" ( SELECT TH.INVOICEDETAILSID,");
- sqlQuery.append(" SUM (TD.TRMTAMT)");
- sqlQuery.append(" AS MEDICINESAMOUNT,");
- sqlQuery.append(" SUM (TD.REJECTEDTRMTAMT)");
- sqlQuery.append(" AS REJECTEDMEDICINESAMOUNT");
- sqlQuery.append(" FROM T_REGHOSPINVOICEDET hd");
- sqlQuery.append(" LEFT JOIN T_TRMTSERVICESHDR th");
- sqlQuery.append(" ON TH.INVOICEDETAILSID =");
- sqlQuery.append(" HD.INVOICEDETAILSID");
- sqlQuery.append(" LEFT JOIN T_TRMTSERVICESDET td");
- sqlQuery.append(" ON TD.TRMTSERVICEHDRID =");
- sqlQuery.append(" TH.TRMTSERVICEHDRID");
- sqlQuery.append(" WHERE TD.ICD10TRMTDIAGNOSISCODE = ?");
- sqlQuery.append(" AND TD.TRMTSRVCSTATUS NOT IN (?, ?)");
- sqlQuery.append(" GROUP BY TH.INVOICEDETAILSID) med");
- sqlQuery.append(" ON serv.INVOICEDETAILSID =");
- sqlQuery.append(" med.INVOICEDETAILSID) result");
- sqlQuery.append(" ON DET.INVOICEDETAILSID = result.INVOICEDETAILSID");
- sqlQuery.append(" WHERE det.INVOICEHEADERID = ? ) d");
- sqlQuery.append(" GROUP BY d.INVOICEHEADERID) total,");
- sqlQuery.append(" (SELECT H.HOSPITALCODE,");
- sqlQuery.append(" NVL (discList.DISCOUNTSERVICES, 0) AS DISCOUNTSERVICES,");
- sqlQuery.append(" NVL (discList.DISCOUNTMEDICIONS, 0) AS DISCOUNTMEDICIONS");
- sqlQuery.append(" FROM T_HOSPITAL h");
- sqlQuery.append(" FULL JOIN");
- sqlQuery.append(" (SELECT ser.HOSPITALCODE,");
- sqlQuery.append(" NVL (ser.discSer, 0) AS discountServices,");
- sqlQuery.append(" NVL (med.discMed, 0) AS discountmedicions");
- sqlQuery.append(" FROM (SELECT A.HOSPITALCODE AS HOSPITALCODE,");
- sqlQuery.append(" B.DISCPERCENTAGE / 100 AS discSer");
- sqlQuery.append(" FROM T_HOSPITALCONTRACT a,");
- sqlQuery.append(" T_HOSPITALDISCOUNT b");
- sqlQuery.append(" WHERE a.hospcontrid = b.hospitalcontractid");
- sqlQuery.append(" AND a.agreestatus = ?");
- sqlQuery.append(" AND B.DISCOUNTTYPE = ?) ser");
- sqlQuery.append(" FULL JOIN");
- sqlQuery.append(" (SELECT A.HOSPITALCODE AS HOSPITALCODE,");
- sqlQuery.append(" B.DISCPERCENTAGE / 100 AS discMed");
- sqlQuery.append(" FROM T_HOSPITALCONTRACT a,");
- sqlQuery.append(" T_HOSPITALDISCOUNT b");
- sqlQuery.append(" WHERE a.hospcontrid = b.hospitalcontractid");
- sqlQuery.append(" AND a.agreestatus = ?");
- sqlQuery.append(" AND B.DISCOUNTTYPE = ?) med");
- sqlQuery.append(" ON ser.HOSPITALCODE = med.HOSPITALCODE) discList");
- sqlQuery.append(" ON H.HOSPITALCODE = discList.HOSPITALCODE");
- sqlQuery.append(" WHERE H.HOSPITALCODE = ?) disc");
- try
- {
- GOSIDebug.debugMessages("SQLQuery:" + sqlQuery + ":");
- GOSIDebug.debugMessages("\t\t Param 1 :" + OHConstants.ICD_MEDICINE_CODE + ":");
- GOSIDebug.debugMessages("\t\t Param 2 :" + OHConstants.TRTM_ISNONDISCOUNT_NO + ":");
- GOSIDebug.debugMessages("\t\t Param 3 :" + OHConstants.TRMT_SRVC_STS_REJECTED + ":");
- GOSIDebug.debugMessages("\t\t Param 4 :" + OHConstants.TRMT_SRVC_STS_CANCELLED + ":");
- GOSIDebug.debugMessages("\t\t Param 5 :" + OHConstants.ICD_MEDICINE_CODE + ":");
- GOSIDebug.debugMessages("\t\t Param 6 :" + OHConstants.TRTM_ISNONDISCOUNT_YES + ":");
- GOSIDebug.debugMessages("\t\t Param 7 :" + OHConstants.TRMT_SRVC_STS_REJECTED + ":");
- GOSIDebug.debugMessages("\t\t Param 8 :" + OHConstants.TRMT_SRVC_STS_CANCELLED + ":");
- GOSIDebug.debugMessages("\t\t Param 9 :" + OHConstants.ICD_MEDICINE_CODE + ":");
- GOSIDebug.debugMessages("\t\t Param 10 :" + OHConstants.TRMT_SRVC_STS_REJECTED + ":");
- GOSIDebug.debugMessages("\t\t Param 11 :" + OHConstants.TRMT_SRVC_STS_CANCELLED + ":");
- GOSIDebug.debugMessages("\t\t Param 12 :" + headerBean.getInvoiceHeaderId().longValue() + ":");
- GOSIDebug.debugMessages("\t\t Param 13 :" + OHConstants.AGREESTATUS_YES + ":");
- GOSIDebug.debugMessages("\t\t Param 14 :" + OHConstants.DISC_SERVICES+ ":");
- GOSIDebug.debugMessages("\t\t Param 15 :" + OHConstants.AGREESTATUS_YES + ":");
- GOSIDebug.debugMessages("\t\t Param 16 :" + OHConstants.DISC_MEDICINES+ ":");
- GOSIDebug.debugMessages("\t\t Param 17 :" + headerBean.getHospitalCode().longValue() + ":");
- con = GOSIUtilities.getConnection
- (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement(sqlQuery.toString());
- int i=0;
- ps.setString(++i,OHConstants.ICD_MEDICINE_CODE);
- ps.setByte(++i,OHConstants.TRTM_ISNONDISCOUNT_NO);
- ps.setShort(++i, OHConstants.TRMT_SRVC_STS_REJECTED);
- ps.setShort(++i, OHConstants.TRMT_SRVC_STS_CANCELLED);
- ps.setString(++i,OHConstants.ICD_MEDICINE_CODE);
- ps.setByte(++i,OHConstants.TRTM_ISNONDISCOUNT_YES);
- ps.setShort(++i, OHConstants.TRMT_SRVC_STS_REJECTED);
- ps.setShort(++i, OHConstants.TRMT_SRVC_STS_CANCELLED);
- ps.setString(++i,OHConstants.ICD_MEDICINE_CODE);
- ps.setShort(++i, OHConstants.TRMT_SRVC_STS_REJECTED);
- ps.setShort(++i, OHConstants.TRMT_SRVC_STS_CANCELLED);
- ps.setLong(++i,headerBean.getInvoiceHeaderId().longValue());
- ps.setByte(++i,OHConstants.AGREESTATUS_YES);
- ps.setByte(++i,OHConstants.DISC_SERVICES);
- ps.setByte(++i,OHConstants.AGREESTATUS_YES);
- ps.setByte(++i,OHConstants.DISC_MEDICINES);
- ps.setLong(++i,headerBean.getHospitalCode().longValue());
- rs = ps.executeQuery();
- if(rs.next())
- {
- correctTotalAmount=new Double(rs.getDouble("TOTALAMOUNT"));
- correctDiscountAmount=new Double(rs.getDouble("DISCOUNTAMOUNT"));
- invTotalAmount=headerBean.getTotalAmount();
- invDiscountAmount=headerBean.getDiscountAmount();
- diffTotalAmount=invTotalAmount-correctTotalAmount;
- diffDiscountAmount =invDiscountAmount-correctDiscountAmount;
- GOSIDebug.debugMessages("invoice total amount is :"+invTotalAmount.intValue() +" the correct total amount :"+correctTotalAmount.intValue());
- GOSIDebug.debugMessages("invoice discount amount is :"+invDiscountAmount.intValue() +" the correct discount amount :"+correctDiscountAmount.intValue());
- if((diffTotalAmount>-1 && diffTotalAmount<1) && (diffDiscountAmount>-1 && diffDiscountAmount<1))
- isCorrect=true;
- }
- GOSIDebug.debugMessages("isRegisteredHospital:" + isCorrect + ":");
- return isCorrect;
- }
- catch (Exception e)
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "isTotalAmountOfInvoiceHeaderCorrect()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(con,ps,rs);
- }
- }
- /**
- * @METHOD NAME : getRegInvoiceTreatmentServicesDetails
- * @INFORMATION : This method is to check the total amount of inovices header
- * @PARAM : class java.lang.Long
- * @RETURN : class java.util.ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public ArrayList getRegInvoiceTreatmentServicesDetails(Long invoiceHeaderId)
- throws GOSIException
- {
- ArrayList details = new ArrayList();
- PreparedStatement ps = null;
- ResultSet rs = null;
- StringBuilder sqlQuery = new StringBuilder();
- sqlQuery.append("SELECT RD.SOCIALINSURANCENUMBER AS SOCINSNUMBER, ");
- sqlQuery.append("NVL (M.SESSIONDATE, j.injurydate) AS caseDate, ");
- sqlQuery.append("TH.PATIENTNUMBER AS patientNumber, ");
- sqlQuery.append("p.firstname ");
- sqlQuery.append("|| ' ' ");
- sqlQuery.append("|| NVL (p.secondname, '') ");
- sqlQuery.append("|| ' '");
- sqlQuery.append("|| NVL (p.thirdname, '') ");
- sqlQuery.append("|| ' ' ");
- sqlQuery.append("|| NVL (p.surname, '') ");
- sqlQuery.append("AS CONTRIBUTORNAME, ");
- sqlQuery.append("NVL (TD.SFDACODE, TD.ICD10TRMTDIAGNOSISCODE) AS SERVICECODE, ");
- sqlQuery.append("CASE TD.ICD10TRMTDIAGNOSISCODE ");
- sqlQuery.append("WHEN ? THEN ? ");
- sqlQuery.append("ELSE ? ");
- sqlQuery.append("END ");
- sqlQuery.append("AS SERVICETYPE, ");
- sqlQuery.append("TD.TRMTDESC, ");
- sqlQuery.append("TD.TRMTDATE, ");
- sqlQuery.append("TD.UNITS, ");
- sqlQuery.append("TD.APPROVEDUNITS, ");
- sqlQuery.append("TD.UNITPRICE, ");
- sqlQuery.append("TD.DISCOUNTPERCENTAGE AS ADDITIONALDISCOUNTERCENTAGE, ");
- sqlQuery.append("TD.TRMTAMT, ");
- sqlQuery.append("TD.APPROVEDDISCPERCENTAGE, ");
- sqlQuery.append("NVL (TD.REJECTEDTRMTAMT, 0) AS REJECTEDTRMTAMT, ");
- sqlQuery.append("TD.REASONFORDEDUCTION, ");
- sqlQuery.append("TD.TRMTSRVCSTATUS ");
- sqlQuery.append("FROM t_REGHOSPINVOICEDET rd ");
- sqlQuery.append("LEFT JOIN T_TRMTSERVICESHDR th ");
- sqlQuery.append("ON rd.INVOICEDETAILSID = th.INVOICEDETAILSID ");
- sqlQuery.append("LEFT JOIN T_TRMTSERVICESDET td ");
- sqlQuery.append("ON th.TRMTSERVICEHDRID = td.TRMTSERVICEHDRID ");
- sqlQuery.append("LEFT JOIN t_INJURY j ");
- sqlQuery.append("ON J.INJURYID = TH.INJURYID ");
- sqlQuery.append("LEFT JOIN T_DISBASSMT d ");
- sqlQuery.append("ON D.SCHEDULEID = TH.DISASSMTID ");
- sqlQuery.append("LEFT JOIN T_MBAPPOINTMENT m ");
- sqlQuery.append("ON M.SCHEDULEID = D.SCHEDULEID ");
- sqlQuery.append("LEFT JOIN T_CONTRIBUTOR c ");
- sqlQuery.append("ON C.SOCIALINSURANCENUMBER = RD.SOCIALINSURANCENUMBER ");
- sqlQuery.append("LEFT JOIN T_PERSON p ");
- sqlQuery.append("ON P.PERSONID = C.PERSONID ");
- sqlQuery.append("WHERE RD.INVOICEHEADERID = ? AND TD.TRMTSRVCSTATUS <> ? ");
- try
- {
- GOSIDebug.debugMessages("SQLQuery:" + sqlQuery + ":");
- GOSIDebug.debugMessages("\t\t Param 1 :" + OHConstants.ICD_MEDICINE_CODE + ":");
- GOSIDebug.debugMessages("\t\t Param 2 :" + OHConstants.ICD_MEDICINE_CODE + ":");
- GOSIDebug.debugMessages("\t\t Param 3 :" + OHConstants.ICD_SERVICE_CODE + ":");
- GOSIDebug.debugMessages("\t\t Param 4 :" + invoiceHeaderId+ ":");
- GOSIDebug.debugMessages("\t\t Param 5 :" + OHConstants.TRMT_SRVC_STS_CANCELLED+ ":");
- con = GOSIUtilities.getConnection
- (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement(sqlQuery.toString());
- int i=0;
- ps.setString(++i,OHConstants.ICD_MEDICINE_CODE);
- ps.setString(++i,OHConstants.ICD_MEDICINE_CODE);
- ps.setString(++i,OHConstants.ICD_SERVICE_CODE);
- ps.setLong(++i,invoiceHeaderId);
- ps.setShort(++i,OHConstants.TRMT_SRVC_STS_CANCELLED);
- rs = ps.executeQuery();
- while(rs.next())
- {
- TreatmentServiceBean trmtBean=new TreatmentServiceBean();
- trmtBean.setSocInsNumber(rs.getLong("SOCINSNUMBER"));
- trmtBean.setInjurySessionDate(rs.getTimestamp("caseDate"));
- trmtBean.setPatientNumber(rs.getString("patientNumber"));
- trmtBean.setContributorName (rs.getString("CONTRIBUTORNAME"));
- trmtBean.setTrmtDateGreg(rs.getTimestamp("TRMTDATE"));
- trmtBean.setTrmtCode(rs.getString("SERVICECODE"));
- trmtBean.setTrmtType(rs.getString("SERVICETYPE"));
- trmtBean.setTrmtDesc(rs.getString("TRMTDESC"));
- trmtBean.setUnits(rs.getFloat("UNITS"));
- trmtBean.setApprovedUnits(rs.getFloat("APPROVEDUNITS"));
- trmtBean.setUnitPrice(rs.getDouble("UNITPRICE"));
- trmtBean.setDiscountPercentage(rs.getDouble("ADDITIONALDISCOUNTERCENTAGE"));
- trmtBean.setTrmtAmt(rs.getDouble("TRMTAMT"));
- trmtBean.setApprovedDiscPercentage(rs.getDouble("APPROVEDDISCPERCENTAGE"));
- trmtBean.setRejectedTrmtAmt(rs.getDouble("REJECTEDTRMTAMT"));
- trmtBean.setReasonForDeduction(rs.getString("REASONFORDEDUCTION"));
- trmtBean.setTrmtStatus(rs.getShort("TRMTSRVCSTATUS"));
- details.add(trmtBean);
- }
- return details;
- }
- catch (Exception e)
- {
- throw new GOSIException( GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getRegInvoiceTreatmentServicesDetails()",e,"CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp(con,ps,rs);
- }
- }
- /**
- * @METHOD NAME : canUploadInoviceByHospital
- * @INFORMATION : This method is can upload Treatment Invoice
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @RETURN : String
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public String canUploadInoviceByHospital (RegHospInvoiceHeaderBean treatmentInvoiceBean) throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- String SerialNumber="01";
- try
- {
- if (treatmentInvoiceBean.getYear() > Calendar.getInstance().get(Calendar.YEAR))
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "canUploadInoviceByHospital()",
- null,
- "SOI_ERR_5855");
- }
- else if (treatmentInvoiceBean.getYear() == Calendar.getInstance().get(Calendar.YEAR))
- {
- if (treatmentInvoiceBean.getMonth() > Calendar.getInstance().get(Calendar.MONTH))
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "canUploadInoviceByHospital()",
- null,
- "SOI_ERR_5856");
- }
- }
- else if (treatmentInvoiceBean.getYear() < Calendar.getInstance().get(Calendar.YEAR) - 1)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "canUploadInoviceByHospital()",
- null,
- "SOI_ERR_5857");
- }
- GregorianCalendar calendar = new GregorianCalendar (treatmentInvoiceBean.getYear(), treatmentInvoiceBean.getMonth(), 1);
- treatmentInvoiceBean.setStartDate (new Timestamp(calendar.getTime().getTime()));
- treatmentInvoiceBean.setStartDateEntFmt (OHConstants.GREGORIAN);
- calendar.set (Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
- treatmentInvoiceBean.setEndDate (new Timestamp(calendar.getTime().getTime()));
- treatmentInvoiceBean.setEndDateEntFmt (OHConstants.GREGORIAN);
- // check if exist invoice entered by Office
- StringBuilder sqlQuery = new StringBuilder();
- sqlQuery.append("SELECT COUNT (*) AS num_invoices ");
- sqlQuery.append(" FROM " + SITables.T_REGHOSPINVOICEHDR);
- sqlQuery.append( " WHERE hospitalcode = ? " );
- sqlQuery.append(" AND startdate = ? " );
- sqlQuery.append(" AND invoicestatus not in (?) AND filenumber is not null");
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery.toString());
- ps.setLong (1, treatmentInvoiceBean.getHospitalCode());
- ps.setTimestamp (2, treatmentInvoiceBean.getStartDate());
- ps.setShort (3, OHConstants.REG_HOSP_INVC_CANCELLED);
- rs = ps.executeQuery ();
- if (rs.next() && rs.getInt("NUM_INVOICES") > 0)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "canUploadInoviceByHospital()",
- null,
- "SOI_ERR_5858");
- }
- // check if exist invoice entered by hospital and has been issued
- /*
- GOSIUtilities.cleanUp (ps, rs);
- sqlQuery = new StringBuilder();
- sqlQuery.append("SELECT COUNT (*) AS num_invoices ");
- sqlQuery.append(" FROM " + SITables.T_REGHOSPINVOICEHDR);
- sqlQuery.append(" WHERE hospitalcode = ? " );
- sqlQuery.append(" AND startdate = ? " );
- sqlQuery.append(" AND invoicestatus not in (?,?) AND filenumber is null ");
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery.toString());
- ps.setLong (1, treatmentInvoiceBean.getHospitalCode());
- ps.setTimestamp (2, treatmentInvoiceBean.getStartDate());
- ps.setShort (3, OHConstants.REG_HOSP_INVC_CANCELLED);
- ps.setShort (4, OHConstants.REG_HOSP_INVC_PENDING_DATA_ENTRY);
- rs = ps.executeQuery ();
- if (rs.next() && rs.getInt("NUM_INVOICES") > 0)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "canUploadInoviceByHospital()",
- null,
- "SOI_ERR_5975");
- }
- /*
- GOSIUtilities.cleanUp (ps, rs);
- sqlQuery = "SELECT effectivestartdate, effectiveenddate " +
- " FROM " + SITables.T_HOSPITALFOASSOCIATION +
- " WHERE hospitalcode = ? " +
- " AND fieldofficecode = ? ";
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, treatmentInvoiceBean.getHospitalCode());
- ps.setShort (2, treatmentInvoiceBean.getFieldOffice());
- rs = ps.executeQuery ();
- if (! rs.next())
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "createTreatmentInvoice()",
- null,
- "SOI_ERR_5859");
- }
- else
- {
- boolean hasValidFOAssociation = false;
- do
- {
- if (rs.getTimestamp("EFFECTIVESTARTDATE").before(treatmentInvoiceBean.getStartDate()) &&
- (rs.getTimestamp("EFFECTIVEENDDATE") == null || rs.getTimestamp("EFFECTIVEENDDATE").after(treatmentInvoiceBean.getEndDate())))
- {
- hasValidFOAssociation = true;
- break;
- }
- }
- while (rs.next());
- if (! hasValidFOAssociation)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "createTreatmentInvoice()",
- null,
- "SOI_ERR_5860");
- }
- }
- */
- GOSIUtilities.cleanUp (ps, rs);
- sqlQuery = new StringBuilder();
- sqlQuery.append("SELECT contrstdate, contrenddate ");
- sqlQuery.append(" FROM " + SITables.T_HOSPITALCONTRACT );
- sqlQuery.append(" WHERE hospitalcode = ? " );
- sqlQuery.append(" AND agreestatus = ? ");
- ps = con.prepareStatement (sqlQuery.toString());
- ps.setLong (1, treatmentInvoiceBean.getHospitalCode());
- ps.setShort (2, OHConstants.AGREESTATUS_YES);
- rs = ps.executeQuery ();
- if (! rs.next())
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "canUploadInoviceByHospital()",
- null,
- "SOI_ERR_5861");
- }
- else
- {
- boolean hasContractCoverage = false;
- do
- {
- boolean isBefore= (rs.getTimestamp("CONTRSTDATE").before(treatmentInvoiceBean.getStartDate()) ||Objects.equals( rs.getTimestamp("CONTRSTDATE"),treatmentInvoiceBean.getStartDate())) ? true : false ;
- boolean isAfter = (rs.getTimestamp("CONTRENDDATE") == null || rs.getTimestamp("CONTRENDDATE").after(treatmentInvoiceBean.getEndDate()))? true : false ;
- if ( isBefore && isAfter )
- {
- hasContractCoverage = true;
- break;
- }
- }
- while (rs.next());
- if (! hasContractCoverage)
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "canUploadInoviceByHospital()",
- null,
- "SOI_ERR_5862");
- }
- }
- GOSIUtilities.cleanUp (ps, rs);
- sqlQuery=new StringBuilder();
- sqlQuery.append("select FILESTATUS from T_FILEUPLOADINFO where MAPPINGKEY= ? and FILETYPE= ?");
- sqlQuery.append(" AND YEAR=? AND MONTH =? ");
- ps = con.prepareStatement (sqlQuery.toString());
- ps.setString (1, treatmentInvoiceBean.getHospitalCode().toString());
- ps.setShort (2, OHConstants.INVOICE_FILE_TYPE);
- ps.setInt(3, treatmentInvoiceBean.getYear());
- ps.setInt(4, treatmentInvoiceBean.getMonth()+1);
- rs = ps.executeQuery ();
- int counter=1;
- while ( rs.next())
- {
- Short status=rs.getShort("FILESTATUS");
- if(status.equals(OHConstants.INVOICE_FILE_STATUS_PENDING_ENTRY)
- ||status.equals(OHConstants.INVOICE_FILE_STATUS_PENDING_VALIDATATION))
- {
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "canUploadInoviceByHospital()",
- null,
- "SOI_ERR_5958");
- }
- counter++;
- }
- if(counter==1)
- {
- SerialNumber="01";
- }
- else if(counter<10)
- {
- SerialNumber="0"+counter;
- }
- else
- {
- SerialNumber=counter+"";
- }
- return SerialNumber;
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly ();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly ();
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "canUploadInoviceByHospital()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- }
- /**
- * @METHOD NAME : getFileUploadHistory
- * @INFORMATION : This method is can upload Treatment Invoice
- * @PARAM : class java.lang.Long
- * @RETURN : ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public ArrayList getFileUploadHistory (Long hospitalCode)throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- ArrayList fileUploadHistoryList=new ArrayList();
- Timestamp currentDate = new Timestamp(System.currentTimeMillis());
- try
- {
- String sqlQuery = "SELECT A.FILEUPLOADINFOID,A.FILENAME,A.USERID,A.LOCATION,A.FILETYPE,A.UPLOADDATE, "
- +" A.YEAR,A.MONTH,A.CREATEDBY ,A.FILESTATUS, A.MAPPINGKEY,A.CREATIONTIMESTAMP, U.LONGNAMEARABIC FROM "
- + "T_FILEUPLOADINFO A LEFT JOIN T_USER_INTERNET U ON U.id=A.CREATEDBY WHERE A.MAPPINGKEY =? AND A.FILETYPE = ? "
- + "AND A.YEAR IS NOT NULL AND A.MONTH IS NOT NULL ORDER BY A.CREATIONTIMESTAMP desc";
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery);
- ps.setLong (1, hospitalCode);
- ps.setShort (2, OHConstants.INVOICE_FILE_TYPE);
- rs = ps.executeQuery ();
- while(rs.next())
- {
- FileUploadInfoBean fileBean=new FileUploadInfoBean();
- if(rs.getObject("FILEUPLOADINFOID")!= null)
- {
- fileBean.setFileUploadInfoId((new Long(rs.getLong("FILEUPLOADINFOID"))));
- }
- if(rs.getObject("FILENAME")!=null)
- {
- fileBean.setFileName(rs.getString("FILENAME"));
- }
- if(rs.getObject("USERID")!= null)
- {
- fileBean.setUserId((new Long(rs.getLong("USERID"))));
- }
- if(rs.getObject("LOCATION")!= null)
- {
- fileBean.setLocation((new Short(rs.getShort("LOCATION"))));
- }
- if(rs.getObject("FILETYPE")!= null)
- {
- fileBean.setFileType((new Short(rs.getShort("FILETYPE"))));
- }
- if(rs.getObject("UPLOADDATE")!= null)
- {
- fileBean.setUploadDate(rs.getTimestamp("UPLOADDATE"));
- }
- if(rs.getObject("CREATEDBY")!= null)
- {
- fileBean.setCreatedBy(rs.getLong("CREATEDBY"));
- }
- if(rs.getObject("FILESTATUS")!= null)
- {
- fileBean.setFileStatus(rs.getShort("FILESTATUS"));
- }
- if(rs.getObject("MAPPINGKEY")!= null)
- {
- fileBean.setMappingKey(rs.getString("MAPPINGKEY"));
- }
- if(rs.getObject("YEAR")!= null)
- {
- fileBean.setYear(rs.getInt("YEAR"));
- }
- if(rs.getObject("MONTH")!= null)
- {
- fileBean.setMonth(rs.getInt("MONTH"));
- }
- if(rs.getObject("CREATIONTIMESTAMP")!= null)
- {
- fileBean.setCreationTimestamp(rs.getTimestamp("CREATIONTIMESTAMP"));
- }
- if(rs.getObject("LONGNAMEARABIC")!= null)
- {
- fileBean.setGivenFileName(rs.getString("LONGNAMEARABIC"));
- }
- fileUploadHistoryList.add(fileBean);
- }
- return fileUploadHistoryList;
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly ();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly ();
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getFileUploadHistory()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- }
- /**
- * @METHOD NAME : getSummaryEClaimFileResult
- * @INFORMATION : This method is can upload Treatment Invoice
- * @PARAM : class java.lang.Long
- * @RETURN : ArrayList
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY :
- * @LAST MODIFIED DATE :
- **/
- public SummayEClaimFileResultBean getSummaryEClaimFileResult (Long hospitalCode , int month , int year)throws GOSIException
- {
- PreparedStatement ps = null;
- ResultSet rs = null;
- Timestamp startDate = null;
- Timestamp endDate = null;
- int totalNumberRecord=0;
- int totalNumberCorrectRecord=0;
- int totalNumberErroneousRecord=0;
- Double percentageCorrectRecord=0.0;
- Double percentageErroneousRecord=0.0;
- ArrayList summaryECalimError =new ArrayList();
- SummayEClaimFileResultBean summayEClaimFileResultBean = new SummayEClaimFileResultBean();
- try
- {
- StringBuilder sqlQuery = new StringBuilder();
- sqlQuery.append("SELECT B.ERRORCODE, B.ERRORMESSAGEEN, B.ERRORMESSAGEAR, C.ERRORCODE AS PROCCODE, C.ERRORMESSAGEEN AS PROCDESCENG ,C.ERRORMESSAGEAR AS PROCDESCARB , ");
- sqlQuery.append(" COUNT (*) AS TOTAL, MIN (A.TRMTDATE) AS STARTDATE , MAX (A.TRMTDATE) AS ENDDATE FROM T_REGHOSPINVOICEFILE A ");
- sqlQuery.append(" LEFT JOIN T_BATCHERRORMESSAGES B ON B.ERRORCODE = TRIM (A.ERRORCODE) ");
- sqlQuery.append(" LEFT JOIN T_BATCHERRORMESSAGES C ON C.ERRORCODE = REPLACE (TRIM (A.ERRORCODE), 'ERR', 'MSG') ");
- sqlQuery.append(" WHERE FILEID IN(SELECT FILEUPLOADINFOID FROM T_FILEUPLOADINFO WHERE MAPPINGKEY = ? AND FILETYPE=? AND MONTH = ? AND YEAR = ? ) ");
- sqlQuery.append(" AND ( A.TRMTSERVICEDETID IS NOT NULL OR TRIM (A.ERRORCODE) NOT IN ('OHZ_022_ERR_073', 'OHZ_022_ERR_015')) ");
- sqlQuery.append(" GROUP BY B.ERRORCODE,B.ERRORMESSAGEEN,B.ERRORMESSAGEAR,C.ERRORCODE,C.ERRORMESSAGEEN,C.ERRORMESSAGEAR ORDER BY COUNT (*) DESC ");
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery.toString());
- int i=0;
- ps.setLong (++i, hospitalCode);
- ps.setShort (++i, OHConstants.INVOICE_FILE_TYPE);
- ps.setLong (++i, month);
- ps.setLong (++i, year);
- rs = ps.executeQuery ();
- while(rs.next())
- {
- SummayEClaimErrorBean summayEClaimErrorBean=new SummayEClaimErrorBean();
- if(rs.getObject("ERRORCODE")!= null)
- {
- summayEClaimErrorBean.setErrorCode(rs.getString("ERRORCODE"));
- if(rs.getObject("ERRORMESSAGEEN")!= null)
- {
- summayEClaimErrorBean.setErrorDescriptionEng(rs.getString("ERRORMESSAGEEN"));
- }
- if(rs.getObject("ERRORMESSAGEAR")!= null)
- {
- summayEClaimErrorBean.setErrorDescriptionArb(rs.getString("ERRORMESSAGEAR"));
- }
- if(rs.getObject("PROCCODE")!= null)
- {
- summayEClaimErrorBean.setProcessingMethodCode(rs.getString("PROCCODE"));
- }
- if(rs.getObject("PROCDESCENG")!= null)
- {
- summayEClaimErrorBean.setProcessingMethodEng(rs.getString("PROCDESCENG"));
- }
- if(rs.getObject("PROCDESCARB")!= null)
- {
- summayEClaimErrorBean.setProcessingMethodArb(rs.getString("PROCDESCARB"));
- }
- if(rs.getObject("TOTAL")!= null)
- {
- summayEClaimErrorBean.setNumberErroneousRecord(rs.getInt("TOTAL"));
- }
- if(rs.getObject("STARTDATE")!= null)
- {
- Timestamp startDateTmp=rs.getTimestamp("STARTDATE");
- if(startDate==null || startDateTmp.before(startDate) )
- {
- startDate=startDateTmp;
- }
- }
- if(rs.getObject("ENDDATE")!= null)
- {
- Timestamp endDateTmp=rs.getTimestamp("ENDDATE");
- if(endDate==null || endDateTmp.after(endDate) )
- {
- endDate=endDateTmp;
- }
- }
- totalNumberRecord=totalNumberRecord+summayEClaimErrorBean.getNumberErroneousRecord();
- totalNumberErroneousRecord=totalNumberErroneousRecord+summayEClaimErrorBean.getNumberErroneousRecord();
- summaryECalimError.add(summayEClaimErrorBean);
- }
- else
- {
- if(rs.getObject("TOTAL")!= null)
- {
- totalNumberCorrectRecord=rs.getInt("TOTAL");
- }
- if(rs.getObject("STARTDATE")!= null)
- {
- Timestamp startDateTmp=rs.getTimestamp("STARTDATE");
- if(startDate==null || startDateTmp.before(startDate) )
- {
- startDate=startDateTmp;
- }
- }
- if(rs.getObject("ENDDATE")!= null)
- {
- Timestamp endDateTmp=rs.getTimestamp("ENDDATE");
- if(endDate==null || endDateTmp.after(endDate) )
- {
- endDate=endDateTmp;
- }
- }
- totalNumberRecord=totalNumberRecord+totalNumberCorrectRecord;
- }
- }
- if(totalNumberRecord>0)
- {
- percentageCorrectRecord=(Double.parseDouble(totalNumberCorrectRecord+"")/Double.parseDouble(totalNumberRecord+""))*100;
- percentageErroneousRecord=(Double.parseDouble(totalNumberErroneousRecord+"")/Double.parseDouble(totalNumberRecord+""))*100;
- }
- summayEClaimFileResultBean=new SummayEClaimFileResultBean(totalNumberRecord,totalNumberCorrectRecord,totalNumberErroneousRecord,
- percentageCorrectRecord, percentageErroneousRecord,summaryECalimError,month,year,startDate,endDate);
- return summayEClaimFileResultBean;
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly ();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly ();
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getSummaryEClaimFileResult()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- }
- /**
- * @METHOD NAME : IsTenthInvoice
- * @INFORMATION : Return true if the invoice position multiple of 10, otherwise false
- * @PARAM : class gosi.business.socialinsurance.occupationalhazards.injury.beans.RegHospInvoiceHeaderBean
- * @RETURN : boolean
- * @EXCEPTION : class gosi.core.util.GOSIException
- * @LAST MODIFIED BY : Abdulrahman Almohaimeed
- * @LAST MODIFIED DATE : 04/11/2014
- **/
- public boolean IsTenthInvoice ( RegHospInvoiceHeaderBean invoiceBean) throws GOSIException
- {
- PreparedStatement ps = null ;
- ResultSet rs = null ;
- try{
- int i=0 , invoiceCounter = 0 ;
- StringBuilder sqlQuery = new StringBuilder();
- Long invoiceHeaderId = invoiceBean.getInvoiceHeaderId();
- sqlQuery.append("SELECT count(INVOICEHEADERID) FROM T_REGHOSPINVOICEHDR a where A.INVOICEHEADERID<=? ");
- GOSIDebug.debugMessages("SQL Query : " + sqlQuery.toString());
- con = GOSIUtilities.getConnection (GOSIConstants.OCCUPATIONAL_HAZARDS_ID);
- ps = con.prepareStatement (sqlQuery.toString());
- ps.setLong(++i, invoiceHeaderId);
- rs = ps.executeQuery ();
- if(rs.next())
- {
- Long invoicePosition = rs.getLong(1);
- GOSIDebug.debugMessages("invoice Header ID IS "+invoiceHeaderId+" AND THE Invoice Position is "+ invoicePosition);
- if (invoicePosition % 10 == 0)
- return true ;
- }
- }
- catch (GOSIException ge)
- {
- ctx.setRollbackOnly ();
- throw ge;
- }
- catch (Exception e)
- {
- ctx.setRollbackOnly ();
- throw new GOSIException (GOSIConstants.SEVERITY_ONE,
- GOSIConstants.SOCIAL_INSURANCE,
- this.getClass().toString(),
- "getSummaryEClaimFileResult()",
- e,
- "CMN_ERR_1000");
- }
- finally
- {
- GOSIUtilities.cleanUp (con, ps, rs);
- }
- return false ;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement