SMMNP06800_피부관찰기록.xrw 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973
  1. <?xml version="1.0" encoding="EUC-KR"?>
  2. <?xml-stylesheet href="../../../com/commonweb/css/common.css" type="text/css" ?>
  3. <xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2002/01/xforms" xmlns:ev="http://www.w3.org/2001/xml-events">
  4. <xhtml:head>
  5. <xhtml:title>수술환자피부관찰</xhtml:title>
  6. <model id="model1">
  7. <instance id="instance1">
  8. <root xmlns="">
  9. <main>
  10. <cond>
  11. <fromdd/>
  12. <todd/>
  13. <oprosette/>
  14. <oproomcd/>
  15. <pid/>
  16. <patnm/>
  17. </cond>
  18. <skinserveyinfo>
  19. <skinserveylist/>
  20. </skinserveyinfo>
  21. </main>
  22. <send>
  23. </send>
  24. <hidden>
  25. </hidden>
  26. <init>
  27. <M0559list>
  28. <M0559>
  29. <cdid/>
  30. <cdnm/>
  31. </M0559>
  32. </M0559list>
  33. <M0560list>
  34. <M0560>
  35. <cdid/>
  36. <cdnm/>
  37. </M0560>
  38. </M0560list>
  39. <hardcodeinfo/>
  40. </init>
  41. <code>
  42. <codeinfo>
  43. <codelist>
  44. <cdid/>
  45. <cdnm/>
  46. </codelist>
  47. </codeinfo>
  48. </code>
  49. <UserData>
  50. <list/>
  51. </UserData>
  52. <viewmode/>
  53. <temp/>
  54. <patinfo>
  55. <paminfo>
  56. </paminfo>
  57. <operation>
  58. </operation>
  59. </patinfo>
  60. <rectrgtinfo>
  61. <patinfo/>
  62. <recpid/>
  63. <recoprsrvno/>
  64. </rectrgtinfo>
  65. <model./>
  66. </root>
  67. </instance>
  68. <script type="javascript" ev:event="xforms-ready">
  69. <![CDATA[
  70. fInit();
  71. ]]>
  72. </script>
  73. <script type="javascript">
  74. <![CDATA[
  75. var sPid = "";
  76. var sSignGernalFlag = "";
  77. var sCretno = "";
  78. var sOrddd = "";
  79. var sOprsrvno = "";
  80. var sOrdDeptCd = "";
  81. var sPerfdrId = "";
  82. var sFormCd = "0900006329";
  83. //화면 Open시 Call 함수, 초기 세팅 함수
  84. function fInit(){
  85. model.removeNodeset("/root/main/skinserveyinfo");
  86. model.setValue("/root/main/cond/fromdd" , getCurrentDate());
  87. model.setValue("/root/main/cond/todd" , getCurrentDate());
  88. model.setValue("/root/viewmode", "S");
  89. zbcfGetCodeList(new Array("M0559"), new Array("/root/init/M0559list"), true);
  90. fGetNursHardCdInfo("'137'", getCurrentDate());
  91. submit("TRMNP03004", false);
  92. //2009-11-24 K.J.M 관찰장소
  93. model.removenode("/root/send");
  94. model.makeValue("/root/send/reqdata/cdgrupid", "164");//피부관찰장소
  95. model.makeValue("/root/send/reqdata/supcdid", "");//서브구분
  96. model.makeValue("/root/send/reqdata/cdid", "");//서브구분
  97. submit("TRMNP04903", false);
  98. model.removenode("/root/send");
  99. model.makeNode("/root/send");
  100. model.makeValue("/root/send/opcnfmdd" ,model.getValue("/root/main/cond/fromdd") );
  101. model.makeValue("/root/send/rosette" ,model.getValue("/root/main/cond/oprosette"));
  102. submit("TRMNP03002", false); // 수술실코드 가져오기
  103. addComboItem("cmb_rosette","전체","","above");
  104. addComboItem("cmb_oproomlist","전체","","above");
  105. fViewerSetting();
  106. }
  107. //피부관찰기록 대상 환자 정보 조회
  108. function fGetPatInfo(){
  109. sPid = "";
  110. var RecPatInfo = "";
  111. model.removeNodeset("/root/main/skinserveyinfo/skinserveylist");
  112. model.removeNodeset("/root/patinfo/paminfo/list");
  113. model.removeNodeset("/root/patinfo/operation/list");
  114. var node = getGlobalVariable("paminfo");
  115. setCSVToNode("/root/patinfo/paminfo", node);
  116. var node1 = getGlobalVariable("operation");
  117. setCSVToNode("/root/patinfo/operation", node1);
  118. sSignGernalFlag = model.getValue("/root/patinfo/paminfo/list/ioflag"); //인증저장시 받아온후 전역변수로 세팅한다.
  119. sPid = model.getValue("/root/patinfo/paminfo/list/pid");
  120. sCretno = model.getValue("/root/patinfo/paminfo/list/cretno");
  121. sOrdDeptCd = model.getValue("/root/patinfo/paminfo/list/orddeptcd");
  122. sPerfdrId = model.getValue("/root/patinfo/paminfo/list/medispclid");
  123. if(sSignGernalFlag == "O"){
  124. sOrddd = model.getValue("/root/patinfo/paminfo/list/orddd");
  125. }else{
  126. sOrddd = model.getValue("/root/patinfo/paminfo/list/indd");
  127. }
  128. if(sPid == ""){
  129. messageBox("상단 정보가 존재 하지 않습니다. 확인하십시요.", "I");
  130. model.setValue("/root/rectrgtinfo/patinfo", "");
  131. model.setValue("/root/rectrgtinfo/recpid", "");
  132. model.setValue("/root/rectrgtinfo/recoprsrvno", "");
  133. model.setValue("/root/viewmode", "S");
  134. return;
  135. }else{
  136. model.setValue("/root/viewmode", "R");
  137. if(getNodesetCount("/root/patinfo/operation/list") < 1){
  138. messageBox("수술 정보가 존재 하지 않습니다. 확인하십시요.", "I");
  139. model.setValue("/root/rectrgtinfo/patinfo", "");
  140. model.setValue("/root/rectrgtinfo/recpid", "");
  141. model.setValue("/root/rectrgtinfo/recoprsrvno", "");
  142. model.setValue("/root/viewmode", "S");
  143. return;
  144. }
  145. RecPatInfo
  146. = model.getValue("/root/patinfo/operation/list/pid") + " "
  147. + model.getValue("/root/patinfo/paminfo/list/hngnm") + " "
  148. + model.getValue("/root/patinfo/paminfo/list/sex") + "/"
  149. + model.getValue("/root/patinfo/paminfo/list/age") + " "
  150. + model.getValue("/root/patinfo/paminfo/list/roomcd");
  151. //환자 상단 정보 존재시 임시 노드에 저장
  152. model.setValue("/root/rectrgtinfo/recoprsrvno", model.getValue("/root/patinfo/operation/list/oprsrvno"));
  153. model.setValue("/root/rectrgtinfo/recpid", sPid);
  154. model.setValue("/root/rectrgtinfo/patinfo", RecPatInfo);
  155. }
  156. model.removeNodeset("/root/main/skinserveyinfo");
  157. model.removeNodeset("/root/send");
  158. model.makeValue("/root/send/instcd", getUserInfo("posinstcd"));
  159. model.makeValue("/root/send/oprsrvno", model.getValue("/root/patinfo/operation/list/oprsrvno"));
  160. submit("TRMNP06801", false);
  161. model.removeNodeset("/root/send");
  162. model.removeNodeset("/root/hidden/opinfo/oplist");
  163. model.makeValue("/root/send/oprsrvno", model.getValue("/root/patinfo/operation/list/oprsrvno"));
  164. submit("TRMNP06802", false);
  165. if(model.getValue("/root/hidden/opinfo/oplist/opstatcd") < "30"){
  166. messageBox("수술 스케쥴이 예정 상태로 피부관찰기록을 할 수 없습니다.", "I");
  167. model.setValue("/root/viewmode", "S");
  168. }
  169. fViewerSetting();
  170. fGridCellStyle();
  171. }
  172. //화면 설정 처리부분
  173. function fViewerSetting(){
  174. grd_skinsurveylist.clearStatus();
  175. var sViewParam = model.getValue("/root/viewmode");
  176. switch(sViewParam){
  177. case "S":
  178. if(ipt_pid.value == ""){
  179. ipt_fromdd.value = getCurrentDate();
  180. ipt_todd.value = getCurrentDate();
  181. }else{
  182. ipt_fromdd.value = "19000101";
  183. ipt_todd.value = "99991231";
  184. }
  185. btn_addrow.disabled = true;
  186. btn_delrow.disabled = true;
  187. btn_tmpsave.disabled = true;
  188. btn_save.disabled = true;
  189. break;
  190. case "R":
  191. var sBtnFlag = "N"; //기본세팅
  192. for(var i = 1 ; i <= getNodesetCount("/root/main/skinserveyinfo/skinserveylist") ; i++){
  193. if("C" == model.getValue("/root/main/skinserveyinfo/skinserveylist["+ i + "]/recstat")){
  194. sBtnFlag = "C";
  195. }
  196. }
  197. //기록내역 중 인증저장 기록 내역이 존재하는 기록이 있을 경우 임시저장 버튼 disabled 처리
  198. if(sBtnFlag == "C"){
  199. btn_tmpsave.disabled = true;
  200. }else{
  201. btn_tmpsave.disabled = false;
  202. }
  203. btn_addrow.disabled = false;
  204. btn_delrow.disabled = false;
  205. btn_save.disabled = false;
  206. break;
  207. default:
  208. btn_addrow.disabled = true;
  209. btn_delrow.disabled = true;
  210. btn_tmpsave.disabled = true;
  211. btn_save.disabled = true;
  212. break;
  213. }
  214. }
  215. //피부관찰기록 조회
  216. function fSearch(){
  217. if(model.getValue("/root/viewmode") != "S"){
  218. model.setValue("/root/viewmode", "S");
  219. fViewerSetting();
  220. }
  221. model.removeNodeset("/root/main/skinserveyinfo");
  222. model.removeNodeset("/root/send");
  223. model.makeValue("/root/send/instcd", getUserInfo("posinstcd"));
  224. model.makeValue("/root/send/fromdd", model.getValue("/root/main/cond/fromdd"));
  225. model.makeValue("/root/send/todd", model.getValue("/root/main/cond/todd"));
  226. model.makeValue("/root/send/oprosette", model.getValue("/root/main/cond/oprosette"));
  227. model.makeValue("/root/send/oproomcd", model.getValue("/root/main/cond/oproomcd"));
  228. model.makeValue("/root/send/pid", model.getValue("/root/main/cond/pid"));
  229. submit("TRMNP06801");
  230. fGridCellStyle();
  231. }
  232. //피부관찰기록 그리드 Style 적용
  233. function fGridCellStyle(){
  234. grd_skinsurveylist.rebuildStyle();
  235. grd_skinsurveylist.refresh();
  236. for(var i = grd_skinsurveylist.fixedRows-1 ; i <= grd_skinsurveylist.rows ; i++){
  237. grd_skinsurveylist.isReadOnly(i, grd_skinsurveylist.colRef("opfromdt"), i, grd_skinsurveylist.colRef("skinstat")) = false;
  238. if( grd_skinsurveylist.valueMatrix(i, grd_skinsurveylist.colRef("trobyn")) == "N"){
  239. grd_skinsurveylist.isReadOnly(i, grd_skinsurveylist.colRef("trobpart"), i, grd_skinsurveylist.colRef("skinstat")) = true;
  240. }else{
  241. grd_skinsurveylist.isReadOnly(i, grd_skinsurveylist.colRef("recstat"), i, grd_skinsurveylist.colRef("recstat")) = true;
  242. }
  243. if( grd_skinsurveylist.valueMatrix(i, grd_skinsurveylist.colRef("recstat")) == "T"){
  244. grd_skinsurveylist.rowStatus(i) = "1";
  245. }
  246. }
  247. }
  248. //피부관찰기록 이상유무 선택시 이벤트 처리
  249. function fChngTrobYn(pRow){
  250. if(grd_skinsurveylist.valueMatrix(pRow, grd_skinsurveylist.colRef("trobyn")) == "N"){
  251. grd_skinsurveylist.isReadOnly(pRow, grd_skinsurveylist.colRef("recstat"), pRow, grd_skinsurveylist.colRef("recstat")) = true;
  252. grd_skinsurveylist.isReadOnly(pRow, grd_skinsurveylist.colRef("trobpart"), pRow, grd_skinsurveylist.colRef("skinstat")) = true;
  253. grd_skinsurveylist.valueMatrix(pRow, grd_skinsurveylist.colRef("trobpart")) = "";
  254. grd_skinsurveylist.valueMatrix(pRow, grd_skinsurveylist.colRef("trobwidth")) = "";
  255. grd_skinsurveylist.valueMatrix(pRow, grd_skinsurveylist.colRef("trobheight")) = "";
  256. grd_skinsurveylist.valueMatrix(pRow, grd_skinsurveylist.colRef("troblength")) = "";
  257. grd_skinsurveylist.valueMatrix(pRow, grd_skinsurveylist.colRef("skinstat")) = "";
  258. }else{
  259. grd_skinsurveylist.isReadOnly(pRow, grd_skinsurveylist.colRef("recstat"), pRow, grd_skinsurveylist.colRef("skinstat")) = false;
  260. grd_skinsurveylist.isReadOnly(pRow, grd_skinsurveylist.colRef("recstat"), pRow, grd_skinsurveylist.colRef("recstat")) = true;
  261. }
  262. }
  263. //피부관찰기록 행 추가 처리
  264. function fInsertRow(){
  265. //fGetPatInfo();
  266. if(model.getValue("/root/viewmode") == "S"){
  267. return;
  268. }
  269. model.removeNodeset("/root/send");
  270. model.removeNodeset("/root/hidden/opinfo/oplist");
  271. model.makeValue("/root/send/oprsrvno", model.getValue("/root/patinfo/operation/list/oprsrvno"));
  272. submit("TRMNP06802", false);
  273. if(getNodesetCount("/root/hidden/opinfo/oplist") < 1 ){
  274. return;
  275. }
  276. grd_skinsurveylist.addRow();
  277. var insRow = grd_skinsurveylist.rows-1;
  278. grd_skinsurveylist.valueMatrix(insRow, grd_skinsurveylist.colRef("recstat")) = "T";
  279. grd_skinsurveylist.valueMatrix(insRow, grd_skinsurveylist.colRef("opfromdt")) = model.getValue("/root/hidden/opinfo/oplist/opfromdt");
  280. grd_skinsurveylist.valueMatrix(insRow, grd_skinsurveylist.colRef("oproomnm")) = model.getValue("/root/hidden/opinfo/oplist/oproomnm");
  281. grd_skinsurveylist.valueMatrix(insRow, grd_skinsurveylist.colRef("perfdeptnm")) = model.getValue("/root/hidden/opinfo/oplist/perfdeptnm");
  282. grd_skinsurveylist.valueMatrix(insRow, grd_skinsurveylist.colRef("pid")) = model.getValue("/root/hidden/opinfo/oplist/pid");
  283. grd_skinsurveylist.valueMatrix(insRow, grd_skinsurveylist.colRef("hngnm")) = model.getValue("/root/hidden/opinfo/oplist/hngnm");
  284. grd_skinsurveylist.valueMatrix(insRow, grd_skinsurveylist.colRef("sexage")) = model.getValue("/root/hidden/opinfo/oplist/sexage");
  285. grd_skinsurveylist.valueMatrix(insRow, grd_skinsurveylist.colRef("opnm")) = model.getValue("/root/hidden/opinfo/oplist/opnm");
  286. grd_skinsurveylist.valueMatrix(insRow, grd_skinsurveylist.colRef("perfdrnm")) = model.getValue("/root/hidden/opinfo/oplist/perfdrnm");
  287. grd_skinsurveylist.valueMatrix(insRow, grd_skinsurveylist.colRef("drnm")) = model.getValue("/root/hidden/opinfo/oplist/drnm");
  288. grd_skinsurveylist.valueMatrix(insRow, grd_skinsurveylist.colRef("oprsrvno")) = model.getValue("/root/hidden/opinfo/oplist/oprsrvno");
  289. grd_skinsurveylist.valueMatrix(insRow, grd_skinsurveylist.colRef("trobyn")) = "N";
  290. grd_skinsurveylist.valueMatrix(insRow, grd_skinsurveylist.colRef("seqno")) = 0;
  291. fGridCellStyle();
  292. }
  293. //피부관찰기록 행 삭제 처리
  294. function fDeleteRow(pRow){
  295. if(grd_skinsurveylist.valueMatrix(pRow, grd_skinsurveylist.colRef("recstat")) == "T"){
  296. grd_skinsurveylist.valueMatrix(pRow, grd_skinsurveylist.colRef("recstat")) = "X";
  297. }else{
  298. grd_skinsurveylist.valueMatrix(pRow, grd_skinsurveylist.colRef("recstat")) = "D";
  299. grd_skinsurveylist.rowStatus(pRow) = 4;
  300. }
  301. //grd_skinsurveylist.deleteRow(pRow, false);
  302. fGridCellStyle();
  303. }
  304. //피부관찰기록 그리드 정보 출력
  305. function fPrint(){
  306. if(getNodesetCount("/root/main/skinserveyinfo/skinserveylist") < 1){
  307. messageBox("출력할 정보가 존재하지 않습니다.","I");
  308. return;
  309. }
  310. model.removeNodeset("/root/prntdata");
  311. model.makeNode("/root/prntdata");
  312. model.copyNode("/root/prntdata", "/root/main/skinserveyinfo");
  313. var sPrntPath = "/root/prntdata/skinserveylist";
  314. for(var i = 1 ; i <= getNodesetCount("/root/prntdata/skinserveylist") ; i++){
  315. var sSurveyPriod = model.getValue(sPrntPath + "["+i+"]/surveypriod");
  316. var sSurveyPlace = model.getValue(sPrntPath + "["+i+"]/surveyplace");
  317. var sSkinStat = model.getValue(sPrntPath + "["+i+"]/skinstat");
  318. if( sSurveyPriod != "-" && sSurveyPriod != "" ){
  319. model.setValue(sPrntPath + "["+ i +"]/surveypriod", model.getValue("/root/init/M0559list/M0559[cdid = '" + sSurveyPriod +"' ]/cdnm"));
  320. }
  321. if( sSurveyPlace != "-" && sSurveyPlace != "" ){
  322. model.setValue(sPrntPath + "["+ i +"]/surveyplace", model.getValue("/root/init/M0560list/M0560[cdid = '" + sSurveyPlace +"' ]/cdnm"));
  323. }
  324. if(sSkinStat != "" ){
  325. model.setValue(sPrntPath + "["+ i +"]/skinstat", model.getValue("/root/code/codeinfo/codelist[cdid = '" + sSkinStat +"' ]/cdnm"));
  326. }
  327. }
  328. exeReportPreview("RPMNP06800", "XMLSTR", ""); //임시 미리보기 창 활성화
  329. }
  330. //피부관찰기록 그리드 정보 엑셀저장
  331. function fSaveExcel(){
  332. grd_excel.refresh();
  333. if(getNodesetCount("/root/main/skinserveyinfo/skinserveylist") < 1){
  334. messageBox("Excel 출력할 정보가 존재하지 않습니다.","I");
  335. return;
  336. }
  337. var fileName = window.fileDialog("save", ",", false, "피부관찰기록_"+getCurrentDate(), "xls", "All Files (*.*)|*.*|Excel Files(*.xls)|*.xls");
  338. if (fileName != "") {
  339. grd_excel.saveExcel(fileName, "sheetname:Sheet1;");
  340. }
  341. }
  342. //피부관찰기록 임시저장 또는 인증저장 처리
  343. function fSave(pFlag){
  344. model.removeNodeset("/root/send");
  345. //저장시 상단정보 재조회
  346. model.removeNodeset("/root/patinfo/paminfo/list");
  347. model.removeNodeset("/root/patinfo/operation/list");
  348. var node = getGlobalVariable("paminfo");
  349. setCSVToNode("/root/patinfo/paminfo", node);
  350. var node1 = getGlobalVariable("operation");
  351. setCSVToNode("/root/patinfo/operation", node1);
  352. //상단정보와 기록 대상 환자 정보 일치 확인
  353. if(model.getValue("/root/rectrgtinfo/recpid") != model.getValue("/root/patinfo/paminfo/list/pid")){
  354. messageBox("상단 환자정보와 기록할 환자정보가 불일치 하여 저장 할 수 없습니다.", "I");
  355. return;
  356. }
  357. if(model.getValue("/root/rectrgtinfo/recoprsrvno") != model.getValue("/root/patinfo/operation/list/oprsrvno")){
  358. messageBox("상단 수술정보와 기록할 수술정보가 불일치 하여 저장 할 수 없습니다.", "I");
  359. return;
  360. }
  361. switch(pFlag){
  362. case "T":
  363. break;
  364. case "C":
  365. //인증저장 번호 추출 및 기록 필수 조건 블럭킹
  366. var sSignNo = "";
  367. for(var i = grd_skinsurveylist.fixedRows ; i < grd_skinsurveylist.rows ; i++){
  368. if(grd_skinsurveylist.valueMatrix(i, grd_skinsurveylist.colRef("surveypriod")) == ""){
  369. messageBox("관찰시기 항목은 필수 입력 항목입니다.", "I");
  370. return;
  371. }
  372. if(grd_skinsurveylist.valueMatrix(i, grd_skinsurveylist.colRef("surveyplace")) == ""){
  373. messageBox("관찰장소 항목은 필수 입력 항목입니다.", "I");
  374. return;
  375. }
  376. if(grd_skinsurveylist.valueMatrix(i, grd_skinsurveylist.colRef("surveynm")) == ""){
  377. messageBox("관찰자 항목은 필수 입력 항목입니다.", "I");
  378. return;
  379. }
  380. if(grd_skinsurveylist.valueMatrix(i, grd_skinsurveylist.colRef("cnfmrnm")) == ""){
  381. messageBox("확인의 항목은 필수 입력 항목입니다.", "I");
  382. return;
  383. }
  384. if(grd_skinsurveylist.valueMatrix(i, grd_skinsurveylist.colRef("trobyn")) == "Y" &&
  385. grd_skinsurveylist.valueMatrix(i, grd_skinsurveylist.colRef("skinstat")) == "" ){
  386. messageBox("이상유무 'Y'일 경우 피부상태는 필수 입력 항목입니다.", "I");
  387. return;
  388. }
  389. if( grd_skinsurveylist.valueMatrix(i, grd_skinsurveylist.colRef("signno")) != ""){
  390. sSignNo = grd_skinsurveylist.valueMatrix(i, grd_skinsurveylist.colRef("signno"));
  391. }
  392. if(grd_skinsurveylist.rowStatus(i) == 0){
  393. grd_skinsurveylist.rowStatus(i) = 2;
  394. }
  395. }
  396. Sign.certreload = true;
  397. if (Sign.signprocess() == true){ // ▶ 전자인증 관련 환자 인적 정보를 보내줌.
  398. var wSigninfo
  399. = "pid" +"▦" // 01 등록번호
  400. + "orddd" +"▦" // 02 입원일자(입원,응급)/진료일자(외래)
  401. + "cretno" +"▦" // 03 생성번호
  402. + "signno" +"▦" // 04 서명번호(인증번호)
  403. + "recdd" +"▦" // 05 실제 기록이 이루어진 기록일자
  404. + "rectm" +"▦" // 06 실제 기록이 이루어진 기록시간
  405. + "recsaveflag" +"▦" // 07 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  406. + "signflag" +"▦" // 08 서명자료구분(01 : 진료, 02 : 간호, 03 : LIS, 04 : 진료지원)
  407. + "signgenrflag" +"▦" // 09 외래/입원구분(코드정의서 M0010 참조)
  408. + "formcd" +"▦" // 10 각 기록지별 서식코드
  409. + "orddeptcd" +"▦" // 11 진료부서코드
  410. + "orddrid" +"▦" // 12 진료의사ID (집도의)
  411. + "signbfcnts" +"▦" // 13 ▶ 인증할 데이터 정보(미기록 노드 제거된 정보)
  412. + "signaftcnts" +"▩" // 14 ▶ 공인인증 처리후 데이터
  413. + sPid +"▦" // 01 등록번호
  414. + sOrddd +"▦" // 02 입원일자(입원,응급)/진료일자(외래)
  415. + sCretno +"▦" // 03 생성번호
  416. + sSignNo +"▦" // 04 서명번호(인증번호)
  417. + getCurrentDate() +"▦" // 05 실제 기록이 이루어진 기록일자
  418. + getCurrentTime() +"▦" // 06 실제 기록이 이루어진 기록시간
  419. + "N" +"▦" // 07 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  420. + "02" +"▦" // 08 서명자료구분(01 : 진료, 02 : 간호, 03 : LIS, 04 : 진료지원)
  421. + sSignGernalFlag +"▦" // 09 외래/입원구분(코드정의서 M0010 참조)
  422. + sFormCd +"▦" // 10 각 기록지별 서식코드
  423. + sOrdDeptCd +"▦" // 11 진료부서코드
  424. + sPerfdrId +"▦" // 12 진료의사ID (집도의)
  425. + Sign.signedInfos[1] +"▦" // 13 ▶ 인증할 데이터 정보(미기록 노드 제거된 정보)
  426. + Sign.signedInfos[2] +"▩"; // 14 ▶ 공인인증 처리후 데이터
  427. model.makeValue("/root/send/signinfo", wSigninfo);
  428. }
  429. break;
  430. }
  431. model.makeValue("/root/send/recsavedata", grd_skinsurveylist.getUpdateData());
  432. if(submit("TXMNP06801", false) == true){
  433. fGetPatInfo();
  434. }
  435. }
  436. // ※ 인증데이터 생성함수 만들기
  437. function fMake_SignData(){
  438. Sign.addnode("/root/main/skinserveyinfo");
  439. var SignPath = Sign.XPATH_SIGNINFO + "/skinserveyinfo/skinserveylist";
  440. for(var i = 0 ; i <= getNodesetCount(SignPath) ; i++){
  441. var sSurveyPriod = model.getValue(SignPath + "["+i+"]/surveypriod");
  442. var sSurveyPlace = model.getValue(SignPath + "["+i+"]/surveyplace");
  443. var sSkinStat = model.getValue(SignPath + "["+i+"]/skinstat");
  444. if( sSurveyPriod != "-" && sSurveyPriod != "" ){
  445. model.setValue(SignPath + "["+ i +"]/surveypriod", model.getValue("/root/init/M0559list/M0559[cdid = '" + sSurveyPriod +"' ]/cdnm"));
  446. }
  447. if( sSurveyPlace != "-" && sSurveyPlace != "" ){
  448. model.setValue(SignPath + "["+ i +"]/surveyplace", model.getValue("/root/init/M0560list/M0560[cdid = '" + sSurveyPlace +"' ]/cdnm"));
  449. }
  450. if(sSkinStat != "" ){
  451. model.setValue(SignPath + "["+ i +"]/skinstat", model.getValue("/root/code/codeinfo/codelist[cdid = '" + sSkinStat +"' ]/cdnm"));
  452. }
  453. }
  454. }
  455. //피부관찰기록 그리드 버튼 클릭 이벤트 처리
  456. //이상부위 -> 부위 선택 화면 호출
  457. //관찰자, 확인의 -> 사용자 조회 화면 호출
  458. function fGridOnButtonClickEvent(){
  459. var iRow = grd_skinsurveylist.row;
  460. var iCol = grd_skinsurveylist.col;
  461. if (iRow < 2 ){
  462. return;
  463. }
  464. if( iCol == grd_skinsurveylist.colRef("trobpart")) {
  465. //부위 표시 POPUP 호출
  466. fPopupBedSoreImg();
  467. }
  468. if( iCol == grd_skinsurveylist.colRef("surveynm")) {
  469. var iRow = iRow - 1;
  470. var sGridXpath = "/root/main/skinserveyinfo/skinserveylist";
  471. var sSearchdd = model.getValue("/root/patinfo/operation/list/opcnfmdd");
  472. var sChargerNm = "";
  473. fUseridPopup("", sGridXpath+"["+iRow+"]/surveyid", sGridXpath+"["+iRow+"]/surveynm", "" , "", grd_skinsurveylist, "", sSearchdd);
  474. return;
  475. }
  476. if( iCol == grd_skinsurveylist.colRef("cnfmrnm")) {
  477. var iRow = iRow - 1;
  478. var sGridXpath = "/root/main/skinserveyinfo/skinserveylist";
  479. var sSearchdd = model.getValue("/root/patinfo/operation/list/opcnfmdd");
  480. var sChargerNm = "";
  481. fUseridPopup("", sGridXpath+"["+iRow+"]/cnfmrid", sGridXpath+"["+iRow+"]/cnfmrnm", "" , "", grd_skinsurveylist, "", sSearchdd);
  482. return;
  483. }
  484. }
  485. //관찰자, 확인의 이름 및 사용자 번호 입력값에 대한 정보 조회
  486. function fUserSelect(pRow, pCol){
  487. var nRow = pRow - 1;
  488. var rPath = "/root/main/skinserveyinfo/skinserveylist["+ nRow + "]/"
  489. var rUserNmColnm = "";
  490. var rUserIdColnm = "";
  491. if(pCol == grd_skinsurveylist.colRef("surveynm")){
  492. rUserNmColnm = "surveynm";
  493. rUserIdColnm = "surveyid";
  494. rDeptNmColnm = "surveydeptnm";
  495. rDeptCdColnm = "surveydeptcd";
  496. var wNode = "020";
  497. }else{
  498. rUserNmColnm = "cnfmrnm";
  499. rUserIdColnm = "cnfmrid";
  500. rDeptNmColnm = "cnfmrdeptnm";
  501. rDeptCdColnm = "cnfmrdeptcd";
  502. var wNode = "011";
  503. }
  504. var rUserInfo = model.getValue(rPath+rUserNmColnm).replace(/(^\s*)|(\s*$)/g, "");
  505. model.setValue(rPath+rUserNmColnm, "");
  506. if (rUserInfo == "") {
  507. grd_skinsurveylist.cellStyle("color", pRow, pCol, pRow, pCol) = "";
  508. grd_skinsurveylist.refresh();
  509. return;
  510. }
  511. //var wNode = "011";
  512. var sSearchdd = model.getValue("/root/patinfo/operation/list/opcnfmdd");
  513. //특정일자에 근무했던 정보를 가져오도록 수정
  514. fUserEnter(rPath, rUserIdColnm , rUserNmColnm, rDeptNmColnm, rDeptCdColnm, rUserInfo, grd_skinsurveylist, "all", wNode, sSearchdd);
  515. //정보가 없을 경우에는 빈칸으로 들어가서 edit 모드로 변경함.
  516. if (model.getValue(rPath+rUserIdColnm) =="") {
  517. grd_skinsurveylist.valueMatrix(pRow, pCol) = "";
  518. grd_skinsurveylist.refresh();
  519. grd_skinsurveylist.editCell();
  520. } else {
  521. grd_skinsurveylist.cellStyle("color", pRow, pCol, pRow, pCol) = "";
  522. }
  523. }
  524. //이상부위 선택 popup화면 호출
  525. function fPopupBedSoreImg(){
  526. var iRow = grd_skinsurveylist.row;
  527. var iCol = grd_skinsurveylist.col;
  528. //팝업창에 부위 값이 있으면 기존값 셋팅
  529. //이미저장되어있으면 수정하지 못하도록 확인버튼을 막아주는 flag를 set한다.
  530. var PartTail = grd_skinsurveylist.textmatrix(iRow,grd_skinsurveylist.colRef("trobpart"));
  531. if(isSearchString(PartTail, "(R)") == true){
  532. PartTail = PartTail.replace("(R)", ",(R),");
  533. }
  534. if(isSearchString(PartTail, "(L)") == true){
  535. PartTail = PartTail.replace("(L)", ",(L),");
  536. }
  537. WordLen = getStringLength(PartTail);
  538. if( PartTail.substr(WordLen -1, WordLen) ==","){
  539. PartTail = PartTail.substr(0, WordLen -1);
  540. }
  541. setParameter("partall", PartTail);
  542. setParameter('editable', 't');
  543. modal("SPMNP06800",1, event.screenX-200, event.screenY+50); //이미지호출
  544. //팝업에서 아무것도 선택하지 않고 close를 눌렀을때..
  545. if( getParameter("returnnull") == "close" ){
  546. return ;
  547. } else {
  548. //욕창발생부위 값을 grid에 set
  549. var retStr = getParameter('retStr');
  550. grd_skinsurveylist.valueMatrix(iRow, grd_skinsurveylist.colRef("trobpart")) = retStr;
  551. //그리드 상태값 변경
  552. if(grd_skinsurveylist.rowStatus(iRow) == 0){
  553. grd_skinsurveylist.rowStatus(iRow) = 2;
  554. }
  555. }
  556. }
  557. ]]>
  558. </script>
  559. <submission id="TRMNP06801" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/skinserveylist"/>
  560. <submission id="TRMNP06802" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/hidden/oplist"/>
  561. <submission id="TXMNP06801" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/temp"/>
  562. <submission id="TRMNP03004" mediatype="application/x-www-form-urlencoded" method="post" resultref="/root/init/rosettelist"/>
  563. <submission id="TRMNP03002" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/init/oproomlist"/>
  564. <submission id="TRMNW00001" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/code/codelist"/>
  565. <submission id="TRMNP00001" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/UserData/list"/>
  566. <submission id="TRMNP04903" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/reqdata" resultref="/root/init/hardcodeinfo"/>
  567. </model>
  568. <!-- 개발공통스크립트 -->
  569. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  570. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  571. <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
  572. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  573. <script type="javascript" src="../../../com/commonweb/js/numericHelper.js"/>
  574. <script type="javascript" src="../../../com/basiccodeweb/js/ZBC001.js"/>
  575. <script type="javascript" src="../../../emr/carecomweb/js/CareCom.js"/>
  576. <script type="javascript" src="../../../emr/carecomweb/js/SPMNP00001.js"/>
  577. <script type="javascript" src="../../../emr/carecomweb/js/ENRSignEngine.js"/>
  578. </xhtml:head>
  579. <xhtml:body style="margin-left:8; margin-top:0; margin-right:8; margin-bottom:0; ">
  580. <caption id="caption6" class="tit_1" style="left:0px; top:0px; width:800px; height:14px; ">수술환자피부관찰</caption>
  581. <group id="group3" scroll="auto" style="left:0px; top:13px; width:1195px; height:769px; ">
  582. <group id="grp_sea" style="left:0px; top:5px; width:1195px; height:35px; vertical-align:top; ">
  583. <shape id="roundrect1" appearance="roundrect" ellipsewidth="10" ellipseheight="10" style="left:0px; top:0px; width:1195px; height:35px; background-color:#fffbf2; border-color:#ffd799; "/>
  584. <caption id="caption2" class="search_name" style="left:21px; top:10px; width:86px; height:17px; ">수술일자 :</caption>
  585. <caption id="caption3" class="search_name" style="left:360px; top:10px; width:86px; height:17px; ">수 술 방 :</caption>
  586. <caption id="caption1" class="search_name" style="left:680px; top:10px; width:132px; height:17px; ">환자명/등록번호 :</caption>
  587. <caption id="caption7" class="search_no_b" style="left:207px; top:9px; width:12px; height:17px; ">~</caption>
  588. <line id="line13" class="line_4" style="x1:1105px; y1:7px; x2:1105px; y2:29px; "/>
  589. <input id="ipt_fromdd" ref="/root/main/cond/fromdd" class="input_search" inputtype="date" style="left:112px; top:9px; width:90px; height:19px; "/>
  590. <input id="ipt_todd" ref="/root/main/cond/todd" class="input_search" inputtype="date" style="left:225px; top:9px; width:90px; height:19px; "/>
  591. <select1 id="cmb_rosette" ref="/root/main/cond/oprosette" class="combo_default" appearance="minimal" style="left:450px; top:8px; width:92px; height:19px; ">
  592. <choices>
  593. <itemset nodeset="/root/init/rosettelist">
  594. <label ref="rosettenm"/>
  595. <value ref="rosettecd"/>
  596. </itemset>
  597. </choices>
  598. <script type="javascript" ev:event="xforms-value-changed">
  599. <![CDATA[
  600. model.removenode("/root/send");
  601. model.makeNode("/root/send");
  602. model.makeValue("/root/send/opcnfmdd" ,model.getValue("/root/main/cond/fromdd"));
  603. model.makeValue("/root/send/rosette" ,model.getValue("/root/main/cond/oprosette"));
  604. if(submit("TRMNP03002")){ // 수술실코드 가져오기
  605. addComboItem("cmb_oproomlist","전체","","above");
  606. }
  607. ]]>
  608. </script>
  609. </select1>
  610. <select1 id="cmb_oproomlist" ref="/root/main/cond/oproomcd" appearance="minimal" style="left:544px; top:8px; width:97px; height:19px; ">
  611. <choices>
  612. <itemset nodeset="/root/init/oproomlist">
  613. <label ref="oproomnm"/>
  614. <value ref="oproomcd"/>
  615. </itemset>
  616. </choices>
  617. </select1>
  618. <input id="ipt_pid" ref="/root/main/cond/pid" style="left:818px; top:9px; width:100px; height:19px; ">
  619. <script type="javascript" ev:event="onkeyup">
  620. <![CDATA[
  621. inputEnterKey("btn_srch", "DOMActivate");
  622. ]]>
  623. </script>
  624. </input>
  625. <button id="btn_srch" class="btn1_letter2" style="left:1124px; top:7px; width:56px; height:22px; ">
  626. <caption>조회</caption>
  627. <script type="javascript" ev:event="DOMActivate">
  628. <![CDATA[
  629. fSearch();
  630. ]]>
  631. </script>
  632. </button>
  633. </group>
  634. <datagrid id="grd_skinsurveylist" nodeset="/root/main/skinserveyinfo/skinserveylist" allowselection="false" caption="상태^수술일시^수술&#xA;방^집도과^등록번호^환자명^S/A^수술명(영문)^집도의^마취의^관찰시기^관찰장소^이상&#xA;유무^이상부위^크기(cm)^크기(cm)^크기(cm)^피부상태^관찰자^확인의^Remark^수술예약번호|상태^수술일시^수술&#xA;방^집도과^등록번호^환자명^S/A^수술명(영문)^집도의^마취의^관찰시기^관찰장소^이상&#xA;유무^이상부위^가로^세로^깊이^피부상태^관찰자^확인의^Remark^수술예약번호" colsep="^" colwidth="37, 105, 35, 47, 65, 55, 36, 162, 45, 45, 70, 70, 34, 94, 37, 37, 37, 75, 67, 75, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0" ellipsis="true" explorerbar="sortmove" frozencols="8" mergecellsfixedrows="byrowrec" rowheader="update" rowsep="|" tooltip="true" style="left:0px; top:76px; width:1194px; height:667px; ">
  635. <col disabled="true" ref="recstat" type="combo" style="font-weight:bold; text-align:center; ">
  636. <choices>
  637. <item>
  638. <label>임시</label>
  639. <value>T</value>
  640. </item>
  641. <item>
  642. <label>저장</label>
  643. <value>S</value>
  644. </item>
  645. <item>
  646. <label>확정</label>
  647. <value>C</value>
  648. </item>
  649. <item>
  650. <label>삭제</label>
  651. <value>D</value>
  652. </item>
  653. </choices>
  654. </col>
  655. <col ref="opfromdt" format="yyyy-mm-dd hh:nn" style="text-align:center; "/>
  656. <col ref="oproomnm" style="text-align:center; "/>
  657. <col ref="perfdeptnm" style="text-align:center; "/>
  658. <col ref="pid" style="text-align:center; "/>
  659. <col ref="hngnm" style="text-align:center; "/>
  660. <col ref="sexage" style="text-align:center; "/>
  661. <col ref="opnm"/>
  662. <col ref="perfdrnm" style="text-align:center; "/>
  663. <col ref="drnm" style="text-align:center; "/>
  664. <col ref="surveypriod" type="combo">
  665. <choices>
  666. <itemset nodeset="/root/init/M0559list/M0559">
  667. <label ref="cdnm"/>
  668. <value ref="cdid"/>
  669. </itemset>
  670. </choices>
  671. </col>
  672. <col ref="surveyplace" type="combo">
  673. <choices>
  674. <itemset nodeset="/root/init/hardcodeinfo">
  675. <label ref="cdnm"/>
  676. <value ref="cdid"/>
  677. </itemset>
  678. </choices>
  679. </col>
  680. <col ref="trobyn" type="combo">
  681. <choices>
  682. <item>
  683. <label>Y</label>
  684. <value>Y</value>
  685. </item>
  686. <item>
  687. <label>N</label>
  688. <value>N</value>
  689. </item>
  690. </choices>
  691. </col>
  692. <col ref="trobpart" type="inputbutton"/>
  693. <col ref="trobwidth" type="input" style="text-align:center; "/>
  694. <col ref="trobheight" type="input" style="text-align:center; "/>
  695. <col ref="troblength" type="input" style="text-align:center; "/>
  696. <col ref="skinstat" type="combo">
  697. <choices>
  698. <itemset nodeset="/root/code/codeinfo/codelist">
  699. <label ref="cdnm"/>
  700. <value ref="cdid"/>
  701. </itemset>
  702. </choices>
  703. </col>
  704. <col ref="surveynm" type="inputbutton"/>
  705. <col ref="cnfmrnm" type="inputbutton"/>
  706. <col ref="remark" type="input"/>
  707. <col ref="oprsrvno" visibility="hidden"/>
  708. <col ref="surveyid" visibility="hidden"/>
  709. <col ref="cnfmrid" visibility="hidden"/>
  710. <col ref="signno" visibility="hidden"/>
  711. <col ref="opcnfmdd" visibility="hidden"/>
  712. <col ref="cnfmrdeptcd" visibility="hidden"/>
  713. <col ref="cnfmrdeptnm" visibility="hidden"/>
  714. <col ref="surveydeptcd" visibility="hidden"/>
  715. <col ref="surveydeptnm" visibility="hidden"/>
  716. <col ref="seqno" visibility="hidden"/>
  717. <script type="javascript" ev:event="onbuttonclick">
  718. <![CDATA[
  719. fGridOnButtonClickEvent();
  720. ]]>
  721. </script>
  722. <script type="javascript" ev:event="xforms-value-changed">
  723. <![CDATA[
  724. if( grd_skinsurveylist.col == grd_skinsurveylist.colRef("surveynm") || grd_skinsurveylist.col == grd_skinsurveylist.colRef("cnfmrnm")) {
  725. fUserSelect(grd_skinsurveylist.row, grd_skinsurveylist.col); //사원찾기
  726. }else if(grd_skinsurveylist.col == grd_skinsurveylist.colRef("trobyn")){
  727. fChngTrobYn(grd_skinsurveylist.row);
  728. }
  729. ]]>
  730. </script>
  731. <script type="javascript" ev:event="onaftersort">
  732. <![CDATA[
  733. grd_skinsurveylist.gridToInstance();
  734. ]]>
  735. </script>
  736. </datagrid>
  737. <caption id="caption9" class="tit_2" style="left:0px; top:54px; width:111px; height:14px; vertical-align:middle; margin-left:8; margin-top:0; margin-right:8; margin-bottom:0; ">피부관찰기록리스트</caption>
  738. <button id="btn_chgnmode" class="btn2_letter4" style="left:885px; top:50px; width:64px; height:19px; ">
  739. <caption>기록모드</caption>
  740. <script type="javascript" ev:event="DOMActivate">
  741. <![CDATA[
  742. fGetPatInfo();
  743. ]]>
  744. </script>
  745. </button>
  746. <button id="btn_addrow" class="btn2_letter3" style="left:952px; top:50px; width:53px; height:19px; ">
  747. <caption>행추가</caption>
  748. <script type="javascript" ev:event="DOMActivate">
  749. <![CDATA[
  750. fInsertRow();
  751. ]]>
  752. </script>
  753. </button>
  754. <button id="btn_delrow" class="btn2_letter3" style="left:1008px; top:50px; width:53px; height:19px; ">
  755. <caption>행삭제</caption>
  756. <script type="javascript" ev:event="DOMActivate">
  757. <![CDATA[
  758. if(grd_skinsurveylist.row < 2 || grd_skinsurveylist.row == 0){
  759. messageBox("기록삭제 할 기록 정보를 선택하십시요", "I");
  760. return;
  761. }else{
  762. fDeleteRow(grd_skinsurveylist.row);
  763. }
  764. //인증저장도 삭제할수 있게 변경 2010.05.03 K. J. M
  765. //else if(grd_skinsurveylist.valueMatrix(grd_skinsurveylist.row, grd_skinsurveylist.colRef("recstat")) == "C" ){
  766. // messageBox("인증저장 된 기록은 삭제 처리 할 수 없습니다.","I");
  767. // return;
  768. //}
  769. ]]>
  770. </script>
  771. </button>
  772. <button id="btn_tmpsave" class="btn2_letter4" style="left:1064px; top:50px; width:64px; height:19px; ">
  773. <caption>임시저장</caption>
  774. <script type="javascript" ev:event="DOMActivate">
  775. <![CDATA[
  776. fSave("T");
  777. ]]>
  778. </script>
  779. </button>
  780. <button id="btn_save" class="btn5_letter4" style="left:1131px; top:50px; width:64px; height:19px; ">
  781. <caption>인증저장</caption>
  782. <script type="javascript" ev:event="DOMActivate">
  783. <![CDATA[
  784. fSave("C");
  785. ]]>
  786. </script>
  787. </button>
  788. <line id="line5" class="line_3" style="x1:0px; y1:745px; x2:1195px; y2:745px; "/>
  789. <button id="btn_print" class="btn2_letter2" style="left:1096px; top:748px; width:42px; height:19px; ">
  790. <caption>출력</caption>
  791. <script type="javascript" ev:event="DOMActivate">
  792. <![CDATA[
  793. fPrint();
  794. ]]>
  795. </script>
  796. </button>
  797. <button id="btn_saveexcel" class="btn2_letter3" style="left:1141px; top:748px; width:53px; height:19px; ">
  798. <caption>Excel</caption>
  799. <script type="javascript" ev:event="DOMActivate">
  800. <![CDATA[
  801. fSaveExcel();
  802. ]]>
  803. </script>
  804. </button>
  805. <line id="line1" class="line_1" style="x1:0px; y1:71px; x2:1194px; y2:71px; "/>
  806. <output id="opt_recpatinfo" ref="/root/rectrgtinfo/patinfo" class="output_fix" style="left:162px; top:51px; width:401px; height:19px; font-weight:bold; padding-left:10; border-width:2px; "/>
  807. <output id="output1" ref="/root/rectrgtinfo/recpid" visibility="hidden" style="left:569px; top:50px; width:15px; height:19px; "/>
  808. <output id="output2" ref="/root/rectrgtinfo/recoprsrvno" visibility="hidden" style="left:587px; top:50px; width:15px; height:19px; "/>
  809. <datagrid id="grd_excel" nodeset="/root/main/skinserveyinfo/skinserveylist" visibility="hidden" caption="상태^수술일시^수술&#xA;방^집도과^등록번호^환자명^S/A^수술명(영문)^집도의^마취의^관찰시기^관찰장소^이상&#xA;유무^이상부위^크기(cm)^크기(cm)^크기(cm)^피부상태^관찰자^확인의^Remark|상태^수술일시^수술&#xA;방^집도과^등록번호^환자명^S/A^수술명(영문)^집도의^마취의^관찰시기^관찰장소^이상&#xA;유무^이상부위^가로^세로^길이^피부상태^관찰자^확인의^Remark" colsep="^" colwidth="37, 105, 35, 47, 65, 55, 36, 162, 45, 45, 70, 70, 34, 94, 37, 37, 37, 75, 67, 75, 200" mergecellsfixedrows="byrowrec" rowsep="|" style="left:610px; top:51px; width:50px; height:10px; ">
  810. <col disabled="true" ref="recstat" type="combo" style="font-weight:bold; text-align:center; ">
  811. <choices>
  812. <item>
  813. <label>임시</label>
  814. <value>T</value>
  815. </item>
  816. <item>
  817. <label>저장</label>
  818. <value>S</value>
  819. </item>
  820. <item>
  821. <label>확정</label>
  822. <value>C</value>
  823. </item>
  824. </choices>
  825. </col>
  826. <col ref="opfromdt" format="yyyy-mm-dd hh:nn" style="text-align:center; "/>
  827. <col ref="oproomnm" style="text-align:center; "/>
  828. <col ref="perfdeptnm" style="text-align:center; "/>
  829. <col ref="pid" style="text-align:center; "/>
  830. <col ref="hngnm" style="text-align:center; "/>
  831. <col ref="sexage" style="text-align:center; "/>
  832. <col ref="opnm"/>
  833. <col ref="perfdrnm" style="text-align:center; "/>
  834. <col ref="drnm" style="text-align:center; "/>
  835. <col ref="surveypriod" type="combo">
  836. <choices>
  837. <itemset nodeset="/root/init/M0559list/M0559">
  838. <label ref="cdnm"/>
  839. <value ref="cdid"/>
  840. </itemset>
  841. </choices>
  842. </col>
  843. <col ref="surveyplace" type="combo">
  844. <choices>
  845. <itemset nodeset="/root/init/M0560list/M0560">
  846. <label ref="cdnm"/>
  847. <value ref="cdid"/>
  848. </itemset>
  849. </choices>
  850. </col>
  851. <col ref="trobyn" type="combo">
  852. <choices>
  853. <item>
  854. <label>Y</label>
  855. <value>Y</value>
  856. </item>
  857. <item>
  858. <label>N</label>
  859. <value>N</value>
  860. </item>
  861. </choices>
  862. </col>
  863. <col ref="trobpart" type="inputbutton"/>
  864. <col ref="trobwidth" type="input" style="text-align:center; "/>
  865. <col ref="trobheight" type="input" style="text-align:center; "/>
  866. <col ref="troblength" type="input" style="text-align:center; "/>
  867. <col ref="skinstat" type="combo">
  868. <choices>
  869. <itemset nodeset="/root/code/codeinfo/codelist">
  870. <label ref="cdnm"/>
  871. <value ref="cdid"/>
  872. </itemset>
  873. </choices>
  874. </col>
  875. <col ref="surveynm"/>
  876. <col ref="cnfmrnm"/>
  877. <col ref="remark"/>
  878. </datagrid>
  879. </group>
  880. </xhtml:body>
  881. </xhtml:html>