|  | @@ -1,312 +1,359 @@
 | 
	
		
			
				|  |  |  interface Document {
 | 
	
		
			
				|  |  | -    categoryId: string;
 | 
	
		
			
				|  |  | -    _id: string;
 | 
	
		
			
				|  |  | -    valid: number;
 | 
	
		
			
				|  |  | -    properties: any;
 | 
	
		
			
				|  |  | -    styles: any;
 | 
	
		
			
				|  |  | -    scripts: any;
 | 
	
		
			
				|  |  | -    layout: any;
 | 
	
		
			
				|  |  | -    document: any;
 | 
	
		
			
				|  |  | +  categoryId: string;
 | 
	
		
			
				|  |  | +  _id: string;
 | 
	
		
			
				|  |  | +  valid: number;
 | 
	
		
			
				|  |  | +  properties: any;
 | 
	
		
			
				|  |  | +  styles: any;
 | 
	
		
			
				|  |  | +  scripts: any;
 | 
	
		
			
				|  |  | +  layout: any;
 | 
	
		
			
				|  |  | +  document: any;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  interface Validator {
 | 
	
		
			
				|  |  | -    name: string;
 | 
	
		
			
				|  |  | -    level: string;
 | 
	
		
			
				|  |  | -    message: string;
 | 
	
		
			
				|  |  | +  name: string;
 | 
	
		
			
				|  |  | +  level: string;
 | 
	
		
			
				|  |  | +  message: string;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -export type EditorMode = 'form' | 'free' | 'readonly' | 'design';
 | 
	
		
			
				|  |  | +export type EditorMode = "form" | "free" | "readonly" | "design";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export interface DataElements {
 | 
	
		
			
				|  |  | -    [key: string]: {
 | 
	
		
			
				|  |  | -        id: string;
 | 
	
		
			
				|  |  | -        value: any | null;
 | 
	
		
			
				|  |  | -        element: {
 | 
	
		
			
				|  |  | -            id: string;
 | 
	
		
			
				|  |  | -            type: string;
 | 
	
		
			
				|  |  | -            name: string;
 | 
	
		
			
				|  |  | -            code: { internal: string, dataElement: string };
 | 
	
		
			
				|  |  | -            labels: null;
 | 
	
		
			
				|  |  | -            attributes: [];
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +  [key: string]: {
 | 
	
		
			
				|  |  | +    id: string;
 | 
	
		
			
				|  |  | +    value: any | null;
 | 
	
		
			
				|  |  | +    element: {
 | 
	
		
			
				|  |  | +      id: string;
 | 
	
		
			
				|  |  | +      type: string;
 | 
	
		
			
				|  |  | +      name: string;
 | 
	
		
			
				|  |  | +      code: { internal: string; dataElement: string };
 | 
	
		
			
				|  |  | +      labels: null;
 | 
	
		
			
				|  |  | +      attributes: [];
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +  };
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -type CursorPlace = 'PARAGRAPH_START' | 'PARAGRAPH_END' | 'DOCUMENT_START' | 'DOCUMENT_END';
 | 
	
		
			
				|  |  | +type CursorPlace =
 | 
	
		
			
				|  |  | +  | "PARAGRAPH_START"
 | 
	
		
			
				|  |  | +  | "PARAGRAPH_END"
 | 
	
		
			
				|  |  | +  | "DOCUMENT_START"
 | 
	
		
			
				|  |  | +  | "DOCUMENT_END";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  interface MenuItem {
 | 
	
		
			
				|  |  | -    global: {
 | 
	
		
			
				|  |  | -        text: string;
 | 
	
		
			
				|  |  | -        menu?: {
 | 
	
		
			
				|  |  | -            items: MenuItem[];
 | 
	
		
			
				|  |  | -        };
 | 
	
		
			
				|  |  | -        handler?: (menu?: any) => void;
 | 
	
		
			
				|  |  | -    }[]
 | 
	
		
			
				|  |  | +  global: {
 | 
	
		
			
				|  |  | +    text: string;
 | 
	
		
			
				|  |  | +    menu?: {
 | 
	
		
			
				|  |  | +      items: MenuItem[];
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    handler?: (menu?: any) => void;
 | 
	
		
			
				|  |  | +  }[];
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  interface NodesByCode {
 | 
	
		
			
				|  |  | -    target: {
 | 
	
		
			
				|  |  | -        setReadonly: (val: boolean) => void;
 | 
	
		
			
				|  |  | -        setDeletable: (val: boolean) => void;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +  target: {
 | 
	
		
			
				|  |  | +    setReadonly: (val: boolean) => void;
 | 
	
		
			
				|  |  | +    setDeletable: (val: boolean) => void;
 | 
	
		
			
				|  |  | +  };
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  interface ElementByValue extends HTMLElement {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * 元素聚焦
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    focusEnter: () => void
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * 元素聚焦
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  focusEnter: () => void;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export declare type EditType = {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    isRevisionMode: boolean;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    documentData: {
 | 
	
		
			
				|  |  | -        _id: string,
 | 
	
		
			
				|  |  | -        categoryId: string
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    _cacheDB: IDBTransaction;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    loadCacheData: (val: string) => any
 | 
	
		
			
				|  |  | -    delCacheData: (val: string) => any
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    setCacheData: (val: string) => any
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    openCache: () => void
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    _cacheDBIsOpen: boolean;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    on: (name: string, callback: (...args: any[]) => void) => void
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * 用于获取当前病历完整数据 该方法通常用于保存病历数据时调用
 | 
	
		
			
				|  |  | -     *
 | 
	
		
			
				|  |  | -     * 参数:无
 | 
	
		
			
				|  |  | -     * 返回值:返回json结构,参见:文档结构。
 | 
	
		
			
				|  |  | -     * 业务系统可在保存前对其内容进行修改。
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    getDocument: () => Document;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    getEditorMode: () => EditorMode;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    highlight: (comp: HTMLElement, time: number) => void;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    getElementsData: () => {
 | 
	
		
			
				|  |  | -        [key: string]: any;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    getElementByValue: (id: string, value?: any) => ElementByValue;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    view: HTMLElement;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    ModelService: {
 | 
	
		
			
				|  |  | -        setWalkerRoot: (walker: any, node: any) => any;
 | 
	
		
			
				|  |  | -        createTreeWalker: (node: any) => any;
 | 
	
		
			
				|  |  | -        getDataElementsFromWalker: (walker: any, name: string, value: string) => any
 | 
	
		
			
				|  |  | -        getElementsDataFromWalker: (walker: any, name?: string) => any
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    setEditorMode: (val: EditorMode) => void;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    getValidator: () => {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        /**
 | 
	
		
			
				|  |  | -         *
 | 
	
		
			
				|  |  | -         * @param val 是否显示节点信息 , 默认值 false
 | 
	
		
			
				|  |  | -         */
 | 
	
		
			
				|  |  | -        valid: (val: boolean) => Validator[]
 | 
	
		
			
				|  |  | +  EMR: {
 | 
	
		
			
				|  |  | +    getDocument(): {
 | 
	
		
			
				|  |  | +      getTablesByCode: (id: string) => any[];
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  | +  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * {Boolean} includeEmptyValue 是否获取非必填并且不是数据元 值为空的元素 默认 false
 | 
	
		
			
				|  |  | -     * @param val type 要获取的编码类型 默认 code。  code|business|internal|dataElement, 一般不用dataElement,当指定的编码类型不存在时返回 code
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    getDataElements: (val: 'code' | 'business' | 'internal' | 'dataElement', a?: boolean, b?: boolean) => DataElements;
 | 
	
		
			
				|  |  | +  isRevisionMode: boolean;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * 批量设置组件值
 | 
	
		
			
				|  |  | -     *
 | 
	
		
			
				|  |  | -     * 适用组件:智能文本框(smarttext)、复选框(checkfield)
 | 
	
		
			
				|  |  | -     * 参数:
 | 
	
		
			
				|  |  | -     * {Object}      data  要设置的key/value对象 同getAppContext中的data节点
 | 
	
		
			
				|  |  | -     * {Boolean}    overwrite 是否覆盖原来的值 默认true
 | 
	
		
			
				|  |  | -     * {Boolean}.   commandStack 是否进入撤销命令栈 默认true。当setValues在一个操作命令中调用的时候commandStack设置为false和合并父操作的命令栈 例如插入片段事件/或设置值后出发的change事件
 | 
	
		
			
				|  |  | -     * {DocumentFragment} documdentFragment插入的文档片段模型,为空时将值填充到整个文档,不为空时将值填充到文档片段
 | 
	
		
			
				|  |  | -     * 返回值 无
 | 
	
		
			
				|  |  | -     * @param val
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    setValues: (val: object, overwrite?: boolean, commandStack?: boolean, documentFragment?: object) => void;
 | 
	
		
			
				|  |  | +  documentData: {
 | 
	
		
			
				|  |  | +    _id: string;
 | 
	
		
			
				|  |  | +    categoryId: string;
 | 
	
		
			
				|  |  | +  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    getComponents: () => any[]
 | 
	
		
			
				|  |  | +  _cacheDB: IDBTransaction;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * editor.execute(commandName,[...args])
 | 
	
		
			
				|  |  | -     *
 | 
	
		
			
				|  |  | -     * 执行编辑器命令
 | 
	
		
			
				|  |  | -     *
 | 
	
		
			
				|  |  | -     * 参数
 | 
	
		
			
				|  |  | -     * @param name commandName 命令名称
 | 
	
		
			
				|  |  | -     * @param value args 执行命令携带的参数
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    execute: (name: string | 'insertContents', ...value: any[]) => void;
 | 
	
		
			
				|  |  | +  loadCacheData: (val: string) => any;
 | 
	
		
			
				|  |  | +  delCacheData: (val: string) => any;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * 移动光标到place 指定位置
 | 
	
		
			
				|  |  | -     *
 | 
	
		
			
				|  |  | -     * 参数:
 | 
	
		
			
				|  |  | -     * {string} place   PARAGRAPH_START | PARAGRAPH_END | DOCUMENT_START | DOCUMENT_END
 | 
	
		
			
				|  |  | -     * PARAGRAPH_START:移动光标到当前段落开头
 | 
	
		
			
				|  |  | -     * PARAGRAPH_END:移动光标到当前段落结尾
 | 
	
		
			
				|  |  | -     * DOCUMENT_START:移动光标到文档开头
 | 
	
		
			
				|  |  | -     * DOCUMENT_END:移动光标到文档结尾
 | 
	
		
			
				|  |  | -     * 返回值:undefined
 | 
	
		
			
				|  |  | -     * @param place
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    setCursor: (place: CursorPlace) => void;
 | 
	
		
			
				|  |  | +  setCacheData: (val: string) => any;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     *  滚动到当前光标所在位置
 | 
	
		
			
				|  |  | -     *
 | 
	
		
			
				|  |  | -     *   editor.scrollToCursor([middle])
 | 
	
		
			
				|  |  | -     *
 | 
	
		
			
				|  |  | -     * @param middle middle 当光标在可视区域后方时,是否滚动到屏幕中间 默认false
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    scrollToCursor: (...middle: boolean[]) => void;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    model: {
 | 
	
		
			
				|  |  | -        document: {
 | 
	
		
			
				|  |  | -            getRoot: () => {
 | 
	
		
			
				|  |  | -                getChild: (val: number) => {
 | 
	
		
			
				|  |  | -                    view: any
 | 
	
		
			
				|  |  | -                },
 | 
	
		
			
				|  |  | -                childCount: number,
 | 
	
		
			
				|  |  | -                getChildren: any
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +  openCache: () => void;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * 设置审阅模式
 | 
	
		
			
				|  |  | -     *
 | 
	
		
			
				|  |  | -     * 参数
 | 
	
		
			
				|  |  | -     * {String} mode 接收 on:开启审阅模式,off:关闭审阅模式
 | 
	
		
			
				|  |  | -     * 开启审阅模式后,病历上的修改会被记录下来,默认开启后,页面上没有任何表现,需要通过调用editor.setRevisionShowMode(flag) 展示修改
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    setRevisionMode: (val: 'on' | 'off') => void;
 | 
	
		
			
				|  |  | +  _cacheDBIsOpen: boolean;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * 设置审阅模式的展现方式
 | 
	
		
			
				|  |  | -     * @param val flag可接受的值如下
 | 
	
		
			
				|  |  | -     * 0: 页面上不显示修改记录
 | 
	
		
			
				|  |  | -     * 1: 病历右侧会以列表的形式显示 添加,删除,更新的记录
 | 
	
		
			
				|  |  | -     * 2: 嵌入病历显示修改记录,新增的记录会用背景颜色标记,删除的记录 通过画删除线标记
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    setRevisionShowMode: (val: 0 | 1 | 2 | number) => void;
 | 
	
		
			
				|  |  | +  on: (name: string, callback: (...args: any[]) => void) => void;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    getScriptRuntime: () => {
 | 
	
		
			
				|  |  | -        EMR: {
 | 
	
		
			
				|  |  | -            getDocument: () => {
 | 
	
		
			
				|  |  | -                getNodesByCode: (val: any, name: string) => NodesByCode[],
 | 
	
		
			
				|  |  | -                getComponentsByCode: (name: string) => any[]
 | 
	
		
			
				|  |  | -            };
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * 用于获取当前病历完整数据 该方法通常用于保存病历数据时调用
 | 
	
		
			
				|  |  | +   *
 | 
	
		
			
				|  |  | +   * 参数:无
 | 
	
		
			
				|  |  | +   * 返回值:返回json结构,参见:文档结构。
 | 
	
		
			
				|  |  | +   * 业务系统可在保存前对其内容进行修改。
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  getDocument: () => Document;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    getViewByElType: (value: any, name: string) => any
 | 
	
		
			
				|  |  | +  getEditorMode: () => EditorMode;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * 自定义编辑器快捷键
 | 
	
		
			
				|  |  | -     *
 | 
	
		
			
				|  |  | -     * 参数
 | 
	
		
			
				|  |  | -     * {Function} callback
 | 
	
		
			
				|  |  | -     * @param keyName 绑定快捷键
 | 
	
		
			
				|  |  | -     * @param callback 快捷键触发函数 该函数接受3个参数  evt:事件
 | 
	
		
			
				|  |  | -     * view: 当前光标或者选区开始所在位置的组件view
 | 
	
		
			
				|  |  | -     * position: {x ,y} 光标或者选区开始位置坐标(相对于文档,内部通过getBoundingClientRect()方法获取)
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    setShortcutKey: (keyName: string, callback: (e: Event, view: any, position: {
 | 
	
		
			
				|  |  | -        x: number,
 | 
	
		
			
				|  |  | -        y: number
 | 
	
		
			
				|  |  | -    }) => void) => void;
 | 
	
		
			
				|  |  | +  highlight: (comp: HTMLElement, time: number) => void;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * 注册右键菜单
 | 
	
		
			
				|  |  | -     * @param menuItem 数据
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    regCtxMenu: (menuItem: MenuItem) => void;
 | 
	
		
			
				|  |  | +  getElementsData: () => {
 | 
	
		
			
				|  |  | +    [key: string]: any;
 | 
	
		
			
				|  |  | +  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * 获取鼠标位置
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    getCursorPosition: () => { x: number, y: number }
 | 
	
		
			
				|  |  | +  getElementByValue: (id: string, value?: any) => ElementByValue;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  view: HTMLElement & {
 | 
	
		
			
				|  |  | +    container: {
 | 
	
		
			
				|  |  | +      find: (id: string) => any[];
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +  };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  ModelService: {
 | 
	
		
			
				|  |  | +    setWalkerRoot: (walker: any, node: any) => any;
 | 
	
		
			
				|  |  | +    createTreeWalker: (node: any) => any;
 | 
	
		
			
				|  |  | +    getDataElementsFromWalker: (
 | 
	
		
			
				|  |  | +      walker: any,
 | 
	
		
			
				|  |  | +      name: string,
 | 
	
		
			
				|  |  | +      value: string
 | 
	
		
			
				|  |  | +    ) => any;
 | 
	
		
			
				|  |  | +    getElementsDataFromWalker: (walker: any, name?: string) => any;
 | 
	
		
			
				|  |  | +  };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  setEditorMode: (val: EditorMode) => void;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  getValidator: () => {
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  | -     * 用于设置当前病历文档完整数据
 | 
	
		
			
				|  |  |       *
 | 
	
		
			
				|  |  | -     * 参数
 | 
	
		
			
				|  |  | -     * @param data 完整的病历文档结构。
 | 
	
		
			
				|  |  | -     * @param isRender 是否根据文档结构进行立即渲染页面,如果为false 则只设置文档数据不进行渲染操作
 | 
	
		
			
				|  |  | -     * @param clearUndoStack 是否清空撤销栈
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    setDocument: (data: any, isRender?: boolean, clearUndoStack?: boolean) => void;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * 设置实时分页
 | 
	
		
			
				|  |  | -     * @param isPaginate true:开启实时分页  false:关闭实时分页
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    setPaginate: (isPaginate: boolean) => void;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    renderer: {
 | 
	
		
			
				|  |  | -        pageView: {
 | 
	
		
			
				|  |  | -            marginTopWithPaging: number
 | 
	
		
			
				|  |  | -            /**
 | 
	
		
			
				|  |  | -             * 重新绘制页面布局
 | 
	
		
			
				|  |  | -             */
 | 
	
		
			
				|  |  | -            attachLayout: () => void
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * 获取大纲的树状图
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    getOutline: () => Outline[];
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * 设置 setApplicatioinContext
 | 
	
		
			
				|  |  | -     * @param data 数据
 | 
	
		
			
				|  |  | -     * @param filling 是否填充
 | 
	
		
			
				|  |  | -     * @param forcedReplacement 是否强制替换
 | 
	
		
			
				|  |  | +     * @param val 是否显示节点信息 , 默认值 false
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  | -    setApplicationContext: (data: any, filling: boolean, forcedReplacement: boolean) => void
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | +    valid: (val: boolean) => Validator[];
 | 
	
		
			
				|  |  | +  };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * {Boolean} includeEmptyValue 是否获取非必填并且不是数据元 值为空的元素 默认 false
 | 
	
		
			
				|  |  | +   * @param val type 要获取的编码类型 默认 code。  code|business|internal|dataElement, 一般不用dataElement,当指定的编码类型不存在时返回 code
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  getDataElements: (
 | 
	
		
			
				|  |  | +    val: "code" | "business" | "internal" | "dataElement",
 | 
	
		
			
				|  |  | +    a?: boolean,
 | 
	
		
			
				|  |  | +    b?: boolean
 | 
	
		
			
				|  |  | +  ) => DataElements;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * 批量设置组件值
 | 
	
		
			
				|  |  | +   *
 | 
	
		
			
				|  |  | +   * 适用组件:智能文本框(smarttext)、复选框(checkfield)
 | 
	
		
			
				|  |  | +   * 参数:
 | 
	
		
			
				|  |  | +   * {Object}      data  要设置的key/value对象 同getAppContext中的data节点
 | 
	
		
			
				|  |  | +   * {Boolean}    overwrite 是否覆盖原来的值 默认true
 | 
	
		
			
				|  |  | +   * {Boolean}.   commandStack 是否进入撤销命令栈 默认true。当setValues在一个操作命令中调用的时候commandStack设置为false和合并父操作的命令栈 例如插入片段事件/或设置值后出发的change事件
 | 
	
		
			
				|  |  | +   * {DocumentFragment} documdentFragment插入的文档片段模型,为空时将值填充到整个文档,不为空时将值填充到文档片段
 | 
	
		
			
				|  |  | +   * 返回值 无
 | 
	
		
			
				|  |  | +   * @param val
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  setValues: (
 | 
	
		
			
				|  |  | +    val: object,
 | 
	
		
			
				|  |  | +    overwrite?: boolean,
 | 
	
		
			
				|  |  | +    commandStack?: boolean,
 | 
	
		
			
				|  |  | +    documentFragment?: object
 | 
	
		
			
				|  |  | +  ) => void;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  getComponents: () => any[];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * editor.execute(commandName,[...args])
 | 
	
		
			
				|  |  | +   *
 | 
	
		
			
				|  |  | +   * 执行编辑器命令
 | 
	
		
			
				|  |  | +   *
 | 
	
		
			
				|  |  | +   * 参数
 | 
	
		
			
				|  |  | +   * @param name commandName 命令名称
 | 
	
		
			
				|  |  | +   * @param value args 执行命令携带的参数
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  execute: (name: string | "insertContents", ...value: any[]) => void;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * 移动光标到place 指定位置
 | 
	
		
			
				|  |  | +   *
 | 
	
		
			
				|  |  | +   * 参数:
 | 
	
		
			
				|  |  | +   * {string} place   PARAGRAPH_START | PARAGRAPH_END | DOCUMENT_START | DOCUMENT_END
 | 
	
		
			
				|  |  | +   * PARAGRAPH_START:移动光标到当前段落开头
 | 
	
		
			
				|  |  | +   * PARAGRAPH_END:移动光标到当前段落结尾
 | 
	
		
			
				|  |  | +   * DOCUMENT_START:移动光标到文档开头
 | 
	
		
			
				|  |  | +   * DOCUMENT_END:移动光标到文档结尾
 | 
	
		
			
				|  |  | +   * 返回值:undefined
 | 
	
		
			
				|  |  | +   * @param place
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  setCursor: (place: CursorPlace) => void;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   *  滚动到当前光标所在位置
 | 
	
		
			
				|  |  | +   *
 | 
	
		
			
				|  |  | +   *   editor.scrollToCursor([middle])
 | 
	
		
			
				|  |  | +   *
 | 
	
		
			
				|  |  | +   * @param middle middle 当光标在可视区域后方时,是否滚动到屏幕中间 默认false
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  scrollToCursor: (...middle: boolean[]) => void;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  model: {
 | 
	
		
			
				|  |  | +    document: {
 | 
	
		
			
				|  |  | +      getRoot: () => {
 | 
	
		
			
				|  |  | +        getChild: (val: number) => {
 | 
	
		
			
				|  |  | +          view: any;
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  | +        childCount: number;
 | 
	
		
			
				|  |  | +        getChildren: any;
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +  };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * 设置审阅模式
 | 
	
		
			
				|  |  | +   *
 | 
	
		
			
				|  |  | +   * 参数
 | 
	
		
			
				|  |  | +   * {String} mode 接收 on:开启审阅模式,off:关闭审阅模式
 | 
	
		
			
				|  |  | +   * 开启审阅模式后,病历上的修改会被记录下来,默认开启后,页面上没有任何表现,需要通过调用editor.setRevisionShowMode(flag) 展示修改
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  setRevisionMode: (val: "on" | "off") => void;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * 设置审阅模式的展现方式
 | 
	
		
			
				|  |  | +   * @param val flag可接受的值如下
 | 
	
		
			
				|  |  | +   * 0: 页面上不显示修改记录
 | 
	
		
			
				|  |  | +   * 1: 病历右侧会以列表的形式显示 添加,删除,更新的记录
 | 
	
		
			
				|  |  | +   * 2: 嵌入病历显示修改记录,新增的记录会用背景颜色标记,删除的记录 通过画删除线标记
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  setRevisionShowMode: (val: 0 | 1 | 2 | number) => void;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  getScriptRuntime: () => {
 | 
	
		
			
				|  |  | +    EMR: {
 | 
	
		
			
				|  |  | +      getDocument: () => {
 | 
	
		
			
				|  |  | +        getNodesByCode: (val: any, name: string) => NodesByCode[];
 | 
	
		
			
				|  |  | +        getComponentsByCode: (name: string) => any[];
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +  };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  getViewByElType: (value: any, name: string) => any;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * 自定义编辑器快捷键
 | 
	
		
			
				|  |  | +   *
 | 
	
		
			
				|  |  | +   * 参数
 | 
	
		
			
				|  |  | +   * {Function} callback
 | 
	
		
			
				|  |  | +   * @param keyName 绑定快捷键
 | 
	
		
			
				|  |  | +   * @param callback 快捷键触发函数 该函数接受3个参数  evt:事件
 | 
	
		
			
				|  |  | +   * view: 当前光标或者选区开始所在位置的组件view
 | 
	
		
			
				|  |  | +   * position: {x ,y} 光标或者选区开始位置坐标(相对于文档,内部通过getBoundingClientRect()方法获取)
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  setShortcutKey: (
 | 
	
		
			
				|  |  | +    keyName: string,
 | 
	
		
			
				|  |  | +    callback: (
 | 
	
		
			
				|  |  | +      e: Event,
 | 
	
		
			
				|  |  | +      view: any,
 | 
	
		
			
				|  |  | +      position: {
 | 
	
		
			
				|  |  | +        x: number;
 | 
	
		
			
				|  |  | +        y: number;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    ) => void
 | 
	
		
			
				|  |  | +  ) => void;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * 注册右键菜单
 | 
	
		
			
				|  |  | +   * @param menuItem 数据
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  regCtxMenu: (menuItem: MenuItem) => void;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * 获取鼠标位置
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  getCursorPosition: () => { x: number; y: number };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * 用于设置当前病历文档完整数据
 | 
	
		
			
				|  |  | +   *
 | 
	
		
			
				|  |  | +   * 参数
 | 
	
		
			
				|  |  | +   * @param data 完整的病历文档结构。
 | 
	
		
			
				|  |  | +   * @param isRender 是否根据文档结构进行立即渲染页面,如果为false 则只设置文档数据不进行渲染操作
 | 
	
		
			
				|  |  | +   * @param clearUndoStack 是否清空撤销栈
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  setDocument: (
 | 
	
		
			
				|  |  | +    data: any,
 | 
	
		
			
				|  |  | +    isRender?: boolean,
 | 
	
		
			
				|  |  | +    clearUndoStack?: boolean
 | 
	
		
			
				|  |  | +  ) => void;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * 设置实时分页
 | 
	
		
			
				|  |  | +   * @param isPaginate true:开启实时分页  false:关闭实时分页
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  setPaginate: (isPaginate: boolean) => void;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  renderer: {
 | 
	
		
			
				|  |  | +    pageView: {
 | 
	
		
			
				|  |  | +      marginTopWithPaging: number;
 | 
	
		
			
				|  |  | +      /**
 | 
	
		
			
				|  |  | +       * 重新绘制页面布局
 | 
	
		
			
				|  |  | +       */
 | 
	
		
			
				|  |  | +      attachLayout: () => void;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      fixEmpty: () => void;
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +  };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * 获取大纲的树状图
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  getOutline: () => Outline[];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * 设置 setApplicatioinContext
 | 
	
		
			
				|  |  | +   * @param data 数据
 | 
	
		
			
				|  |  | +   * @param filling 是否填充
 | 
	
		
			
				|  |  | +   * @param forcedReplacement 是否强制替换
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  setApplicationContext: (
 | 
	
		
			
				|  |  | +    data: any,
 | 
	
		
			
				|  |  | +    filling: boolean,
 | 
	
		
			
				|  |  | +    forcedReplacement: boolean
 | 
	
		
			
				|  |  | +  ) => void;
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export declare type Runtime = {
 | 
	
		
			
				|  |  | -    saveDocument: (document: any, success: (res?: any) => void, error: (err?: any) => void) => void;
 | 
	
		
			
				|  |  | -    loadDocument: (success: (res?: any) => void, error: (err?: any) => void, param: any) => void;
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +  saveDocument: (
 | 
	
		
			
				|  |  | +    document: any,
 | 
	
		
			
				|  |  | +    success: (res?: any) => void,
 | 
	
		
			
				|  |  | +    error: (err?: any) => void
 | 
	
		
			
				|  |  | +  ) => void;
 | 
	
		
			
				|  |  | +  loadDocument: (
 | 
	
		
			
				|  |  | +    success: (res?: any) => void,
 | 
	
		
			
				|  |  | +    error: (err?: any) => void,
 | 
	
		
			
				|  |  | +    param: any
 | 
	
		
			
				|  |  | +  ) => void;
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export interface Outline {
 | 
	
		
			
				|  |  | +  id: string;
 | 
	
		
			
				|  |  | +  type: string;
 | 
	
		
			
				|  |  | +  typeName: string;
 | 
	
		
			
				|  |  | +  text: string;
 | 
	
		
			
				|  |  | +  parent: string;
 | 
	
		
			
				|  |  | +  business: string;
 | 
	
		
			
				|  |  | +  children: {
 | 
	
		
			
				|  |  | +    business: string;
 | 
	
		
			
				|  |  | +    code: string;
 | 
	
		
			
				|  |  | +    dataElement: string;
 | 
	
		
			
				|  |  |      id: string;
 | 
	
		
			
				|  |  | +    internal: string;
 | 
	
		
			
				|  |  | +    leaf: boolean;
 | 
	
		
			
				|  |  | +    parent: string;
 | 
	
		
			
				|  |  | +    text: string;
 | 
	
		
			
				|  |  |      type: string;
 | 
	
		
			
				|  |  |      typeName: string;
 | 
	
		
			
				|  |  | -    text: string;
 | 
	
		
			
				|  |  | -    parent: string
 | 
	
		
			
				|  |  | -    business: string
 | 
	
		
			
				|  |  | -    children: {
 | 
	
		
			
				|  |  | -        business: string;
 | 
	
		
			
				|  |  | -        code: string;
 | 
	
		
			
				|  |  | -        dataElement: string;
 | 
	
		
			
				|  |  | -        id: string;
 | 
	
		
			
				|  |  | -        internal: string;
 | 
	
		
			
				|  |  | -        leaf: boolean
 | 
	
		
			
				|  |  | -        parent: string;
 | 
	
		
			
				|  |  | -        text: string
 | 
	
		
			
				|  |  | -        type: string
 | 
	
		
			
				|  |  | -        typeName: string
 | 
	
		
			
				|  |  | -    }[]
 | 
	
		
			
				|  |  | +  }[];
 | 
	
		
			
				|  |  |  }
 |