Update of /cvsroot/oscarmcmaster/oscar_mcmaster/web/WEB-INF/classes/src/org/oscarehr/PMmodule/web
In directory sfp-cvsdas-4.v30.ch3.sourceforge.com:/tmp/cvs-serv21761/web/WEB-INF/classes/src/org/oscarehr/PMmodule/web
Modified Files:
OcanFormAction.java ClientManagerAction.java OcanForm.java
Log Message:
add missing features of FULL ocan.
Index: OcanFormAction.java
===================================================================
RCS file: /cvsroot/oscarmcmaster/oscar_mcmaster/web/WEB-INF/classes/src/org/oscarehr/PMmodule/web/OcanFormAction.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** OcanFormAction.java 29 Mar 2010 16:24:56 -0000 1.4
--- OcanFormAction.java 13 Jan 2011 04:25:30 -0000 1.5
***************
*** 1,4 ****
--- 1,10 ----
package org.oscarehr.PMmodule.web;
+ import java.text.DateFormat;
+ import java.text.SimpleDateFormat;
+ import java.util.Calendar;
+ import java.util.Date;
+ import java.util.List;
+
import org.apache.commons.lang.StringUtils;
import org.oscarehr.common.dao.OcanClientFormDao;
***************
*** 38,46 ****
}
public static void saveOcanStaffForm(OcanStaffForm ocanStaffForm) {
LoggedInInfo loggedInInfo=LoggedInInfo.loggedInInfo.get();
ocanStaffForm.setProviderNo(loggedInInfo.loggedInProvider.getProviderNo());
ocanStaffForm.setProviderName(loggedInInfo.loggedInProvider.getFormattedName());
! ocanStaffFormDao.persist(ocanStaffForm);
}
--- 44,75 ----
}
+ public static OcanStaffForm createOcanStaffForm(String ocanStaffFormId, Integer clientId, boolean signed)
+ {
+ LoggedInInfo loggedInInfo=LoggedInInfo.loggedInInfo.get();
+ OcanStaffForm ocanStaffForm=new OcanStaffForm();
+ if(ocanStaffFormId==null || "".equals(ocanStaffFormId) || "null".equals(ocanStaffFormId)) {
+
+ //ocanStaffForm.setAdmissionId(admissionId);
+ ocanStaffForm.setOcanFormVersion("1.2");
+ ocanStaffForm.setClientId(clientId);
+ ocanStaffForm.setFacilityId(loggedInInfo.currentFacility.getId());
+ ocanStaffForm.setProviderNo(loggedInInfo.loggedInProvider.getProviderNo());
+ ocanStaffForm.setSigned(signed);
+ } else {
+ ocanStaffForm = OcanForm.getOcanStaffForm(Integer.valueOf(ocanStaffFormId));
+ }
+ return(ocanStaffForm);
+ }
+
public static void saveOcanStaffForm(OcanStaffForm ocanStaffForm) {
LoggedInInfo loggedInInfo=LoggedInInfo.loggedInInfo.get();
ocanStaffForm.setProviderNo(loggedInInfo.loggedInProvider.getProviderNo());
ocanStaffForm.setProviderName(loggedInInfo.loggedInProvider.getFormattedName());
! if(ocanStaffFormDao.findOcanStaffFormById(ocanStaffForm.getId())==null) {
! ocanStaffFormDao.persist(ocanStaffForm);
! } else {
! ocanStaffFormDao.merge(ocanStaffForm);
! }
!
}
***************
*** 49,60 ****
answer=StringUtils.trimToNull(answer);
if (answer==null) return;
- OcanStaffFormData ocanStaffFormData=new OcanStaffFormData();
-
- ocanStaffFormData.setOcanStaffFormId(ocanStaffFormId);
- ocanStaffFormData.setQuestion(question);
- ocanStaffFormData.setAnswer(answer);
-
- ocanStaffFormDataDao.persist(ocanStaffFormData);
}
--- 78,96 ----
answer=StringUtils.trimToNull(answer);
if (answer==null) return;
+ OcanStaffFormData ocanStaffFormData;
+ if(ocanStaffFormDataDao.findByQuestion(ocanStaffFormId, question).isEmpty()) {
+ ocanStaffFormData=new OcanStaffFormData();
+ ocanStaffFormData.setOcanStaffFormId(ocanStaffFormId);
+ ocanStaffFormData.setQuestion(question);
+ ocanStaffFormData.setAnswer(answer);
+ ocanStaffFormDataDao.persist(ocanStaffFormData); //create
+ } else {
+ ocanStaffFormData = ocanStaffFormDataDao.findLatestByQuestion(ocanStaffFormId, question);
+ ocanStaffFormData.setOcanStaffFormId(ocanStaffFormId);
+ ocanStaffFormData.setQuestion(question);
+ ocanStaffFormData.setAnswer(answer);
+ ocanStaffFormDataDao.merge(ocanStaffFormData); //update
+ }
}
***************
*** 97,99 ****
--- 133,189 ----
ocanClientFormDataDao.persist(ocanClientFormData);
}
+
+ public static boolean canCreateInitialAssessment(Integer clientId) {
+
+ boolean result = false;
+
+ LoggedInInfo loggedInInfo=LoggedInInfo.loggedInInfo.get();
+ List<OcanStaffForm> ocanStaffForm = ocanStaffFormDao.findCompletedInitialOcan(loggedInInfo.currentFacility.getId(),clientId);
+ if(ocanStaffForm.isEmpty()) {
+ result = true;
+ }
+
+ OcanStaffForm ocanStaffForm1 = ocanStaffFormDao.findLatestCompletedDischargedAssessment(loggedInInfo.currentFacility.getId(), clientId);
+ if(ocanStaffForm1!=null) {
+ Date completionDate = OcanForm.getAssessmentCompletionDate(ocanStaffForm1.getCompletionDate(),ocanStaffForm1.getClientCompletionDate());
+
+ Calendar cal = Calendar.getInstance();
+ cal.add(Calendar.MONTH,-3);
+ if(cal.getTime().after(completionDate)) {
+ result = true;
+ }
+ }
+
+ return result;
+ }
+
+ public static boolean isItTimeToDoReassessment(Integer clientId) {
+
+ boolean result = false;
+
+ LoggedInInfo loggedInInfo=LoggedInInfo.loggedInInfo.get();
+
+ List<OcanStaffForm> ocanStaffFormList1 = ocanStaffFormDao.findCompletedInitialOcan(loggedInInfo.currentFacility.getId(),clientId);
+
+ OcanStaffForm ocanStaffForm = null;
+ ocanStaffForm = ocanStaffFormDao.findLatestCompletedReassessment(loggedInInfo.currentFacility.getId(),clientId);
+
+ Date startDate = null;
+ if(ocanStaffForm!=null) {
+ startDate = OcanForm.getAssessmentStartDate(ocanStaffForm.getStartDate(),ocanStaffForm.getClientStartDate());
+ } else if(ocanStaffFormList1.size()>0) {
+ OcanStaffForm ocanStaffForm1 = ocanStaffFormList1.get(0);
+ startDate = OcanForm.getAssessmentStartDate(ocanStaffForm1.getStartDate(),ocanStaffForm1.getClientStartDate());
+ } else {
+ return result;
+ }
+
+ Calendar cal = Calendar.getInstance();
+ cal.add(Calendar.MONTH, -6);
+ if(cal.getTime().after(startDate)) {
+ result = true;
+ }
+
+ return result;
+ }
}
Index: ClientManagerAction.java
===================================================================
RCS file: /cvsroot/oscarmcmaster/oscar_mcmaster/web/WEB-INF/classes/src/org/oscarehr/PMmodule/web/ClientManagerAction.java,v
retrieving revision 1.174
retrieving revision 1.175
diff -C2 -d -r1.174 -r1.175
*** ClientManagerAction.java 10 Nov 2010 11:15:57 -0000 1.174
--- ClientManagerAction.java 13 Jan 2011 04:25:30 -0000 1.175
***************
*** 1386,1394 ****
request.setAttribute("referrals", getReferralsForSummary(Integer.parseInt(demographicNo), facilityId));
! //OCAN Staff/Client Assessment
! OcanStaffForm ocanStaffForm = ocanStaffFormDao.findLatestByFacilityClient(facilityId,Integer.valueOf(demographicNo));
! OcanClientForm ocanClientForm = ocanClientFormDao.findLatestByFacilityClient(facilityId,Integer.valueOf(demographicNo));
request.setAttribute("ocanStaffForm", ocanStaffForm);
! request.setAttribute("ocanClientForm", ocanClientForm);
//CDS
--- 1386,1393 ----
request.setAttribute("referrals", getReferralsForSummary(Integer.parseInt(demographicNo), facilityId));
! //FULL OCAN Staff/Client Assessment
! OcanStaffForm ocanStaffForm = ocanStaffFormDao.findLatestByFacilityClient(facilityId,Integer.valueOf(demographicNo),"FULL");
request.setAttribute("ocanStaffForm", ocanStaffForm);
!
//CDS
***************
*** 1552,1560 ****
request.setAttribute("cdsForms", cdsForms);
! //OCAN Forms
! List<OcanStaffForm> ocanStaffForms = ocanStaffFormDao.findByFacilityClient(facilityId, clientId);
! List<OcanClientForm> ocanClientForms = ocanClientFormDao.findByFacilityClient(facilityId, clientId);
request.setAttribute("ocanStaffForms", ocanStaffForms);
- request.setAttribute("ocanClientForms", ocanClientForms);
--- 1551,1557 ----
request.setAttribute("cdsForms", cdsForms);
! //FULL OCAN Forms
! List<OcanStaffForm> ocanStaffForms = ocanStaffFormDao.findByFacilityClient(facilityId, clientId,"FULL");
request.setAttribute("ocanStaffForms", ocanStaffForms);
Index: OcanForm.java
===================================================================
RCS file: /cvsroot/oscarmcmaster/oscar_mcmaster/web/WEB-INF/classes/src/org/oscarehr/PMmodule/web/OcanForm.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** OcanForm.java 29 Dec 2010 23:17:49 -0000 1.15
--- OcanForm.java 13 Jan 2011 04:25:30 -0000 1.16
***************
*** 2,7 ****
import java.util.ArrayList;
import java.util.HashMap;
- import java.util.Iterator;
import java.util.List;
import java.util.Map;
--- 2,7 ----
import java.util.ArrayList;
+ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
***************
*** 55,59 ****
}
! public static OcanStaffForm getOcanStaffForm(Integer clientId, int prepopulationLevel)
{
LoggedInInfo loggedInInfo=LoggedInInfo.loggedInInfo.get();
--- 55,60 ----
}
!
! public static OcanStaffForm getOcanStaffForm(Integer clientId, int prepopulationLevel,String ocanType)
{
LoggedInInfo loggedInInfo=LoggedInInfo.loggedInInfo.get();
***************
*** 62,66 ****
if(prepopulationLevel != OcanForm.PRE_POPULATION_LEVEL_NONE) {
! ocanStaffForm=ocanStaffFormDao.findLatestByFacilityClient(loggedInInfo.currentFacility.getId(), clientId);
}
--- 63,67 ----
if(prepopulationLevel != OcanForm.PRE_POPULATION_LEVEL_NONE) {
! ocanStaffForm=ocanStaffFormDao.findLatestByFacilityClient(loggedInInfo.currentFacility.getId(), clientId, ocanType);
}
***************
*** 83,86 ****
--- 84,88 ----
ocanStaffForm.setHcVersion(demographic.getVer());
ocanStaffForm.setDateOfBirth(demographic.getFormattedDob());
+ ocanStaffForm.setClientDateOfBirth(demographic.getFormattedDob());
ocanStaffForm.setGender(convertGender(demographic.getSex()));
}
***************
*** 151,163 ****
}
! private static List<OcanClientFormData> getClientAnswers(Integer ocanClientFormId, String question, int prepopulationLevel)
{
if(prepopulationLevel != OcanForm.PRE_POPULATION_LEVEL_ALL) {
! return(new ArrayList<OcanClientFormData>());
}
! if (ocanClientFormId==null) return(new ArrayList<OcanClientFormData>());
! return(ocanClientFormDataDao.findByQuestion(ocanClientFormId, question));
}
--- 153,166 ----
}
! private static List<OcanStaffFormData> getClientAnswers(Integer ocanClientFormId, String question, int prepopulationLevel)
{
if(prepopulationLevel != OcanForm.PRE_POPULATION_LEVEL_ALL) {
! return(new ArrayList<OcanStaffFormData>());
}
! if (ocanClientFormId==null) return(new ArrayList<OcanStaffFormData>());
! //return(ocanClientFormDataDao.findByQuestion(ocanClientFormId, question));
! return(ocanStaffFormDataDao.findByQuestion(ocanClientFormId, question));
}
***************
*** 177,181 ****
if(existingAnswers.size()>0) {value = existingAnswers.get(0).getAnswer();}
} else {
! List<OcanClientFormData> existingAnswers=getClientAnswers(ocanStaffFormId, question, prepopulationLevel);
if(existingAnswers.size()>0) {value = existingAnswers.get(0).getAnswer();}
}
--- 180,184 ----
if(existingAnswers.size()>0) {value = existingAnswers.get(0).getAnswer();}
} else {
! List<OcanStaffFormData> existingAnswers=getClientAnswers(ocanStaffFormId, question, prepopulationLevel);
if(existingAnswers.size()>0) {value = existingAnswers.get(0).getAnswer();}
}
***************
*** 231,235 ****
{
List<OcanStaffFormData> existingStaffAnswers=null;
! List<OcanClientFormData> existingClientAnswers=null;
if(!clientForm)
existingStaffAnswers = getStaffAnswers(ocanStaffFormId, question, prepopulationLevel);
--- 234,238 ----
{
List<OcanStaffFormData> existingStaffAnswers=null;
! List<OcanStaffFormData> existingClientAnswers=null;
if(!clientForm)
existingStaffAnswers = getStaffAnswers(ocanStaffFormId, question, prepopulationLevel);
***************
*** 248,252 ****
selected=(OcanStaffFormData.containsAnswer(existingStaffAnswers, option.getOcanDataCategoryValue())?"selected=\"selected\"":"");
else
! selected=(OcanClientFormData.containsAnswer(existingClientAnswers, option.getOcanDataCategoryValue())?"selected=\"selected\"":"");
sb.append("<option "+selected+" value=\""+StringEscapeUtils.escapeHtml(option.getOcanDataCategoryValue())+"\" title=\""+htmlEscapedName+"\">"+htmlEscapedName+"</option>");
--- 251,255 ----
selected=(OcanStaffFormData.containsAnswer(existingStaffAnswers, option.getOcanDataCategoryValue())?"selected=\"selected\"":"");
else
! selected=(OcanStaffFormData.containsAnswer(existingClientAnswers, option.getOcanDataCategoryValue())?"selected=\"selected\"":"");
sb.append("<option "+selected+" value=\""+StringEscapeUtils.escapeHtml(option.getOcanDataCategoryValue())+"\" title=\""+htmlEscapedName+"\">"+htmlEscapedName+"</option>");
***************
*** 264,268 ****
{
List<OcanStaffFormData> existingStaffAnswers=null;
! List<OcanClientFormData> existingClientAnswers=null;
if(!clientForm)
existingStaffAnswers = getStaffAnswers(ocanStaffFormId, question, prepopulationLevel);
--- 267,271 ----
{
List<OcanStaffFormData> existingStaffAnswers=null;
! List<OcanStaffFormData> existingClientAnswers=null;
if(!clientForm)
existingStaffAnswers = getStaffAnswers(ocanStaffFormId, question, prepopulationLevel);
***************
*** 281,285 ****
selected=(OcanStaffFormData.containsAnswer(existingStaffAnswers, option.getOrgName())?"selected=\"selected\"":"");
else
! selected=(OcanClientFormData.containsAnswer(existingClientAnswers, option.getOrgName())?"selected=\"selected\"":"");
sb.append("<option "+selected+" value=\""+StringEscapeUtils.escapeHtml(option.getOrgName())+"\" title=\""+htmlEscapedName+"\">"+htmlEscapedName+"</option>");
--- 284,288 ----
selected=(OcanStaffFormData.containsAnswer(existingStaffAnswers, option.getOrgName())?"selected=\"selected\"":"");
else
! selected=(OcanStaffFormData.containsAnswer(existingClientAnswers, option.getOrgName())?"selected=\"selected\"":"");
sb.append("<option "+selected+" value=\""+StringEscapeUtils.escapeHtml(option.getOrgName())+"\" title=\""+htmlEscapedName+"\">"+htmlEscapedName+"</option>");
***************
*** 296,300 ****
{
List<OcanStaffFormData> existingStaffAnswers=null;
! List<OcanClientFormData> existingClientAnswers=null;
if(!clientForm)
existingStaffAnswers = getStaffAnswers(ocanStaffFormId, question, prepopulationLevel);
--- 299,303 ----
{
List<OcanStaffFormData> existingStaffAnswers=null;
! List<OcanStaffFormData> existingClientAnswers=null;
if(!clientForm)
existingStaffAnswers = getStaffAnswers(ocanStaffFormId, question, prepopulationLevel);
***************
*** 313,317 ****
selected=(OcanStaffFormData.containsAnswer(existingStaffAnswers, option.getProgramName())?"selected=\"selected\"":"");
else
! selected=(OcanClientFormData.containsAnswer(existingClientAnswers, option.getProgramName())?"selected=\"selected\"":"");
sb.append("<option "+selected+" value=\""+StringEscapeUtils.escapeHtml(option.getProgramName())+"\" title=\""+htmlEscapedName+"\">"+htmlEscapedName+"</option>");
--- 316,320 ----
selected=(OcanStaffFormData.containsAnswer(existingStaffAnswers, option.getProgramName())?"selected=\"selected\"":"");
else
! selected=(OcanStaffFormData.containsAnswer(existingClientAnswers, option.getProgramName())?"selected=\"selected\"":"");
sb.append("<option "+selected+" value=\""+StringEscapeUtils.escapeHtml(option.getProgramName())+"\" title=\""+htmlEscapedName+"\">"+htmlEscapedName+"</option>");
***************
*** 341,344 ****
--- 344,368 ----
}
+ public static String renderAsAssessmentStatusSelectOptions(OcanStaffForm ocanStaffForm)
+ {
+ String assessmentStatus = ocanStaffForm.getAssessmentStatus();
+ if(assessmentStatus==null) assessmentStatus = "In Progress";
+ List<OcanFormOption> options = getOcanFormOptions("OCAN Assessment Status");
+
+ StringBuilder sb=new StringBuilder();
+
+ for (OcanFormOption option : options)
+ {
+ String htmlEscapedName=StringEscapeUtils.escapeHtml(option.getOcanDataCategoryName());
+ //String lengthLimitedEscapedName=limitLengthAndEscape(option.getOcanDataCategoryName());
+ String selected=assessmentStatus.equals(option.getOcanDataCategoryValue())?"selected=\"selected\"":"";
+
+ sb.append("<option "+selected+" value=\""+StringEscapeUtils.escapeHtml(option.getOcanDataCategoryValue())+"\" title=\""+htmlEscapedName+"\">"+htmlEscapedName+"</option>");
+ }
+
+ return(sb.toString());
+ }
+
+
public static String renderAsDomainSelectOptions(Integer ocanStaffFormId, String question, List<OcanFormOption> options, String[] valuesToInclude, int prepopulationLevel)
{
***************
*** 416,420 ****
{
List<OcanStaffFormData> existingAnswers= null;
! List<OcanClientFormData> existingClientAnswers=null;
StringBuilder sb=new StringBuilder();
--- 440,444 ----
{
List<OcanStaffFormData> existingAnswers= null;
! List<OcanStaffFormData> existingClientAnswers=null;
StringBuilder sb=new StringBuilder();
***************
*** 737,740 ****
}
!
}
--- 761,781 ----
}
! public static Date getAssessmentCompletionDate(Date completionDate, Date clientCompletionDate) {
! if(clientCompletionDate==null || completionDate.after(clientCompletionDate)) {
! return completionDate;
! } else {
! return clientCompletionDate;
! }
! }
!
! public static Date getAssessmentStartDate(Date startDate, Date clientStartDate) {
! if(clientStartDate==null || startDate.before(clientStartDate)) {
! return startDate;
! } else {
! return clientStartDate;
! }
! }
!
!
!
}
|