You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
332 lines
13 KiB
332 lines
13 KiB
3 months ago
|
<!DOCTYPE html>
|
||
|
<html>
|
||
|
|
||
|
<head>
|
||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||
|
<title>HCEmrViewLib Demo</title>
|
||
|
<script type="text/javascript" src="./HCEmrViewLib.min.js"></script>
|
||
|
<script type="text/javascript" src="./WatEvent.js"></script>
|
||
|
<script type="text/javascript">
|
||
|
|
||
|
// 数据元属性
|
||
|
var TDeProp = {
|
||
|
Index: "Index", // 唯一索引
|
||
|
Code: "Code", // 编码
|
||
|
Name: "Name", // 名称
|
||
|
Frmtp: "Frmtp", // 类别,见TDeFrmtp枚举
|
||
|
Unit: "Unit", // 单位
|
||
|
HideUnit: "HdUnit", // 是否隐藏单位,比如血压的收缩压不显示单位
|
||
|
PreFormat: "PRFMT", // 表示格式
|
||
|
Raw: "Raw", // 原始数据
|
||
|
CMV: "CMV", // 受控词汇表(值域代码)
|
||
|
CMVVCode: "CMVVCode", // 受控词汇编码(值编码)
|
||
|
Trace: "Trace", // 痕迹信息
|
||
|
Secret: "Secret", // 是否属于隐私信息
|
||
|
}
|
||
|
|
||
|
// 数据元类型
|
||
|
var TDeFrmtp = {
|
||
|
Radio: "RS", // 单选
|
||
|
Multiselect: "MS", // 多选
|
||
|
Number: "N", // 数值
|
||
|
String: "S", // 文本
|
||
|
Date: "D", // 日期
|
||
|
Time: "T", // 时间
|
||
|
DateTime: "DT" // 日期和时间
|
||
|
}
|
||
|
|
||
|
// 痕迹样式
|
||
|
var TStyleExtra = {
|
||
|
None: 0, // 无
|
||
|
Del: 1, // 删除
|
||
|
Add: 2 // 添加
|
||
|
}
|
||
|
|
||
|
var TGroupProp = {
|
||
|
Index: "Index",
|
||
|
Name: "Name",
|
||
|
SubType: "RT",
|
||
|
Propertys: "Propertys"
|
||
|
}
|
||
|
|
||
|
var emrView;
|
||
|
|
||
|
function appendLine(s) {
|
||
|
var textArea = document.getElementById("textBox");
|
||
|
if (textArea)
|
||
|
textArea.value += "\r\n" + s;
|
||
|
}
|
||
|
|
||
|
function getBase64ByUrl (src, callback, outputFormat) {
|
||
|
var xhr = new XMLHttpRequest();
|
||
|
xhr.open("GET", src, true);
|
||
|
|
||
|
xhr.responseType = "arraybuffer";
|
||
|
|
||
|
xhr.onload = function(e) {
|
||
|
if (xhr.status == 200) {
|
||
|
var uInt8Array = new Uint8Array(xhr.response);
|
||
|
var i = uInt8Array.length;
|
||
|
var binaryString = new Array(i);
|
||
|
while (i--)
|
||
|
binaryString[i] = String.fromCharCode(uInt8Array[i]);
|
||
|
|
||
|
var data = binaryString.join('');
|
||
|
var base64 = window.btoa(data);
|
||
|
var dataUrl = "data:" + (outputFormat || "image/png") + ";base64," + base64;
|
||
|
callback.call(this, dataUrl);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
xhr.send();
|
||
|
}
|
||
|
|
||
|
function getFileAsBytes(src, callback) {
|
||
|
var xhr = new XMLHttpRequest();
|
||
|
xhr.open("GET", src, true);
|
||
|
xhr.responseType = "arraybuffer";
|
||
|
xhr.onload = function(e) {
|
||
|
if (xhr.status == 200) {
|
||
|
var vBytes = new Uint8Array(xhr.response);
|
||
|
callback.call(this, vBytes);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
xhr.send();
|
||
|
}
|
||
|
|
||
|
function load() {
|
||
|
console.log("load........");
|
||
|
emrView = new THCEmrViewLib({
|
||
|
//hcServer: "http://139.9.152.193:12880/", // HC服务端IP-->
|
||
|
hcServer: "http://127.0.0.1:12880/", // HC服务端IP-->
|
||
|
//hcServer: "http://192.168.1.122:12880/",
|
||
|
//hcServer: "http://192.168.5.104:12880/",
|
||
|
// hcServer: "http://192.168.20.100:12880/",
|
||
|
baseUrl: "./", // 编辑器需要的资源路径
|
||
|
el: "divHCEmrView", // 编辑器父容器的ID
|
||
|
defaultFontSize: "小四", // 编辑器默认字号,默认小四
|
||
|
defaultFontFamily: "宋体", // 编辑器默认字体,默认宋体
|
||
|
paperSize: "A4", // 纸张大小
|
||
|
paperOrientation: 0, // 纸张方向 0纵向 1横向,默认0
|
||
|
designMode: false, // 是否设计模式,也可以使用emrView.designMode = true;
|
||
|
// multItemEditValue: true, // 多选数据元选项上屏后,再次点击直接编辑内容,使用右键菜单重新选择
|
||
|
//deUnDoneColor: "#FF8C00", // 没选过选项或没写过内容时数据元背景色
|
||
|
//deDoneColor: "#AFEEEE", // 填写或选择过选项的数据元背景色
|
||
|
//deHotColor: "#87CEFA", // 鼠标移动上去时的颜色
|
||
|
|
||
|
// 工具条
|
||
|
toolBar: {
|
||
|
visible: true, // 是否整体显示顶部工具条,也可以使用emrView.toolBar.visible = false;
|
||
|
//height: 35, // 设置工具栏高度
|
||
|
// 文件按钮
|
||
|
btnFile: {
|
||
|
visible: 1
|
||
|
},
|
||
|
|
||
|
// 打印按钮
|
||
|
btnPrint: {
|
||
|
visible: true,
|
||
|
},
|
||
|
|
||
|
|
||
|
},
|
||
|
|
||
|
// 右键菜单中添加自定义菜单
|
||
|
contextMenu: [
|
||
|
|
||
|
],
|
||
|
|
||
|
// 事件
|
||
|
event: {
|
||
|
|
||
|
// 点击了编辑器工具栏上的保存按钮时触发
|
||
|
onSave: function() {
|
||
|
appendLine("onSave 事件触发");
|
||
|
feedbackEmrStreamToWat();
|
||
|
},
|
||
|
|
||
|
|
||
|
|
||
|
// 单选或多选数据元获鼠标点击后,显示选项时触发,可在这里把选项传递到编辑器中
|
||
|
onPopupGetDeItemDomain: function(cmv) {
|
||
|
appendLine("onPopupGetDeItemDomain 选项类数据元点击时请求选项 参数:" + cmv);
|
||
|
//xgf
|
||
|
var data = new EmrToWatData("S","EMR004",cmv);//编辑器初始化完成
|
||
|
return watEvents.getDeItemDomain(data,watEvents.url);
|
||
|
},
|
||
|
|
||
|
// 数据元选项有扩展内容时,获取扩展内容
|
||
|
onPopupGetDomainItemExtraLib: function(item, cvvid) {
|
||
|
if (item.Index == 495) { // 性别
|
||
|
if (cvvid == 3683) { // 选择了带内容的
|
||
|
emrView.SetActiveItemExtraWithJSON({
|
||
|
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
// 当编辑器在加载文档或插入了新的Item时触发,便于外部替换数据元的值
|
||
|
onInserItemSync: function(sender, data, item) {
|
||
|
console.log("装载数据元:"+item.Code);
|
||
|
var hcdata =watEvents.getHcData();
|
||
|
|
||
|
for(prop in hcdata){
|
||
|
if(item.Code==prop){
|
||
|
item.Text = hcdata[prop];
|
||
|
item.AllocValue = true; // 该元素填写过值了
|
||
|
}
|
||
|
}
|
||
|
if (item.Index == "494") { // item是编辑
|
||
|
item.Text = "李四";
|
||
|
item.AllocValue = true; // 该元素填写过值了
|
||
|
}
|
||
|
},
|
||
|
|
||
|
// 当编辑器中的Combobox控件点击了下拉按钮,显示选项时触发
|
||
|
onDeComboboxPopup: function(cmbxItem) {
|
||
|
if (cmbxItem.Index == 495) { // 是性别
|
||
|
if (!cmbxItem.SaveItem) { // combobox自己没有保存选项
|
||
|
if (cmbxItem.Items.count > 0)
|
||
|
cmbxItem.Clear();
|
||
|
|
||
|
cmbxItem.AddItem("男", "1");
|
||
|
cmbxItem.AddItem("女", "2");
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
// 判断当前情况下是否能编辑,此事件在引起内容变化的时候触发,较频繁,所以不要写复杂的业务
|
||
|
onCanEdit: function(data) {
|
||
|
if (emrView.EditProcIndex != "") // 当前指定了要编辑的病程
|
||
|
return emrView.CaretProcInfo.Index == emrView.EditProcIndex; // 光标所在病程和当前允许编辑的病程Index相同
|
||
|
else
|
||
|
return true;
|
||
|
},
|
||
|
|
||
|
// 数据元右键菜单中的 更新引用 点击后触发的事件
|
||
|
onDeItemGetSyncValue: function(item) {
|
||
|
if (item.Index == "494") // 姓名
|
||
|
return "李四福";
|
||
|
},
|
||
|
|
||
|
// 点了打印并在浏览器里显示了要打印的文件
|
||
|
onPrinted: function(type) {
|
||
|
// type 0打印全部或1-n页,1按行续打,2选中范围续打
|
||
|
console.log(type == 0 ? "打印" : "续打");
|
||
|
},
|
||
|
onInitialization: function(){
|
||
|
appendLine("初始化完成");
|
||
|
var jsonData = new EmrToWatData("S","EMR001","emr001");//编辑器初始化完成
|
||
|
feedbackDataToWat(JSON.stringify(jsonData));
|
||
|
|
||
|
},
|
||
|
// 编辑器双击事件,查看属性
|
||
|
onDblClick: function() {
|
||
|
var deGroupCode = emrView.GetCaretDeGroupProperty(TDeProp.Code);
|
||
|
var deGroupIndex = emrView.GetCaretDeGroupProperty(TDeProp.Index);
|
||
|
var propertys = emrView.GetCaretDeGroupProperty("Propertys","json");//json对象
|
||
|
console.log(propertys.isSave);
|
||
|
|
||
|
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
|
||
|
// 向编辑器的右键菜单中添加菜单
|
||
|
emrView.AddContextMenu(
|
||
|
[
|
||
|
|
||
|
{
|
||
|
text:"删除病程标识",
|
||
|
exec:function(){
|
||
|
emrView.InnerView.DeleteAllProcMark();
|
||
|
}
|
||
|
}
|
||
|
]
|
||
|
);
|
||
|
|
||
|
|
||
|
}
|
||
|
function applyTextStyle(style) {
|
||
|
// 设置选中的文本设置样式
|
||
|
emrView.ApplyTextStyle(style);
|
||
|
}
|
||
|
|
||
|
function applyParaAlignHorz(align) {
|
||
|
// 设置当前光标所在的段水平对齐
|
||
|
emrView.ApplyParaAlignHorz(align);
|
||
|
}
|
||
|
|
||
|
function LoadFromBytes(bytes) { // 二进制数组
|
||
|
// 加载文件,文件数据是byte数组
|
||
|
emrView.LoadFromBytes(bytes);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/**------------------------------------------------------------xgf 2020年7月23日 10:18:45 begin -------------------------------------------------**/
|
||
|
function GetQueryString(name){
|
||
|
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
|
||
|
var r = window.location.search.substr(1).match(reg);
|
||
|
if(r!=null){
|
||
|
return unescape(r[2]);
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
//保存数据返回给平台[add by xgf 2020年7月23日 10:13:13]
|
||
|
function feedbackDataToWat(data){
|
||
|
//console.log("二进制数据:"+data,"strwinid:"+GetQueryString('strwinid'),+"strctrid:"+GetQueryString('strctrid'));
|
||
|
return window.parent.top.DxURLPage.action(GetQueryString('strwinid'),GetQueryString('strctrid'),data);
|
||
|
}
|
||
|
//病历二进制数据返回给平台
|
||
|
function feedbackEmrStreamToWat(){
|
||
|
var steamData = emrView.SaveToLiteBytes(); //保存片段
|
||
|
var emrData = new EmrToWatData("B","saveEMRByte",steamData);
|
||
|
watEvents.emrToWatEvent(emrData);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
function watResultToIFrame(data){
|
||
|
var jsonData = JSON.parse(data);
|
||
|
console.log("平台传入的数据event:"+jsonData.event);
|
||
|
// console.log("平台传入的数据data:"+jsonData.data);
|
||
|
watEvents.watToEMREvent(jsonData);
|
||
|
}
|
||
|
|
||
|
|
||
|
//数据传递对象
|
||
|
/**
|
||
|
接受平台数据
|
||
|
{
|
||
|
dataType:"",//数据类型,
|
||
|
event:""//数据来源,类别。业务类别,emr001=编辑器init完成。
|
||
|
data:{}
|
||
|
}
|
||
|
**/
|
||
|
function EmrToWatData(dataType,event,data){
|
||
|
this.dataType = dataType;//
|
||
|
this.event = event;
|
||
|
this.data = data
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
/**------------------------------------------------------------xgf 2020年7月23日 10:18:45 end -------------------------------------------------**/
|
||
|
</script>
|
||
|
</head>
|
||
|
|
||
|
<body style="height: 100%;" onload="load()">
|
||
|
<div id="divHCEmrView" style="left: 2px; top: 0px; position: fixed; width: 100%; height:100%; background: lightgray;"></div>
|
||
|
</body>
|
||
|
|
||
|
</html>
|