From 635acb3720189532265e967b508dc175915c142a Mon Sep 17 00:00:00 2001 From: Shubham Bansal Date: Tue, 26 Jun 2012 08:00:37 -0500 Subject: [PATCH] first commit --- .classpath | 29 + .gitignore | 42 ++ .project | 36 ++ .settings/.jsdtscope | 12 + .settings/org.eclipse.jdt.core.prefs | 7 + .settings/org.eclipse.wst.common.component | 9 + ....eclipse.wst.common.project.facet.core.xml | 10 + ...rg.eclipse.wst.jsdt.ui.superType.container | 1 + .../org.eclipse.wst.jsdt.ui.superType.name | 1 + README | 2 + WebContent/Delete.jsp | 16 + WebContent/Edit.jsp | 31 ++ WebContent/META-INF/MANIFEST.MF | 3 + WebContent/ShowAll.jsp | 36 ++ WebContent/WEB-INF/web.xml | 20 + build.properties.template | 9 + build.xml | 503 ++++++++++++++++++ .../parser/controller/ParsingController.java | 135 +++++ src/com/parser/dto/ClaimDto.java | 24 + src/com/parser/main/FileDao.java | 59 ++ src/com/parser/main/PDFParser.java | 19 + src/com/parser/model/Claim.java | 53 ++ src/com/parser/model/Procedure.java | 71 +++ src/com/parser/model/ServiceInformation.java | 141 +++++ src/com/parser/rest/ClaimsResource.java | 30 ++ src/com/parser/rest/Hello.java | 31 ++ src/com/parser/servlets/Controller.java | 39 ++ src/com/parser/servlets/FileCounter.java | 60 +++ 28 files changed, 1429 insertions(+) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .project create mode 100644 .settings/.jsdtscope create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.wst.common.component create mode 100644 .settings/org.eclipse.wst.common.project.facet.core.xml create mode 100644 .settings/org.eclipse.wst.jsdt.ui.superType.container create mode 100644 .settings/org.eclipse.wst.jsdt.ui.superType.name create mode 100644 README create mode 100644 WebContent/Delete.jsp create mode 100644 WebContent/Edit.jsp create mode 100644 WebContent/META-INF/MANIFEST.MF create mode 100644 WebContent/ShowAll.jsp create mode 100644 WebContent/WEB-INF/web.xml create mode 100644 build.properties.template create mode 100644 build.xml create mode 100644 src/com/parser/controller/ParsingController.java create mode 100644 src/com/parser/dto/ClaimDto.java create mode 100644 src/com/parser/main/FileDao.java create mode 100644 src/com/parser/main/PDFParser.java create mode 100644 src/com/parser/model/Claim.java create mode 100644 src/com/parser/model/Procedure.java create mode 100644 src/com/parser/model/ServiceInformation.java create mode 100644 src/com/parser/rest/ClaimsResource.java create mode 100644 src/com/parser/rest/Hello.java create mode 100644 src/com/parser/servlets/Controller.java create mode 100644 src/com/parser/servlets/FileCounter.java diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..05ce5f9 --- /dev/null +++ b/.classpath @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e448f2a --- /dev/null +++ b/.gitignore @@ -0,0 +1,42 @@ +# Compiled source # +################### +*.com +*.class +*.dll +*.exe +*.o +*.so + +# Packages # +############ +# it's better to unpack these files and commit the raw source +# git has its own built in compression methods +*.7z +*.dmg +*.gz +*.iso +*.jar +*.rar +*.tar +*.zip + +# Logs and databases # +###################### +*.log +*.sql +*.sqlite + +# OS generated files # +###################### +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +Icon? +ehthumbs.db +Thumbs.db + +# Properties files # +#################### +*.properties diff --git a/.project b/.project new file mode 100644 index 0000000..7e2d9c0 --- /dev/null +++ b/.project @@ -0,0 +1,36 @@ + + + Parser + + + + + + org.eclipse.wst.jsdt.core.javascriptValidator + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.jdt.core.javanature + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/.settings/.jsdtscope b/.settings/.jsdtscope new file mode 100644 index 0000000..3a28de0 --- /dev/null +++ b/.settings/.jsdtscope @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..c537b63 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component new file mode 100644 index 0000000..77527e4 --- /dev/null +++ b/.settings/org.eclipse.wst.common.component @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 0000000..cff8881 --- /dev/null +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.container b/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 0000000..3bd5d0a --- /dev/null +++ b/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.name b/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 0000000..05bd71b --- /dev/null +++ b/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Window \ No newline at end of file diff --git a/README b/README new file mode 100644 index 0000000..4ab6091 --- /dev/null +++ b/README @@ -0,0 +1,2 @@ +1) Make sure to change the build.properties.template file based on your own settings +2) Also copy all the jersey-archive-1.12 jar files into the WEB-INF/lib folder diff --git a/WebContent/Delete.jsp b/WebContent/Delete.jsp new file mode 100644 index 0000000..63c27b7 --- /dev/null +++ b/WebContent/Delete.jsp @@ -0,0 +1,16 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + + + + +Insert title here + + + + Delete successful +
+ +
+ + \ No newline at end of file diff --git a/WebContent/Edit.jsp b/WebContent/Edit.jsp new file mode 100644 index 0000000..0f5bd48 --- /dev/null +++ b/WebContent/Edit.jsp @@ -0,0 +1,31 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + + + + +Insert title here + + + + +
+ + + + + + + + + + + + +
First name:
Last name:
+
+ + + \ No newline at end of file diff --git a/WebContent/META-INF/MANIFEST.MF b/WebContent/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/WebContent/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/WebContent/ShowAll.jsp b/WebContent/ShowAll.jsp new file mode 100644 index 0000000..e43f776 --- /dev/null +++ b/WebContent/ShowAll.jsp @@ -0,0 +1,36 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + + + + +Show all names + + + + +
+ + + + + + + + + + + +
JimKnopf
JimBean
+ +

+     +

+
+ + + + + \ No newline at end of file diff --git a/WebContent/WEB-INF/web.xml b/WebContent/WEB-INF/web.xml new file mode 100644 index 0000000..bf2360c --- /dev/null +++ b/WebContent/WEB-INF/web.xml @@ -0,0 +1,20 @@ + + + Parser + + Parser + com.sun.jersey.spi.container.servlet.ServletContainer + + com.sun.jersey.config.property.packages + com.parser.rest + + 1 + + + Parser + /rest/* + + \ No newline at end of file diff --git a/build.properties.template b/build.properties.template new file mode 100644 index 0000000..1fd64e6 --- /dev/null +++ b/build.properties.template @@ -0,0 +1,9 @@ +# Context path to install this application on +app.path=/pdfparser + +# Tomcat 6 installation directory +catalina.home=/usr/local/apache-tomcat-6.0 + +# Manager webapp username and password +manager.username=myusername +manager.password=mypassword diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..6f1277b --- /dev/null +++ b/build.xml @@ -0,0 +1,503 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/com/parser/controller/ParsingController.java b/src/com/parser/controller/ParsingController.java new file mode 100644 index 0000000..48346ea --- /dev/null +++ b/src/com/parser/controller/ParsingController.java @@ -0,0 +1,135 @@ +package com.parser.controller; + +import java.io.File; +import java.io.IOException; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.StringTokenizer; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.util.PDFTextStripper; + +import com.parser.model.Claim; +import com.parser.model.Procedure; +import com.parser.model.ServiceInformation; + +public class ParsingController { + + private static final String SERVICE_DATE_TOKEN = "Service Date"; + private static final String PPO_TOKEN = "Participating Provider Option (PPO Reduction)"; + public static final String SPACER = " "; + private static final String TOTALS_TOKEN = "Totals"; +// private static final String DEDUCTIONS_TOKEN = "Deductions"; + private static final String COINSURANCE_TOKEN = "Your Coinsurance Amount"; + private static final String TOTAL_DEDUCTIONS_TOKEN = "Total Deductions"; + private static final String APPROVED_BENEFITS_TOKEN = "Total Benefits Approved"; + private static final String AMOUNT_OWED_TOKEN = "Amount You May Owe Provider"; + + private static final String DATE_REGEX = "(\\d{2}-\\d{2}-\\d{2})"; + public static final String PRICE_REGEX = "($\\d+\\.\\d)"; + private static Pattern DATE_PATTERN = Pattern.compile(DATE_REGEX); + public static Pattern PRICE_PATTERN = Pattern.compile(PRICE_REGEX); + + private static String[] unnecessaryStrings = new String[] {"(1) ", "$"}; + + private Claim claim = new Claim(); + + public void parse(String fileName) throws IOException, NoSuchElementException { + PDDocument document = PDDocument.load(new File(fileName)); + PDFTextStripper parser = new PDFTextStripper(); + String text = parser.getText(document); + System.out.println(text); + List serviceInformations = new ArrayList(); + String insuranceName = null; + + StringTokenizer t = new StringTokenizer(text, parser.getLineSeparator()); + ServiceInformation service = null; + while (t.hasMoreTokens()) { + if(insuranceName == null) { + insuranceName = t.nextToken().concat(SPACER).concat(t.nextToken()); + claim.setInsuranceProvider(insuranceName); + } + String nextToken = t.nextToken(); + if(nextToken.startsWith(SERVICE_DATE_TOKEN)) { + service = new ServiceInformation(); + serviceInformations.add(service); + } else if(service != null && service.getProviderName() == null) { + service.setProviderName(nextToken); + } else if(nextToken.startsWith(TOTALS_TOKEN)) { + processTotals(nextToken, service); + } else if(nextToken.startsWith(PPO_TOKEN)) { + String ppoReduction = sanitizeString(nextToken.substring(PPO_TOKEN.length()).trim()); + service.setPpoReduction(new BigDecimal(ppoReduction)); + } else if(nextToken.startsWith(COINSURANCE_TOKEN)) { + service.setCoinsuranceAmount(processAmount(nextToken, COINSURANCE_TOKEN)); + } else if(nextToken.startsWith(TOTAL_DEDUCTIONS_TOKEN)) { + service.setTotalDeductions(processAmount(nextToken, TOTAL_DEDUCTIONS_TOKEN)); + } else if(nextToken.startsWith(APPROVED_BENEFITS_TOKEN)) { + service.setTotalBenefitsApproved(processAmount(nextToken, APPROVED_BENEFITS_TOKEN)); + } else if(nextToken.startsWith(AMOUNT_OWED_TOKEN)) { + service.setAmountOwedToProvider(processAmount(nextToken, AMOUNT_OWED_TOKEN)); + } else if(service != null && service.getTotalAmountBilled() == null) { + //This needs to be the last loop + Procedure p = addProcedure(nextToken); + service.addProcedure(p); + } + } + claim.setServiceInformations(serviceInformations); + System.out.println("Claim data - " + claim.printSummary()); + } + + private void processTotals(String nextToken, ServiceInformation service) { + String priceString = nextToken.substring(TOTALS_TOKEN.length()); + String[] prices = priceString.trim().split(SPACER); + if(prices.length > 2) { + service.setTotalAmountBilled(new BigDecimal(sanitizeString(prices[0]))); + service.setTotalNotCovered(new BigDecimal(sanitizeString(prices[1]))); + service.setTotalCovered(new BigDecimal(sanitizeString(prices[2]))); + } else { + service.setTotalAmountBilled(new BigDecimal(sanitizeString(prices[0]))); + service.setTotalCovered(new BigDecimal(sanitizeString(prices[1]))); + } + } + + private BigDecimal processAmount(String lineItem, String token) { + String priceString = lineItem.trim().substring(token.length()); + return new BigDecimal(sanitizeString(priceString)); + } + + private Procedure addProcedure(String lineItem) { + String serviceDate = null; + String procedureName = null; + Procedure p = null; + Matcher dateMatcher = DATE_PATTERN.matcher(lineItem); + if(dateMatcher.find()) { + serviceDate = dateMatcher.group(); + } + if( serviceDate != null ) { + procedureName = lineItem.substring(0, lineItem.indexOf(serviceDate)); + String priceString = lineItem.substring(lineItem.indexOf(serviceDate) + serviceDate.length()).trim(); + priceString = sanitizeString(priceString); + StringTokenizer t = new StringTokenizer(priceString, SPACER); + if(t.countTokens() > 2) { + p = new Procedure(procedureName, serviceDate, t.nextToken(), t.nextToken(), t.nextToken()); + } else { + p = new Procedure(procedureName, serviceDate, t.nextToken(), null, t.nextToken()); + } + } + return p; + } + + private String sanitizeString(String priceString) { + for (String s : unnecessaryStrings) { + priceString = priceString.replace(s, ""); + } + return priceString.trim(); + } + + public Claim getClaim() { + return claim; + } +} diff --git a/src/com/parser/dto/ClaimDto.java b/src/com/parser/dto/ClaimDto.java new file mode 100644 index 0000000..701952a --- /dev/null +++ b/src/com/parser/dto/ClaimDto.java @@ -0,0 +1,24 @@ +package com.parser.dto; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class ClaimDto { + + private String providerName; + + public ClaimDto() {} + + public ClaimDto(String provider) { + this.providerName = provider; + } + + public String getProviderName() { + return providerName; + } + + public void setProviderName(String providerName) { + this.providerName = providerName; + } + +} diff --git a/src/com/parser/main/FileDao.java b/src/com/parser/main/FileDao.java new file mode 100644 index 0000000..9872728 --- /dev/null +++ b/src/com/parser/main/FileDao.java @@ -0,0 +1,59 @@ +package com.parser.main; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; + +public class FileDao { + public int getCount() { + int count = 0; + // Load the file with the counter + FileReader fileReader = null; + BufferedReader bufferedReader = null; + PrintWriter writer = null ; + try { + File f = new File("FileCounter.initial"); + if (!f.exists()) { + f.createNewFile(); + writer = new PrintWriter(new FileWriter(f)); + writer.println(0); + } + if (writer !=null){ + writer.close(); + } + + fileReader = new FileReader(f); + bufferedReader = new BufferedReader(fileReader); + String initial = bufferedReader.readLine(); + count = Integer.parseInt(initial); + } catch (Exception ex) { + if (writer !=null){ + writer.close(); + } + } + if (bufferedReader != null) { + try { + bufferedReader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return count; + } + + public void save(int count) throws Exception { + FileWriter fileWriter = null; + PrintWriter printWriter = null; + fileWriter = new FileWriter("FileCounter.initial"); + printWriter = new PrintWriter(fileWriter); + printWriter.println(count); + + // Make sure to close the file + if (printWriter != null) { + printWriter.close(); + } + } +} diff --git a/src/com/parser/main/PDFParser.java b/src/com/parser/main/PDFParser.java new file mode 100644 index 0000000..65d2986 --- /dev/null +++ b/src/com/parser/main/PDFParser.java @@ -0,0 +1,19 @@ +package com.parser.main; + +import com.parser.controller.ParsingController; + +public class PDFParser { + public static void main(String[] args) { + try { + String fileName = "/Users/shubhambansal/Downloads/cancer1.pdf"; +// String fileName = "/Users/shubhambansal/Downloads/mammogram.pdf"; +// String fileName = "/Users/shubhambansal/Downloads/physical.pdf"; + long time = System.currentTimeMillis(); + ParsingController controller = new ParsingController(); + controller.parse(fileName); + System.out.println("Time taken - " + (System.currentTimeMillis() - time) + " ms"); + } catch (Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/src/com/parser/model/Claim.java b/src/com/parser/model/Claim.java new file mode 100644 index 0000000..58f8016 --- /dev/null +++ b/src/com/parser/model/Claim.java @@ -0,0 +1,53 @@ +package com.parser.model; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author shubhambansal + * The model object for storing a claim information + * + */ +public class Claim { + + private String insuranceProvider; + private List serviceInformations = new ArrayList(); + + public Claim() {} + + public Claim(String insuranceProvider) { + this.insuranceProvider = insuranceProvider; + } + + public String getInsuranceProvider() { + return insuranceProvider; + } + + public void setInsuranceProvider(String insuranceProvider) { + this.insuranceProvider = insuranceProvider; + } + + public List getServiceInformations() { + return serviceInformations; + } + + public void setServiceInformations(List serviceInformations) { + this.serviceInformations = serviceInformations; + } + + @Override + public String toString() { + return "Claim [insuranceProvider=" + insuranceProvider + + ", serviceInformations=" + serviceInformations + "]"; + } + + public String printSummary() { + StringBuffer buffer = new StringBuffer(); + buffer.append("Insurance - " + insuranceProvider).append("\n"); + for (ServiceInformation info : serviceInformations) { + buffer.append(info.toString()); + } + return buffer.toString(); + } + +} diff --git a/src/com/parser/model/Procedure.java b/src/com/parser/model/Procedure.java new file mode 100644 index 0000000..66ad790 --- /dev/null +++ b/src/com/parser/model/Procedure.java @@ -0,0 +1,71 @@ +package com.parser.model; + + +public class Procedure { + + private String name; + private String serviceDate; + private String amountBilled; + private String amountCovered; + private String amountNotCovered; + + public Procedure(String procedureName, String serviceDate,String amountBilled, + String amountNotCovered, String amountCovered) { + this.name = procedureName; + this.serviceDate = serviceDate; + this.amountBilled = amountBilled; + this.amountNotCovered = amountNotCovered; + this.amountCovered = amountCovered; + } + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getServiceDate() { + return serviceDate; + } + public void setServiceDate(String serviceDate) { + this.serviceDate = serviceDate; + } + public String getAmountBilled() { + return amountBilled; + } + public void setAmountBilled(String amountBilled) { + this.amountBilled = amountBilled; + } + public String getAmountCovered() { + return amountCovered; + } + public void setAmountCovered(String amountCovered) { + this.amountCovered = amountCovered; + } + public String getAmountNotCovered() { + return amountNotCovered; + } + public void setAmountNotCovered(String amountNotCovered) { + this.amountNotCovered = amountNotCovered; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("\n"); + builder.append("Procedure Name : "); + builder.append(name); + builder.append(", Service Date : "); + builder.append(serviceDate); + builder.append(", Amount Billed : "); + builder.append(amountBilled); + builder.append(", Amount Covered : "); + builder.append(amountCovered); + builder.append(", Amount Not Covered : "); + builder.append(amountNotCovered); + return builder.toString(); + } + + + +} diff --git a/src/com/parser/model/ServiceInformation.java b/src/com/parser/model/ServiceInformation.java new file mode 100644 index 0000000..a220d38 --- /dev/null +++ b/src/com/parser/model/ServiceInformation.java @@ -0,0 +1,141 @@ +package com.parser.model; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +public class ServiceInformation { + + private String providerName; + private List procedures = new ArrayList(); + + private BigDecimal totalAmountBilled; + private BigDecimal totalNotCovered; + private BigDecimal totalCovered; + private BigDecimal ppoReduction; + + private BigDecimal coinsuranceAmount; + private BigDecimal totalDeductions; + private BigDecimal totalBenefitsApproved; + private BigDecimal amountOwedToProvider; + + public ServiceInformation() {} + + public ServiceInformation(String provider) { + this.providerName = provider; + } + + public String getProviderName() { + return providerName; + } + + public void setProviderName(String providerName) { + this.providerName = providerName; + } + + public List getProcedures() { + return procedures; + } + + public void setProcedures(List procedures) { + this.procedures = procedures; + } + + public void addProcedure(Procedure p) { + procedures.add(p); + } + + public BigDecimal getTotalAmountBilled() { + return totalAmountBilled; + } + + public void setTotalAmountBilled(BigDecimal totalAmountBilled) { + this.totalAmountBilled = totalAmountBilled; + } + + public BigDecimal getTotalNotCovered() { + return totalNotCovered; + } + + public void setTotalNotCovered(BigDecimal totalNotCovered) { + this.totalNotCovered = totalNotCovered; + } + + public BigDecimal getTotalCovered() { + return totalCovered; + } + + public void setTotalCovered(BigDecimal totalCovered) { + this.totalCovered = totalCovered; + } + + public BigDecimal getPpoReduction() { + return ppoReduction; + } + + public void setPpoReduction(BigDecimal ppoReduction) { + this.ppoReduction = ppoReduction; + } + + public BigDecimal getCoinsuranceAmount() { + return coinsuranceAmount; + } + + public void setCoinsuranceAmount(BigDecimal coinsuranceAmount) { + this.coinsuranceAmount = coinsuranceAmount; + } + + public BigDecimal getTotalDeductions() { + return totalDeductions; + } + + public void setTotalDeductions(BigDecimal totalDeductions) { + this.totalDeductions = totalDeductions; + } + + public BigDecimal getTotalBenefitsApproved() { + return totalBenefitsApproved; + } + + public void setTotalBenefitsApproved(BigDecimal totalBenefitsApproved) { + this.totalBenefitsApproved = totalBenefitsApproved; + } + + public BigDecimal getAmountOwedToProvider() { + return amountOwedToProvider; + } + + public void setAmountOwedToProvider(BigDecimal amountOwedToProvider) { + this.amountOwedToProvider = amountOwedToProvider; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append(providerName).append("\n"); + builder.append(", Total Procedures : "); + builder.append(procedures.size()).append("\n"); + builder.append(procedures).append("\n"); + builder.append(", Total Amount Billed : "); + builder.append(totalAmountBilled).append("\n"); + builder.append(", Total Not Covered : "); + builder.append(totalNotCovered).append("\n"); + builder.append(", Total Covered : "); + builder.append(totalCovered).append("\n"); + builder.append(", PPO Reduction : "); + builder.append(ppoReduction).append("\n"); + builder.append(", Coinsurance Amount : "); + builder.append(coinsuranceAmount).append("\n"); + builder.append(", Total Deductions : "); + builder.append(totalDeductions).append("\n"); + builder.append(", Total Benefits Approved : "); + builder.append(totalBenefitsApproved).append("\n"); + builder.append(", Amount Owed To Provider : "); + builder.append(amountOwedToProvider).append("\n"); + return builder.toString(); + } + + + + +} diff --git a/src/com/parser/rest/ClaimsResource.java b/src/com/parser/rest/ClaimsResource.java new file mode 100644 index 0000000..e718659 --- /dev/null +++ b/src/com/parser/rest/ClaimsResource.java @@ -0,0 +1,30 @@ +package com.parser.rest; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.Status; + +import com.parser.controller.ParsingController; +import com.parser.dto.ClaimDto; + +@Path("/claim") +public class ClaimsResource { + + @GET + @Produces (MediaType.APPLICATION_JSON) + public Response getClaims(@QueryParam("file") String fileName) { + fileName = "/Users/shubhambansal/Downloads/cancer1.pdf"; + try { + ParsingController controller = new ParsingController(); + controller.parse(fileName); + ClaimDto claim = new ClaimDto(controller.getClaim().getInsuranceProvider()); + return Response.ok(claim).build(); + } catch (Exception e) { + return Response.status(Status.BAD_REQUEST).build(); + } + } +} diff --git a/src/com/parser/rest/Hello.java b/src/com/parser/rest/Hello.java new file mode 100644 index 0000000..f27417b --- /dev/null +++ b/src/com/parser/rest/Hello.java @@ -0,0 +1,31 @@ +package com.parser.rest; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +@Path("/hello") +public class Hello { + // This method is called if TEXT_PLAIN is request + @GET + @Produces(MediaType.TEXT_PLAIN) + public String sayPlainTextHello() { + return "Hello Jersey"; + } + + // This method is called if XML is request + @GET + @Produces(MediaType.TEXT_XML) + public String sayXMLHello() { + return "" + " Hello Jersey" + ""; + } + + // This method is called if HTML is request + @GET + @Produces(MediaType.TEXT_HTML) + public String sayHtmlHello() { + return " " + "" + "Hello Jersey" + "" + + "

" + "Hello Jersey" + "

" + " "; + } +} diff --git a/src/com/parser/servlets/Controller.java b/src/com/parser/servlets/Controller.java new file mode 100644 index 0000000..b30eca2 --- /dev/null +++ b/src/com/parser/servlets/Controller.java @@ -0,0 +1,39 @@ +package com.parser.servlets; + +import java.io.IOException; +import java.util.Map; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * Servlet implementation class Controller + */ +@WebServlet("/Controller") +public class Controller extends HttpServlet { + private static final long serialVersionUID = 1L; + private static String DELETE_JSP = "/Delete.jsp"; + private static String EDIT_JSP = "/Edit.jsp"; + private static String SHOWALL_JSP = "/ShowAll.jsp"; + + protected void doGet(HttpServletRequest request, + HttpServletResponse response) throws ServletException, IOException { + String forward = ""; + // Get a map of the request parameters + @SuppressWarnings("unchecked") + Map parameters = request.getParameterMap(); + if (parameters.containsKey("delete")) { + forward = DELETE_JSP; + } else if (parameters.containsKey("edit")) { + forward = EDIT_JSP; + } else { + forward = SHOWALL_JSP; + } + RequestDispatcher view = request.getRequestDispatcher(forward); + view.forward(request, response); + } +} diff --git a/src/com/parser/servlets/FileCounter.java b/src/com/parser/servlets/FileCounter.java new file mode 100644 index 0000000..d4d90a3 --- /dev/null +++ b/src/com/parser/servlets/FileCounter.java @@ -0,0 +1,60 @@ +package com.parser.servlets; + +import java.io.IOException; +import java.io.PrintWriter; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import com.parser.main.FileDao; + +/** + * Servlet implementation class FileCounter + */ +@WebServlet("/FileCounter") +public class FileCounter extends HttpServlet { + private static final long serialVersionUID = 1L; + + int count; + private FileDao dao; + + public void init() throws ServletException { + dao = new FileDao(); + try { + count = dao.getCount(); + } catch (Exception e) { + getServletContext().log("An exception occurred in FileCounter", e); + throw new ServletException("An exception occurred in FileCounter" + + e.getMessage()); + } + } + + protected void doGet(HttpServletRequest request, + HttpServletResponse response) throws ServletException, IOException { + // Set a cookie for the user, so that the counter does not increate + // everytime the user press refresh + HttpSession session = request.getSession(true); + // Set the session valid for 5 secs + session.setMaxInactiveInterval(5); + response.setContentType("text/plain"); + PrintWriter out = response.getWriter(); + if (session.isNew()) { + count++; + } + out.println("This site has been accessed " + count + " times."); + } + + public void destroy() { + super.destroy(); + try { + dao.save(count); + } catch (Exception e) { + e.printStackTrace(); + } + } + +}