/** Creates a new provider report generator which creates a new provider report. * @param provider the provider about whom the report is generated * @param endDate a date within the week for which the report is to be * generated * @throws FileNotFoundException if the file cannot be created. */ public ProviderReportGenerator(Provider provider, DateTime endDate) { Claims claims = null; Members members = null; Services services = null; //Create a new provider report report = new ProviderReport(provider, endDate); try { //create and open the collections of claims, members and services claims = new Claims(); claims.open(); members = new Members(); members.open(); services = new Services(); services.open(); int noConsultations = 0; //use to count number of consultations double totalFee = 0; //use to accumulate fee //get all claims submitted by provider List <Claim> providerClaims = claims.findByProvider(provider.getNumber()); //for each claim foreach (Claim nextClaim in providerClaims) { //test whether within date range if (nextClaim.getSubmissionDate() > report.getStartDateRange() && nextClaim.getSubmissionDate() < report.getEndDateRange()) { //get the member to whom the service was provided String memberName; Member member = members.find(nextClaim.getMemberNumber()); if (member == null) { memberName = "Invalid Number"; } else { memberName = member.getName(); } //get the fee for the service double serviceFee; Service service = services.find(nextClaim.getServiceCode()); if (service == null) { serviceFee = 0; //indicates invalid code } else { serviceFee = service.getFee(); } //add claim details to report report.addDetail(nextClaim.getSubmissionDate(), nextClaim.getServiceDate(), nextClaim.getMemberNumber(), memberName, nextClaim.getServiceCode(), serviceFee); //increment number of consultations noConsultations++; //accumulate fee totalFee += serviceFee; } //if date in specified week } //for //add summary details to report report.addSummary(noConsultations, totalFee); }//try catch (Exception ex) { report.addErrorMessage(ex.Message); } finally { if (claims != null) { claims.close(); } if (members != null) { members.close(); } if (services != null) { services.close(); } } }//constructor
/** Creates a new EFT report generator which creates a new * EFT report. * @param endDate a date within the week for which the report is to be * generated * @throws FileNotFoundException if the file cannot be created. */ public EFTReportGenerator(DateTime endDate) { Claims claims = null; Services services = null; Providers providers = null; //create a new EFT report report = new EFTReport(endDate); try { //create and open claims, services and providers collections claims = new Claims(); claims.open(); services = new Services(); services.open(); providers = new Providers(); providers.open(); //get all providers List <Person> allProviders = providers.getAll(); //for each provider foreach (Person person in allProviders) { double totalFee = 0; //accumulates fees payable to provider Provider provider = (Provider)person; //get all claims submitted by provider List <Claim> providerClaims = claims.findByProvider(provider.getNumber()); //for each claim foreach (Claim nextClaim in providerClaims) { //test whether claim is witin date range if (nextClaim.getSubmissionDate() > (report.getStartDateRange()) && nextClaim.getSubmissionDate() < (report.getEndDateRange())) { //get service fee double serviceFee; Service service = services.find(nextClaim.getServiceCode()); if (service == null) { throw new System.Exception("Invalid Code"); } else { serviceFee = service.getFee(); } //accumulate fees payable totalFee += serviceFee; } //if date in specified week } //for each claim if (totalFee > 0) { //add fees payable detail to report report.addDetail(provider.getNumber(), totalFee, provider.getName()); } } //for each provider } //try catch (Exception ex) { report.addErrorMessage(ex.Message); } finally { if (claims != null) { claims.close(); } if (providers != null) { providers.close(); } if (services != null) { services.close(); } } }//constructor
/** Creates a new member report generator which creates a new member report. * @param member the member about whom the report is generated * @param endDate a date within the week for which the report is to be * generated * @throws FileNotFoundException if the file cannot be created. */ public MemberReportGenerator(Member member, DateTime endDate) { Claims claims = null; Providers providers = null; Services services = null; //Create a new member report report = new MemberReport(member, endDate); try { //create and open the claims, providers and services collections claims = new Claims(); claims.open(); providers = new Providers(); providers.open(); services = new Services(); services.open(); //Get all claims submitted for services to this member, ordered by //service date List <Claim> memberClaims = claims.findByMember(member.getNumber()); //for each claim foreach (Claim nextClaim in memberClaims) { //test whether within date range if (nextClaim.getSubmissionDate() > (report.getStartDateRange()) && nextClaim.getSubmissionDate() < (report.getEndDateRange())) { //get provider String providerName; Provider provider = providers .find(nextClaim.getProviderNumber()); if (provider == null) { providerName = "Invalid Number"; } else { providerName = provider.getName(); } //get service String serviceName; Service service = services.find(nextClaim.getServiceCode()); if (service == null) { serviceName = "Invalid Code"; } else { serviceName = service.getName(); } //add service details to report report.addDetail(nextClaim.getServiceDate(), serviceName, providerName); } //if date in specified week } //for } //try catch (Exception ex) { report.addErrorMessage(ex.Message); } finally { if (claims != null) { claims.close(); } if (providers != null) { providers.close(); } if (services != null) { services.close(); } } }//constructor