diff --git a/plugins/financial-audit/assets/controllers/patient-flow-controller.js b/plugins/financial-audit/assets/controllers/patient-flow-controller.js
index 10d2499..0a089cc 100644
--- a/plugins/financial-audit/assets/controllers/patient-flow-controller.js
+++ b/plugins/financial-audit/assets/controllers/patient-flow-controller.js
@@ -4,8 +4,15 @@ angular.module("EmmetBlue")
$scope.loadImage = utils.loadImage;
$scope.dtInstance = {};
$scope.dtOptions = utils.DT.optionsBuilder
- .fromFnPromise(function(){
- var url = '/audit/unlock-log/view-unlocked?';
+ .newOptions()
+ .withFnServerData(function(source, data, callback, settings){
+ var draw = data[0].value;
+ var order = data[2].value;
+ var start = data[3].value;
+ var length = data[4].value;
+ var search= data[5].value.value;
+
+ var url = '/audit/unlock-log/view-unlocked?paginate&from='+start+'&size='+length+'&keywordsearch='+search+'&';
var filter = $scope.requestFilter;
var _filter = "";
if (filter.type == 'date'){
@@ -14,10 +21,25 @@ angular.module("EmmetBlue")
}
var requests = utils.serverRequest(url+_filter, 'GET');
- return requests;
+ requests.then(function(response){
+ var records = {
+ data: response.data,
+ draw: draw,
+ recordsTotal: response.total,
+ recordsFiltered: response.filtered
+ };
+
+ callback(records);
+ }, function(error){
+ utils.errorHandler(error);
+ });
})
+ .withDataProp('data')
+ .withOption('processing', true)
+ .withOption('serverSide', true)
+ .withOption('paging', true)
.withPaginationType('full_numbers')
- .withDisplayLength(50)
+ .withDisplayLength(100)
.withOption('createdRow', function(row, data, dataIndex){
utils.compile(angular.element(row).contents())($scope);
})
@@ -82,6 +104,14 @@ angular.module("EmmetBlue")
if (typeof data.PatientInfo["phone number"] !== "undefined" && data.PatientInfo["phone number"] !== null){
_html = "
";
}
+
+ if (typeof data.PatientInfo["gender"] !== "undefined"){
+ _html += "
";
+ }
+ if (typeof data.PatientInfo["date of birth"] !== "undefined"){
+ var age = utils.getAge(data.PatientInfo["date of birth"]);
+ _html += "
";
if (typeof data.PatientInfo["email address"] !== "undefined" && data.PatientInfo["email address"] !== null){
_html += "
"+
@@ -202,7 +232,7 @@ angular.module("EmmetBlue")
$scope.currentLog = {};
$scope.reloadTable = function(){
- $scope.dtInstance.reloadData();
+ $scope.dtInstance.rerender();
}
$scope.setStatus = function(id, close, text=""){
diff --git a/plugins/pharmacy/assets/controllers.js b/plugins/pharmacy/assets/controllers.js
index 520a7fe..2e7dc7f 100644
--- a/plugins/pharmacy/assets/controllers.js
+++ b/plugins/pharmacy/assets/controllers.js
@@ -4,6 +4,7 @@ head.load(controllersLocation+"manage-stores-controller.js");
head.load(controllersLocation+"store-inventory-controller.js");
head.load(controllersLocation+"dispensation-controller.js");
head.load(controllersLocation+"reports-controller.js");
+head.load(controllersLocation+"transfer-reports-controller.js");
head.load(controllersLocation+"dashboard-controller.js");
head.load(controllersLocation+"new-store-restock-controller.js");
head.load(controllersLocation+"store-transfer-controller.js");
diff --git a/plugins/pharmacy/assets/controllers/transfer-reports-controller.js b/plugins/pharmacy/assets/controllers/transfer-reports-controller.js
new file mode 100644
index 0000000..a9cb1c9
--- /dev/null
+++ b/plugins/pharmacy/assets/controllers/transfer-reports-controller.js
@@ -0,0 +1,367 @@
+angular.module("EmmetBlue")
+
+.controller('pharmacyTransferReportsController', function($scope, utils, patientEventLogger, $rootScope){
+ $scope.loadImage = utils.loadImage;
+ $scope.patient = {};
+
+ $scope.getDateRange = function(selector){
+ var today = new Date();
+ switch(selector){
+ case "today":{
+ return today.toLocaleDateString() + " - " + today.toLocaleDateString();
+ }
+ case "yesterday":{
+ var yesterday = new Date(new Date(new Date()).setDate(new Date().getDate() - 1)).toLocaleDateString();
+ return yesterday + " - " + yesterday;
+ break;
+ }
+ case "week":{
+ var d = new Date(today);
+ var day = d.getDay(), diff = d.getDate() - day + (day == 0 ? -6 : 1);
+
+ return new Date(d.setDate(diff)).toLocaleDateString() + " - " + today.toLocaleDateString();
+ break;
+ }
+ case "month":{
+ var year = today.getFullYear();
+ var month = today.getMonth() + 1;
+
+ return month+'/1/'+year + ' - ' + today.toLocaleDateString();
+ break;
+ }
+ }
+ }
+
+ $scope.requestFilter = {
+ type: 'nil',
+ description: 'Today\'s Dispensations',
+ value: $scope.getDateRange("today")
+ }
+
+ $scope.createdFilters = [];
+ $scope.createdFilters.push({
+ type: 'nil',
+ description: 'Today\'s Dispensations',
+ value: $scope.getDateRange("today")
+ });
+
+ $scope.dateRange = $scope.getDateRange("today");
+
+ $scope.$watch("dateRange", function(nv){
+ var dates = nv.split(" - ");
+ if (dates[0] == dates[1]){
+ $scope.requestFilter = {
+ type: "nil",
+ description: "All transfers on "+(new Date(dates[0])).toDateString(),
+ value: nv
+ };
+ }
+ else {
+ $scope.requestFilter = {
+ type: "nil",
+ description: "Date Range Between "+(new Date(dates[0])).toDateString()+" and "+(new Date(dates[1])).toDateString(),
+ value: nv
+ };
+ }
+
+ $scope.reloadDispensationsTable(true);
+ })
+
+ $("option[status='disabled']").attr("disabled", "disabled");
+
+ $scope.dtInstance = {};
+ $scope.dtOptions = utils.DT.optionsBuilder
+ .newOptions()
+ .withFnServerData(function(source, data, callback, settings){
+ var filter = $scope.createdFilters;
+
+ var draw = data[0].value;
+ var order = data[2].value;
+ var start = data[3].value;
+ var length = data[4].value;
+
+ var dates = filter[0].value.split(" - ");
+
+ // filter.splice(0, 1);
+
+ var data = {
+ "startdate": dates[0],
+ "enddate": dates[1],
+ "resourceId":0,
+ "paginate":true,
+ "from":start,
+ "size":length,
+ "filtertype":"filtercombo",
+ "query":[]
+ }
+
+ if (typeof data[5] !== "undefined" && data[5].value.value != ""){
+ data.keywordsearch = data[5].value.value;
+ }
+
+ for (var i = filter.length - 1; i >= 1; i--) {
+ var _filter = filter[i];
+ if (_filter.use){
+ data.query.push({
+ type:_filter.type,
+ value:_filter.value
+ });
+ }
+ }
+
+ var url = '/pharmacy/store-transfer/view';
+
+ var transfers = utils.serverRequest(url, 'POST', data);
+ transfers.then(function(response){
+ var records = {
+ data: response.data,
+ draw: draw,
+ recordsTotal: response.total,
+ recordsFiltered: response.filtered
+ };
+ callback(records);
+ }, function(error){
+ utils.errorHandler(error);
+ });
+ })
+ .withDataProp('data')
+ .withOption('processing', true)
+ .withOption('serverSide', true)
+ .withOption('paging', true)
+ .withPaginationType('full_numbers')
+ .withDisplayLength(10)
+ .withOption('createdRow', function(row, data, dataIndex){
+ utils.compile(angular.element(row).contents())($scope);
+ })
+ .withOption('headerCallback', function(header) {
+ if (!$scope.headerCompiled) {
+ $scope.headerCompiled = true;
+ utils.compile(angular.element(header).contents())($scope);
+ }
+ })
+ .withButtons([
+ {
+ extend: 'print',
+ text: '
Print this data page',
+ key: {
+ key: 'p',
+ ctrlKey: false,
+ altKey: true
+ }
+ },
+ {
+ extend: 'copy',
+ text: '
Copy this data',
+ key: {
+ key: 'c',
+ ctrlKey: false,
+ altKey: true
+ }
+ }
+ ]);
+
+ $scope.dtColumns = [
+ utils.DT.columnBuilder.newColumn(null).withTitle("Item").renderWith(function(data){
+ return "
"+data.BillingTypeItemName+
+ " Brand: "+data.ItemBrand;
+ }),
+ utils.DT.columnBuilder.newColumn(null).withTitle("Transferred Quantity").renderWith(function(data){
+ return ""+data.ItemQuantity+"";
+ }),
+ utils.DT.columnBuilder.newColumn(null).withTitle("Recipient Store").renderWith(function(data){
+ return ""+data.RecipientStoreName+"";
+ }),
+ utils.DT.columnBuilder.newColumn(null).withTitle("Staff").renderWith(function(data, full, meta){
+ var image = $scope.loadImage(data.staffInfo.StaffPicture);
+ var html = ""+
+ ""+
+ ""+
+ " | ";
+
+ return html;
+ }),
+ utils.DT.columnBuilder.newColumn(null).withTitle("Date").renderWith(function(data, a, b){
+ return (new Date(data.TransferDate)).toDateString()+"
"+(new Date(data.TransferDate)).toLocaleTimeString();
+ })
+ ];
+
+ $scope.reloadDispensationsTable = function(applyToFirstIndex=false){
+ if (typeof $scope.requestFilter.type !== "undefined"){
+ var data = {
+ description: $scope.requestFilter.description,
+ value: $scope.requestFilter.value,
+ type: $scope.requestFilter.type,
+ use: true
+ };
+
+ if (applyToFirstIndex){
+ $scope.createdFilters[0] = data;
+ }
+ else{
+ $scope.createdFilters.push(data);
+ }
+ $scope.requestFilter = {};
+ }
+
+ rerenderTable();
+ }
+
+ function rerenderTable(){
+ if (angular.isFunction($scope.dtInstance.rerender)){
+ $scope.dtInstance.rerender();
+ }
+ }
+
+ $scope.stores = {};
+ var loadStores = function(){
+ var request = utils.serverRequest("/pharmacy/store/view", "GET");
+ request.then(function(result){
+ $scope.stores = result;
+ }, function(error){
+ utils.errorHandler(error);
+ })
+ }();
+
+ $scope.billingTypes = {};
+
+ var loadBillingTypes = function(){
+ var request = utils.serverRequest("/accounts-biller/billing-type/view", "GET");
+ request.then(function(result){
+ $scope.billingTypes = result;
+ }, function(error){
+ utils.errorHandler(error);
+ })
+ }();
+
+ $scope.patientTypes = {};
+
+ $scope.loadPatientTypes = function(){
+ if (typeof (utils.userSession.getID()) !== "undefined"){
+ var requestData = utils.serverRequest("/patients/patient-type-category/view", "GET");
+ requestData.then(function(response){
+ $scope.patientTypes = response;
+ }, function(responseObject){
+ utils.errorHandler(responseObject);
+ });
+ }
+ }
+
+ $scope.loadPatientTypes();
+
+ // loadStores();
+
+ $scope.activateFilter = function(){
+ var selector = $scope.filterSelector;
+ switch(selector.type){
+ case "status":{
+ if (selector.value !== null){
+ $scope.requestFilter.type = "status";
+ var value = selector.value.split("
");
+ $scope.requestFilter.value = value[1];
+ $scope.requestFilter.description = "Status: "+value[0];
+ $scope.reloadDispensationsTable();
+ }
+ break;
+ }
+ case "dateRange":{
+ $scope.requestFilter.type = "date";
+ var value = selector.value.split(" - ");
+ $scope.requestFilter.value= selector.value;
+ $scope.requestFilter.description = "Date Ranges Between: "+ new Date(value[0]).toDateString()+" And "+ new Date(value[1]).toDateString();
+ $scope.reloadDispensationsTable(true);
+ break;
+ }
+ case "patient":{
+ $scope.requestFilter.type = "patient";
+ $scope.requestFilter.value= selector.value;
+ $scope.requestFilter.description = "Patient Search: '"+selector.value+"'";
+
+ var req = utils.serverRequest("/patients/patient/search", "POST", {"query": selector.value, "from": 0, "size": 1});
+ req.then(function(result){
+ if (typeof result.hits.hits[0]["_source"]["patientid"] !== "undefined"){
+ $scope.requestFilter.value = result.hits.hits[0]["_source"]["patientid"];
+ $scope.reloadDispensationsTable();
+ }
+ else {
+ utils.notify("Invalid Search Query", "Please enter a valid patient profile identifier to continue", "warning");
+ }
+ }, function(error){
+ utils.errorHandler(error);
+ })
+ break;
+ }
+ case "staff":{
+ $scope.requestFilter.type = "staff";
+ $scope.requestFilter.value= selector.value;
+ $scope.requestFilter.description = "Staff Search: '"+selector.value+"'";
+
+ var req = utils.serverRequest("/human-resources/staff/get-staff-id?name="+selector.value, "GET");
+ req.then(function(result){
+ if (typeof result["StaffID"] !== "undefined"){
+ $scope.requestFilter.value = result["StaffID"];
+ $scope.reloadDispensationsTable();
+ }
+ else {
+ utils.notify("Invalid Staff Username", "Please enter a valid username to continue", "warning");
+ }
+ }, function(error){
+ utils.errorHandler(error);
+ })
+ break;
+ }
+ case "patienttype":{
+ $scope.requestFilter.type = "patienttype";
+ var value = selector.value.split("");
+ $scope.requestFilter.value = value[1];
+ $scope.requestFilter.description = "Patient Type: '"+value[0]+"'";
+ $scope.reloadDispensationsTable();
+ break;
+ }
+ case "billingtype":{
+ $scope.requestFilter.type = "billingtype";
+ var value = selector.value.split("");
+ $scope.requestFilter.value = value[0];
+ $scope.requestFilter.description = "Billing Type Item: '"+value[1]+"'";
+ $scope.reloadDispensationsTable();
+ break;
+ }
+ case "Transferring Store":{
+ $scope.requestFilter.type = "transferstore";
+ var value = selector.value.split("");
+ $scope.requestFilter.value = value[0];
+ $scope.requestFilter.description = "Transferring Store: '"+value[1]+"'";
+ $scope.reloadDispensationsTable();
+ break;
+ }
+ case "Recipient Store":{
+ $scope.requestFilter.type = "recipientstore";
+ var value = selector.value.split("");
+ $scope.requestFilter.value = value[0];
+ $scope.requestFilter.description = "Recipient Store: '"+value[1]+"'";
+ $scope.reloadDispensationsTable();
+ break;
+ }
+ case "itemcode":{
+ $scope.requestFilter.type = "itemcode";
+ $scope.requestFilter.value= selector.value;
+ $scope.requestFilter.description = "Item Code: '"+selector.value+"'";
+ $scope.reloadDispensationsTable();
+ break;
+ }
+ default:{
+ $scope.requestFilter.type = "date";
+ var value = selector.type.split("");
+ $scope.requestFilter.value = value[1];
+ $scope.requestFilter.description = value[0];
+ $scope.reloadDispensationsTable();
+ }
+ }
+ }
+});
\ No newline at end of file
diff --git a/plugins/pharmacy/assets/includes/menu.html b/plugins/pharmacy/assets/includes/menu.html
index 66c4883..e7b5487 100644
--- a/plugins/pharmacy/assets/includes/menu.html
+++ b/plugins/pharmacy/assets/includes/menu.html
@@ -9,7 +9,17 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/plugins/pharmacy/transfer-reports.html b/plugins/pharmacy/transfer-reports.html
new file mode 100644
index 0000000..13c25a5
--- /dev/null
+++ b/plugins/pharmacy/transfer-reports.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/plugins/records/cloud/assets/controllers/patient-cloud-grid-directive.js b/plugins/records/cloud/assets/controllers/patient-cloud-grid-directive.js
index 012b742..dfda3bc 100644
--- a/plugins/records/cloud/assets/controllers/patient-cloud-grid-directive.js
+++ b/plugins/records/cloud/assets/controllers/patient-cloud-grid-directive.js
@@ -35,7 +35,7 @@ angular.module("EmmetBlue")
var process = function(){
var data = {
patient: $scope.patientInfo.patientid,
- accountId: $scope.foundAccount.account_id,
+ accountId: $scope.foundAccount.user_id,
staff: utils.userSession.getID()
};
diff --git a/plugins/records/patient/patient-database.html b/plugins/records/patient/patient-database.html
index 0906c88..39608a3 100644
--- a/plugins/records/patient/patient-database.html
+++ b/plugins/records/patient/patient-database.html
@@ -1,8 +1,18 @@
+
+
+