123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463 |
- <?xml version="1.0" encoding="utf-8"?>
- <Script type="xscript4.0"><![CDATA[/***************************************************************************************
- * System Name : KNUH2.0
- * Job Name : EMR
- * Creator :
- * Make Date : 2015-01-20
- * Description :
- *---------------------------------------------------------------------------------------
- * Modify Date Modifier Modify Description
- *---------------------------------------------------------------------------------------
- * 2015-01-20 Live Converter TF->XP
- *
- *---------------------------------------------------------------------------------------
- ****************************************************************************************/
- var teethArray = new Array(8);
- var sTOOTFACT = ""; //치식사항
-
- var bRIGHT_TOP = false;
- var bRIGHT_YOUTH_TOP = false;
- var bLEFT_TOP = false;
- var bLEFT_YOUTH_TOP = false;
-
- var bRIGHT_BOTTOM = false;
- var bRIGHT_YOUTH_BOTTOM = false;
- var bLEFT_BOTTOM = false;
- var bLEFT_YOUTH_BOTTOM = false;
-
- var bRIGHT_TOP_THIRD = false;
- var bRIGHT_TOP_YOUTH_THIRD = false;
- var bRIGHT_BOTTOM_THIRD = false;
- var bRIGHT_BOTTOM_YOUTH_THIRD = false;
-
- var bMIDDLE_TOP_THIRD = false;
- var bMIDDLE_TOP_YOUNG_THIRD = false;
- var bMIDDLE_BOTTOM_THIRD = false;
- var bMIDDLE_BOTTOM_YOUNG_THIRD = false;
- var bLEFT_TOP_THIRD = false;
- var bLEFT_TOP_THIRD_YOUTH = false;
- var bLEFT_BOTTOM_THIRD = false;
- var bLEFT_BOTTOM_THIRD_YOUTH = false;
- var bTOTAL = false;
- var bTOTAL_YOUTH = false;
- var sRIGHT_TOP_TEETH = "#11#12#13#14#15#16#17#18"; //우상
- var sRIGHT_TOP_YOUNG_TEETH = "#51#52#53#54#55"; //우상유치
- var sLEFT_TOP_TEETH = "#21#22#23#24#25#26#27#28"; //좌상
- var sLEFT_TOP_YOUNG_TEETH = "#61#62#63#64#65"; //좌상유치
- var sRIGHT_BOTTOM_YOUNG_TEETH = "#81#82#83#84#85"; //우하유치
- var sRIGHT_BOTTOM_TEETH = "#41#42#43#44#45#46#47#48"; //우하
- var sLEFT_BOTTOM_YOUNG_TEETH = "#71#72#73#74#75"; //좌하유치
- var sLEFT_BOTTOM_TEETH = "#31#32#33#34#35#36#37#38"; //좌하
- var sRIGHT_TOP_THIRD_TEETH = "#14#15#16#17#18"; //영구치(1/3)
- var sRIGHT_TOP_THIRD_YOUNG_TEETH = "#54#55"; //유치(1/3)
- var sRIGHT_BOTTOM_THIRD_YOUNG_TEETH = "#84#85"; //유치(1/3)
- var sRIGHT_BOTTOM_THIRD_TEETH = "#44#45#46#47#48"; //영구치(1/3)
- var sMIDDLE_TOP_THIRD_TEETH = "#11#12#13#21#22#23";
- var sMIDDLE_TOP_THIRD_YOUNG_TEETH = "#51#52#53#61#62#63";
- var sMIDDLE_BOTTOM_THIRD_YOUNG_TEETH = "#81#82#83#71#72#73";
- var sMIDDLE_BOTTOM_THIRD_TEETH = "#41#42#43#31#32#33";
- var sLEFT_TOP_THIRD_TEETH = "#24#25#26#27#28";
- var sLEFT_BOTTOM_THIRD_TEETH = "#34#35#36#37#38";
- var sLEFT_TOP_THIRD_YOUTH_TEETH = "#64#65";
- var sLEFT_BOTTOM_THIRD_YOUTH_TEETH = "#74#75";
- var objDiagGrdID = ""; //global grid object
- var objPrcpGrdID = ""; //global grid object
- var objCurGrdID = ""; //현재 focus가 설정된 grid
- var iDiagBfRow = 0; //이전 diaglist row의 위치
- var iPrcpBfRow = 0; //이전 prcplist row의 위치
- //=======================================================================================
- // Function
- //---------------------------------------------------------------------------------------
- /****************************************************************************************
- * Function : fInitialize
- * Description : 화면 초기화
- * Argument :
- * return type :
- * Creator :
- ****************************************************************************************/
- function fInitialize() {
- lf_reqHardCodeInfo(ds_init_hardcd, 20);
- var hardcd = ds_init_hardcd.getColumn(0,"hardcd");
- var dutplcecd = sysf_getUserInfo("dutplcecd");
- ds_main_prcplist.clearData();
- ds_main_diaglist.clearData();
- fMakeSndArray();
- objDiagGrdID = grd_diaglist;
- objPrcpGrdID = grd_prcplist;
-
- if(frmf_checkOpener()) {
- sTOOTFACT = opener.frmf_getParameter("param_tootfact"); //치식사항
- sDIAGLIST = opener.frmf_getParameter("param_diaglist"); //진단내용
- sPRCPLIST = opener.frmf_getParameter("param_prcplist"); //처방내용
- if(!utlf_isNull(sDIAGLIST)) {
- // setCSVToNode("/root/main/diaglist", sDIAGLIST, "diaglist");
- dsf_setCSVToDs("ds_main_diaglist",sDIAGLIST);
-
- for(var i = 0 ; i < objDiagGrdID.rowcount ; i++) {
- fInitLoadTootFact(ds_main_diaglist.getColumn(i,"rtntootfact"), i, objDiagGrdID);
- }
-
- fShowTootFact(lf_getDsValue(ds_main_diaglist,0,"rtntootfact")); //첫번째 row값을 화면에 뿌린다.
- //objDiagGrdID.select(1,2,1,2) = true; //기본 focus를 진단 첫번째 row에 잡는다.
- objCurGrdID = objDiagGrdID;
- objects[objCurGrdID.binddataset].rowposition = 0;
- iDiagBfRow = objects[objDiagGrdID.binddataset].rowposition; //이전 row값을 기억해서 다른 row가 클릭된 경우 clear할 수 있도록한다.
- }
-
- if(!utlf_isNull(sPRCPLIST)) {
- // setCSVToNode("/root/main/prcplist", sPRCPLIST, "prcplist");
- dsf_setCSVToDs("ds_main_prcplist",sPRCPLIST);
- for(var i = 0; i < objPrcpGrdID.rowcount; i++) {
- fInitLoadTootFact(ds_main_prcplist.getColumn(i,"rtntootfact"), i, objPrcpGrdID);
- }
-
- if(objDiagGrdID.rowcount < 1) { //진단이 없는 경우, default로 처방에 focus를 set한다.
- objCurGrdID = objPrcpGrdID;
- objects[objCurGrdID.binddataset].rowposition = 0;
- iPrcpBfRow = objects[objPrcpGrdID.binddataset].rowposition; //이전 row값을 기억해서 다른 row가 클릭된 경우 clear할 수 있도록한다.
- fShowTootFact(lf_getDsValue(ds_main_prcplist,0,"rtntootfact")); //첫번째 row값을 화면에 뿌린다.
- }
- }
- // objDiagGrdID.sort(1, objDiagGrdID.colRef("rowcnt"), objDiagGrdID.rows - 1, objDiagGrdID.colRef("rowcnt")) = "asc";
- // objPrcpGrdID.sort(1, objPrcpGrdID.colRef("rowcnt"), objPrcpGrdID.rows - 1, objPrcpGrdID.colRef("rowcnt")) = "asc";
- objects[objDiagGrdID.binddataset].keystring.current = "S:rowcnt";
- objects[objPrcpGrdID.binddataset].keystring.current = "S:rowcnt";
- } else {
- sysf_messageBox("메인 화면을 찾는데", "E009");
- this.close();
- }
-
- //2008. 07. 04 opener에서 진단, 처방의 치식정보가 설정된 경우, 자동으로 처방선택 또는 진단선택하게 하기 위해 추가 오지훈
- // var isVal = sDIAGLIST.split("▩");
- // var isVal2 = sPRCPLIST.split("▩");
-
- if(!utlf_isNull(sPRCPLIST)) {
- // grd_prcplist.row = 1;
- // grd_prcplist.col = 1;
- // grd_prcplist.select(grd_prcplist.row, grd_prcplist.col) = true;
- ds_main_prcplist.rowposition = 0;
- var ev = new GridMouseEventInfo;
- frmf_inputEnterKey("grd_prcplist", "onlbuttonup", ev );
- } else if(!utlf_isNull(sDIAGLIST)) {
- // grd_diaglist.row = 1;
- // grd_diaglist.col = 1;
- // grd_diaglist.select(grd_diaglist.row, grd_diaglist.col) = true;
- ds_main_diaglist.rowposition = 0;
- var ev = new GridMouseEventInfo;
- frmf_inputEnterKey("grd_diaglist", "onlbuttonup", ev );
- }
- }
- /****************************************************************************************
- * Function : fMakeSndArray
- * Description : 2차원배열 생성
- * Argument :
- * return type :
- * Creator :
- ****************************************************************************************/
- function fMakeSndArray(){
- for(var i = 0; i < 8; i++){
- teethArray[i] = new Array(8);
- }
- //배열의 초기값을 0로 setting한다.
- for(var i = 0; i < 8; i++){
- for(var j = 0; j < 8; j++){
- teethArray[i][j] = 0;
- }
- }
- }
- /****************************************************************************************
- * Function : fInitLoadTootFact
- * Description : tootfact를 ','로 구분자를 두어 화면에 표시한다.
- * Argument : sTootFact : 치식정보
- * : curRow : Grid Row정보
- * : grdObj : Grid ID
- * return type :
- * Creator :
- ****************************************************************************************/
- function fInitLoadTootFact(sTootFact, curRow, grdObj){
- var loadStr = utlf_transNullToEmpty(sTootFact).replace(',', '').replace('#', ', #').replace('ⓘ', ', ⓘ');
- objects[grdObj.binddataset].setColumn(curRow,1,loadStr.substr(2, loadStr.length)); //grid의 첫번째 cell에 setting!!
- }
- /****************************************************************************************
- * Function : fShowTootFact
- * Description : 진단화면에서 load..치식data로 초기화
- * Argument : sTootFact : 치식정보
- * return type :
- * Creator :
- ****************************************************************************************/
- function fShowTootFact(sTootFact){
- if(sTootFact.length < 1){ //opener에서 넘어온 치식이 없는 경우
- return;
- }else{
- fFillColorCaption(sTootFact, "#99ccff");
- }
- }
- /****************************************************************************************
- * Function : fFillColorCaption
- * Description : 치식데이터에 따라 화면에 선택된 값을 칠한다.
- * Argument : sTeeth : 치식정보
- * : sColor : 채워넣을 색상코드
- * return type :
- * Creator :
- ****************************************************************************************/
- function fFillColorCaption(sTeeth, sColor){
- var sCls;
- var iRow;
- var iCol;
- var tmp;
- var capObj;
- if(sColor == "#99ccff") {
- val = 1;
- } else {
- val = 0;
- }
- var sTempTootFact = utlf_transNullToEmpty(sTeeth).replace(',', '').replace('#', ',#').replace('ⓘ', ',ⓘ');
-
- teethPos = sTempTootFact.split(",");
- for(var i=1; i < teethPos.length; i ++ ){
- tmp = teethPos[i];
- if(!utlf_isNull(tmp)) {
- // capObj = document.controls("caption" + tmp.substr(1,2)); //by sonjy 전환데이터 관련 수정 20080905
- capObj = group1.components["caption"+tmp.substr(1,2)];
- sCls = tmp.substr(0,1);
- iRow = tmp.substr(1,1);
- iCol = tmp.substr(2,1);
- iRow--;
- iCol--;
- if(fChkValidTeeth(iRow, iCol) == true){
-
- if(sCls == "ⓘ") { // 임플란트 치식이면
- teethArray[iRow][iCol] = 2;
- capObj.style.backgroundColor = "#ff9090";
- } else {
- teethArray[iRow][iCol] = val;
- capObj.style.backgroundColor = sColor;
- }
- }else{
- sysf_messageBox("영구치와 유치를 동시에 선택할 수", "I004");
- return;
- }
- }
- }
- }
- /****************************************************************************************
- * Function : fChkValidTeeth
- * Description : 유효한 치식 선택 검사(동일한 위치의 영구치와 유치는 선택될 수 없다.)
- * 치식을 저장하는 array의 row에 +3을 한 row위치에 값이
- * 동일하게 1로 적용되는 것을 막는다.
- * : ex) 11 - 51, 21 - 61, 31 - 71, 41 - 81(x)
- * Argument : row : Array row값
- * : col : Array col값
- * return type :
- * Creator :
- ****************************************************************************************/
- function fChkValidTeeth(row, col){
- if(row < 4) {
- tmprow = row + 4; //영구치가 선택된 경우
- } else {
- tmprow = row - 4; //유치가 선택된 경우
- }
- if(teethArray[tmprow][col] == 1) {return false;}
- return true;
- }
- /****************************************************************************************
- * Function : fDragChoiTeeth
- * Description : Drag Mode에서의 치식 선택
- * Argument : grdObj : 그리드객체
- * : staObj : 캡션객체
- * return type :
- * Creator :
- ****************************************************************************************/
- function fDragChoiTeeth(grdObj, staObj){
- if(objects[grdObj.binddataset].rowposition < 0) return;
- // var capObj = document.controls(event.target);
- var capObj = staObj;
- var capVal = capObj.name.substr(7,3); // capObj.attribute("_value");
- if(capVal != "") {
- var row = capVal.substr(0,1);
- var col = capVal.substr(1,2);
- row--;
- col--;
- //alert(row + "," + col);
- if(fChkValidTeeth(row, col) == true) {
- var choiYN = teethArray[row][col];
- if(choiYN == 1 || choiYN == 2) {
- capObj.style.backgroundColor = "#ffffff";
- teethArray[row][col] = 0;
- } else {
- var implantyn = ds_main_cond.getColumn(0,"implantyn");
- if(implantyn == "Y") {
- capObj.style.backgroundColor = "#ff9090";
- teethArray[row][col] = 2; // 임플란트치식
- ds_main_cond.setColumn(0,"implantyn","N");
- } else {
- capObj.style.backgroundColor = "#99ccff";
- teethArray[row][col] = 1; // 일반치식
- }
- }
- } else {
- sysf_messageBox("영구치와 유치를 동시에 선택할 수", "I004");
- return;
- }
- }
- fGrdInptVal(objCurGrdID);
- }
- /****************************************************************************************
- * Function : fGrdInptVal
- * Description : 선택된 치식값을 grd에 표시한다.
- * Argument : grdObj : 그리드객체
- * return type :
- * Creator :
- ****************************************************************************************/
- function fGrdInptVal(grdObj){
- var objDs = objects[grdObj.binddataset];
- var iRow = objDs.rowposition;
- var iTotRow = objDs.rowcount;
- if(iRow < 0){
- return;
- }
- var selectedRows = grdf_getSelectedRows(grdObj);
- for (var iRow = 0; iRow < selectedRows.length; iRow++){
- var toothcd = objDs.getColumn(selectedRows[iRow],0);
- if( utlf_isNull(toothcd) && utlf_isNull(opener.frmf_getParameter("SPMMO10500_open"))){ continue; } //grd에 진단코드가 맵핑 안된 경우 skip
- objDs.setColumn(selectedRows[iRow], 1, fMakeSaveData(2)); // 치식사항(user보기용)
- objDs.setColumn(selectedRows[iRow], 2, fMakeSaveData(0)); // 치식사항(data저장용)
- }
- // for(var iRow = 0; iRow < iTotRow ; iRow++){ //멀티선택된 경우를 감안하여 전체를 검사
- // if(grdObj.isSelected(iRow) == true){ //grd가 선택된 경우
- // var toothcd = grdObj.valueMatrix(iRow, 0);
- // if( utlf_isNull(toothcd) && utlf_isNull(opener.frmf_getParameter("SPMMO10500_open"))){ continue; } //grd에 진단코드가 맵핑 안된 경우 skip
- // grdObj.valueMatrix(iRow, 1) = fMakeSaveData(2); // 치식사항(user보기용)
- // grdObj.valueMatrix(iRow, 2) = fMakeSaveData(0); // 치식사항(data저장용)
- // }
- // }
- }
- /****************************************************************************************
- * Function : fDragChoiTeeth
- * Description : 치식저장될 SaveData instance를 생성함
- * Argument : iPFlag : DS 저장위치구분(2 : user보기용 / 0 : data저장용)
- * return type :
- * Creator :
- ****************************************************************************************/
- function fMakeSaveData(iPFlag){
- var saveStr = "";
- var tmpStr = "";
- var concatStr = "";
- if(iPFlag == 2){ //user보기용
- var concatStr = ", ";
- }else{ //data저장용
- var concatStr = "";
- }
- for(var i = 0 ; i < 8 ; i++){
- for(var j = 0 ; j < 8 ; j++){
- if(teethArray[i][j] == 1){ // 일반치식
- row = i + 1;
- col = j + 1;
- tmpStr = "#" + row + col;
- saveStr += tmpStr.concat(concatStr);
- } else if(teethArray[i][j] == 2){ // 임플란트 치식
- row = i + 1;
- col = j + 1;
- tmpStr = "ⓘ" + row + col;
- saveStr += tmpStr.concat(concatStr);
- }
- }
- }
- saveStr = saveStr.substr(0,saveStr.length-iPFlag);
- return saveStr;
- }
- /****************************************************************************************
- * Function : fInitToothfact
- * Description : 치식데이터 init
- * Argument : grdObj : 그리드객체
- * return type :
- * Creator :
- ****************************************************************************************/
- function fInitToothfact(grdObj){
- fFillColorCaption(objects[grdObj.binddataset].getColumn(objects[grdObj.binddataset].rowposition,2), "#ffffff");
- fGrdInptVal(grdObj);
- }
- /****************************************************************************************
- * Function : fCnfm_SPMMO10500
- * Description : 치식데이터 확인버튼 click
- * Argument :
- * return type :
- * Creator :
- ****************************************************************************************/
- function fCnfm_SPMMO10500(){
- iRow = objects[objDiagGrdID.binddataset].rowposition;
- if(frmf_checkOpener()){
- opener.frmf_setParameter("rtn_diagtootfact", fMakeRtnTootFact(grd_diaglist, "diagcd▦tootfact▦rtntootfact▦rowcnt▩")); //진단치식사항
- opener.frmf_setParameter("rtn_prcptootfact", fMakeRtnTootFact(grd_prcplist, "prcpcd▦tootfact▦rtntootfact▦rowcnt▩")); //처방치식사항
- opener.frmf_setParameter("rtn_useyn", "Y");
- }else{
- opener.frmf_setParameter("rtn_useyn", "N");
- sysf_messageBox("메인 화면을 찾는데", "E009");
- }
- this.close();
- return;
- }
- /****************************************************************************************
- * Function : fCncl_SPMMO010500
- * Description : 치식데이터 취소버튼 click
- * Argument :
- * return type :
- * Creator :
- ****************************************************************************************/
- function fCncl_SPMMO010500(){
- if(frmf_checkOpener()){
- opener.frmf_setParameter("rtn_useyn", "N");
- }else{
- sysf_messageBox("메인 화면을 찾는데", "E009");
- }
- this.close();
- return;
- }
- /****************************************************************************************
- * Function : fMakeRtnTootFact
- * Description : 치식전달 데이터 생성
- * Argument : grdObj : 그리드객체
- * : header : 그리드 타이틀
- * return type :
- * Creator :
- ****************************************************************************************/
- function fMakeRtnTootFact(grdObj, header){
- var rtnparam = header;
- var dsObj = objects[grdObj.binddataset];
- for(var i = 0; i < dsObj.rowcount; i++){
- rtnparam += dsObj.getColumn(i, 0) + "▦" + //diagcd
- dsObj.getColumn(i, 1) + "▦" + //tootfact
- dsObj.getColumn(i, 2) + "▦" + //rtntootfact
- dsObj.getColumn(i, 3) + "▩"; //rowcnt
- }
- return rtnparam;
- }
- ]]></Script>
|