Skip to content
Snippets Groups Projects
ViewExpiredPrescriptionsAction.java 3.66 KiB
Newer Older
  • Learn to ignore specific revisions
  • HMoss's avatar
    HMoss committed
    package edu.ncsu.csc.itrust.action;
    
    import java.util.ArrayList;
    import java.util.List;
    import edu.ncsu.csc.itrust.EmailUtil;
    import edu.ncsu.csc.itrust.beans.Email;
    import edu.ncsu.csc.itrust.beans.PatientBean;
    import edu.ncsu.csc.itrust.beans.PersonnelBean;
    import edu.ncsu.csc.itrust.beans.PrescriptionBean;
    import edu.ncsu.csc.itrust.dao.DAOFactory;
    import edu.ncsu.csc.itrust.dao.mysql.PatientDAO;
    import edu.ncsu.csc.itrust.dao.mysql.PersonnelDAO;
    import edu.ncsu.csc.itrust.exception.ITrustException;
    
    /**
     * Handles retrieving beans for viewPrescriptionRecords.jsp
     * 
     * 
     */
    public class ViewExpiredPrescriptionsAction {
    	private PatientDAO patientDAO;
    	private PersonnelDAO personnelDAO;
    	private EmailUtil emailer;
    	private long loggedInMID;
    
    	/**
    	 * Set up defaults
    	 * 
    	 * @param factory The DAOFactory used to create the DAOs used in this action.
    	 * @param loggedInMID The MID of the person viewing the expired prescriptions.
    	 */
    	public ViewExpiredPrescriptionsAction(DAOFactory factory, long loggedInMID) {
    		this.emailer = new EmailUtil(factory);
    		this.patientDAO = factory.getPatientDAO();
    		this.personnelDAO = factory.getPersonnelDAO();
    		this.loggedInMID = loggedInMID;
    	}
    	
    	/**
    	 * Gets a PatientBean from an MID
    	 * 
    	 * @param patientID MID of the patient
    	 * @return PatientBean for the MID given
    	 * @throws ITrustException
    	 */
    	public PatientBean getPatient(long patientID) throws ITrustException {
    		return patientDAO.getPatient(patientID);
    	}
    	
    	/**
    	 * Gets the logged in person's representees
    	 * 
    	 * @return list of PatientBeans holding the representees
    	 * @throws ITrustException
    	 */
    	public List<PatientBean> getRepresentees() throws ITrustException {
    		return patientDAO.getRepresented(loggedInMID);
    	}
    	
    	/**
    	 * Returns the prescribing HCP for a prescription
    	 * 
    	 * @param prescription item in question
    	 * @return HCP who prescribed the prescription
    	 * @throws ITrustException
    	 */
    	public PersonnelBean getPrescribingDoctor(PrescriptionBean prescription) throws ITrustException {
    		return personnelDAO.getPrescribingDoctor(prescription);
    	}
    	
    	/**
    	 * Returns all the prescriptions for a given patient
    	 * 
    	 * @param patientID patient in question
    	 * @return list of all the prescriptions for that patient
    	 * @throws ITrustException
    	 */
    	public List<PrescriptionBean> getPrescriptionsForPatient(long patientID) throws ITrustException {
    		PatientBean patient = patientDAO.getPatient(patientID);
    		if (loggedInMID == patientID) {
    			return patientDAO.getExpiredPrescriptions(patientID);
    		}
    		
    		List<String> toList = new ArrayList<String>();
    		toList.add(patient.getEmail());
    		
    		List<PatientBean> representatives = patientDAO.getRepresenting(patientID);
    		for(PatientBean representative : representatives) {
    			if (loggedInMID == representative.getMID()) {
    				return patientDAO.getExpiredPrescriptions(patientID);
    			}
    			toList.add(representative.getEmail());
    		}
    		
    		List<PersonnelBean> dlhcps = patientDAO.getDeclaredHCPs(patientID);
    		for(PersonnelBean dlhcp : dlhcps) {
    			if (loggedInMID == dlhcp.getMID()) {
    				return patientDAO.getExpiredPrescriptions(patientID);
    			}
    			List<PersonnelBean> uaps = personnelDAO.getUAPsForHCP(dlhcp.getMID());
    			for(PersonnelBean uap : uaps) {
    				if (loggedInMID == uap.getMID()) {
    					return patientDAO.getPrescriptions(patientID);
    				}
    			}
    		}
    		
    		Email email = new Email();
    		email.setToList(toList);
    		email.setFrom("noreply@itrust.com");
    		email.setSubject("Undesignated Personnel Have Accessed Your Prescription Records");
    		email.setBody("An undesignated HCP or UAP has accessed your prescription records. For more information, please log in to iTrust.");
    		emailer.sendEmail(email);
    		return patientDAO.getPrescriptions(patientID);
    	}
    }