Modified:
branches/bmas-staging/lib/org/freemedsoftware/api/Signatures.class.php
branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/CurrentState.java
branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/Util.java
branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/screen/MainScreen.java
branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/screen/PreferencesScreen.java
branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/widget/SchedulerWidget.java
branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/widget/SignatureWidget.java
branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/widget/Toaster.java
Log:
Modified: branches/bmas-staging/lib/org/freemedsoftware/api/Signatures.class.php
===================================================================
--- branches/bmas-staging/lib/org/freemedsoftware/api/Signatures.class.php 2010-08-26 20:24:02 UTC (rev 5831)
+++ branches/bmas-staging/lib/org/freemedsoftware/api/Signatures.class.php 2010-08-31 14:11:27 UTC (rev 5832)
@@ -77,7 +77,23 @@
$r = $GLOBALS['sql']->queryRow( $query );
$this->outputImage($r);
} // end method GetSignatureImageById
+
+ // Method: getSignatureId
+ //
+ // Serve signature id w.r.t jobid
+ //
+ // Parameters:
+ //
+ // $job_id - Signature table jobid
+ //
+ public function getSignatureId ( $job_id ) {
+ $query = "SELECT id FROM signature WHERE collector_jobid = ".$GLOBALS['sql']->quote( $job_id );
+ $r = $GLOBALS['sql']->queryRow( $query );
+ return $r['id'];
+ } // end method GetSignatureImageById
+
+
// Method: GetSignatureImage
//
// Serve signature image back to the browser using
@@ -118,15 +134,16 @@
//
// $module -
//
- // $oid - (optional)
- //
// $module_field - (optional)
//
+ // $oid - (optional)
+ //
// Return:
//
- // Job identifier on SHIM workstation, or 0 if it fails to enqueue.
+ // Hash containg Job identifier on SHIM workstation, or 0 if it fails to enqueue AND signature id.
//
- protected function requestSignature ( $type, $patient, $module, $oid=NULL, $module_field=NULL ) {
+ public function requestSignature ( $type, $patient, $module, $module_field=NULL , $oid=NULL ) {
+
switch ( $type ) {
case 'patient':
$pObj = CreateObject('org.freemedsoftware.core.Patient', $patient);
@@ -147,7 +164,7 @@
syslog(LOG_INFO, "shim returned ".$return);
if (!is_object($this_user)) $this_user = CreateObject('org.freemedsoftware.core.User');
- $q = $GLOBALS['sql']->insert_query(
+ $query = $GLOBALS['sql']->insert_query(
'signature',
array(
'patient' => $patient
@@ -160,7 +177,13 @@
)
);
- return $jobId;
+
+ $result = $GLOBALS['sql']->query ( $query );
+
+ $new_id = $GLOBALS['sql']->lastInsertId( 'signature', 'id' );
+
+ return array('signature_id' => ''.$new_id
+ , 'job_id' => ''.$jobId);
} // end method requestSignature
// Method: getJobStatus
@@ -181,8 +204,10 @@
// * NEW : job is queued
//
public function getJobStatus ( $jobId ) {
+
$sc = $this->getSoapClient( $workstation );
return $sc->getJobStatus( (object) array( 'requestId' => (int) $jobId ) )->return;
+
} // end method getJobStatus
// Method: recordSignatureFromWorkstation
Modified: branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/CurrentState.java
===================================================================
--- branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/CurrentState.java 2010-08-26 20:24:02 UTC (rev 5831)
+++ branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/CurrentState.java 2010-08-31 14:11:27 UTC (rev 5832)
@@ -101,7 +101,7 @@
public static Integer defaultProviderGroup = null;
- public static String SYSTEM_NOTIFY_TYPE = "";
+ private static String SYSTEM_NOTIFY_TYPE = AppConstants.SYSTEM_NOTIFY_ERROR;
public static boolean FormAutosaveEnable = true;
@@ -236,7 +236,18 @@
public static void assignMinCharCountForSmartSearch(Integer charCount) {
MinCharCountForSmartSearch = charCount;
}
+
+ /**
+ * Assign SYSTEM_NOTIFY_TYPE
+ *
+ * @param boolean
+ */
+ public static void assignSYSTEM_NOTIFY_TYPE(String notify_type) {
+ if(notify_type!=null && notify_type.length()>0)
+ SYSTEM_NOTIFY_TYPE = notify_type;
+ }
+
/**
* Add an item to the status bar stack.
*
@@ -322,6 +333,10 @@
return patientScreenMap;
}
+ public static String getSYSTEM_NOTIFY_TYPE() {
+ return SYSTEM_NOTIFY_TYPE;
+ }
+
/**
* Get user specific configuration value, or "" if there is no value.
*
Modified: branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/Util.java
===================================================================
--- branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/Util.java 2010-08-26 20:24:02 UTC (rev 5831)
+++ branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/Util.java 2010-08-31 14:11:27 UTC (rev 5832)
@@ -142,7 +142,7 @@
* If true then JSONRPC calls can be sent to third server in hosted mode Set
* server URL in relay.jsp
*/
- public static boolean GWT_HOSTED_MODE = false;
+ public static boolean GWT_HOSTED_MODE = false
public static enum ProgramMode {
NORMAL, STUBBED, JSONRPC
@@ -1510,9 +1510,9 @@
*/
public static void showErrorMsg(String module,String msg){
- JsonUtil.debug("Error SYSTEM_NOTIFY_TYPE" + CurrentState.SYSTEM_NOTIFY_TYPE);
- if(CurrentState.SYSTEM_NOTIFY_TYPE.equals(AppConstants.SYSTEM_NOTIFY_ERROR)
- ||CurrentState.SYSTEM_NOTIFY_TYPE.equals(AppConstants.SYSTEM_NOTIFY_ALL))
+ JsonUtil.debug("Error SYSTEM_NOTIFY_TYPE:" + CurrentState.getSYSTEM_NOTIFY_TYPE()+" module:"+module+" msg:"+msg);
+ if(CurrentState.getSYSTEM_NOTIFY_TYPE().equalsIgnoreCase(AppConstants.SYSTEM_NOTIFY_ERROR)
+ ||CurrentState.getSYSTEM_NOTIFY_TYPE().equalsIgnoreCase(AppConstants.SYSTEM_NOTIFY_ALL))
CurrentState.getToaster().addItem(module,
msg,
Toaster.TOASTER_ERROR);
@@ -1528,9 +1528,9 @@
*/
public static void showInfoMsg(String module,String msg){
- JsonUtil.debug("INFO SYSTEM_NOTIFY_TYPE" + CurrentState.SYSTEM_NOTIFY_TYPE);
- if(CurrentState.SYSTEM_NOTIFY_TYPE.equals(AppConstants.SYSTEM_NOTIFY_INFO)
- ||CurrentState.SYSTEM_NOTIFY_TYPE.equals(AppConstants.SYSTEM_NOTIFY_ALL))
+ JsonUtil.debug("Info SYSTEM_NOTIFY_TYPE:" + CurrentState.getSYSTEM_NOTIFY_TYPE()+" module:"+module+" msg:"+msg);
+ if(CurrentState.getSYSTEM_NOTIFY_TYPE().equalsIgnoreCase(AppConstants.SYSTEM_NOTIFY_INFO)
+ ||CurrentState.getSYSTEM_NOTIFY_TYPE().equalsIgnoreCase(AppConstants.SYSTEM_NOTIFY_ALL))
CurrentState.getToaster().addItem(module,
msg,
Toaster.TOASTER_INFO);
Modified: branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/screen/MainScreen.java
===================================================================
--- branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/screen/MainScreen.java 2010-08-26 20:24:02 UTC (rev 5831)
+++ branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/screen/MainScreen.java 2010-08-31 14:11:27 UTC (rev 5832)
@@ -667,7 +667,7 @@
initNavigations();
CurrentState.CUR_THEME = CurrentState.getUserConfig(AppConstants.SYSTEM_THEME,"String").toString();
Util.updateStyleSheets(CurrentState.CUR_THEME, CurrentState.LAST_THEME);
- CurrentState.SYSTEM_NOTIFY_TYPE = CurrentState.getUserConfig(AppConstants.SYSTEM_NOTIFICATION,"String").toString();
+ CurrentState.assignSYSTEM_NOTIFY_TYPE(CurrentState.getUserConfig(AppConstants.SYSTEM_NOTIFICATION,"String").toString());
populateDefaultFacility();
}
Modified: branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/screen/PreferencesScreen.java
===================================================================
--- branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/screen/PreferencesScreen.java 2010-08-26 20:24:02 UTC (rev 5831)
+++ branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/screen/PreferencesScreen.java 2010-08-31 14:11:27 UTC (rev 5832)
@@ -152,7 +152,7 @@
CurrentState.setUserConfig("providerGroup", providerGroupList.getStoredValue());
CurrentState.setUserConfig(AppConstants.SYSTEM_NOTIFICATION, systemNotificationSettingsList.getStoredValue());
CurrentState.setUserConfig("defaultWidgets", templateWidget.getSelectedSectionFeildsMap());
- CurrentState.SYSTEM_NOTIFY_TYPE = systemNotificationSettingsList.getStoredValue();
+ CurrentState.assignSYSTEM_NOTIFY_TYPE(systemNotificationSettingsList.getStoredValue());
try{
CurrentState.defaultProviderGroup=new Integer(providerGroupList.getStoredValue());
}
Modified: branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/widget/SchedulerWidget.java
===================================================================
--- branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/widget/SchedulerWidget.java 2010-08-26 20:24:02 UTC (rev 5831)
+++ branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/widget/SchedulerWidget.java 2010-08-31 14:11:27 UTC (rev 5832)
@@ -2147,14 +2147,16 @@
final Label startTimeLabel = new Label("Start Time");
flexTable.setWidget(row, 0, startTimeLabel);
- startTime = new CustomTimeBox();
+ startTime = new CustomTimeBox(show24HourClock ? "HH:mm"
+ : "hh:mmaa");
flexTable.setWidget(row, 1, startTime);
row++;
final Label endTimeLabel = new Label("End Time");
flexTable.setWidget(row, 0, endTimeLabel);
- endTime = new CustomTimeBox();
+ endTime = new CustomTimeBox(show24HourClock ? "HH:mm"
+ : "hh:mmaa");
flexTable.setWidget(row, 1, endTime);
row++;
@@ -2510,6 +2512,8 @@
protected EventData externalDataEvent = null;
+ boolean show24HourClock = false;
+
public SchedulerWidget() {
super(moduleName);
@@ -2518,7 +2522,7 @@
int startHour = 10;
int endHour = 18;
int intervalsPerHour = 4;
- boolean show24HourClock = false;
+ show24HourClock = false;
int intervalHeight = 50;
if(Util.getProgramMode() == ProgramMode.JSONRPC){
startHour = CurrentState.getSystemConfig("calshr")!=null?Integer.parseInt(CurrentState.getSystemConfig("calshr")):startHour;
Modified: branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/widget/SignatureWidget.java
===================================================================
--- branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/widget/SignatureWidget.java 2010-08-26 20:24:02 UTC (rev 5831)
+++ branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/widget/SignatureWidget.java 2010-08-31 14:11:27 UTC (rev 5832)
@@ -25,16 +25,19 @@
package org.freemedsoftware.gwt.client.widget;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import org.freemedsoftware.gwt.client.CustomCommand;
import org.freemedsoftware.gwt.client.CustomRequestCallback;
+import org.freemedsoftware.gwt.client.JsonUtil;
import org.freemedsoftware.gwt.client.Util;
import org.freemedsoftware.gwt.client.i18n.AppConstants;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
@@ -57,10 +60,24 @@
protected Integer oId = null;
- protected Image signatureImage = null;
+ protected Integer jobId = null;
+ protected Image signatureImage = null;
+
+ protected Image loadingImage = null;
+
protected CustomDialogBox customDialogBox;
+ protected Timer signatureRequestTimer;
+
+ public static final String STATUS_COMPLETE = "COMPLETE";
+
+ public static final String STATUS_ERROR = "ERROR";
+
+ public CustomButton confirmButton;
+
+ public CustomButton takeSignatureButton;
+
protected SignatureWidget() {
}
@@ -91,15 +108,26 @@
Label lebel = new Label("Please Sign on Electronic Signature Pad!");
mainPanel.add(lebel);
+ HorizontalPanel imagesHPanel = new HorizontalPanel();
+ mainPanel.add(imagesHPanel);
+ mainPanel.setCellHorizontalAlignment(imagesHPanel, HasHorizontalAlignment.ALIGN_CENTER);
+
signatureImage = new Image(Util.getResourcesURL()+"no-image.jpg");
signatureImage.setSize("300", "100");
- mainPanel.add(signatureImage);
+ imagesHPanel.add(signatureImage);
+ imagesHPanel.setCellHorizontalAlignment(signatureImage, HasHorizontalAlignment.ALIGN_CENTER);
+ loadingImage = new Image(Util.getResourcesURL()+"loading.gif");
+ loadingImage.setVisible(false);
+ imagesHPanel.add(loadingImage);
+ imagesHPanel.setCellHorizontalAlignment(loadingImage, HasHorizontalAlignment.ALIGN_CENTER);
+
+
HorizontalPanel horizontalPanel = new HorizontalPanel();
mainPanel.add(horizontalPanel);
mainPanel.setCellHorizontalAlignment(horizontalPanel, HasHorizontalAlignment.ALIGN_CENTER);
- final CustomButton confirmButton = new CustomButton("Confirm",AppConstants.ICON_ADD);
+ confirmButton = new CustomButton("Confirm",AppConstants.ICON_ADD);
confirmButton.setVisible(false);
horizontalPanel.add(confirmButton);
@@ -114,40 +142,42 @@
});
- final CustomButton takeSignatureButton = new CustomButton("Take Signature",AppConstants.ICON_DONE);
+ takeSignatureButton = new CustomButton("Take Signature",AppConstants.ICON_DONE);
takeSignatureButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
List paramsList = new ArrayList();
+ paramsList.add("patient");
paramsList.add(patientId);
paramsList.add(module);
if(moduleField!=null)
paramsList.add(moduleField);
if(oId!=null)
paramsList.add(oId);
- Util.callApiMethod(MODULE_CLASS, "GetSignatureFromDevice", paramsList, new CustomRequestCallback() {
+ Util.callApiMethod(MODULE_CLASS, "requestSignature", paramsList, new CustomRequestCallback() {
@Override
public void onError() {
+ resetToDefault();
Util.showErrorMsg(MODULE_CLASS, "Failed to get Signature, Try Again!!!!");
}
@Override
public void jsonifiedData(Object data) {
if(data!=null){
- signatureId = (Integer)data;
- String[] params = {signatureId.toString()};
- signatureImage.setUrl(Util
- .getJsonRequest(
- "org.freemedsoftware.api."+MODULE_CLASS+".GetSignatureImageById",
- params));
- takeSignatureButton.setVisible(false);
- confirmButton.setVisible(true);
+ HashMap<String,String> result = (HashMap<String,String>)data;
+ jobId = Integer.parseInt(result.get("job_id"));
+ signatureId = Integer.parseInt(result.get("signature_id"));
+ signatureImage.setVisible(false);
+ loadingImage.setVisible(true);
+ takeSignatureButton.setEnabled(false);
+ cancelSignatureRequest();
+ startSignatureRequest(jobId);
}
}
- }, "Integer");
+ }, "HashMap<String,String>");
}
});
@@ -159,6 +189,7 @@
@Override
public void onClick(ClickEvent event) {
+ resetToDefault();
hide();
}
@@ -223,5 +254,72 @@
SignatureWidget.updateOid(id, oid);
}
}
+
+ public void cancelSignatureRequest() {
+ if (signatureRequestTimer != null)
+ signatureRequestTimer.cancel();
+ }
+ public void startSignatureRequest(final Integer jobID) {
+ if (signatureRequestTimer == null) {
+ JsonUtil.debug("SignatureRequest:start");
+ signatureRequestTimer = new Timer() {
+ public void run() {
+ try {
+ List paramsList = new ArrayList();
+ paramsList.add(jobID);
+ Util.callApiMethod(MODULE_CLASS, "getJobStatus", paramsList, new CustomRequestCallback() {
+
+ @Override
+ public void onError() {
+ resetToDefault();
+ Util.showErrorMsg(MODULE_CLASS, "Failed to get Signature!!!");
+ }
+
+ @Override
+ public void jsonifiedData(Object data) {
+ if(data!=null){
+ String status = (String)data;
+ if(status.equalsIgnoreCase(STATUS_COMPLETE)){
+ showSignature();
+ }else if(status.equalsIgnoreCase(STATUS_ERROR)){
+ resetToDefault();
+ Util.showErrorMsg(MODULE_CLASS, "Failed to get Signature!!!");
+ }
+ }
+ }
+
+ }, "String");
+ } catch (Exception e) {
+ JsonUtil.debug("Exception : " + e.getMessage());
+ }
+ JsonUtil.debug("SignatureRequest:restart");
+ signatureRequestTimer.schedule(10000);
+ }
+ };
+ // Run initial polling ...
+ signatureRequestTimer.run();
+ } else {
+ cancelSignatureRequest();
+ signatureRequestTimer.run();
+ }
+ }
+
+ protected void showSignature(){
+ String[] params = { signatureId.toString() };
+ signatureImage.setUrl(Util.getJsonRequest("org.freemedsoftware.api."
+ + MODULE_CLASS + ".GetSignatureImageById", params));
+ resetToDefault();
+ takeSignatureButton.setVisible(false);
+ confirmButton.setVisible(true);
+
+ }
+
+ protected void resetToDefault(){
+ signatureImage.setVisible(true);
+ loadingImage.setVisible(false);
+ takeSignatureButton.setEnabled(true);
+ cancelSignatureRequest();
+ }
+
}
Modified: branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/widget/Toaster.java
===================================================================
--- branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/widget/Toaster.java 2010-08-26 20:24:02 UTC (rev 5831)
+++ branches/bmas-staging/ui/gwt/src/org/freemedsoftware/gwt/client/widget/Toaster.java 2010-08-31 14:11:27 UTC (rev 5832)
@@ -157,7 +157,7 @@
public void setPosition(int offsetWidth, int offsetHeight) {
int left = (Window.getClientWidth() - offsetWidth) - 5;
int top = (Window.getClientHeight() - offsetHeight) - 5;
- setPopupPosition(left, top);
+ setPopupPosition(left, top+Window.getScrollTop());
}
});