為什么推薦的人這么少~~~~
更新(2017-4-18):
截止目前已知的已有2個三甲醫(yī)院在使用該編輯器,容我內(nèi)心澎湃以下,O(∩_∩)O哈哈~
先放github地址:https://github.com/tlzzu/SoDiaoEditor.v2
首先,這不是愚人節(jié)的玩笑,,,
本想著三月底發(fā)布來著,結果昨天又在兼容性上調(diào)出幾個bug,然后拖到了愚人節(jié)這天。
我是個追求完美的人,這點認識我的人,都能夠從我的相貌中看出來。
轉眼五個月過去了,期間不斷有人發(fā)來郵件進行鼓勵,并在不打賞的情況下厚著臉皮的來問我什么時候進行下一版的更新!
靜下心來,再次翻看原來的病歷編輯器發(fā)現(xiàn)了幾個問題:
當我想添加擴展時,臥槽,沒留位置,不能擴展;
當性能出問題時,臥槽,代碼不清晰,不好排查;
當要解決bug時,臥槽,code分布太多,改死狗;
當其他人拿出code問我時,臥槽,這不是我寫的code吧…
我焦慮了,code跟屎一樣,怎么可能是我這么優(yōu)秀的人寫出來的?
“算了誰沒個過去啊”就這樣我先原諒了自己。
然后舉著充滿老繭的右手起誓:
新的版本中
ta必須能夠擴展;
ta必須容易使用;
ta必須考慮兼容性;
ta性能必須足夠優(yōu)化;
ta設計必須足夠合理;
所以就只能重構了。
當然對比之前版本的優(yōu)勢還是很明顯的:
接口更加簡潔
可擴展性更高
框架調(diào)整,為后續(xù)更新發(fā)力
...(想好再補充)
未來希望增加圖像控件,體溫的這些。
老版本模板如果要升級現(xiàn)有版本:
模板中的樣式去掉tl-改成sde-
模板中去除所有click綁定
以下為github中內(nèi)容:
SoDiaoEditor.v2
預覽(國外站點打開會比較慢,請耐心等待,或者自己下載過來在本地打開)
建議給病歷模板設計者(開發(fā)人員,或者科主任)使用。 可用來設計電子病歷模板,也可以當做電子病歷編輯器使用。 此時輸入的值可利用SDE對象暴露出的接口獲取。
建議給醫(yī)生使用。 此時醫(yī)生可以在原有模板中添加已有的控件,也可以給科主任用來設計模板。 亦可通過SDE對象暴露出來的接口獲取數(shù)據(jù)。
建議該模式給醫(yī)生查看使用,在該模式下電子病歷中所有控件均不可編輯。
按鈕通過事件控制!
建議給醫(yī)生使用,此模式下醫(yī)生只能編輯控件中的值,其余均不可修改。
該模式只允許查看,控件不可被編輯。
按鈕通過事件控制!
更新
本次更新以下內(nèi)容:
新增以下toolbar:
編輯 i. 剪切板 1. 復制、粘貼、切剪 ii. 字體 1. 字體、字號、增大字體、縮小字體 插入 i. 字符 ii. 鏈接 1. 取消鏈接 iii. 圖片 1. 圖片、涂鴉(蠻好用的你可以試試) iv. 表格 表格 i. 表格 1. 插入表格
設計器中新增SED對象
修復事件兼容性(暫不支持IE8及其以下的瀏覽器,后續(xù)會有解決方案)
增加toolbar可配置性。
解決上一個版本中的bug。
等
結構
data 模擬異步請求的數(shù)據(jù),正式項目中可忽略 dialogs 擴展百度ueditor的dialogs dist 核心js文件 js sde.design.js SoDiaoEditor設計器核心js sde.editor.js SoDiaoEditor編輯器核心js example 一些demo ueditor 百度ueditor庫,可替換成自己版本 sde.config.js 核心配置文件
使用
電子病歷設計器:
設計模式--電子病歷設計器 toolbars: {
'sde-toolbar-file': 'file',
'sde-toolbar-editor': ['history', 'clipboard', 'fonts', 'paragraphs', 'styles'],
'sde-toolbar-insert': ['horizontal', 'spechars', 'link', 'img', 'map', 'code', 'table', 'formula', 'comment'],
'sde-toolbar-tables': ['table', 'blockmergecells'],
'sde-toolbar-views': ['directory', 'showcomment', 'preview'],
'sde-toolbar-tools': ['drafts', 'print', 'searchreplace', 'wordcount'],
'sde-toolbar-records': ['sdetemplate', 'sdecontrols'],
}//可自行刪減
}); }; </script></body></html>
注意:
各個腳本之間的加載順序,已本例為準。 配置項(sde.config.js):
/*默認配置項*/(function() { var URL = window.UEDITOR_HOME_URL || getUEBasePath(); /* SDE_CONFIG 配置項 */ window.SDE_CONFIG = { HOME_URL: URL, HOME_URL_DIALOGS: URL + 'dialogs/',//SoDiaoEditor擴展ueditor的dialogs位置 EDITOR_URL: URL + 'dist/js/sde.editor.js', MODE: "DESIGN", //DESIGN:設計|EDITOR:編輯|READONLY:只讀(所有節(jié)點都不可編輯) CONTROL_TEMPLATES: []//控件模板 }; /** * 配置項主體。注意,此處所有涉及到路徑的配置別遺漏URL變量。 */ window.UEDITOR_CONFIG = { UEDITOR_HOME_URL: URL + 'ueditor/', //為編輯器實例添加一個路徑,這個不能被注釋 serverUrl: URL + "data/config.json", //URL + "net/controller.ashx", // 服務器統(tǒng)一請求接口路徑 toolbars: [], //工具欄上的所有的功能按鈕和下拉框,可以在new編輯器的實例時選擇自己需要的重新定義 autoClearinitialContent: false, //是否自動清除編輯器初始內(nèi)容,注意:如果focus屬性設置為true,這個也為真,那么編輯器一上來就會觸發(fā)導致初始化的內(nèi)容看不到了 //iframeJsUrl: URL + window.SDE_CONFIG.EDITOR_URL + '?temp=' + new Date().getTime(), //給編輯區(qū)域的iframe引入一個js文件 // iframeCssUrl: URL + 'EMR/css/default.css?temp=' + new Date().getTime(), //給編輯區(qū)域的iframe引入一個css文件 allowDivTransToP: false, //允許進入編輯器的div標簽自動變成p標簽 wordCount: false, //關閉字數(shù)統(tǒng)計 elementPathEnabled: false, //關閉elementPath autoClearinitialContent: false }; function getUEBasePath(docUrl, confUrl) { return getBasePath(docUrl || self.document.URL || self.location.href, confUrl || getConfigFilePath()); } function getConfigFilePath() { var configPath = document.getElementsByTagName('script'); return configPath[configPath.length - 1].src; } function getBasePath(docUrl, confUrl) { var basePath = confUrl; if (/^(\/|\\\\)/.test(confUrl)) { basePath = /^.+?\w(\/|\\\\)/.exec(docUrl)[0] + confUrl.replace(/^(\/|\\\\)/, ''); } else if (!/^[a-z]+:/i.test(confUrl)) { docUrl = docUrl.split("#")[0].split("?")[0].replace(/[^\\\/]+$/, ''); basePath = docUrl + "" + confUrl; } return optimizationPath(basePath); } function optimizationPath(path) { var protocol = /^[a-z]+:\/\//.exec(path)[0], tmp = null, res = []; path = path.replace(protocol, "").split("?")[0].split("#")[0]; path = path.replace(/\\/g, '/').split(/\//); path[path.length - 1] = ""; while (path.length) { if ((tmp = path.shift()) === "..") { res.pop(); } else if (tmp !== ".") { res.push(tmp); } } return protocol + res.join("/"); } window.UE = { getUEBasePath: getUEBasePath }; })();
注意:
請重點關注window.SDE_CONFIG 和 window.UEDITOR_CONFIG 。 建議window.UEDITOR_CONFIG不要修改,可根據(jù)需求該window.SDE_CONFIG對象
電子病歷編輯器:
<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>編輯模式--電子病歷編輯器</title> <script type="text/javascript" src="dist/js/sde.editor.js"></script></head><body> <div id="myEditor" style="width:680px;height:1000px;margin:0 auto;"> 病歷內(nèi)容... </div> <script type="text/javascript"> window.onload = function() { var sde = new SDE({ id: "myEditor", title: '<div style="height: 45px;overflow: hidden;">' + '<div class="left" style="position:absolute;top:0;left:0;">' + '<img src="../data/img/SoDiaoL.png" style="height:35px;margin:5px;border:none;" />' + '</div>' + '<h1 style="font-size: 14px;height: 45px;line-height: 45px;margin: 0 auto;text-align: center;font-weight: normal;color:#fff;" >SoDiaoEditor電子病歷編輯器</h1>' + '</div>', //自定義title mode: 'EDITOR'//配置模式 }); }; </script></body></html>
文檔
電子病歷設計器:
方法 | 說明 | 描述 |
---|---|---|
ready(function(){}) | 編輯器加載完成 | (之后的所有方法必須在ready加載完成后使用) |
html([html]) | 獲取/設置所有編輯器中的html模板 | 如果html不傳遞,則為獲取,有值則為設置 |
getControl([id]) | 獲取編輯器中的控件 | id為可選,若為無則是獲取所有控件 |
setControl(ctl) | 設置編輯器中指定id的控件值 | ctl:{ID:'',VALUE:''}如果是select控件類型ctl:{ID:'',VALUE:'',TEXT:''}。ctl可以為數(shù)組也可以為對象,設置凍結REQUIRED:1為凍結,只讀不可操作 |
setMode(mode) | 設置編輯器模式 | mode可選:DESIGN(設計)、EDITOR(編輯)、READONLY(只讀) |
電子病歷編輯器:
方法 | 說明 | 描述 |
---|---|---|
getControl([id]) | 獲取編輯器中的控件 | id為可選,若為無則是獲取所有控件 |
setControl(ctl) | 設置編輯器中指定id的控件值 | ctl:{ID:'',VALUE:''}如果是select控件類型ctl:{ID:'',VALUE:'',TEXT:''}。ctl可以為數(shù)組也可以為對象,設置凍結REQUIRED:1為凍結,只讀不可操作 |
setMode(mode) | 設置編輯器模式 | mode可選:DESIGN(設計)、EDITOR(編輯)、READONLY(只讀) |
貢獻&bug提交
可郵件至dd@sodiao.org;
可以在github中的Iss中提交;
后續(xù)~~
本次框架調(diào)整相對合理,后續(xù)會持續(xù)跟進,toolbar也會相對完善。
最后
謹以此,獻給那些還在醫(yī)療行業(yè)奮斗的小伙伴們
相關鏈接:
【開源】SoDiaoEditor 可能是目前最好用的開源電子病歷編輯器(B/S架構)
http://www.cnblogs.com/tlzzu/p/6654208.html