Downloads Documentation Community Contribute Demo






Show Sidebar
Login | Register

root/openmrs-modules/form2program/src/org/openmrs/module/form2program/advice/EncounterCreatedAfterAdvice.java

Revision 3441, 2.6 kB (checked in by bmckown, 9 months ago)

form2program module: Fixed bug mentioned in #627 PatientProgram creator is now set to Encounter.getCreator(). Changed version since OpenMRS build requirement is now 1.2.0.3440

Line 
1 package org.openmrs.module.form2program.advice;
2
3 import java.lang.reflect.Method;
4 import java.util.List;
5
6 import org.apache.commons.logging.Log;
7 import org.apache.commons.logging.LogFactory;
8 import org.openmrs.Encounter;
9 import org.openmrs.EncounterType;
10 import org.openmrs.Patient;
11 import org.openmrs.api.ProgramWorkflowService;
12 import org.openmrs.api.context.Context;
13 import org.openmrs.module.form2program.Form2ProgramMap;
14 import org.openmrs.module.form2program.Form2ProgramService;
15 import org.springframework.aop.AfterReturningAdvice;
16
17 public class EncounterCreatedAfterAdvice implements AfterReturningAdvice {
18
19         private Log log = LogFactory.getLog(this.getClass());
20
21         private int count = 0;
22
23         private Form2ProgramService getForm2ProgramService() {
24                 return (Form2ProgramService)Context.getService(Form2ProgramService.class);
25         }
26        
27         private ProgramWorkflowService getProgramWorkflowService() {
28                 //TODO: checkPermission
29                 return Context.getProgramWorkflowService();
30         }
31        
32         public void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable {
33                 // log.debug("Method: " + method.getName() + ". After advice called " + (++count) + " time(s) now.");
34                 if (method.getName().endsWith("encounterCreated")) {
35                         //log.debug("METHOD: " + method.getName());
36                         //log.debug("PARAMETER_TYPE: " + method.getParameterTypes().getClass().getName().toString());
37                         //log.debug("RETURN: " + returnValue.toString());
38                         for (int i = 0; i < args.length; i++) {
39                                 //log.debug("ARGS[" + i + "]: " + args[i].toString());
40                         }
41                         Form2ProgramService f2pService = this.getForm2ProgramService();
42                         //log.error("TARGET: " + target.toString());
43                         java.util.Date today = new java.util.Date();
44                         Encounter encounter = (Encounter)args[0];
45                         Patient patient = encounter.getPatient();
46                         EncounterType encounterType = encounter.getEncounterType();
47 //                      List<Form2ProgramMap> form2ProgramMaps = getForm2ProgramService().getForm2ProgramMaps(encounterType);
48                         List<Form2ProgramMap> form2ProgramMaps = getForm2ProgramService().getForm2ProgramMaps();
49                         for (Form2ProgramMap fpm : form2ProgramMaps) {
50                                 // TODO: Check HibernateProgramWorkflowDAO fromDate and toDate to make sure they are not reversed.
51                                 if (f2pService.existsForm2ProgramMap(fpm.getProgram(), encounterType))
52                                         if (!this.getProgramWorkflowService().isInProgram(patient, fpm.getProgram(), today, null)) {
53                                                 this.getProgramWorkflowService().enrollPatientInProgram(patient, fpm.getProgram(), encounter.getEncounterDatetime(), null, encounter.getCreator());
54                                 }
55                         }
56                 }
57         }
58        
59 }
Note: See TracBrowser for help on using the browser.