為什么推薦的人這么少~~~~

 

更新(2017-4-18):

截止目前已知的已有2個三甲醫(yī)院在使用該編輯器,容我內(nèi)心澎湃以下,O(∩_∩)O哈哈~

 

先放github地址:https://github.com/tlzzu/SoDiaoEditor.v2

首先,這不是愚人節(jié)的玩笑,,,

本想著三月底發(fā)布來著,結果昨天又在兼容性上調(diào)出幾個bug,然后拖到了愚人節(jié)這天。

我是個追求完美的人,這點認識我的人,都能夠從我的相貌中看出來。

轉眼五個月過去了,期間不斷有人發(fā)來郵件進行鼓勵,并在不打賞的情況下厚著臉皮的來問我什么時候進行下一版的更新!

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

 

靜下心來,再次翻看原來的病歷編輯器發(fā)現(xiàn)了幾個問題:

  • 當我想添加擴展時,臥槽,沒留位置,不能擴展;

  • 當性能出問題時,臥槽,代碼不清晰,不好排查;

  • 當要解決bug時,臥槽,code分布太多,改死狗;

  • 當其他人拿出code問我時,臥槽,這不是我寫的code吧…

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

 

我焦慮了,code跟屎一樣,怎么可能是我這么優(yōu)秀的人寫出來的?

“算了誰沒個過去啊”就這樣我先原諒了自己。

 萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

然后舉著充滿老繭的右手起誓:

新的版本中

  • ta必須能夠擴展;

  • ta必須容易使用;

  • ta必須考慮兼容性;

  • ta性能必須足夠優(yōu)化;

  • ta設計必須足夠合理;

所以就只能重構了。

 萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

 

當然對比之前版本的優(yōu)勢還是很明顯的:

  1. 接口更加簡潔

  2. 可擴展性更高

  3. 框架調(diào)整,為后續(xù)更新發(fā)力

  4. ...(想好再補充)

未來希望增加圖像控件,體溫的這些。

老版本模板如果要升級現(xiàn)有版本:

  1. 模板中的樣式去掉tl-改成sde-

  2. 模板中去除所有click綁定

以下為github中內(nèi)容:

SoDiaoEditor.v2

預覽(國外站點打開會比較慢,請耐心等待,或者自己下載過來在本地打開)

  1. 設計模式--電子病歷設計器(擴展toolbar)

    建議給病歷模板設計者(開發(fā)人員,或者科主任)使用。
    可用來設計電子病歷模板,也可以當做電子病歷編輯器使用。
    此時輸入的值可利用SDE對象暴露出的接口獲取。
  1. 編輯模式--電子病歷設計器)

    建議給醫(yī)生使用。
    此時醫(yī)生可以在原有模板中添加已有的控件,也可以給科主任用來設計模板。
    亦可通過SDE對象暴露出來的接口獲取數(shù)據(jù)。
  1. 只讀模式--電子病歷設計器)

    建議該模式給醫(yī)生查看使用,在該模式下電子病歷中所有控件均不可編輯。
  1. 按鈕控制--電子病歷設計器

    按鈕通過事件控制!
  1. 編輯模式--電子病歷編輯器

    建議給醫(yī)生使用,此模式下醫(yī)生只能編輯控件中的值,其余均不可修改。
  1. 只讀模式--電子病歷編輯器

    該模式只允許查看,控件不可被編輯。
  1. 按鈕控制--電子病歷編輯器

    按鈕通過事件控制!

更新

本次更新以下內(nèi)容:

  1. 新增以下toolbar:

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

編輯
  i. 剪切板      1. 復制、粘貼、切剪
  ii. 字體      1. 字體、字號、增大字體、縮小字體
插入
  i. 字符
  ii. 鏈接      1. 取消鏈接
  iii. 圖片      1. 圖片、涂鴉(蠻好用的你可以試試)
  iv. 表格
表格
  i. 表格      1. 插入表格

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

  1. 設計器中新增SED對象

  2. 修復事件兼容性(暫不支持IE8及其以下的瀏覽器,后續(xù)會有解決方案)

  3. 增加toolbar可配置性。

  4. 解決上一個版本中的bug。

結構

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

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           核心配置文件

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

使用

電子病歷設計器:

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

    
    
    
    設計模式--電子病歷設計器
    
    
     
    
    
    
    
       
                     
                     
                     
                     
                    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>

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

 

注意:

各個腳本之間的加載順序,已本例為準。 配置項(sde.config.js):

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

/*默認配置項*/(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
    };
})();

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

 

注意:

請重點關注window.SDE_CONFIG 和 window.UEDITOR_CONFIG 。 建議window.UEDITOR_CONFIG不要修改,可根據(jù)需求該window.SDE_CONFIG對象

電子病歷編輯器:

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

<!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>

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

 

文檔

電子病歷設計器:
方法說明描述
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提交

  1. 可郵件至dd@sodiao.org;

  2. 可以在github中的Iss中提交;

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

后續(xù)~~

本次框架調(diào)整相對合理,后續(xù)會持續(xù)跟進,toolbar也會相對完善。

最后 

謹以此,獻給那些還在醫(yī)療行業(yè)奮斗的小伙伴們

 相關鏈接:

【開源】SoDiaoEditor 可能是目前最好用的開源電子病歷編輯器(B/S架構)

http://www.cnblogs.com/tlzzu/p/6654208.html