package org.msh.tb.cases; import org.jboss.seam.Component; import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Observer; import org.msh.etbm.commons.transactionlog.ActionTX; import org.msh.tb.entities.TbCase; import org.msh.tb.entities.Tbunit; import org.msh.tb.entities.enums.CaseState; import org.msh.tb.entities.enums.RoleAction; import java.util.Date; @Name("caseLogService") public class CaseLogService { @In(required=true) CaseHome caseHome; /** * Begin a transaction * @param roleName * @param tbcase * @return */ protected ActionTX beginTX(String roleName, TbCase tbcase) { return ActionTX .begin(roleName, tbcase, RoleAction.EXEC) .setEntityClass( TbCase.class.getSimpleName() ); } /** * Register case validation */ @Observer("case.validate") public void logValidation() { TbCase tbcase = caseHome.getInstance(); beginTX("CASE_VALIDATE", tbcase) .addRow("DisplayCaseNumber.VALIDATION_NUMBER", tbcase.getDisplayValidationNumber()) .end(); } /** * Register case transfer out to another health unit */ @Observer("case.transferout") public void logCaseTransferOut() { TbCase tbcase = caseHome.getInstance(); CaseMoveHome caseMoveHome = (CaseMoveHome)Component.getInstance("caseMoveHome"); ActionTX atx = beginTX("CASE_TRANSFEROUT", tbcase); atx.getDetailWriter().addTableRow("cases.movdate", caseMoveHome.getMoveDate()); atx.getDetailWriter().addTableRow("patients.desthu", caseMoveHome.getTbunitselection2().getSelected().toString()); atx.getDetailWriter().addTableRow("AdministrativeUnit", caseMoveHome.getTbunitselection2().getSelected().getAdminUnit().getFullDisplayName()); atx.end(); } /** * Register case transfer in to another health unit */ @Observer("case.transferin") public void logCaseTransferIn() { TbCase tbcase = caseHome.getInstance(); CaseMoveHome caseMoveHome = (CaseMoveHome)Component.getInstance("caseMoveHome"); ActionTX atx = beginTX("CASE_TRANSFERIN", tbcase); atx.getDetailWriter().addTableRow("cases.movdate", caseMoveHome.getMoveDate()); atx.getDetailWriter().addTableRow("patients.desthu", tbcase.getOwnerUnit().getName().toString()); atx.end(); //saveExecuteTransaction("CASE_TRANSFERIN", tbcase); } /** * Register case rolling back of case transferring out */ @Observer("case.transferout.rollback") public void logCaseTransferOutRoolback() { TbCase tbcase = caseHome.getInstance(); Date transferDate = (Date)Component.getInstance("transferdate"); Tbunit unit = (Tbunit)Component.getInstance("transferunit"); ActionTX atx = beginTX("CASE_TRANSFERCANCEL", tbcase); atx.getDetailWriter().addTableRow("cases.movdate", transferDate); atx.getDetailWriter().addTableRow("patients.desthu", unit.getName().toString()); atx.getDetailWriter().addTableRow("AdministrativeUnit", unit.getAdminUnit().getFullDisplayName()); atx.end(); //saveExecuteTransaction("CASE_TRANSFERCANCEL", tbcase); } /** * Register case outcome */ @Observer("case.close") public void logCaseClose() { TbCase tbcase = caseHome.getInstance(); ActionTX atx = beginTX("CASE_CLOSE", tbcase); atx.getDetailWriter().addTableRow("TbCase.outcomeDate", tbcase.getOutcomeDate()); atx.getDetailWriter().addTableRow("cases.outcome", tbcase.getState()); if (tbcase.getState().equals(CaseState.OTHER)) { atx.getDetailWriter().addTableRow("TbCase.otherOutcome", tbcase.getOtherOutcome()); } atx.end(); //saveExecuteTransaction("CASE_CLOSE", tbcase); } /** * Register case reopen */ @Observer("case.reopen") public void logCaseReopen() { TbCase tbcase = caseHome.getInstance(); beginTX("CASE_REOPEN", tbcase).end(); } /** * Register case number changed */ @Observer("case.casenumbermodified") public void logCaseNumberModified() { TbCase tbcase = caseHome.getInstance(); beginTX("CASE_CHANGENUMBER", tbcase).end(); } @Observer("case.starttreatment") public void logStartTreatment() { } }