123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425 |
- $(function(){
- var request = getRequest(),
- teamCode = request.id,
- isLeader = isTeamLeader(),
- prescriptionCode = request.code;
-
- var medicineFreqData = [];
- var usageDict = [];
- var isChangeDiagnosis = 0; //判断是否改变疾病类型
- var $main = $('#main');
-
- template.helper('toJson',function(o) {
- if(o) {
- return JSON.stringify(o)
- }
- return "";
- })
-
- Promise.all([
- prescriptionDetailApis.getContinuedPrescriptionAsDoctor({
- data: {
- code: prescriptionCode, // 续方CODE
- type: isLeader?1:2 // 是否为团队长,1:是,2:否
- }
- }),
- prescriptionDetailApis.getRateList({data:{}}),
- prescriptionDetailApis.getUsageDict({data:{}}),
- prescriptionDetailApis.getReasonByType({data: {type:1}})
- ]).then(function(responses) {
- var prescriptionInfo = responses[0].data;
- var reasonTypes = responses[3].data;
- $main.html(template('detailTmpl', $.extend({},prescriptionInfo, {reasonTypes:reasonTypes})))
- medicineFreqData = responses[1].data
- usageDict = responses[2].data
-
- showDiagnosisBtn()
-
- bindEvents()
- initDiagnosisSuggestInput()
- initDrugNameSuggestInput()
- initFreqSuggestInput()
- initDaySuggestInput()
- initUsageSuggestInput()
- calcWorldWithTextarea()
- }).catch(function(e) {
- console && console.error(e)
- })
-
- function showDiagnosisBtn() {
- if($('#diagnosis li').length >= 3) {
- $('#addDiagnosisBtn').hide()
- } else {
- $('#addDiagnosisBtn').show()
- }
- }
-
- function bindEvents() {
-
- $('#addDrugBtn').click(function() {
- var html = template('drugTmpl',{})
- $('#drugs').append(html)
- initDrugNameSuggestInput()
- initFreqSuggestInput()
- initDaySuggestInput()
- initUsageSuggestInput()
- })
-
- $('#adjustReason').on('click','li',function() {
- if($(this).hasClass('active')) {
- $(this).removeClass('active')
- } else {
- $(this).addClass('active')
- }
- setAdjustReason()
- })
-
- $('#drugs').on('click','.icon-shanchu',function() {
- $(this).closest('.ibox-content').remove();
- }).on('click','.icon-jianshao',function() {
- var $input = $(this).closest('li').find('input').eq(0);
- var amount = parseFloat($input.val()||'0')
- if(amount > 0) {
- if($input.hasClass('j-medi-single')) {
- $input.val(amount - 0.25)
- } else {
- $input.val(amount - 1)
- }
- } else {
- $input.val(0)
- }
- var $box = $(this).closest('.ibox-content')
- countMediSum($box)
- }).on('click','.icon-xinzeng',function() {
- var $input = $(this).closest('li').find('input').eq(0);
- var amount = parseFloat($input.val()||'0')
- if($input.hasClass('j-medi-single')) {
- $input.val(amount + 0.25)
- } else {
- $input.val(amount + 1)
- }
-
- var $box = $(this).closest('.ibox-content')
- countMediSum($box)
- }).on('blur', 'input.j-medi-single, input.j-selDate, input.j-selFreq',function() {
- var $box = $(this).closest('.ibox-content')
- if(!$(this).val().trim()) {
- $(this).attr('data-code','')
- $sum = $box.find('.j-sumMedicine')
- $sum.attr('data-num','')
- $sum.text('')
- }
- countMediSum($box)
- })
-
- $('.diagnosis-wrap').on('click',function() {
- $('#placeholdText').hide()
- $('#diagnosisInput').show()
- $('#diagnosisInput').focus()
- })
-
- $('#addDiagnosisBtn').on('click',function() {
- $(this).hide();
- $('.diagnosis-wrap').show();
- setTimeout(function() {
- $('#diagnosisInput').click()
- },100)
- })
-
- $('#diagnosisInput').on('blur keydown',function(e) {
- if(e.type == 'keydown' && e.keyCode == 13) {
- $('#diagnosisInput').blur()
- } else {
- if(e.type == 'blur') {
- var name = $('#diagnosisInput').val()
- var code = $('#diagnosisInput').attr('data-code')
- var isSelected = $('#diagnosis li[data-code="'+ code +'"]').length>0?true:false // 该诊断结果是否已选择
- $('#placeholdText').show()
- $('#diagnosisInput').hide()
-
- if(name && code && !isSelected) {
- isChangeDiagnosis = 1;
- var html = template('diagnosisTmpl', {data:{name: name,code:code}})
- $('#diagnosis').append(html)
- }
- $('#diagnosisInput').val('')
- $('#diagnosisInput').attr('data-code','')
-
- showDiagnosisBtn()
-
- $('.diagnosis-wrap').hide()
- }
- }
- })
-
- $('#diagnosis').on('click', '.fa-close' ,function() {
- $(this).closest('li').remove()
- isChangeDiagnosis = 1;
- showDiagnosisBtn()
- })
- $('#backBtn').on('click',function() {
- history.go(-1);
- })
- $('#confirmBtn').click(function(){
- var $sum = $(".j-sumMedicine");
- if($sum.length > 0){
- for(var i=0;i<$sum.length;i++){
- var $box = $sum.eq(i).closest('.ibox-content')
- var $method = $box.find('.j-method')
- if(! $sum.eq(i).attr('data-num') || !$method.val() || !$method.attr('data-id')){
- showErrorMsg('请完善药品信息')
- return
- }
- }
- }else{
- showErrorMsg('请添加药品')
- return ;
- }
-
- var msgArr = [],
- $box = $('#drugs .ibox-content');
- for(var i=0;i<$box.length;i++){
- var data = {};
- var saveData = JSON.parse($box.eq(i).attr('data-json'));
- data.prescriptionCode = prescriptionCode;
- data.drugCode = saveData.drugCode;
- data.drugName = $box.eq(i).find('.j-drugName').val().replace(/\(/,'(').replace(/\)/,')');
- data.drugRate = $box.eq(i).find('.j-selFreq').attr('data-code');
- data.drugRateName = $box.eq(i).find('.j-selFreq').val();
- data.drugFormat=saveData.drugFormat.replace(/\(/,'(').replace(/\)/,')');
- data.subjectClass = saveData.subjectClass; //$box.eq(i).attr('data-class');
- data.isRefrigerate = saveData.isRefrigerate==2?1:0 //$box.eq(i).attr('data-storage')==2?1:0;
- data.physicAmount = "";
- data.physicAmountUnit = saveData.physicAmountUnit;
- data.physicAmountUnitName = saveData.physicAmountUnitName;
- data.physicDose = $box.eq(i).find('.j-medi-single').val().trim();
- data.physicDoseUnit = $box.eq(i).find('.j-dose-unit').attr('data-unit');
- data.physicDoseUnitName = $box.eq(i).find('.j-dose-unit').text();
- data.drugNumUnit = $box.eq(i).find('.j-sumMedicine').attr('data-unit');//取当次用量单位
- data.drugNumUnitName = $box.eq(i).find('.j-sumMedicine').attr('data-name');
- data.drugUsage= $box.eq(i).find('.j-method').attr('data-id');
- data.usageName= $box.eq(i).find('.j-method').val();
- data.num= $box.eq(i).find(".j-sumMedicine").attr('data-num');//取总量
- data.dayCount=$box.eq(i).find('.j-selDate').val();
- msgArr.push(data);
- }
- //调整CODE
- var reasonCode= _.map($('#adjustReason li.active'),function(el) {
- return $(el).attr('data-code')
- }).join(',')
- var params= {
- code:prescriptionCode,
- infos:JSON.stringify(msgArr),
- reason:$('#adjustReasonTextarea').val().trim()?$('#adjustReasonTextarea').val().trim():'-',
- reasonCode:reasonCode,
- diagnosis:(function(){
- // TODO
- var diagnosis = [];
- if(isChangeDiagnosis) {
- diagnosis = _.map($('#diagnosis li'),function(el) {
- var data = JSON.parse($(el).attr('data-json'))
- return {
- code: data.code,
- name: data.name
- }
- })
- return JSON.stringify(diagnosis)
- }
- return ""
- })()
- }
-
- if($('#diagnosis li').length == 0) {
- showErrorMsg('请添加诊断结果')
- return ;
- }
-
-
- prescriptionDetailApis.updatePresInfo({
- data: params
- }).then(function(res) {
- if(res.status == 200){
- showSuccessMsg("保存成功")
- setTimeout(function() {
- location.reload(true)
- }, 2000)
- } else {
- showErrorMsg(res.msg || "保存失败")
- }
- })
-
- })
- }
- function setAdjustReason() {
- var reasons = _.map($('#adjustReason li.active'),function(el) {
- return $.trim($(el).text())
- });
- // if(reasons && reasons.length) {
- $('#adjustReasonTextarea').val(reasons.join(','))
- $('#adjustReasonTextarea').focus()
- // }
- }
- function initDiagnosisSuggestInput() {
- $('#diagnosisInput').bsSuggest({
- url: APIService.server+'doctor/prescriptionInfo/getIcd10Info?nameKey=',
- getDataMethod:'url',
- idField: "code",
- keyField: "name",
- effectiveFields: ['name'],
- ignorecase: true,
- fnProcessData: function(res) {
- return {
- value: res.data
- }
- }
- }).on('onSetSelectValue', function (e, v) {
- $(this).attr('data-code', v.id)
- })
- }
-
- function initDrugNameSuggestInput() {
- $("input.j-drugName").bsSuggest({
- url: APIService.server+'doctor/prescriptionInfo/findDictByName?name=',
- getDataMethod:'url',
- idField: "drugCode",
- keyField: "drugName",
- effectiveFields: ['drugName','drugFormat'],
- effectiveFieldsAlias:{drugName: "药品名称",drugFormat:"规格"},
- ignorecase: true,
- fnProcessData: function(res) {
- return {
- value: res.data
- }
- }
- }).on('onSetSelectValue', function (e, v) {
- var $box = $(this).closest('.ibox-content'),
- $single = $box.find(".j-medi-single"),
- $doseUnit = $box.find('.j-dose-unit'),
- $freq = $box.find(".j-selFreq"),
- $date = $box.find(".j-selDate"),
- $sum = $box.find('.j-sumMedicine'),
- $method = $box.find('.j-method');
- var json = v.json;
- $box.attr('data-json',json);
- json = JSON.parse(json);
- $single.val(json.physicDose)
- $single.attr('data-code', json.physicDoseUnit)
- $doseUnit.text(json.physicDoseUnitName)
- $doseUnit.attr('data-unit', json.physicDoseUnit)
- $freq.val(json.drugRateName||"")
- $freq.attr('data-code', json.drugRate)
- $date.val(json.dayCount||"")
- $sum.text('')
- $method.val('')
- $method.attr('data-code','')
- })
- }
-
- function initFreqSuggestInput() {
- $("input.j-selFreq").bsSuggest({
- data: {value: medicineFreqData},
- idField: "code",
- keyField: "name",
- getDataMethod:'data',
- effectiveFields: ['name'],
- ignorecase: true
- }).on('onSetSelectValue', function (e, v) {
- $(this).attr('data-code', v.id)
- var $box = $(this).closest('.ibox-content')
- countMediSum($box)
- })
- }
-
- function initDaySuggestInput() {
- $("input.j-selDate").bsSuggest({
- data: {value: _.map(_.range(1, 31),function(v) {
- return {
- day: v
- }
- })},
- idField: "day",
- keyField: "day",
- getDataMethod:'data',
- effectiveFields: ['day'],
- ignorecase: true
- }).on('onSetSelectValue', function (e, v) {
- var $box = $(this).closest('.ibox-content')
- countMediSum($box)
- })
- }
-
- function initUsageSuggestInput() {
- $("input.j-method").bsSuggest({
- data: {value: usageDict},
- idField: "code",
- keyField: "name",
- getDataMethod:'data',
- effectiveFields: ['name'],
- ignorecase: true
- }).on('onSetSelectValue', function (e, v) {
- // console.log(e);
- })
- }
-
- //计算药品总量
- function countMediSum($box){
- var single = $box.find(".j-medi-single").val(),
- freq = $box.find(".j-selFreq").attr('data-code'),
- date = $box.find(".j-selDate").val(),
- $sum = $box.find('.j-sumMedicine'),
- $info = JSON.parse($box.attr('data-json'));
- if(!single || !freq || !date) {
- return ;
- } else {
- single = single.trim();
- freq = freq.trim();
- date = date.trim();
- }
- if(single && freq && date){
- prescriptionDetailApis.drugToRate({data:{code: freq}}).then(function(res){
- if(res.status == 200){
- var rate = res.data.rate
- var num = single*rate*date
- var sum="";
- if($info.pakeSpec){
- //新增药品
- sum = Math.ceil(num/$info.minDose)
- $sum.text(sum+$info.drugNumUnitName)
- $sum.attr('data-num',sum)
- $sum.attr('data-name',$info.drugNumUnitName);
- $sum.attr('data-unit',$info.drugNumUnit);
-
- $box.attr('data-class',$info.subjectClass);
- }else{
- var drugNumUnit = $info.drugNumUnit,
- physicDoseUnit = $info.physicDoseUnit;
- //请求药品信息
- var drugCode = $info.drugCode;
-
- prescriptionDetailApis.getPhysicInfo({data:{code: drugCode}}).then(function(res){
- if(res.status == 200){
- var msg = res.data[0]
- $box.attr('data-storage',msg.storageConditions);//冷藏
- $box.attr('data-class',msg.subjectClass);
- if(drugNumUnit == physicDoseUnit){
- sum = num
- }else{
- if(drugNumUnit == msg.pack_unit){
- sum = Math.ceil(num/msg.packSpec)
- }else{
- sum = Math.ceil(num/msg.minDose)
- }
- }
- $sum.text(sum+$info.drugNumUnitName)
- $sum.attr('data-num',sum)
- $sum.attr('data-name',$info.drugNumUnitName);
- $sum.attr('data-unit',$info.drugNumUnit);
- }
- })
- }
- }
- })
- }
- }
-
- })
|