2023年6月16日 作业记录

作业列表

  • 手术申请 添加 “是否麻醉” 下拉选项 Y N
  • 手术部位 主刀医师 一助 二助 实现既支持汉字检索 又支持首字母大写或者小写检索
  • 添加拟施手术的时候二助设置成必填
  • 手术申请--手术要求:特殊情况内容默认“无”
  • 手术申请--必填项换成蓝字加粗

作业1. 手术申请添加 是否麻醉 下拉选项框

1.1 在 CIS.AN.OperApplication.csp 添加选项框

<div class="form-title-right455">是否麻醉</div>
<div class="form-item-normal">
	<select id="Anaesthesia" name="Anaesthesia" class="hisui-combobox"></select>
</div>

1.2 在 CIS.AN.OperApplication.js 文件中配置下拉框

// 配置下拉框选项
// 2023年6月16日
// 是否麻醉
$("#Anaesthesia").combobox({
    valueField: "code",
    textField: "desc",
    editable: false,
    data: [
        { code: "Y", desc: "是"},
        { code: "N", desc: "否"}
    ],
    onChange: function (newValue, oldValue) {
        if (newValue === "Y") {
            $("#AnaDept").combobox({ required: true });  // 需要填写麻醉科室
            $("#AnaDept").combobox('enable');
            $("#PrevAnaMethod").combobox({ required: true });  // 需要填写拟施麻醉方法
            $("#PrevAnaMethod").combobox('enable');
        }
        else {
            $("#AnaDept").combobox({ required: false });  // 禁用 麻醉科室
            $("#AnaDept").combobox('disable');
            $("#PrevAnaMethod").combobox({ required: false });  // 禁用 麻醉方法
            $("#PrevAnaMethod").combobox('disable');
        }
    }
});

出现的错误

无法保存手术,这里用了短路与 && ,把 Anaesthesia 的校验短路了

if (PrevAnaMethodDesc === "" && Anaesthesia === "Y") {
  $.messager.alert("提示", "请选择拟施麻醉,不允许手写填入。", "warning");
    return;
}

作业2. 手术部位实现汉字检索、大小写字母检索

将手术部位名称转化为首字母大小写后,与前端带入的字符匹配检索

// 手术部位的别名
set Alias = ##class(web.DHCClinicCom).GetChinaChar(Description)
continue:(filterDesc'="")&($System.SQL.ALPHAUP(Description)'[filterDesc)&($System.SQL.ALPHAUP(Alias)'[filterDesc)

代码备份

/// Creator:      	杨国宾
/// CreatDate:    	2020-02-21
/// Description: 	查询手术申请手术部位
/// Table:        	CT_AN.BodySite, CT_AN.OperLinkBodySite
/// Input:			operId:手术Id
/// Return:       	ResultSet
/// d ##class(%ResultSet).RunQuery("CIS.AN.BL.CodeQueries","FindBodySiteByOper","1")
Query FindBodySiteByOper(operId As %String) As %Query(ROWSPEC = "RowId,Code,Description,Note,ExternalID") [ SqlProc ]
{
}

ClassMethod FindBodySiteByOperExecute(ByRef qHandle As %Binary, operId As %String) As %Status
{
	
	s repid=$i(^CacheTemp)
	i $g(ind)="" s ind=1
	
	s result=""
	s operBodyId="",BodySiteId=0
	if ((operId="")||($O(^CT.AN.OperLinkBodySiteI("IOperation"," "_operId,""))=""))
	{
		for{
				set BodySiteId=$O(^OEC("BODS",BodySiteId))
				quit:BodySiteId=""
				set RowId="",Code="",Description="",Note="",ExternalID="",Active=""
				set BodySite=##class(User.OECBodySite).%OpenId(BodySiteId)
				;set Active=BodySite.Active
				;continue:Active'="Y"
				set RowId=BodySiteId
				set Code=BodySite.BODSCode
				set Description=BodySite.BODSDesc
				set Note=""    ;BodySite.Note
				set ExternalID=""  ;BodySite.ExternalID
				set result=$lb(RowId,Code,Description,Note,ExternalID)
				do OutputRow
			}
	}
	else{
		for{
				set operBodyId=$O(^CT.AN.OperLinkBodySiteI("IOperation"," "_operId,operBodyId))
				quit:operBodyId=""
				set RowId="",Code="",Description="",Note="",ExternalID="",Active=""
				set operBody=##class(CT.AN.OperLinkBodySite).%OpenId(operBodyId)
				set RowId=operBody.BodySite
				set BodySite=##class(User.OECBodySite).%OpenId(RowId)
				;set RowId=BodySiteId
				set Code=BodySite.BODSCode
				set Description=BodySite.BODSDesc
				set Note=""
				set ExternalID=""
				set result=$lb(RowId,Code,Description,Note,ExternalID)
				do OutputRow
			}
	}

	s qHandle=$lb(0,repid,0)
	q $$$OK
OutputRow
	s ^CacheTemp(repid,ind)=result
	s ind=ind+1
	q
}

作业3. 添加拟施手术的时候二助设置成必填

修改文件:D:\DtHealth\app\dthis\web\service\dhcanop\js\CIS.AN.OperApplication.js

/**
 * 新增手术名称
 */
function addOperation() {
	...
	// 添加拟施手术时如果二助为空则提示并返回
    if ($("#Assistant2").combogrid("getValue") == "") {
        $.messager.alert("提示", "请先选择二助,再进行添加。", "warning");
        return;
    }
    ...
}

作业4. 手术申请–手术要求:特殊情况内容默认“无”

function ClearAppData() {
	...
    //特殊情况
    $("#SpecialConditions").val("无");
	...
}

作业5. 手术申请–必填项换成蓝字加粗

5.1 JS 统一控制 Class = "required" 元素的样式

/**
 * 配置class: "required" 的样式
 * 设置必填项css为蓝色加粗
 */
function initRequired() {
    var element = document.getElementsByClassName("required");
    console.log(element);
    for (var i = 0; i < element.length; i++) {
        element[i].style.color = "blue";
        element[i].style.fontWeight = "bold";
    }
}

function initPage() {
	...
	// 在初始化函数中调用上述方法
	initRequired();
	...
}

5.2 为必填项设置 class = "required"

<div class="form-title-right5">
	<span class="required-color">*</span>
	<span class="required">手术室</span>
</div>

问题

1.“是否麻醉”数据怎么保存的,为什么只增加了前端配置就在保存时自动存入表中了

2.根据“首字母检索”怎么实现的?为什么主刀医生可以,手术部位不可以?

posted @ 2023-06-19 13:06  李八御  阅读(37)  评论(0)    收藏  举报