package org.celllife.idart.misc.report;
/**
*
*/
/**
* @author renato
*
*/
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import model.manager.DrugManager;
import org.celllife.idart.database.hibernate.util.HibernateUtil;
import org.celllife.idart.misc.iDARTUtil;
import org.hibernate.Session;
public class ReportUtils extends net.sf.jasperreports.engine.JRDefaultScriptlet {
public String getPatientAge(Date dob) {
Calendar today = Calendar.getInstance();
Calendar mydob = Calendar.getInstance();
mydob.setTime(dob == null ? new Date() : dob);
// Get age based on year
int age = today.get(Calendar.YEAR) - mydob.get(Calendar.YEAR);
// Add the tentative age to the date of birth to get this year's
// birthday
mydob.add(Calendar.YEAR, age);
// If birthday hasn't happened yet, subtract one from
// age
if (today.before(mydob)) {
age--;
}
return new String("" + age);
}
@SuppressWarnings("unchecked")
public String getDrugContents(Integer packageDrugId) {
Session session = HibernateUtil.getNewSession();
String result = "";
List<Object[]> list = session.createSQLQuery("select chemComp.acronym, chemDrugStrength.strength, packDrugs.amount, accumDrugs.accum " +
"from ( select amount, stock, parentPackage from PackagedDrugs pd where pd.id = :packageDrugId ) as packDrugs " +
"left outer join ( select id, drug from Stock ) as stock on packDrugs.stock = stock.id " +
"left outer join ( select chemicalCompound, drug, strength from ChemicalDrugStrength ) as chemDrugStrength " +
" on stock.drug = chemDrugStrength.drug left outer join ( select acronym, id from ChemicalCompound) as chemComp " +
"on chemDrugStrength.chemicalCompound = chemComp.id left outer join ( select withPackage, drug, accum " +
"from PillCount, AccumulatedDrugs where AccumulatedDrugs.pillcount = pillCount.id ) as accumDrugs on " +
"((accumDrugs.withPackage = packDrugs.parentPackage) and (accumDrugs.drug = stock.drug))")
.setInteger("packageDrugId", packageDrugId.intValue()).list();
int counter = 0;
String amounts ="";
if (list != null && list.size() > 0) {
for (Object[] objects : list) {
if (objects[1] != null) {
if (list.size() == 1) {
result += objects[0] + " " + objects[1] + " mg ("
+ objects[2]
+ (objects[3] != null ? "+" + objects[3] : "")
+ ")/";
} else {
result += objects[0] + " " + objects[1] + " mg /";
}
counter++;
if (counter == list.size() && list.size() > 1) {
amounts += "(" + objects[2]
+ (objects[3] != null ? "+" + objects[3] : "")
+ ")";
}
}
else
return DrugManager.getDrugNameForPackagedDrug(session, packageDrugId);
}
result = result.substring(0, result.length() - 1);
result += amounts;
} else
return DrugManager.getDrugNameForPackagedDrug(session, packageDrugId);
return result;
}
/**
* Gets the number of days between two dates
*
* @param date1
* @param date2
* @return
*/
public int daysBetween(Date date1, Date date2) {
return iDARTUtil.getDaysBetween(date1, date2);
}
}