紅色標記的hr都是頂級的module,每個路由節點都會引入hr這個module,所以這些嵌入的界面可以放在hr這個module下
angular.module('hr.templateCache').run(['$templateCache', function ($templateCache) {
$templateCache.put('presc-create-modal.html', "<div hr-draggable class=\"create-presc\" modal=\"modalShow\" options=\"prescModalOpts\" ng-controller=\"PrescCreateModalController\">\n <header class=\"modal-header\">\n <button type=\"button\" class=\"close\" ng-click=\"closePrescCreateModal()\">×</button>\n <h5>生成處方</h5>\n </header>\n <div class=\"mg5505\">\n <div class=\"form-horizontal presc-attr\">\n <!--處方類型-->\n <div class=\"control-group label-four drug-type\">\n <label class=\"control-label\">處方類型:</label>\n <div class=\"controls\">\n <span ng-repeat=\"prescTypeDict in prescTypeDictList\"\n ng-if=\"isPrescTypeShow(prescTypeDict.codeName)\">\n <label class=\"checkbox inline\">\n <input type=\"checkbox\" value=\"{{prescTypeDict.codeName}}\" ng-click=\"applyCheckEvent()\"\n ng-disabled=\"isRejectOption(prescTypeDict)\" ng-checked=\"isPrescAttrChecked(prescTypeDict.codeName)\"\n name=\"prescAttr\">{{prescTypeDict.codeName}}\n </label>\n </span>\n </div>\n </div>\n <!--葯房-->\n <div class=\"control-group label-two drug-room\" ng-show=\"clinicInfo.groupOrder != 2\">\n <label class=\"control-label\">葯房</label>\n <div class=\"controls\">\n <select ui-select2 id=\"deptInfo\"\n enter-loop=\"1\" enterindex=\"3\"\n ng-model=\"performDeptIdPrescCreate\" ng-change=\"changePerformDept(performDeptIdPrescCreate)\">\n <option ng-repeat=\"dept in departmentWestDispensary\"\n code=\"{{dept.deptCode}}\"\n value=\"{{dept.deptCode}}\">{{dept.deptName}}\n </option>\n </select>\n </div>\n </div>\n </div>\n <div class=\"body-content border-line-top-left-right\" ng-grid=\"prescOrdersGrid\"></div>\n </div>\n <div class=\"modal-footer btn-right\">\n <button class=\"btn btn-primary\" ng-click=\"createPresc()\">生成</button>\n <button class=\"btn btn-default\" ng-click=\"closePrescCreateModal()\">關閉</button>\n </div>\n</div>");
}]);
angular.module('hr').controller('PrescCreateModalController', ['$scope', '$http', '$timeout', 'hrDialog', 'HrDrugBillingAttr', 'hrProgress',
function ($scope, $http, $timeout, hrDialog, HrDrugBillingAttr, hrProgress) {
$scope.modalShow = true;
//醫囑生成處方葯房
$scope.performDeptIdPrescCreate = null;
//可生成處方醫囑List(葯療,不擺葯,已執行)
$scope.ordersDrugWestListPrescCreate = [];
//頁面顯示可生成處方醫囑List
$scope.orderDetailListPrescCreate = [];
//醫囑最后發葯信息List
$scope.drugPrescDetailList = [];
$scope.prescModalOpts = {
dialogClass: "modal create-presc-modal",
backdropFade: false,
dialogFade: false,
keyboard: true,
backdrop: true,
backdropClick: false
};
$scope.closePrescCreateModal = function () {
$scope.modalShow = false;
$scope.modal.close();
$timeout(function () {
$scope.$destroy();
})
};
function initPrescCreate() {
$scope.ordersDrugWestListPrescCreate = angular.copy($scope.ordersDrugWestOtherList.filter(function (doctorOrder) {
return isOrderForPrescCreate(doctorOrder);
}));
for (var i = 0; i < $scope.ordersDrugWestListPrescCreate.length; i++) {
var orderDetail = convertDrugWestToDetail($scope.ordersDrugWestListPrescCreate[i]);
orderDetail.packageUnits = $scope.ordersDrugWestListPrescCreate[i].drugOrderDetail.packageUnits;
orderDetail.totalAmount = null;
orderDetail.days = null;
$scope.orderDetailListPrescCreate.push(orderDetail);
}
$scope.performDeptIdPrescCreate = getDefaultDispensary($scope.departmentWestDispensary, $scope.defaultWestDispensary);
setOrderDetailShow();
}
function getOrderFilterShow(rowIndex) {
if (rowIndex > 0) {
var orderDetail = $scope.orderDetailListPrescCreate[rowIndex];
var orderDetailPre = $scope.orderDetailListPrescCreate[rowIndex - 1];
var orderClass = orderDetail.orderClass;
var orderClassPre = orderDetailPre.orderClass;
if (orderClass === orderClassPre && orderDetail.groupNo === orderDetailPre.groupNo) {
return false;
}
}
return true;
}
function getOrderTxtExtendDrugWestShow(rowIndex) {
var orderDetailList = $scope.orderDetailListPrescCreate;
if (orderDetailList.length <= rowIndex) {
return true;
}
var totalLen = orderDetailList.length - 1;
var pre = 0;
var next = 0;
if (rowIndex === totalLen) {
next = rowIndex;
} else {
next = rowIndex + 1;
}
if (rowIndex > 0) {
pre = rowIndex - 1;
}
var currentGroupNo = orderDetailList[rowIndex].groupNo;
var preGroupNo = orderDetailList[pre].groupNo;
var nextGroupNo = orderDetailList[next].groupNo;
if (rowIndex === 0) {
if (next > rowIndex && currentGroupNo === nextGroupNo) {
return true;
}
} else if (rowIndex === totalLen) {
if (pre < rowIndex && currentGroupNo === preGroupNo) {
return false;
}
} else {
if (currentGroupNo === preGroupNo) {
if (currentGroupNo === nextGroupNo) {
return false;
} else {
return false;
}
} else {
if (currentGroupNo === nextGroupNo) {
return true;
} else {
return true;
}
}
}
return true;
}
$scope.changePerformDept = function(performDeptIdPrescCreate){
angular.forEach($scope.ordersDrugWestListPrescCreate, function(item){
item.performDeptId = performDeptIdPrescCreate;
})
};
function setOrderDetailShow() {
$scope.orderDetailListPrescCreate.forEach(function (item, index) {
item.detailShow = getOrderFilterShow(index);
item.orderTxtExtendShow = getOrderTxtExtendDrugWestShow(index);
item.orderStatusCodeName = $scope.getOrderStatusByCode(item, "order");
item.firmId = $scope.getDrugFirmIdByOrderId(item.orderId);
});
}
function isOrderForPrescCreate(doctorOrder) {
if (doctorOrder.orderClass === orderClassEnum.orderDrugWest && doctorOrder.drugBillingAttr === HrDrugBillingAttr.NONE && doctorOrder.orderStatus === orderStatusEnum.EXECUTE) {
var index = $scope.getSelectedRowNumOther(doctorOrder.orderId);
if (index !== -1) {//停止醫囑 護士站未回寫doctorOrders狀態 需要檢查performStatus
if ($scope.orderDetailOtherList[index].performStatus === orderStatusEnum.EXECUTE) {
return true;
}
}
}
return false;
}
function getDrugPrescDetailByOrderId(orderId) {
var filter = $scope.drugPrescDetailList.filter(function (item) {
return item.itemNo === orderId;
});
if (filter.length > 0) {
return filter[0];
}
return null;
}
function calculateDays(drugOrderDetail,orderDetail) {
/*var drugPrescDetail = getDrugPrescDetailByOrderId(drugOrderDetail.orderId);
if (drugPrescDetail == null) {
return null;
}*/
var amountPerPackage = drugOrderDetail.amountPerPackage || 0; //包裝數量
var dosage = drugOrderDetail.dosage || 0; //葯品默認一次使用劑量 0.25
var usageUnits = drugOrderDetail.usageUnits || ""; //使用單位
var dosePerUnit = drugOrderDetail.dosePerUnit || 0; //最小單位劑量 0.25
var doseUnits = drugOrderDetail.doseUnits || ""; //劑量單位 mg
var units = drugOrderDetail.units || ""; //單位 片
var freqCounter = drugOrderDetail.freqCounter || 0; //默認頻率次數 3
var freqInterval = drugOrderDetail.freqInterval || 0; //默認頻率間隔 1
var freqIntervalUnit = drugOrderDetail.freqIntervalUnit || ""; //默認頻率間隔單位 日
var totalAmount = drugOrderDetail.quantity || 0; //數量
var dosageForUnits = 0;
var countPerDay = 0;
var countPerWeek = 0;
if (usageUnits !== units) {
dosageForUnits = dosage / dosePerUnit;
} else {
dosageForUnits = dosage;
}
if (freqIntervalUnit === "小時") {
countPerDay = (24 / freqInterval) * freqCounter;
} else if (freqIntervalUnit === "分鍾" || freqIntervalUnit === "分") {
countPerDay = (24 * 60 / freqInterval) * freqCounter;
} else if (freqIntervalUnit === "日") {
countPerDay = (freqCounter / freqInterval);
} else if (freqIntervalUnit === "周") {
countPerWeek = freqCounter / freqInterval;
}
var days = orderDetail.days;
if (freqIntervalUnit === "周") {
orderDetail.totalAmount = Math.ceil(Math.ceil(days / 7) * countPerWeek * dosageForUnits / amountPerPackage);
} else {
orderDetail.totalAmount = Math.ceil(days * countPerDay * dosageForUnits / amountPerPackage);
}
orderDetail.totalAmount = isNaN(orderDetail.totalAmount==0?null:orderDetail.totalAmount)==true?null:orderDetail.totalAmount;
}
//查詢最后發葯天數
function getLastPerformDays(callback) {
var orderIdList = $scope.ordersDrugWestListPrescCreate.map(function (item) {
return item.orderId;
});
var successCallback = function (data) {
$scope.drugPrescDetailList = data;
callback();
};
var errorCallback = function (data) {
hrDialog.dialog(hrDialog.typeEnum.WARN, {
message: "查詢發葯信息失敗!",
detail: data.message
});
callback();
};
HrUtils.httpRequest($http, Path.getUri("api/inp-orders/presc-last-perform-days"), successCallback, errorCallback, hrDialog, HrUtils.httpMethod.POST, orderIdList);
}
//小包裝大包裝的轉換
function getPackageUnits(index) {
var drugOrderDetail = $scope.ordersDrugWestListPrescCreate[index].drugOrderDetail;
var successCallback = function (data) {
data = data.filter(function (item) {
return item.amountPerPackage > 1;
});
if (data.length > 0) {
drugOrderDetail.packageSpec = data[0].packageSpec;
drugOrderDetail.packageUnits = data[0].packageUnits;
drugOrderDetail.amountPerPackage = data[0].amountPerPackage;
$scope.orderDetailListPrescCreate[index].packageUnits = data[0].packageUnits;
$scope.orderDetailListPrescCreate[index].orderTxt = $scope.getOrderTxtDrugWest(drugOrderDetail);
}
calculateDays(drugOrderDetail,$scope.orderDetailListPrescCreate[index]);
if (index < $scope.ordersDrugWestListPrescCreate.length - 1) {
getPackageUnits(++index);
}
};
if (drugOrderDetail.amountPerPackage === 1) {
HrUtils.httpRequest($http, Path.getUri("api/drug-info-list/special-drug-price-list"), successCallback, null, hrDialog, HrUtils.httpMethod.POST, drugOrderDetail);
} else {
calculateDays(drugOrderDetail,$scope.orderDetailListPrescCreate[index]);
if (index < $scope.ordersDrugWestListPrescCreate.length - 1) {
getPackageUnits(++index);
}
}
}
function convertDrugWestToDetail(inpOrders, prescSpecType) {
var orderDetail = {};
var drugOrderDetailTemp = inpOrders.drugOrderDetail;
if (drugOrderDetailTemp.deleteStatus !== 1) {
orderDetail = $scope.getOrderDetailDrug(inpOrders, drugOrderDetailTemp, true, 0, prescSpecType);
}
return orderDetail;
}
function getDrugPrescAttrDetail(data){
if(Strings.isNullOrEmpty(data)){
return "普通";
}
var prescAttr = "";
switch (data.toxiCode) {
case "2":
prescAttr = "精1";
break;
case "7":
prescAttr = "精2";
break;
case "6":
prescAttr = "毒";
break;
case "5":
prescAttr = "麻";
break;
default :
prescAttr = "普通";
}
return prescAttr;
}
//獲取葯品屬性
function getDrugPrescAttr(ordersDrugWestListPresc, index, callback){
var doctorOrders = ordersDrugWestListPresc[index];
var successCallback = function (data) {
doctorOrders.prescAttr = getDrugPrescAttrDetail(data);
if (index < ordersDrugWestListPresc.length - 1) {
getDrugPrescAttr(ordersDrugWestListPresc, ++index, callback);
} else {
callback();
}
};
HrUtils.httpRequest($http, Path.getUri("api/inp-orders/get-drug-prescAttr?drugCode=" + doctorOrders.drugOrderDetail.drugCode), successCallback, null, hrDialog, HrUtils.httpMethod.POST, null);
}
//生成orderDrugInfo
function getOrderDrugInfo(doctorOrders, drugOrderDetail, callback){
var orderDrugInfo = new OrderDrugInfo();
orderDrugInfo.operationStatus = doctorOrders.operationStatus;//
orderDrugInfo.administration = drugOrderDetail.administration;
orderDrugInfo.amountPerPackage = drugOrderDetail.amountPerPackage;
orderDrugInfo.amountPerPackage = drugOrderDetail.amountPerPackage;
orderDrugInfo.babyNo = doctorOrders.babyNo;
orderDrugInfo.billingAttr = doctorOrders.billingAttr;
orderDrugInfo.charge = drugOrderDetail.totalAmount * drugOrderDetail.price;
orderDrugInfo.costs = drugOrderDetail.totalAmount * drugOrderDetail.price;
orderDrugInfo.days = drugOrderDetail.days;
orderDrugInfo.dosage = drugOrderDetail.dosage;
orderDrugInfo.dosePerUnit = drugOrderDetail.dosePerUnit;
orderDrugInfo.doseUnits = drugOrderDetail.doseUnits;
orderDrugInfo.drugCode = drugOrderDetail.drugCode;
orderDrugInfo.drugName = drugOrderDetail.drugName;
orderDrugInfo.drugSpec = drugOrderDetail.drugSpec;
orderDrugInfo.drugTradeCode = drugOrderDetail.drugTradeCode;
orderDrugInfo.drugTradeName = drugOrderDetail.drugTradeName;
orderDrugInfo.duration = drugOrderDetail.duration;
orderDrugInfo.durationUnits = drugOrderDetail.durationUnits;
orderDrugInfo.encounterNo = doctorOrders.encounterNo;
orderDrugInfo.firmId = drugOrderDetail.firmId;
orderDrugInfo.focusSelfPay = doctorOrders.focusSelfPay;
orderDrugInfo.freqCounter = drugOrderDetail.freqCounter;
orderDrugInfo.freqInterval = drugOrderDetail.freqInterval;
orderDrugInfo.freqIntervalUnit = drugOrderDetail.freqIntervalUnit;
orderDrugInfo.frequency = drugOrderDetail.frequency;
orderDrugInfo.groupGraph = doctorOrders.groupGraph;
orderDrugInfo.isGroup = doctorOrders.isGroup;//
orderDrugInfo.memo = doctorOrders.memo;
orderDrugInfo.menstruumIndicator = drugOrderDetail.menstruumIndicator;
orderDrugInfo.packageSpec = drugOrderDetail.packageSpec;
orderDrugInfo.packageUnits = drugOrderDetail.packageUnits;
orderDrugInfo.performDeptId = doctorOrders.performDeptId;
orderDrugInfo.prescAttr = doctorOrders.prescAttr;
orderDrugInfo.price = drugOrderDetail.price;
orderDrugInfo.stIndicator = drugOrderDetail.stIndicator;
orderDrugInfo.totalAmount = drugOrderDetail.totalAmount;
orderDrugInfo.units = drugOrderDetail.units;
orderDrugInfo.usageUnits = drugOrderDetail.usageUnits;
orderDrugInfo.userDescription = drugOrderDetail.userDescription;
orderDrugInfo.visitNo = doctorOrders.visitNo;
callback(orderDrugInfo);
}
//校驗是否數量為空
function checkTotalAmountOrDays(orderDetailListPresc, ordersDrugWestListPresc, callback){
var filter = orderDetailListPresc.filter(function(item){
if(Strings.isNullOrEmpty(item.totalAmount) || item.totalAmount == 0 || Strings.isNullOrEmpty(item.days) || item.days == 0){
return item;
}
});
if(filter.length > 0){
for(var i=0; i< ordersDrugWestListPresc.length;){
if(ordersDrugWestListPresc[i].orderId == filter[0].orderId){
hrDialog.dialog(hrDialog.typeEnum.WARN, {message: "請檢查" + ordersDrugWestListPresc[i].drugOrderDetail.drugName + "葯品天數或者數量"})
.close(function(){
});
return false;
}
++i;
}
} else {
callback();
}
}
/*function checkDrugFirm(orderDrugInfo, callback) {
var queryInfo = {
"drugCode": orderDrugInfo.drugCode,
"drugTradeName": "",
"deptCode": $scope.performDeptIdPrescCreate,
"chargeType": $scope.patientInfo.chargeType,
"constrainedDoctorLevel": $scope.doctorInfo.constrainedDoctorLevel,
"packageUnitsFlag": 1,
"displayFlag": true
};
var drugInfoSuccessCallback = function (data) {
if (data && data.length > 0) {
var list = data.filter(function (item) {
if (item.drugCode === orderDrugInfo.drugCode && item.drugSpec === orderDrugInfo.drugSpec && item.firmId === orderDrugInfo.firmId && item.packageSpec === orderDrugInfo.packageSpec) {
return true;
}
});
if (list.length > 0) {
orderDrugInfo.price = data[0].price;
callback(orderDrugInfo);
} else {
hrDialog.dialog(hrDialog.typeEnum.WARN, {message: orderDrugInfo.drugName + "(" + orderDrugInfo.packageSpec + ")" + "'葯品不可供!"});
}
} else {
hrDialog.dialog(hrDialog.typeEnum.WARN, {message: orderDrugInfo.drugName + "(" + orderDrugInfo.packageSpec + ")" + "'葯品不可供!"});
}
};
HrUtils.httpRequest($http, Path.getUri("api/drug-name-dict/drug-trade-price-info"), drugInfoSuccessCallback, null, hrDialog, HrUtils.httpMethod.POST, queryInfo);
}*/
//檢驗是否選中要生成處方的醫囑
function checkOrdersQuantity(callback) {
var orderDetailListPresc = [];
var ordersDrugWestListPresc = [];
angular.forEach($scope.orderDetailListPrescCreate, function(item,index){
if(item.checked){
orderDetailListPresc.push(item);
ordersDrugWestListPresc.push($scope.ordersDrugWestListPrescCreate[index]);
}
});
if(orderDetailListPresc.length == 0){
hrDialog.dialog(hrDialog.typeEnum.WARN, {message: "請選擇要生成的處方的醫囑!"});
return false;
} else {
callback(orderDetailListPresc, ordersDrugWestListPresc);
}
}
function getPrescAttr() {
var prescAttrList = [];
var checkBoxs = $('input[name="prescAttr"]');
for (var i = 0; i < checkBoxs.length; i++) {
var checkBox = checkBoxs.get(i);
if (checkBox.checked && !angular.equals(checkBox.value, prescAttrEnum.PT)) {
prescAttrList.push(checkBox.value)
}
}
var prescAttr = prescAttrList.join(";");
if (angular.equals(prescAttr, "")) {
prescAttr = prescAttrEnum.PT;
}
return prescAttr;
}
$scope.columnDefsPrescOrders = [
{
field: '', displayName: '選擇', width: "5%", cellClass: "text-center", cellTemplate: '' +
'<div class="ngCellText">\n <input type="checkbox" ng-model="row.entity.checked" ng-show="row.entity.groupSubNo == 1" ng-true-value="1" ng-false-value="0" ng-click="preventCheck(row.rowIndex)"/>\n</div>'
},
{
field: 'startDateTime', displayName: '下達時間', width: "9%", cellClass: "text-center", cellTemplate: '' +
'<div class="ngCellText" ng-show="row.entity.detailShow">{{::getOrderDateTime(row.getProperty(col.field))}}</div>'
},
{
field: 'repeatIndicator', displayName: '長/臨', width: "5%", cellTemplate: '' +
'<div class="ngCellText" ng-show="row.entity.detailShow">{{::getOrderRepeatIndicator(row.getProperty(col.field))}}</div>'
},
{
field: 'days',
displayName: '天數',
width: '5%',
cellClass: "text-center",
cellTemplate: '' +
' <div class="input-append">\n <input class="input-mini drug-amount-presc text-right" type="text" ng-model="row.entity.days" ng-change="changeOrdersDays(row.rowIndex)"\n number-only-by-condition number-type="+" decimal-type="integer"/>\n </div>\n'
},
{
field: 'totalAmount',
displayName: '數量',
width: "11%",
cellTemplate: '' +
' <div class="input-append">\n <input class="input-mini drug-amount-presc text-right" type="text" ng-model="row.entity.totalAmount" ng-disabled="true"/>\n <span class="add-on">{{row.entity.packageUnits}}</span>\n </div>\n'
},
{
field: 'orderTxt', displayName: '醫囑', cellTemplate: '' +
'<div class="ngCellText" title="{{::row.entity.firmId}}"> ' +
'<span ng-bind-html="deliberatelyTrustDangerousSnippet(row.getProperty(col.field))"></span> ' +
'<span class="drug-order-detail-flag">{{::row.entity.groupGraph}}</span> ' +
'<span ng-show="row.entity.orderTxtExtendShow" ng-bind-html="deliberatelyTrustDangerousSnippet(row.getProperty(\'orderTxtExtend\'))"></span>' +
'</div>'
},
{
field: 'doctor', displayName: '醫師', width: '8%', cellTemplate: '' +
'<div class="ngCellText" ng-show="row.entity.detailShow">{{::row.getProperty(col.field)}}</div> '
},
{
field: 'orderStatus', displayName: '狀態', width: '7.5%', cellTemplate: '' +
'<div class="ngCellText" title="{{::row.entity.orderStatusCodeName}}">' +
'{{::row.entity.orderStatusCodeName}}' +
'</div>'
}
/*,
{
field: 'prescDate',
displayName: '最后發葯時間',
width: '10%',
cellClass: "text-center",
cellTemplate: '' +
'<div class="ngCellText" title="{{::getOrderDateTime(row.getProperty(col.field))}}">' +
'{{::getOrderDateTime(row.getProperty(col.field))}}' +
'</div>'
}*/
];
var rowTemplatePrescOrders = "<div ng-style=\"{ \'cursor\': row.cursor}\" ng-repeat=\"col in renderedColumns\"\n ng-class=\"col.colIndex()\" class=\"ngCell {{col.cellClass}} {{changeClassState(row.entity)}}\">\n <div class=\"ngVerticalBar\" ng-style=\"{height: rowHeight}\" ng-class=\"{ ngVerticalBarVisible: !$last }\"> </div>\n <div ng-cell></div>\n</div>";
$scope.prescOrdersGrid = {
data: 'orderDetailListPrescCreate',
columnDefs: 'columnDefsPrescOrders',
rowTemplate: rowTemplatePrescOrders,
enableColumnResize: false,
multiSelect: false,
enableSorting: false
};
$scope.preventCheck = function (index) {
var orderDetail = $scope.orderDetailListPrescCreate[index];
if(orderDetail.groupSubNo == 1){
angular.forEach($scope.orderDetailListPrescCreate, function(item){
if(item.groupNo == orderDetail.groupNo)
item.checked = orderDetail.checked;
})
}
event.stopPropagation();//已在rowTemplate 添加點擊行選擇
};
$scope.changeOrdersDays = function (index) {
var orderDetail = $scope.orderDetailListPrescCreate[index];
var days = orderDetail.days;
angular.forEach($scope.orderDetailListPrescCreate,function(item,index){
if(item.groupNo == orderDetail.groupNo){
item.days = days;
calculateDays($scope.ordersDrugWestListPrescCreate[index].drugOrderDetail,$scope.orderDetailListPrescCreate[index]);
}
});
};
$scope.isPrescTypeShow = function (codeName) {
if (codeName === prescAttrEnum.PT) {
return false;
} else if (codeName === prescAttrEnum.ET && !$scope.isChildAvaliable) {
return false;
}
return true;
};
$scope.isPrescAttrChecked = function (codeName) {
if (codeName === prescAttrEnum.YB && $scope.prescInsuranceSign === "1") {
return true;
}
if ($scope.clinicInfo.clinicSource === clinicSourceEnum.ER_ORDER_INP && codeName === prescAttrEnum.JZ) {
return true;
}
return false;
};
$scope.isRejectOption = function (prescTypeDict) {
if (!$scope.prescTypeDictList) {
return false;
}
if (prescTypeDict.codeName === prescAttrEnum.YB && $scope.prescInsuranceSign === "0") {
return true;//非醫保患者,禁用醫保
}
//急診紅區 默認勾選禁用
if ($scope.clinicInfo.clinicSource === clinicSourceEnum.ER_ORDER_INP && prescTypeDict.codeName === prescAttrEnum.JZ) {
return true;
}
var prescAttr = getPrescAttr();
if (angular.equals(prescAttr, prescAttrEnum.PT)) {//普通處方,均可用
return false;
}
var prescAttrList = $scope.prescTypeDictList.filter(function (e) {
return prescAttr.split(";").some(function (codeName) {
return e.codeName === codeName;
})
});
var isReject = prescAttrList.some(function (e) {
if (!e.ctrvalue1) {
return false;
} else {
return e.ctrvalue1.split(";").some(function (rejectCodeId) {
return rejectCodeId === prescTypeDict.codeId;
});
}
});
var isReverseReject = prescAttrList.some(function (e) {
if (!prescTypeDict.ctrvalue1) {
return false;
} else {
return prescTypeDict.ctrvalue1.split(";").some(function (rejectCodeId) {
return rejectCodeId === e.codeId;
})
}
});
return isReject || isReverseReject;
};
$scope.applyCheckEvent = function () {
if (!$scope.$$phase) {
$scope.$apply();
}
};
$scope.createPresc = function () {
//檢查是否選中
checkOrdersQuantity(function(orderDetailListPresc, ordersDrugWestListPresc){//選中的要生成的處方的醫囑
checkTotalAmountOrDays(orderDetailListPresc, ordersDrugWestListPresc, function(){
getDrugPrescAttr(ordersDrugWestListPresc, 0, function(){
var groupNo = ordersDrugWestListPresc[0].groupNo;
for(var i=0; i<ordersDrugWestListPresc.length; ){
var doctorOrders = ordersDrugWestListPresc[i];
if(ordersDrugWestListPresc[i].groupNo == groupNo){
if(ordersDrugWestListPresc[i].groupSubNo == 1){
doctorOrders.operationStatus = "1";
doctorOrders.isGroup = "0";
} else {
doctorOrders.operationStatus = "0";
doctorOrders.isGroup = "1";
}
} else {
groupNo = doctorOrders.groupNo;
doctorOrders.operationStatus = "1";
doctorOrders.isGroup = "0";
}
var drugOrderDetail = doctorOrders.drugOrderDetail;
drugOrderDetail.totalAmount = orderDetailListPresc[i].totalAmount;
drugOrderDetail.days = orderDetailListPresc[i].days;
//封裝new InpOrderDrugInfo();
getOrderDrugInfo(doctorOrders, drugOrderDetail, function(orderDrugInfo){
$scope.addDrugInfoDetailForOrder(orderDrugInfo);
i++;
})
}
})
$scope.closePrescCreateModal();
});
})
};
(function () {
initPrescCreate();
getLastPerformDays(function () {
//getPackageUnits(0);
});
})();
}]);
angular.module('hr.service').factory('PrescCreate', ['$templateCache', '$document', '$compile', '$rootScope', '$timeout',
function ($templateCache, $document, $compile, $rootScope, $timeout) {
/**
* 打開modal
* @param scope 父級$scope
*/
function _openPrescCreateModal(scope) {
new PrescCreateModal(scope).open();
}
function PrescCreateModal(scope) {
this._scope = scope;
this._activeElement = null;
this._element = angular.element($templateCache.get('presc-create-modal.html'));
}
PrescCreateModal.prototype.open = function () {
if (event) {
event.stopPropagation();
event.preventDefault();
}
this._activeElement = $(document.activeElement);
this._activeElement.blur();
var scope = this._scope.$new();
scope.modal = this;
$document.find('body').append(this._element);
$compile(this._element)(scope);
$timeout(function () {
Mousetrap.reset();
});
};
PrescCreateModal.prototype.close = function () {
this._element.remove();
this._activeElement.focus();
};
return {
openPrescCreateModal: _openPrescCreateModal
}
}
]);
使用方式:
var InpOrdersController = ["$scope", "$q", "$http", "$filter", "hrDialog", "$timeout", "PluginManager", "$window", "HrOrderStatus", "hrProgress", "HrDrugBillingAttr", "HrBillingAttr", "PrescCreate", "MainTreatGroupVerify", "CpVariationCheck", "HrOrder", "$rootScope", "HrChargeType", "$debounce", function ($scope, $q, $http, $filter, hrDialog, $timeout, PluginManager, $window, HrOrderStatus, hrProgress, HrDrugBillingAttr, HrBillingAttr, PrescCreate, MainTreatGroupVerify, CpVariationCheck, HrOrder, $rootScope, HrChargeType, $debounce) { //生成處方調用 $scope.openCreatePrescModal = function () { if ($scope.operButtonDisabled.create) { return false; } findPerformOrders(function () { PrescCreate.openPrescCreateModal($scope); }); }; }];
因為綁定InpOrdersControllr的module注入了hr所以在InpOrdersController可以注入hr下的PrescCreate
