Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package au.org.alfred.icu.pdf.services.factories; import au.org.alfred.icu.pdf.persistence.QryHospAdm; import au.org.alfred.icu.pdf.persistence.VwSiss; import au.org.alfred.icu.pdf.persistence.TblAdmAccountClassTfer; import au.org.alfred.icu.pdf.persistence.TblAdmICUTransfer; import au.org.alfred.icu.pdf.persistence.TblAdmission; import au.org.alfred.icu.pdf.persistence.TblAdmissionICU; import au.org.alfred.icu.pdf.persistence.TblAntibiotic; import au.org.alfred.icu.pdf.persistence.TblCarePlan; import au.org.alfred.icu.pdf.persistence.TblMicroResults; import au.org.alfred.icu.pdf.persistence.TblNeurology; import au.org.alfred.icu.pdf.persistence.TblNicotine; import au.org.alfred.icu.pdf.persistence.TblOtherResults; import au.org.alfred.icu.pdf.persistence.TblPMI; import au.org.alfred.icu.pdf.persistence.TblPayClass; import au.org.alfred.icu.pdf.persistence.TblProvider; import au.org.alfred.icu.pdf.persistence.TblRefCarePlan; import au.org.alfred.icu.pdf.persistence.TblResusPlan; import au.org.alfred.icu.pdf.persistence.TblSex; import au.org.alfred.icu.pdf.persistence.TblUnit; import au.org.alfred.icu.pdf.persistence.TblWard; import au.org.alfred.icu.pdf.persistence.VwDiagnosis; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.cayenne.CayenneRuntimeException; import org.apache.cayenne.exp.ExpressionFactory; import org.joda.time.DateTime; /** * * @author mektronix */ public abstract class DischargeSummaryDataBuilder { public static String buildData(String icuVisitNumber, String visitNumber, String patientId, String userName, String userId, DischargeSummaryData data) { TblAdmission admHosp = new TblAdmission(); TblAdmissionICU admICU = new TblAdmissionICU(); TblAdmICUTransfer txICU = new TblAdmICUTransfer(); TblAdmAccountClassTfer accntTx = new TblAdmAccountClassTfer(); TblPMI demo = new TblPMI(); TblSex sex = new TblSex(); TblProvider doc = new TblProvider(); TblPayClass pc = new TblPayClass(); TblUnit unit = new TblUnit(); TblWard ward = new TblWard(); VwDiagnosis apache3 = new VwDiagnosis(); List<TblMicroResults> micro = null; List<TblOtherResults> other = null; List<TblAntibiotic> antibiotics = null; List<TblNeurology> neuro = null; List<TblResusPlan> resus = null; List<TblNicotine> nic = null; List<VwSiss> procs = null; List<TblCarePlan> nursing = null; List<TblRefCarePlan> nursingRef = null; QryHospAdm destination = null; Map nursingPlans = new HashMap(); int age = 0; int los = 0; StringBuilder fileName = new StringBuilder(); List res; //fileName.append("\\\\alfapps01\\apps\\ICUApps\\CernerDischarge"); res = ModelFactory.getModelObject(TblAdmission.class, TblAdmission.ADMID_PROPERTY, visitNumber); if (res.size() == 1) { admHosp = (TblAdmission) res.get(0); } res = ModelFactory.getModelObject(TblAdmissionICU.class, TblAdmissionICU.I_CUADM_ID_PROPERTY, icuVisitNumber); //System.out.println("Size "+res.size()+ " ICUID "+icuVisitNumber); if (res.size() == 1) { admICU = (TblAdmissionICU) res.get(0); } res = ModelFactory.getModelObject(TblPMI.class, TblPMI.P_MIID_PROPERTY, patientId); if (res.size() == 1) { demo = (TblPMI) res.get(0); org.joda.time.DateTime dob = new DateTime(demo.getBirthDate()); org.joda.time.DateTime now = new DateTime(); age = org.joda.time.Years.yearsBetween(dob, now).getYears(); } res = ModelFactory.getModelWithExpression(TblAdmICUTransfer.class, ExpressionFactory.matchExp(TblAdmICUTransfer.ADM_ID_PROPERTY, admICU.getAdmID()) .andExp(ExpressionFactory.matchExp(TblAdmICUTransfer.WARD_TFER_DATE_PROPERTY, admICU.getWardTferDate()))); if (res.size() > 0) { txICU = (TblAdmICUTransfer) res.get(0); } res = ModelFactory.getModelObject(TblSex.class, TblSex.SEX_ID_PROPERTY, demo.getSexId() == null ? 1 : demo.getSexId()); if (res.size() == 1) { sex = (TblSex) res.get(0); } res = ModelFactory.getModelObject(TblProvider.class, TblProvider.PROVIDER_CODE_PROPERTY, admHosp.getAttendingDrCode()); if (res.size() == 1) { doc = (TblProvider) res.get(0); } res = ModelFactory.getModelObject(TblUnit.class, TblUnit.UNIT_ID_PROPERTY, admHosp.getUnitId()); if (res.size() == 1) { unit = (TblUnit) res.get(0); } res = ModelFactory.getModelObject(TblPayClass.class, TblPayClass.PAY_CLASS_ID_PROPERTY, admHosp.getPayClassId()); if (res.size() == 1) { pc = (TblPayClass) res.get(0); } try { res = ModelFactory.getModelObject(VwDiagnosis.class, VwDiagnosis.I_CUADM_ID_PROPERTY, admICU.getICUAdmID()); if (res.size() > 0) { //System.out.println("APACHEIII " + res.size()); apache3 = (VwDiagnosis) res.get(0); //System.out.println("APACHEIII " + apache3.getA3DiagDesc()); } } catch (CayenneRuntimeException ex) { //apache3 = null; } res = ModelFactory.getModelObject(TblMicroResults.class, TblMicroResults.ICU_ADM_ID_PROPERTY, admICU.getICUAdmID()); if (res.size() > 0) { data.setMicro(res); } res = ModelFactory.getModelObject(TblOtherResults.class, TblOtherResults.ICU_ADM_ID_PROPERTY, admICU.getICUAdmID()); if (res.size() > 0) { data.setOther(res); } res = ModelFactory.getModelObject(TblAntibiotic.class, TblAntibiotic.ICU_ADM_ID_PROPERTY, admICU.getICUAdmID()); if (res.size() > 0) { data.setAntibiotics(res); } res = ModelFactory.getModelObject(TblNeurology.class, TblNeurology.ICU_ADM_ID_PROPERTY, admICU.getICUAdmID()); if (res.size() > 0) { data.setNeuro(res.subList(0, 1)); } res = ModelFactory.getModelObject(TblResusPlan.class, TblResusPlan.ICU_ADM_ID_PROPERTY, admICU.getICUAdmID()); if (res.size() > 0) { data.setResus(res.subList(0, 1)); } res = ModelFactory.getModelObject(TblNicotine.class, TblNicotine.ICU_ADM_ID_PROPERTY, admICU.getICUAdmID()); if (res.size() > 0) { data.setNic(res.subList(res.size() - 1, res.size())); } res = ModelFactory.getModelObject(QryHospAdm.class, QryHospAdm.I_CUADM_ID_PROPERTY, admICU.getICUAdmID()); if (res.size() > 0) { data.setDestination((QryHospAdm) res.get(0)); } res = ModelFactory.getModelObject(TblRefCarePlan.class, TblRefCarePlan.END_DATE_PROPERTY, null); if (res.size() > 0) { data.setNursingPlanRef(res); } for (TblRefCarePlan plan : data.getNursingPlanRef()) { res = ModelFactory.getModelWithExpression(TblCarePlan.class, ExpressionFactory .matchExp(TblCarePlan.I_CUADM_ID_PROPERTY, admICU.getICUAdmID()) .andExp(ExpressionFactory.matchExp(TblCarePlan.ARCHIVE_PROPERTY, 0)) .andExp(ExpressionFactory.matchExp(TblCarePlan.CARE_PLAN_ID_PROPERTY, plan.getCarePlanId()))); if (res.size() > 0) { nursingPlans.put(plan.getCarePlanDesc(), res); } } data.setNursingPlans((HashMap) nursingPlans); try { res = ModelFactory.getModelWithExpression(VwSiss.class, ExpressionFactory.matchExp(VwSiss.I_CUADM_ID_PROPERTY, admICU.getICUAdmID()) .andExp(ExpressionFactory.matchExp(VwSiss.SISS_END_DATE_PROPERTY, null))); //System.out.println("Siss "+res.size()); if (res.size() > 0) { data.setProcs(res); } } catch (CayenneRuntimeException ex) { //ex.printStackTrace(System.out); data.setProcs(new ArrayList<VwSiss>()); } StringBuilder diag = new StringBuilder(); if (null != apache3.getAdmID()) { if (apache3.getA3SubCodeDesc() != null) { diag.append(apache3.getA3SubCodeDesc()); } else if (apache3.getA3DiagDesc() != null) { diag.append(apache3.getA3DiagDesc()); } else { diag.append("No APACHE III"); } } else { diag.append("No APACHE Diag Found"); } //diag.append("1902: PostOperative - Musculoskeletal/Skin - Orthopedic surgery - Orthopedic surgery, other"); String delayed = "Unknown"; if (txICU.getWardExitDate() != null && admICU.getExpectDischarge() != null) { delayed = "No"; if (org.joda.time.Hours.hoursBetween(new org.joda.time.DateTime(admICU.getExpectDischarge()), new org.joda.time.DateTime(txICU.getWardExitDate())).getHours() > 6) { delayed = "Yes"; } } String early = "unknown"; if (admICU.getEarlyDischarge() != null) { if (admICU.getEarlyDischarge().intValue() == 1) { early = "Yes"; } else if (admICU.getEarlyDischarge().intValue() == 2) { early = "No"; } } if (txICU.getWardExitDate() != null) { los = org.joda.time.Hours.hoursBetween(new org.joda.time.DateTime(txICU.getWardAdmDate()), new org.joda.time.DateTime(txICU.getWardExitDate())).getHours(); } else { los = org.joda.time.Hours.hoursBetween(new org.joda.time.DateTime(txICU.getWardAdmDate()), new org.joda.time.DateTime(Calendar.getInstance().getTime())).getHours(); } fileName.append(demo.getPatientId()).append("_").append(admHosp.getVisitNumber()).append("_") .append(new SimpleDateFormat("yyyyMMddHHmm") .format(txICU.getWardExitDate() == null ? Calendar.getInstance().getTime() : txICU.getWardExitDate())) .append("_ICU DISCHARGE SUMMARY.pdf"); if (data.getDestination() != null) { if (data.getDestination().getDispositionDesc() == null || data.getDestination().getDispositionDesc().equals((""))) { res = ModelFactory.getModelObject(TblWard.class, TblWard.WARD_ID_PROPERTY, admHosp.getWardId()); if (res.size() > 0) { ward = (TblWard) res.get(0); data.setCurrentLocation(data.getDestination().getAPDOutcomeDesc() + " " + ward.getWardCode()); } else { data.setCurrentLocation(data.getDestination().getAPDOutcomeDesc()); } } else { data.setCurrentLocation(data.getDestination().getAPDOutcomeDesc() + " - " + (data.getDestination().getDestinationDesc() == null ? data.getDestination().getDispositionDesc() : data.getDestination().getDestinationDesc())); } } data.setActiveProblems(admICU.getActiveProblems() == null ? " - " : admICU.getActiveProblems()); data.setFinalDiagnosis(admICU.getFinalDiagnosis() == null ? " - " : admICU.getFinalDiagnosis()); //System.out.println("Transfer "+admICU.getPmiid()); data.setAdmDate(txICU.getWardAdmDate() == null ? "N/A" : new SimpleDateFormat("dd/MM/yyyy HH:mm").format(txICU.getWardAdmDate())); data.setAdmID(admHosp.getAdmid() == null ? "N/A" : admHosp.getAdmid()); data.setAdmNumber(String.valueOf(ModelFactory .getModelObject(TblAdmissionICU.class, TblAdmissionICU.ADM_ID_PROPERTY, admHosp.getAdmid()) .size())); data.setAge(String.valueOf(age)); data.setApacheIII(diag.toString()); data.setBirthDate(demo.getBirthDate() == null ? "N/A" : new SimpleDateFormat("dd/MM/yyyy").format(demo.getBirthDate())); data.setConsultant(doc == null ? "" : (doc.getSurname() == null ? "" : doc.getSurname())); data.setDelayed(delayed); data.setDisSumm(admICU.getICUDisSumm() == null ? "N/A" : admICU.getICUDisSumm()); data.setEarlyDischarge(early); data.setExpectDischarge(admICU.getExpectDischarge() == null ? "N/A" : new SimpleDateFormat("dd/MM/yyyy HH:mm").format(admICU.getExpectDischarge())); data.setLOSDays(String.valueOf(los / 24)); data.setLOSHours(String.valueOf(los)); data.setNotForCPR( admICU.getNotForCPR() == null ? "N/A" : admICU.getNotForCPR().intValue() == 1 ? "Yes" : "No"); data.setNotForReadmit(admICU.getNotForReadmit() == null ? "N/A" : admICU.getNotForReadmit().intValue() == 1 ? "Yes" : "No"); data.setPMIID(demo.getPMIid() == null ? "N/A" : demo.getPMIid()); data.setPastHx(admICU.getPastHx() == null ? "N/A" : admICU.getPastHx()); data.setPatientAddress( new String().concat(demo.getPatientAddress1() == null ? "" : demo.getPatientAddress1()).concat(" ") .concat(demo.getPatientSuburb() == null ? "" : demo.getPatientSuburb())); data.setPatientFamilyName(demo.getPatientFamilyName() == null ? "N/A" : demo.getPatientFamilyName()); data.setPatientGivenName(demo.getPatientGivenName() == null ? " N/A" : demo.getPatientGivenName()); data.setPatientId(demo.getPatientId() == null ? "N/A" : demo.getPatientId()); data.setPatientMiddleName(demo.getPatientMiddleName() == null ? "" : demo.getPatientMiddleName()); data.setPayClass(pc == null ? "" : (pc.getPayClassCode() == null ? "" : pc.getPayClassCode())); data.setPendingInvestigations( admICU.getPendingInvestigations() == null ? " - " : admICU.getPendingInvestigations()); data.setPresentingHx(admICU.getPresentingHx() == null ? "N/A" : admICU.getPresentingHx()); data.setSexDesc(sex == null ? "N/A" : sex.getSexDesc()); data.setStrFileName(fileName.toString()); data.setUnitCode(unit.getUnitCode() == null ? "UNK" : unit.getUnitCode()); data.setUpdateBy(userId); data.setUpdateDate(new SimpleDateFormat("dd MMM yyyy HH:mm").format(Calendar.getInstance().getTime())); data.setVisitNumber(admHosp.getVisitNumber() == null ? "N/A" : admHosp.getVisitNumber()); data.setWardAdmDate(txICU.getWardAdmDate() == null ? "N/A" : new SimpleDateFormat("dd MMM yyyy HH:mm").format(txICU.getWardAdmDate())); data.setWardExitDate(txICU.getWardExitDate() == null ? "N/A" : new SimpleDateFormat("dd MMM yyyy HH:mm").format(txICU.getWardExitDate())); data.setWardTferDate(txICU.getWardTferDate() == null ? "N/A" : new SimpleDateFormat("dd MMM yyyy HH:mm").format(txICU.getWardTferDate())); return fileName.toString(); } }