Skip to content
Snippets Groups Projects
EditLabProceduresAction.java 4.23 KiB
package edu.ncsu.csc.itrust.action;

import java.util.ArrayList;
import java.util.List;
import edu.ncsu.csc.itrust.action.base.EditOfficeVisitBaseAction;
import edu.ncsu.csc.itrust.beans.LOINCbean;
import edu.ncsu.csc.itrust.beans.LabProcedureBean;
import edu.ncsu.csc.itrust.beans.PersonnelBean;
import edu.ncsu.csc.itrust.dao.DAOFactory;
import edu.ncsu.csc.itrust.dao.mysql.LOINCDAO;
import edu.ncsu.csc.itrust.dao.mysql.LabProcedureDAO;
import edu.ncsu.csc.itrust.dao.mysql.PersonnelDAO;
import edu.ncsu.csc.itrust.exception.DBException;
import edu.ncsu.csc.itrust.exception.ITrustException;

/**
 * Handles lab procedures
 * add lab procedure
 * Edit lab procedure
 * Remove lab procedure
 */
public class EditLabProceduresAction extends EditOfficeVisitBaseAction {
	
	private LabProcedureDAO labProcedureDAO;
	private PersonnelDAO personnelDAO;
	private LOINCDAO loincDAO;
	
	/**
	 * EditLabProceduresAction
	 * @param factory factory
	 * @param hcpid hcpid
	 * @param pidString pidString
	 * @param ovIDString ovIDString
	 * @throws ITrustException
	 */
	public EditLabProceduresAction(DAOFactory factory, long hcpid, 
			   	String pidString, String ovIDString) 
		throws ITrustException {
		super(factory, hcpid, pidString, ovIDString);
		labProcedureDAO = factory.getLabProcedureDAO();
		personnelDAO = factory.getPersonnelDAO();
		loincDAO = factory.getLOINCDAO();
	}
	
	/**
	 * EditLabProceduresAction
	 * @param factory factory
	 * @param hcpid hcpid
	 * @param pidString pidString
	 * @throws ITrustException
	 */
	public EditLabProceduresAction(DAOFactory factory, long hcpid, 
				String pidString) 
		throws ITrustException {
		super(factory, hcpid, pidString);
		labProcedureDAO = factory.getLabProcedureDAO();
		personnelDAO = factory.getPersonnelDAO();
		loincDAO = factory.getLOINCDAO();
		
	}
	
	/**
	 * getLabProcedures
	 * @return list
	 * @throws DBException
	 */
	public List<LabProcedureBean> getLabProcedures() throws DBException {
		if (isUnsaved()) {
			return new ArrayList<LabProcedureBean>();
		} else {
			return labProcedureDAO.getAllLabProceduresForDocOV(getOvID());
		}
	}
	
	/**
	 * getLabProcedure
	 * @param id id
	 * @return lab procedure
	 * @throws ITrustException
	 */
	public LabProcedureBean getLabProcedure(long id) throws ITrustException {
		verifySaved();
		return labProcedureDAO.getLabProcedure(id);
	}
	
	/**
	 * addLabProcedure
	 * @param bean bean
	 * @throws ITrustException
	 */
	public void addLabProcedure(LabProcedureBean bean) throws ITrustException {
		verifySaved();
		//choose lab tech if not assigned in bean
		if ("".equals(bean.getStatus())) {
			bean.setStatus(LabProcedureBean.In_Transit);
		}
		labProcedureDAO.addLabProcedure(bean);
	}
	
	/**
	 * editLabProcedure
	 * @param bean bean
	 * @throws ITrustException
	 */
	public void editLabProcedure(LabProcedureBean bean) throws ITrustException {
		verifySaved();
		labProcedureDAO.updateLabProcedure(bean);
	}
	
	/**
	 * deleteLabProcedure
	 * @param bean bean
	 * @throws ITrustException
	 */
	public void deleteLabProcedure(LabProcedureBean bean) throws ITrustException {
		verifySaved();
		labProcedureDAO.removeLabProcedure(bean.getProcedureID());
	}
	
	/**
	 * getLabTechs
	 * @return lab techs
	 * @throws ITrustException
	 */
	public List<PersonnelBean> getLabTechs() throws ITrustException {
		return personnelDAO.getLabTechs();
	}
	
	/**
	 * getLabTechName
	 * @param mid mid
	 * @return ""
	 * @throws ITrustException
	 */
	public String getLabTechName(long mid) throws ITrustException {
		try {
			return personnelDAO.getName(mid);
		} catch (ITrustException e) {
			return "";
		}
	}
	
	/**
	 * getLabTechQueueSize
	 * @param mid mid
	 * @return lab tech queue size
	 * @throws ITrustException
	 */
	public int getLabTechQueueSize(long mid) throws ITrustException {
		return labProcedureDAO.getLabTechQueueSize(mid);
	}
	
	/**
	 * getLabTechQueueSizeByPriority
	 * @param mid mid
	 * @return lab tech queue size by priority
	 * @throws ITrustException
	 */
	public int[] getLabTechQueueSizeByPriority(long mid) throws ITrustException {
		return labProcedureDAO.getLabTechQueueSizeByPriority(mid);
	}
	
	/**
	 * getLabProcedureCodes
	 * @return get all loinc
	 * @throws DBException
	 */
	public List<LOINCbean> getLabProcedureCodes() throws DBException {
		return loincDAO.getAllLOINC();
	}
	
}