Skip to content

电子病历

🕒 Published at:
location /smartCode/tansenAI/ {
	proxy_pass http://192.168.3.224:5001/;
}

运行镜像

bash
docker run -d -p 5000:5000 -v /home/dcwriter_docker/dcwriter5files:/app/dcwriter5files -it dc/writer/service/dotnet:3.1
  • 其中 5000 为系统本地端口,需要在防火墙放行
  • /home/dcwriter_docker/dcwriter5files 路径为第一步迁移的编辑器资源路径

验证

访问对应的服务器链接:
http://192.168.208.26:5000/MyWriter/MoreHandleDCWriterServicePage?wasmres=dcwriter5.js

业务

评估单配置公式, 展示所有单选多选数据元, 配置公式后, 在页面进行计算 入院评估单里, 例如疼痛等级, 有双击事件, 打开文书, 选择一个评估单, 写完后把评估结果回填

自定义封装整合

json 操作实用方法

js
//操作JSON

class jsonOperation{
	constructor(json){
		this.data=JSON.parse(json);
		this.body=this.getDocElement("Body")
	}
	//type有固定的三个Header,Body,Footer,以及每页的头脚,HeaderForFirstPage,FooterForFirstPage,...等
	getDocElement(type){
		return this.data.Elements.find((item) => item.Type == type)  
	}
	getDocBodyElement(type){
		this.body.Elements.find(item=>item.Type==type)
	}
}

元素操作实用方法

js
class editorElementOperation{
	constructor(editor){
		this.editor=editor;
	}
	//元素操作
		//获取元素自定义属性
			getElementAttribute(element,prop){
				const editor = this.editor;  
				if(prop){
					return this.editor.GetElementAttribute(element,prop);
				}else{
					return this.editor.GetElementCustomAttributes(element);
				}
			}
		//获取元素的某个属性
			 getElementOrProperty(element,prop,key){
			 	const editor = this.editor;
			   if(prop==='Attributes')return this.getElementAttribute(element,key);
			 	const Element = editor.GetElementProperties(element)
			 	if(prop&&key){
			 		return Element[prop][key]
			 	}else if(prop){
			 		return Element[prop]
			 	}else{
			 		return Element
			 	}
			 }

		//获取元素中的输入域
			getInputFields(element,excludeReadonly,excludeHiddenElement){
			  	return this.editor.GetAllInputFields(excludeReadonly, excludeHiddenElement, element, true)
			}

		// 设置选中元素执行命令  
		  	setDCExecuteCommand(Command) {  
		  	  const editor = this.editor  
		  	  editor.DCExecuteCommand(Command, true, null)  
		  	}  
	  	
	  	// 设置元素的属性,可通过元素/元素ID设置  
		  	setElementProperties(element, data)  {  
		  	  const editor = this.editor  
		  	  editor.SetElementProperties(element, data)  
		  	}  
	    
	  	// 设置元素所有Elements的属性  
		  	setAllElementsProperties(element, data) {  
		  	  const editor = this.editor  
		  	  const Element = this.getElementOrProperty(element)  
		  	  Element.Elements.forEach((item) => {  
		  	    setElementProperties(item, data)  
		  	  })  
		  	}  
	  
	  	// 获取元素中的第一个数据元  
		  	getDataElement  (element)  {  
		  	  const editor = this.editor  
		  	  const El = this.getElementOrProperty(element)  
		  	  let dataElement = null  
		  	  for (const item in El.Elements) {  
		  	    const Element = this.getElementOrProperty(item)  
		  	    if (Element.TypeName == 'XTextInputFieldElement') {  
		  	      dataElement = Element  
		  	      break  
		  	    }  
		  	  }  
		  	}
}

表格操作实用方法

js
class editorDataElementOperation extends editorElementOperation{
	constructor(editor){
		super(editor)
		this.editor=editor;
	}
	
	//设置输入域的默认值,打印显示,只读,是否显示
		setStatusOrDefaultValue(
			element,defaultValue,PrintVisibility,ContentReadonly,Visible
		){
			const Element=this.getElementOrProperty(element)
			this.setElementProperties(Element,{
				...Element,
				Visible: Visible??Element.Visible,  
				PrintVisibility: PrintVisibility??Element.PrintVisibility,  
				ContentReadonly: ContentReadonly??Element.ContentReadonly,
				Text: defaultValue??'',
				InnerValue: defaultValue??Element.InnerValue
			})
		}
}

输入域操作实用方法

js
class editorDataElementOperation extends editorElementOperation{
	constructor(editor){
		super(editor)
		this.editor=editor;
	}
	
	//设置输入域的默认值,打印显示,只读,是否显示
		setStatusOrDefaultValue(
			element,{defaultValue,PrintVisibility,ContentReadonly,Visible,Deletable}
		){
			const Element=this.getElementOrProperty(element)
			this.setElementProperties(Element,{
				...Element,
				Visible: Visible??Element.Visible,  //true,false
				PrintVisibility: PrintVisibility??Element.PrintVisibility,  //'Visible','Hidden','None'
				ContentReadonly: ContentReadonly??Element.ContentReadonly, //'True' : 'False'
				Text: defaultValue??Element.BackgroundText,
				InnerValue: defaultValue??Element.InnerValue,
				Deletable:Deletable??Element.Deletable //true false
			})
		}
}

命令

插入命令

命令说明
ctl.DCExecuteCommand('InsertString', false,"哈哈哈哈\r\n打")插入文本,\r 回车,\n 换行
DCExecuteCommand('InsertTDBarcodeElement',true,null)插入二维码
DCExecuteCommand('Insertunorderedlist',false,null)插入无序列表
DCExecuteCommand('InsertWhiteSpaceForAlignRight',false,null)插入空格补全至右侧内容右对齐
DCExecuteCommand('DCInsertImage', false, null)插入本地图片, 会打开一个弹框
DCExecuteCommand ('InsertImage', false, options)插入图片
ID (必填): '' 图片唯一 ID
Src (必填): '' 图片路径 (base64 或链接),支持网络图片,但是网络图片地址需跟编辑器引用地址保持同源。支持 base64 图片数据

编辑器对象相关

编辑器对象就是挂载编辑器的那个 dom 对象

API

api说明
LoadDocumentFromString (data, type, prop, errorHandler)加载指定类型的病历文档
data 病历的内容
type 内容的数据类型
prop 可选,加载病历的哪一块,header页眉、footer页脚、headerfooter页眉页脚、body正文
errorHandler 错误回调

元素相关

api

获取

api说明
GetElementByIdExt (element/element.ID)获取元素对象
GetElementById (elment.ID)根据 ID 获取元素对象
GetElementProperties (element/element.ID)获取元素身上的属性
SetElementProperties (element/element.ID, data)设置元素身上的属性
GetElementAttribute(element.ID, 指定的自定义属性名称)获取元素身上指定的自定义属性
GetElementCustomAttributes (element/element. ID)获取元素身上的自定义属性
GetElementTextByID (elment/element.ID,parameter)获取元素的文本
parameter:{
IncludeBackgroundText: false, //是否包含背景文字
IncludeBorderText: false, //是否保存边框文字
IncludeHiddenText: false, //是否包含隐藏的文本
IncludeLabelUnitText: false, //是否包含标签单位文本
IncludeLogicDeletedContent: false //是否包含逻辑删除内容
}


操作

api说明
FocusElement (elment/elment.ID)将光标聚焦在指定元素所在位置
SetChildElements (element/element.ID, options, position,isRefresh,isAddTrack)给指定元素插入元素

options: 插入元素列表
position:插入位置,
beforebegin 开始位置
afterBegin 开始之后位置
beforeEnd 结束位置
isRefresh: 是否刷新
isAddTrack: 是否带痕迹

var options = [
    {
        'image':{//图片
            id: "123",  //图片id
            //src: redpicbase64data, //图片路径
            src: "http://localhost:5214/pingcode/webdemo.png", //图片路径
            width: "100",  //图片宽度
            height: "100",  //图片高度
            savecontentinfile: false
        }
        'text':"文本1\r\n文本2"
    }
];
SetElementTextByID (element/element. ID, text)给指定元素设置文本, 会覆盖元素里原本的内容

表格相关

api

获取

api说明
CurrentTable ()获取当前焦点表格对象
CurrentTableColumn ()获取当前焦点列对象
CurrentTableRow ()获取当前焦点行对象
CurrentTableCell ()获取当前焦点单元格对象

表格对象属性

元素属性数据类型说明
AbsLeft对象在文档中的绝对坐标位置 (左侧)
AbsTop对象在文档中的绝对坐标位置(上侧)
AcceptChildElementTypes能接收的子元素类型
AcceptTab能否接受制表符,默认false。
AllowUserDeleteRow用户可删除表格行 布尔值
AllowUserInsertRow用户可新增表格行 布尔值
AllowUserToResizeColumns用户可调整列宽 布尔值
AllowUserToResizeRows用户可调整行高 布尔值
Attributes用户自定义属性列表
AutoFixTextMode文本自动修复模式
Cells当前表格单元格对象集合
ColumnsWidth列宽
CompressOwnerLineSpacing压缩所在文档行的行间距
ContentLock内容锁
ContentReadonly元素只读状态
ContentReadonlyExpression元素内容只读性表达式。
CopySource内容复制来源
Deleteable用户可删除表格
Elements子对象列表
EnablePermission启用授权控制 布尔值
EventTemplateName文档元素事件模板名称
Height高度
HiddenPrintWhenEmpty内容为空时不打印
ID元素编号
InnerID元素内部ID
InnerText元素内容的文本内容
JavaScriptForClick单击时执行的javascript脚本
JavaScriptForDoubleClick双击时执行的javascript脚本
Left左端位置
LeftInOwnerPage文档元素在文档页中的距离页面纸张左上角的水平距离
LimitedInputChars本容器元素能接受的字符清单,比如本属性设置为“0123456789”,则在用户界面中本容器元素只能输入规定的数字字符
MaxInputLength最大可输入的字符的长度,属性值小于等于0则无限制。
Modified元素是否修改
OwnerLastPageIndex获得一个从0开始计算的元素下边缘所能到达的页码
OwnerPageIndex获得一个从0开始计算的当前元素所在的页码
PrintBothBorderWhenJumpPrint续打时打印所有单元格边框
PrintVisibility打印是否可见
PrintVisibilityExpression打印时是否可见性表达式
Rows当前表格表格行对象集合
RowsCount当前表格表格行行数
RowsHeight行高
Style元素样式列表
Text表格内容
ToolTip元素提示信息
Top顶端位置
TopInOwnerPage文档元素在文档页中的距离页面纸张左上角的垂直距离
TypeName元素类型
UserFlags用户标记
ValueExpression数值表达式
Visible元素是否可见
Width宽度

列对象属性

元素属性数据类型说明
AbsLeft对象在文档中的绝对坐标位置 (左侧)
AbsTop对象在文档中的绝对坐标位置(上侧)
AcceptChildElementTypes允许接收的内容样式
AcceptTab输入域接收Tab符号
AllowInsertRowDownUseHotKey使用快捷键向下插入表格行时的行为

Disable:禁止使用快捷键在下面插入表格行

EnableOnlyForLastRow:只有是表格的最后一行才启用这种行为

EnableInAllCases:在所有状态下都启用这种行为。无论表格行是否是表格的最后一行都启用这种行为
AllowUserToResizeHeight是否允许用户鼠标拖拽操作改变表格行高度

False:不只读

Inherit:只读

True:继承父节点
Attributes用户自定义属性列表
AutoFixTextMode文本自动修复模式
AutoHideMode自动隐藏模式

None:不做设置

HideWhenEmpty:内容为空时自动隐藏

HideWhenChildFieldEmpty:子输入域内容为空时自动隐藏
CanSplitByPageLine能否被分页线分割,也就是是否允许被分配到两页上
Cells表格中单元格集合列表
CellsCount单元格数量
CloneType复制方式

Default:默认方式,只复制表格行及单元格,不复制内容。对于单元格是继承上级设置。

ContentWithClearField:

复制内容,但删除输入域中的内容。

Complete:完整的复制,包括输入域中的内容。
ContentLock内容锁
ContentReadonly内容是否只读

True:只读

False:不只读

Inherit:继承父节点
ContentReadonlyExpression元素内容只读性表达式。
CopySource内容复制来源
Deleteable是否允许删除
Elements子元素列表
EnablePermission启用文档内容安全和权限控制

True:启用

False:不启用

Inherit:继承父节点
EventTemplateName文档元素事件模板名称
ExpendForDataBinding由于数据源绑定而扩展的表格行
HeaderStyle标题行样式
Height高度
HiddenPrintWhenEmpty当为空时打印是否隐藏
ID元素编号
InnerID元素内部ID
InnerText元素内容的文本内容
JavaScriptForClick单击时执行的javascript脚本
JavaScriptForDoubleClick双击时执行的javascript脚本
Left左端位置
LeftInOwnerPage文档元素在文档页中的距离页面纸张左上角的水平距离
LimitedInputChars本容器元素能接受的字符清单,比如本属性设置为“0123456789”,则在用户界面中本容器元素只能输入规定的数字字符
MaxInputLength最大可输入的字符的长度,属性值小于等于0则无限制。
Modified元素是否修改
NewPage是否强制分页
OwnerLastPageIndex获得一个从0开始计算的元素下边缘所能到达的页码
OwnerPageIndex获得一个从0开始计算的当前元素所在的页码
PrintCellBackground打印单元格背景
PrintCellBorder打印单元格边框线
PrintVisibility打印时是否可见

Visible:显示

Hidden:隐藏,但占据排版位置

None:隐藏,而且不占据排版位置
PrintVisibilityExpression打印时可见表达式
RowIndex要操作的表格行序号
SpecifyHeight指定的高度
Style元素样式列表
Text元素内容
ToolTip元素提示信息
Top顶端位置
TopInOwnerPage文档元素在文档页中的距离页面纸张左上角的垂直距离
TypeName元素类型
UserFlags用户标记
ValueBinding数据源绑定信息。同输入域属性下的数据源,但是表格数据源绑定,表格行只需要设置数据源名称,行对应的单元格设置绑定路径
ValueExpression数值表达式
Visible元素是否可见
VisibleExpression元素可见性表达式
Width宽度

单元格对象属性

元素属性数据类型说明
AttributesObject用户自定义属性列表
CloneTypeString复制方式

Default:默认方式,只复制表格行及单元格,不复制内容。对于单元格是继承上级设置。

ContentWithClearField:复制内容,但删除输入域中的内容。

Complete:完整的复制,包括输入域中的内容。
ContentReadonlyString内容是否只读

True:只读

False:不只读

Inherit:继承父节点
Text元素内容
ValueExpression数值表达式
VisibleBoolean元素是否可见
VisibleExpression元素可见性表达式
PrintVisibilityString打印时是否可见

Visible:显示

Hidden:隐藏,但占据排版位置

None:隐藏,而且不占据排版位置
ValueBinding数据源绑定信息。同输入域属性下的数据源,但是表格数据源绑定,表格行只需要设置数据源名称,行对应的单元格设置绑定路径
TypeName元素类型
SlantSplitLineStyle斜分割线样式
MirrorViewForCrossPage跨页视图镜像
ColSpan跨列数合并
RowSpan跨行数合并
RowIndex要操作的表格行序号
ColIndex当前单元格所在列索引
Style元素样式列表
ToolTip元素提示信息
ContentLock内容锁
ContentReadonlyExpression元素内容只读性表达式。
Deleteable是否允许删除
Modified元素是否修改
CopySource内容复制来源
Elements子元素列表
EnablePermission启用文档内容安全和权限控制

True:启用

False:不启用

Inherit:继承父节点
EventTemplateName文档元素事件模板名称
GridLine网格线设置
Height高度
HiddenPrintWhenEmpty当为空时打印是否隐藏
ID元素编号
InnerID元素内部ID
InnerText元素内容的文本内容
IsOverrided判断本单元格是否被其他单元格合并了
JavaScriptForClick单击时执行的javascript脚本
JavaScriptForDoubleClick双击时执行的javascript脚本
LimitedInputChars本容器元素能接受的字符清单,比如本属性设置为“0123456789”,则在用户界面中本容器元素只能输入规定的数字字符
MaxInputLength最大可输入的字符的长度,属性值小于等于0则无限制。
MoveFocusHotKey移动焦点使用的快捷键
UserFlags用户标记
Width宽度
PrintVisibilityExpression打印时可见表达式
AcceptChildElementTypes允许接收的内容样式
AcceptTab输入域接收Tab符号
AutoFixFontSizeMode自动修改字体大小以适应内容
AutoFixTextMode文本自动修复模式
OwnerLastPageIndex获得一个从0开始计算的元素下边缘所能到达的页码
OwnerPageIndex获得一个从0开始计算的当前元素所在的页码
Top顶端位置
TopInOwnerPage文档元素在文档页中的距离页面纸张左上角的垂直距离
Left左端位置
LeftInOwnerPage文档元素在文档页中的距离页面纸张左上角的水平距离
AbsLeft对象在文档中的绝对坐标位置 (左侧)
AbsTop对象在文档中的绝对坐标位置(上侧)

输入域相关

api

获取

api说明
CurrentCheckboxOrRadio ()获取当前焦点输入域
GetAllInputFields (excludeReadonly, excludeHiddenElement,specifyRootElement)所有参数都不传默认获取全文输入域

excludeReadonly : 是否排除只读元素
excludeHiddenElement : 是否排除隐藏元素
specifyRootElement :
获取指定容器对象下的输入域集合列表。

比如需要获取一个输入域里面所有子输入域元素,传父元素的编号即可

比如需要获取一个表格所有输入域,传表格编号即可

比如需要获取一个病程中所有输入域,传病程编号即可

比如需要获取页眉中所有输入域传参为 header

比如需要获取正文中所有输入域传参为 body

比如需要获取页脚中所有输入域传参为 footer

不传默认获取全文输入域

操作

api说明

SetElementTextByID

容器属性

js
<div id="myControl" dctype="DCTemperatureControlForWASM"/>
	dctype指定控件类型
		WriterControlForWASM               
		DCTemperatureControlForWASM        三测单
		DCTemperatureDesignControlForWASM  三测单设计器
	ServicePageUrl               授权服务的地址使用第四代地址
	RegisterCode                 授权码没写会有红色提示


-->创建控件
	Var ctl = document.getElementById ("myWriterControl");
	CreateTemperatureControlForWASM (ctl);
	创建成功会触发控件加载完成事件 ctl.EventTemperatureContorolOnLoad (callback)

文档操作

方法返回值说明
Ctl. TemperatureFileNew ()Bool新建空白文档
Ctl. LoadTemperatureDocumentFromString (xml)Bool加载 xml 文档
Ctl.LoadTemperatureDocumentFromFile ()Bool加载本地文件
Ctl.SaveTemperatureDocumentToString ()字符串保存文档
ctl. SaveTemperatureDocumentToFile ()Bool下载文档

other

  1. 新增右键菜单
    1. 表格列属性
      1. 有一个配置公式
    2. 列属性总览

eventSender: 编辑器实例

js


三测单又称为体温单,包括患者姓名年龄性别科别床号入院日期住院病历号(或病案号)日期住院天数手术后天数脉搏/心率体温呼吸血压出入量大便次数身高体重等

依赖jq