From c2617482280d925c16e3ae4d8f1b363ddb93e348 Mon Sep 17 00:00:00 2001 From: whitten Date: Wed, 4 Jan 2012 06:47:02 +0000 Subject: [PATCH] SECOND BUILD Auditing for Meaningful Use --- kids/VWMU_AUDIT_1_0_T2.KID | 1968 ++++++++++++++++++++++++++++++++++++ 1 file changed, 1968 insertions(+) create mode 100644 kids/VWMU_AUDIT_1_0_T2.KID diff --git a/kids/VWMU_AUDIT_1_0_T2.KID b/kids/VWMU_AUDIT_1_0_T2.KID new file mode 100644 index 0000000..818a4b5 --- /dev/null +++ b/kids/VWMU_AUDIT_1_0_T2.KID @@ -0,0 +1,1968 @@ +KIDS Distribution saved on Jan 04, 2012@01:44:46 +consolidated release Test Build 2 +**KIDS**:VWMU AUDIT 1.0T2^ + +**INSTALL NAME** +VWMU AUDIT 1.0T2 +"BLD",7917,0) +VWMU AUDIT 1.0T2^^0^3120104^n +"BLD",7917,1,0) +^^23^23^3120104^ +"BLD",7917,1,1,0) + CREATES THREE NEW FILES +"BLD",7917,1,2,0) + +"BLD",7917,1,3,0) + 1) THE DATA FILE IS NAMED 'AUDIT LOG FOR RPCS'. THIS FILE IS ANALOGOUS +"BLD",7917,1,4,0) +TO THE EXISTING VA FILE NAMED 'AUDIT LOG FOR OPTIONS'. IT WILL BE +"BLD",7917,1,5,0) +POPULATED AS USERS RUN CERTAIN RPC'S. THIS IS THE FILE OUT OF WHICH +"BLD",7917,1,6,0) +REPORTS WILL BE NEEDED. +"BLD",7917,1,7,0) + +"BLD",7917,1,8,0) + 2) THE DRIVER FILE IS NAMED 'LOGGABLE RPC'. THIS FILE LISTS THE NAMES OF +"BLD",7917,1,9,0) +RPCS THAT MAY NEED TO BE AUDITED IN THE 'AUDIT LOG FOR RPCS'. SITE TURNS +"BLD",7917,1,10,0) +THE 'ACTIVE' FIELD ON OR OFF TO CONTROL THIS. THERE IS ALSO A 'READABLE +"BLD",7917,1,11,0) +NAME' FIELD THAT COULD BE USED TO TRANSLATE 'ORQQPL PROBLEM LIST' TO +"BLD",7917,1,12,0) +SOMETHING MORE USER-FRIENDLY LIKE 'SHOW PATIENT'S PROBLEM LIST'. THIS +"BLD",7917,1,13,0) +FILE ALSO HAS INFORMATION ON HOW TO INTERCEPT INPUT PARAMETERS AT THE TIME +"BLD",7917,1,14,0) +OF THE RPC CALL SO AS TO IDENTIFY WHICH PATIENT IS BEING DEALT WITH ON THE +"BLD",7917,1,15,0) +CLIENT SIDE. NOTE THAT AN ENTRY IN THIS FILE NEED NOT NECESSARILY +"BLD",7917,1,16,0) +CORRESPOND TO AN ACTUAL RPC IN FILE 8994 AT THE SITE, BECAUSE THE .01 +"BLD",7917,1,17,0) +FIELD IS FREE-TEXT, NOT A POINTER. +"BLD",7917,1,18,0) + +"BLD",7917,1,19,0) + 3) THE (EMPTY) DATA FILE NAMED 'AUDIT LOG FOR MU'. THIS FILE IS A FILE +"BLD",7917,1,20,0) +WHERE AUDIT RECORDS ARE COLLECTED FROM AUDIT DATA ELSEWHERE ON THE SYSTEM. +"BLD",7917,1,21,0) +WHEN THE DATE RANGE FOR AUDITING IS SPECIFIED, THIS FILE IS RECREATED +"BLD",7917,1,22,0) +BASED ON INFORMATION IN OTHER AUDIT FILES, SUCH AS THE THE AUDIT FOR THE +"BLD",7917,1,23,0) +PATIENT FILE IN ^DIA AND THE ABOVE MENTIONED AUDIT LOG FOR RPCS. +"BLD",7917,4,0) +^9.64PA^8994.8^3 +"BLD",7917,4,8994.8,0) +8994.8 +"BLD",7917,4,8994.8,222) +y^y^f^^y^^y^m^y +"BLD",7917,4,8994.81,0) +8994.81 +"BLD",7917,4,8994.81,222) +y^y^f^^^^n +"BLD",7917,4,250001.1,0) +250001.1 +"BLD",7917,4,250001.1,222) +y^y^f^^^^n +"BLD",7917,4,"B",8994.8,8994.8) + +"BLD",7917,4,"B",8994.81,8994.81) + +"BLD",7917,4,"B",250001.1,250001.1) + +"BLD",7917,6.3) +3 +"BLD",7917,"KRN",0) +^9.67PA^779.2^20 +"BLD",7917,"KRN",.4,0) +.4 +"BLD",7917,"KRN",.401,0) +.401 +"BLD",7917,"KRN",.402,0) +.402 +"BLD",7917,"KRN",.403,0) +.403 +"BLD",7917,"KRN",.403,"NM",0) +^9.68A^1^1 +"BLD",7917,"KRN",.403,"NM",1,0) +XWBA FILE #8994.8^8994.8^0 +"BLD",7917,"KRN",.403,"NM","B","XWBA FILE #8994.8",1) + +"BLD",7917,"KRN",.5,0) +.5 +"BLD",7917,"KRN",.84,0) +.84 +"BLD",7917,"KRN",3.6,0) +3.6 +"BLD",7917,"KRN",3.8,0) +3.8 +"BLD",7917,"KRN",9.2,0) +9.2 +"BLD",7917,"KRN",9.8,0) +9.8 +"BLD",7917,"KRN",9.8,"NM",0) +^9.68A^3^3 +"BLD",7917,"KRN",9.8,"NM",1,0) +VWMUAUD^^0^B16355018 +"BLD",7917,"KRN",9.8,"NM",2,0) +XWBPRS^^0^B39321763 +"BLD",7917,"KRN",9.8,"NM",3,0) +XWBVW^^0^B9598967 +"BLD",7917,"KRN",9.8,"NM","B","VWMUAUD",1) + +"BLD",7917,"KRN",9.8,"NM","B","XWBPRS",2) + +"BLD",7917,"KRN",9.8,"NM","B","XWBVW",3) + +"BLD",7917,"KRN",19,0) +19 +"BLD",7917,"KRN",19,"NM",0) +^9.68A^3^3 +"BLD",7917,"KRN",19,"NM",1,0) +XWBVWDISP^^0 +"BLD",7917,"KRN",19,"NM",2,0) +XWBVWLOG^^0 +"BLD",7917,"KRN",19,"NM",3,0) +XWBVWPURGE^^0 +"BLD",7917,"KRN",19,"NM","B","XWBVWDISP",1) + +"BLD",7917,"KRN",19,"NM","B","XWBVWLOG",2) + +"BLD",7917,"KRN",19,"NM","B","XWBVWPURGE",3) + +"BLD",7917,"KRN",19.1,0) +19.1 +"BLD",7917,"KRN",101,0) +101 +"BLD",7917,"KRN",409.61,0) +409.61 +"BLD",7917,"KRN",771,0) +771 +"BLD",7917,"KRN",779.2,0) +779.2 +"BLD",7917,"KRN",870,0) +870 +"BLD",7917,"KRN",8989.51,0) +8989.51 +"BLD",7917,"KRN",8989.52,0) +8989.52 +"BLD",7917,"KRN",8994,0) +8994 +"BLD",7917,"KRN","B",.4,.4) + +"BLD",7917,"KRN","B",.401,.401) + +"BLD",7917,"KRN","B",.402,.402) + +"BLD",7917,"KRN","B",.403,.403) + +"BLD",7917,"KRN","B",.5,.5) + +"BLD",7917,"KRN","B",.84,.84) + +"BLD",7917,"KRN","B",3.6,3.6) + +"BLD",7917,"KRN","B",3.8,3.8) + +"BLD",7917,"KRN","B",9.2,9.2) + +"BLD",7917,"KRN","B",9.8,9.8) + +"BLD",7917,"KRN","B",19,19) + +"BLD",7917,"KRN","B",19.1,19.1) + +"BLD",7917,"KRN","B",101,101) + +"BLD",7917,"KRN","B",409.61,409.61) + +"BLD",7917,"KRN","B",771,771) + +"BLD",7917,"KRN","B",779.2,779.2) + +"BLD",7917,"KRN","B",870,870) + +"BLD",7917,"KRN","B",8989.51,8989.51) + +"BLD",7917,"KRN","B",8989.52,8989.52) + +"BLD",7917,"KRN","B",8994,8994) + +"BLD",7917,"QUES",0) +^9.62^^ +"DATA",8994.8,1,0) +SC MEAN TEST +"DATA",8994.8,1,100) +1 +"DATA",8994.8,2,0) +TIU NOTES +"DATA",8994.8,2,100) +1 +"DATA",8994.8,3,0) +TIU SUMMARIES +"DATA",8994.8,3,100) +1 +"DATA",8994.8,4,0) +TIU LOAD BOILERPLATE TEXT +"DATA",8994.8,4,100) +2 +"DATA",8994.8,5,0) +TIU CREATE RECORD +"DATA",8994.8,5,100) +1 +"DATA",8994.8,6,0) +TIU DOCUMENTS BY CONTEXT +"DATA",8994.8,6,100) +3 +"DATA",8994.8,7,0) +TIU NOTES 16 BIT +"DATA",8994.8,7,100) +1 +"DATA",8994.8,8,0) +ORWLR CUMULATIVE REPORT +"DATA",8994.8,8,100) +1 +"DATA",8994.8,9,0) +ORQQVS DETAIL NOTES +"DATA",8994.8,9,100) +1 +"DATA",8994.8,10,0) +ORWRA IMAGING EXAMS +"DATA",8994.8,10,100) +1 +"DATA",8994.8,11,0) +ORWRA REPORT TEXT +"DATA",8994.8,11,100) +1 +"DATA",8994.8,12,0) +ORQQPL PROBLEM LIST^^SHOW PATIENT'S PROBLEM LIST +"DATA",8994.8,12,100) +1 +"DATA",8994.8,13,0) +ORQQPL INIT PT +"DATA",8994.8,13,100) +1 +"DATA",8994.8,14,0) +ORWRP REPORT TEXT +"DATA",8994.8,14,100) +1 +"DATA",8994.8,15,0) +ORWRP PRINT REPORT +"DATA",8994.8,15,100) +2 +"DATA",8994.8,16,0) +ORWLR CUMULATIVE SECTION +"DATA",8994.8,16,100) +1 +"DATA",8994.8,17,0) +ORQQPL ADD SAVE +"DATA",8994.8,17,100) +1 +"DATA",8994.8,18,0) +ORWRA PRINT REPORT +"DATA",8994.8,18,100) +2 +"DATA",8994.8,19,0) +ORWCS LIST OF CONSULT REPORTS +"DATA",8994.8,19,100) +1 +"DATA",8994.8,20,0) +ORWCS REPORT TEXT +"DATA",8994.8,20,100) +1 +"DATA",8994.8,21,0) +ORWCS PRINT REPORT +"DATA",8994.8,21,100) +2 +"DATA",8994.8,22,0) +ORWRP16 REPORT TEXT +"DATA",8994.8,22,100) +1 +"DATA",8994.8,23,0) +GMRC LIST CONSULT REQUESTS +"DATA",8994.8,23,100) +1 +"DATA",8994.8,24,0) +PSB MEDICATION HISTORY +"DATA",8994.8,24,100) +1 +"DATA",8994.8,25,0) +PSB GETPRNS +"DATA",8994.8,25,100) +1 +"DATA",8994.8,26,0) +PSB REPORT +"DATA",8994.8,26,100) +2 +"DATA",8994.8,27,0) +TIU TEMPLATE GETTEXT +"DATA",8994.8,27,100) +1 +"DATA",8994.8,28,0) +DG SENSITIVE RECORD ACCESS +"DATA",8994.8,28,100) +1 +"DATA",8994.8,29,0) +DG SENSITIVE RECORD BULLETIN +"DATA",8994.8,29,100) +1 +"DATA",8994.8,30,0) +DG CHK BS5 XREF Y/N +"DATA",8994.8,30,100) +1 +"DATA",8994.8,31,0) +DG CHK BS5 XREF ARRAY +"DATA",8994.8,31,100) +1 +"DATA",8994.8,32,0) +DG CHK PAT MEANS TEST REQUIRED +"DATA",8994.8,32,100) +1 +"DATA",8994.8,33,0) +DG CHK PAT/DIV MEANS TEST +"DATA",8994.8,33,100) +1 +"DATA",8994.8,34,0) +ORWMC PATIENT PROCEDURES +"DATA",8994.8,34,100) +1 +"DATA",8994.8,35,0) +ORWPT DISCHARGE +"DATA",8994.8,35,100) +1 +"DATA",8994.8,36,0) +ORWPCE ACTPROB +"DATA",8994.8,36,100) +1 +"DATA",8994.8,37,0) +ORWORB KILL UNSIG ORDERS ALERT +"DATA",8994.8,37,100) +1 +"DATA",8994.8,38,0) +ORWRP PRINT LAB REPORTS +"DATA",8994.8,38,100) +2 +"DATA",8994.8,39,0) +ORWPT CWAD +"DATA",8994.8,39,100) +1 +"DATA",8994.8,40,0) +ORQQPL CHECK DUP +"DATA",8994.8,40,100) +1 +"DATA",8994.8,41,0) +ORQQCN DEFAULT REQUEST REASON +"DATA",8994.8,41,100) +2 +"DATA",8994.8,42,0) +ORWORB KILL EXPIR MED ALERT +"DATA",8994.8,42,100) +1 +"DATA",8994.8,43,0) +ORWRP PRINT REMOTE REPORT +"DATA",8994.8,43,100) +2 +"DATA",8994.8,44,0) +ORWPCE HASVISIT +"DATA",8994.8,44,100) +2 +"DATA",8994.8,45,0) +ORWORB KILL EXPIR OI ALERT +"DATA",8994.8,45,100) +1 +"DATA",8994.8,46,0) +DVBAB REPORT CPDETAILS +"DATA",8994.8,46,100) +1 +"DATA",8994.8,47,0) +DVBAB REPORT 7131INQ +"DATA",8994.8,47,100) +1 +"DATA",8994.8,48,0) +MAGGDGRPD +"DATA",8994.8,48,100) +1 +"DATA",8994.8,49,0) +MAGGLAB START +"DATA",8994.8,49,100) +4 +"DATA",8994.8,50,0) +MAGGSUR GET +"DATA",8994.8,50,100) +1 +"DATA",8994.8,51,0) +MAGG QUE PATIENT +"DATA",8994.8,51,100) +2 +"DATA",8994.8,52,0) +MAGG PAT IMAGES +"DATA",8994.8,52,100) +1 +"DATA",8994.8,53,0) +MAGG PAT EACH IMAGE +"DATA",8994.8,53,100) +1 +"DATA",8994.8,54,0) +MAGG PAT INFO +"DATA",8994.8,54,100) +1 +"DATA",8994.8,55,0) +MAGG PAT BS5 CHECK +"DATA",8994.8,55,100) +1 +"DATA",8994.8,56,0) +MAGG PAT PHOTOS +"DATA",8994.8,56,100) +1 +"DATA",8994.8,57,0) +ORWRP PRINT V REPORT +"DATA",8994.8,57,100) +2 +"DATA",8994.8,58,0) +ORWMC PATIENT PROCEDURES1 +"DATA",8994.8,58,100) +1 +"DATA",8994.8,59,0) +ORWRA IMAGING EXAMS1 +"DATA",8994.8,59,100) +1 +"DATA",8994.8,60,0) +ORWRA REPORT TEXT1 +"DATA",8994.8,60,100) +1 +"DATA",8994.8,61,0) +DENTV EXCEL EXTRACT +"DATA",8994.8,61,100) +4 +"DATA",8994.8,62,0) +MAGJ PT INFO +"DATA",8994.8,62,100) +1 +"DATA",8994.8,63,0) +PSB GETORDERTAB +"DATA",8994.8,63,100) +1 +"DATA",8994.8,64,0) +PSB IV ORDER HISTORY +"DATA",8994.8,64,100) +1 +"DATA",8994.8,65,0) +DSIC DPT GET DEMO +"DATA",8994.8,65,100) +1 +"DATA",8994.8,66,0) +DSIC GET VISITS ONLY +"DATA",8994.8,66,100) +1 +"DATA",8994.8,67,0) +DSIC SR LIST +"DATA",8994.8,67,100) +1 +"DATA",8994.8,68,0) +DSIC PX IMMUN LIST +"DATA",8994.8,68,100) +1 +"DATA",8994.8,69,0) +MSCGMAG PAT IMAGES +"DATA",8994.8,69,100) +1 +"DATA",8994.8,70,0) +DSIC CPT GET CODE +"DATA",8994.8,70,100) +4 +"DATA",8994.8,71,0) +DSIC CPT GET DETAIL DESC +"DATA",8994.8,71,100) +3 +"DATA",8994.8,72,0) +DSIC CPT GET MODIFIER LIST +"DATA",8994.8,72,100) +4 +"DATA",8994.8,73,0) +DSIC DPT INP INFO +"DATA",8994.8,73,100) +1 +"DATA",8994.8,74,0) +DSIC DPT INP INFO BRIEF +"DATA",8994.8,74,100) +1 +"DATA",8994.8,75,0) +MSC RM PATIENT GET DEMO +"DATA",8994.8,75,100) +1 +"DATA",8994.8,76,0) +MSC GET PATIENT HISTORY +"DATA",8994.8,76,100) +1 +"DATA",8994.8,77,0) +ORWDXA DC^1 +"DATA",8994.8,77,101) +1 +"DATA",8994.8,78,0) +ORWDX SAVE^1^^M +"DATA",8994.8,78,100) +1 +"DATA",8994.8,79,0) +ORWDAL32 SAVE ALLERGY^1 +"DATA",8994.8,79,100) +2 +"DATA",8994.8,80,0) +TIU GET RECORD TEXT^1^^A +"DATA",8994.8,81,0) +ORQQVI NOTEVIT^1 +"DATA",8994.8,81,100) +1 +"FIA",8994.8) +LOGGABLE RPC +"FIA",8994.8,0) +^XWBVW( +"FIA",8994.8,0,0) +8994.8 +"FIA",8994.8,0,1) +y^y^f^^y^^y^m^y +"FIA",8994.8,0,10) + +"FIA",8994.8,0,11) + +"FIA",8994.8,0,"RLRO") + +"FIA",8994.8,8994.8) +0 +"FIA",8994.81) +AUDIT LOG FOR RPCS +"FIA",8994.81,0) +^XUSEC(8994, +"FIA",8994.81,0,0) +8994.81P +"FIA",8994.81,0,1) +y^y^f^^^^n +"FIA",8994.81,0,10) + +"FIA",8994.81,0,11) + +"FIA",8994.81,0,"RLRO") + +"FIA",8994.81,8994.81) +0 +"FIA",250001.1) +AUDIT LOG FOR MU +"FIA",250001.1,0) +^XUSEC(250001.1, +"FIA",250001.1,0,0) +250001.1 +"FIA",250001.1,0,1) +y^y^f^^^^n +"FIA",250001.1,0,10) + +"FIA",250001.1,0,11) + +"FIA",250001.1,0,"RLRO") + +"FIA",250001.1,250001.1) +0 +"KRN",.403,112,-1) +0^1 +"KRN",.403,112,0) +XWBA^@^@^^3110215.0839^^^8994.8^0^0^1 +"KRN",.403,112,21) +1 +"KRN",.403,112,40,0) +^.4031I^1^1 +"KRN",.403,112,40,1,0) +1^XWBA HEADER^1,1 +"KRN",.403,112,40,1,1) +Page 1 +"KRN",.403,112,40,1,40,0) +^.4032IP^432^1 +"KRN",.403,112,40,1,40,432,0) +XWBA^1^2,1^e +"KRN",.403,112,40,1,40,432,2) +15 +"KRN",.403,112,40,1,40,432,"COMP MUL") +S GFT="" F S GFT=$O(^XWBVW("B",GFT)) Q:GFT="" F D=0:0 S D=$O(^XWBVW("B",GFT,D)) Q:'D N Y S (Y,D0)=D X DICMX Q:'$D(D) +"KRN",.403,112,40,1,40,432,"COMP MUL PTR") +8994.8 +"KRN",.404,432,0) +XWBA^8994.8 +"KRN",.404,432,40,0) +^.4044I^4^4 +"KRN",.404,432,40,1,0) +1^^3^^NAME +"KRN",.404,432,40,1,1) +.01 +"KRN",.404,432,40,1,2) +2,2^57 +"KRN",.404,432,40,2,0) +2^^3 +"KRN",.404,432,40,2,1) +.02 +"KRN",.404,432,40,2,2) +2,60^3 +"KRN",.404,432,40,3,0) +3^^3 +"KRN",.404,432,40,3,1) +100 +"KRN",.404,432,40,3,2) +2,67^5 +"KRN",.404,432,40,4,0) +4^^3 +"KRN",.404,432,40,4,1) +101 +"KRN",.404,432,40,4,2) +2,75^5 +"KRN",.404,433,0) +XWBA HEADER^8994.8 +"KRN",.404,433,40,0) +^.4044I^^0 +"KRN",19,11039,-1) +0^2 +"KRN",19,11039,0) +XWBVWLOG^Audited RPCs Log^^P^^^^^^^^RPC BROKER^n^^ +"KRN",19,11039,1,0) +^^2^2^3110214^ +"KRN",19,11039,1,1,0) +This report sorts on date/time then RPC, prints all data +"KRN",19,11039,1,2,0) +elements of each entry requested. +"KRN",19,11039,60) +XUSEC(8994, +"KRN",19,11039,62) +0 +"KRN",19,11039,63) +[XWBALOGP] +"KRN",19,11039,64) +[XWBVWLOGS] +"KRN",19,11039,65) + +"KRN",19,11039,66) + +"KRN",19,11039,"U") +AUDITED RPCS LOG +"KRN",19,11040,-1) +0^3 +"KRN",19,11040,0) +XWBVWPURGE^Audited RPCs Purge^^R^^^^^^^^RPC BROKER +"KRN",19,11040,1,0) +^^2^2^3110214^ +"KRN",19,11040,1,1,0) +This prompts for a beginning and ending date AND time to purge +"KRN",19,11040,1,2,0) + the RPC Audit entries. +"KRN",19,11040,25) +XWBPURGE^XWBVW +"KRN",19,11040,"U") +AUDITED RPCS PURGE +"KRN",19,11041,-1) +0^1 +"KRN",19,11041,0) +XWBVWDISP^RPC Audit Display^^P^^^^^^^y^RPC BROKER +"KRN",19,11041,1,0) +^^2^2^3110214^ +"KRN",19,11041,1,1,0) +This display sorts on RPC, then date/time. Also prompts for +"KRN",19,11041,1,2,0) + print device to generate a hard copy of listing. +"KRN",19,11041,60) +XUSEC(8994, +"KRN",19,11041,62) +0 +"KRN",19,11041,63) +[XWBADISPLAY] +"KRN",19,11041,64) +[XWBVWDISPS] +"KRN",19,11041,65) + +"KRN",19,11041,66) + +"KRN",19,11041,"U") +RPC AUDIT DISPLAY +"MBREQ") +0 +"ORD",8,.403) +.403;8;;;EDEOUT^DIFROMSO(.403,DA,"",XPDA);FPRE^DIFROMSI(.403,"",XPDA);EPRE^DIFROMSI(.403,DA,$E("N",$G(XPDNEW)),XPDA,"",OLDA);;EPOST^DIFROMSI(.403,DA,"",XPDA);DEL^DIFROMSK(.403,"",%) +"ORD",8,.403,0) +FORM +"ORD",18,19) +19;18;;;OPT^XPDTA;OPTF1^XPDIA;OPTE1^XPDIA;OPTF2^XPDIA;;OPTDEL^XPDIA +"ORD",18,19,0) +OPTION +"QUES","XPF1",0) +Y +"QUES","XPF1","??") +^D REP^XPDH +"QUES","XPF1","A") +Shall I write over your |FLAG| File +"QUES","XPF1","B") +YES +"QUES","XPF1","M") +D XPF1^XPDIQ +"QUES","XPF2",0) +Y +"QUES","XPF2","??") +^D DTA^XPDH +"QUES","XPF2","A") +Want my data |FLAG| yours +"QUES","XPF2","B") +YES +"QUES","XPF2","M") +D XPF2^XPDIQ +"QUES","XPI1",0) +YO +"QUES","XPI1","??") +^D INHIBIT^XPDH +"QUES","XPI1","A") +Want KIDS to INHIBIT LOGONs during the install +"QUES","XPI1","B") +NO +"QUES","XPI1","M") +D XPI1^XPDIQ +"QUES","XPM1",0) +PO^VA(200,:EM +"QUES","XPM1","??") +^D MG^XPDH +"QUES","XPM1","A") +Enter the Coordinator for Mail Group '|FLAG|' +"QUES","XPM1","B") + +"QUES","XPM1","M") +D XPM1^XPDIQ +"QUES","XPO1",0) +Y +"QUES","XPO1","??") +^D MENU^XPDH +"QUES","XPO1","A") +Want KIDS to Rebuild Menu Trees Upon Completion of Install +"QUES","XPO1","B") +NO +"QUES","XPO1","M") +D XPO1^XPDIQ +"QUES","XPZ1",0) +Y +"QUES","XPZ1","??") +^D OPT^XPDH +"QUES","XPZ1","A") +Want to DISABLE Scheduled Options, Menu Options, and Protocols +"QUES","XPZ1","B") +NO +"QUES","XPZ1","M") +D XPZ1^XPDIQ +"QUES","XPZ2",0) +Y +"QUES","XPZ2","??") +^D RTN^XPDH +"QUES","XPZ2","A") +Want to MOVE routines to other CPUs +"QUES","XPZ2","B") +NO +"QUES","XPZ2","M") +D XPZ2^XPDIQ +"RTN") +3 +"RTN","VWMUAUD") +0^1^B16355018 +"RTN","VWMUAUD",1,0) +VWMUAUD ;DJW;Generate Meaningful Use Audit +"RTN","VWMUAUD",2,0) + ;0.1;;;;;Build 3 +"RTN","VWMUAUD",3,0) + ; +"RTN","VWMUAUD",4,0) +GEN S U="^" K DEBUG +"RTN","VWMUAUD",5,0) + N X,Y,VWBEG,VWEND +"RTN","VWMUAUD",6,0) + W !,"Generate Meaningful Use Audit" +"RTN","VWMUAUD",7,0) + K DIR S DIR(0)="D^::ER",DIR("A")="From Date/Time" +"RTN","VWMUAUD",8,0) + I $D(DEBUG) S Y=3110601.0030 +"RTN","VWMUAUD",9,0) + E D ^DIR Q:$D(DIROUT) Q:+Y=-1 +"RTN","VWMUAUD",10,0) + S VWBEG=Y +"RTN","VWMUAUD",11,0) + K DIR S DIR(0)="D^::ER",DIR("A")="Until Date/Time" +"RTN","VWMUAUD",12,0) + I $D(DEBUG) S Y=3110605.1530 +"RTN","VWMUAUD",13,0) + E D ^DIR Q:$D(DIROUT) Q:+Y=-1 +"RTN","VWMUAUD",14,0) + S VWEND=Y +"RTN","VWMUAUD",15,0) + W !,"From: " S Y=VWBEG X ^DD("DD") W Y," Thru " +"RTN","VWMUAUD",16,0) + S Y=VWEND X ^DD("DD") W Y,! +"RTN","VWMUAUD",17,0) + ; +"RTN","VWMUAUD",18,0) + N FDA +"RTN","VWMUAUD",19,0) + S FDA=$P($G(^XUSEC(250001.1,0),"AUDIT LOG FOR MU^250001.1"),U,1,2) +"RTN","VWMUAUD",20,0) + K ^XUSEC(250001.1) S ^XUSEC(250001.1,0)=FDA K FDA +"RTN","VWMUAUD",21,0) + ; look at AUDIT of PATIENT +"RTN","VWMUAUD",22,0) + K VWCNT S VWCNT=0,D=VWBEG-0.00000001 +"RTN","VWMUAUD",23,0) + F D Q:$O(^DIA(2,"C",D))="" Q:$O(^DIA(2,"C",D))>VWEND +"RTN","VWMUAUD",24,0) + . S D=$O(^DIA(2,"C",D)) +"RTN","VWMUAUD",25,0) + . S I=0 F S I=$O(^DIA(2,"C",D,I)) Q:I="" D +"RTN","VWMUAUD",26,0) + .. S VWCNT=VWCNT+1 +"RTN","VWMUAUD",27,0) + .. I $G(DEBUG) D +"RTN","VWMUAUD",28,0) + ... W "^DIA(2,""C"","""_D_""","""_I_""")",! +"RTN","VWMUAUD",29,0) + ... N IEN S IEN=I N DA,DIC,DR,DIQ,DIA S DIA=2 +"RTN","VWMUAUD",30,0) + ... N %,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z +"RTN","VWMUAUD",31,0) + ... S DA=IEN,DIC="^DIA(2,",DR="0",DIQ(0)="CR" +"RTN","VWMUAUD",32,0) + ... D EN1^DIQ +"RTN","VWMUAUD",33,0) + .. S RESULT=$$CLASSPT(2,I,.VWCNT) +"RTN","VWMUAUD",34,0) + .. D:RESULT'="" SETMUAUD(VWCNT,RESULT) +"RTN","VWMUAUD",35,0) + D RPT("AUDIT OF PATIENT") +"RTN","VWMUAUD",36,0) + ; +"RTN","VWMUAUD",37,0) + W ! S VWCNTPAT=VWCNT +"RTN","VWMUAUD",38,0) + F I="MODIFIED","CREATED","DELETED","ACCESSED" D +"RTN","VWMUAUD",39,0) + . S VWCNTPAT(I)=$G(VWCNT(I)),VWCNT(I)=0 +"RTN","VWMUAUD",40,0) + ; look at AUDIT LOG FOR RPCS +"RTN","VWMUAUD",41,0) + S D=VWBEG-0.000000001 +"RTN","VWMUAUD",42,0) + F D Q:$O(^XUSEC(8994,D))="" Q:$O(^XUSEC(8994,D))>VWEND S VWCNT=VWCNT+1 +"RTN","VWMUAUD",43,0) + . S D=$O(^XUSEC(8994,D)) +"RTN","VWMUAUD",44,0) + . I $G(DEBUG) +"RTN","VWMUAUD",45,0) + .. W "^XUSEC(8994,"""_D_""",0)",! +"RTN","VWMUAUD",46,0) + .. N IEN S IEN=D N D,DA,DIC,DR,DIQ +"RTN","VWMUAUD",47,0) + .. S DA=IEN,DIC="^XUSEC(8994,",DR="0:~",DIQ(0)="CR" +"RTN","VWMUAUD",48,0) + .. D EN1^DIQ +"RTN","VWMUAUD",49,0) + . S RESULT=$$CLASSRPC(8994.81,D,.VWCNT) +"RTN","VWMUAUD",50,0) + . D:RESULT'="" SETMUAUD(VWCNT,RESULT) +"RTN","VWMUAUD",51,0) + ; +"RTN","VWMUAUD",52,0) + S VWCNT=VWCNT-VWCNTPAT +"RTN","VWMUAUD",53,0) + D RPT("AUDIT LOG FOR RPCS") +"RTN","VWMUAUD",54,0) + W ! S VWCNT=VWCNT+VWCNTPAT +"RTN","VWMUAUD",55,0) + F I="MODIFIED","CREATED","DELETED","ACCESSED" D +"RTN","VWMUAUD",56,0) + . S VWCNT(I)=VWCNT(I)+VWCNTPAT(I) +"RTN","VWMUAUD",57,0) + D RPT("") +"RTN","VWMUAUD",58,0) + S $P(^XUSEC(250001.1,0),U,3,4)=$O(^XUSEC(250001.1," "),-1)_U_VWCNT +"RTN","VWMUAUD",59,0) + Q +"RTN","VWMUAUD",60,0) +SETMUAUD(IEN,VAL) ; +"RTN","VWMUAUD",61,0) + I $G(DEBUG) W RES,! +"RTN","VWMUAUD",62,0) + S ^XUSEC(250001.1,IEN,0)=VAL +"RTN","VWMUAUD",63,0) + S ^XUSEC(250001.1,"B",$P(VAL,U),IEN)="" +"RTN","VWMUAUD",64,0) + S ^XUSEC(250001.1,"C",$P(VAL,U,4),IEN)="" +"RTN","VWMUAUD",65,0) + I $G(DEBUG) D +"RTN","VWMUAUD",66,0) + . N DA,DIC,DR,DIQ +"RTN","VWMUAUD",67,0) + . S DA=IEN,DIC="^XUSEC(250001.1,",DR="0",DIQ(0)="CR" +"RTN","VWMUAUD",68,0) + . D EN1^DIQ +"RTN","VWMUAUD",69,0) + ;S DA=1,DR=0,DIC="^XUSEC(250001.1,",DIQ(0)="CR" D EN1^DIQ +"RTN","VWMUAUD",70,0) + Q +"RTN","VWMUAUD",71,0) +RPT(MSG) ; +"RTN","VWMUAUD",72,0) + W !,VWCNT," Audit records found" W:$G(MSG)'="" " for ",MSG +"RTN","VWMUAUD",73,0) + S C="" F S C=$O(VWCNT(C)) Q:C="" D +"RTN","VWMUAUD",74,0) + . W !,"Count of ",C," records is ",VWCNT(C) +"RTN","VWMUAUD",75,0) + Q +"RTN","VWMUAUD",76,0) + ; +"RTN","VWMUAUD",77,0) +CLASSRPC(FILE,AUDIEN,COUNT) ; +"RTN","VWMUAUD",78,0) + I $G(AUDIEN)="" Q "" +"RTN","VWMUAUD",79,0) + I $D(^XUSEC(8994,AUDIEN,0)) D Q $$RP("A") +"RTN","VWMUAUD",80,0) + . S COUNT("ACCESSED")=$G(COUNT("ACCESSED"))+1 +"RTN","VWMUAUD",81,0) + S COUNT("OTHER")=$G(COUNT("OTHER"))+1 +"RTN","VWMUAUD",82,0) + Q $$RP("O") +"RTN","VWMUAUD",83,0) + ; +"RTN","VWMUAUD",84,0) +RP(X) ; +"RTN","VWMUAUD",85,0) + I '$G(AUDIEN) Q "" +"RTN","VWMUAUD",86,0) + N DFN S DFN=$G(^XUSEC(8994,AUDIEN,100)) +"RTN","VWMUAUD",87,0) + N WHO S WHO=$P(^XUSEC(8994,AUDIEN,0),U,2) +"RTN","VWMUAUD",88,0) + ;N WHEN S WHEN=$P(AUDIEN,".")_"."_$P($P(AUDIEN,".",2),1,6) +"RTN","VWMUAUD",89,0) + N WHEN S WHEN=+$J(AUDIEN,1,6) +"RTN","VWMUAUD",90,0) + N RPCCALL S RPCCALL=$P($G(^XUSEC(8994,AUDIEN,0)),U) +"RTN","VWMUAUD",91,0) + N AUX S AUX=$P(^XWB(8994,RPCCALL,0),U) +"RTN","VWMUAUD",92,0) + Q "RPC;"_AUDIEN_U_DFN_U_WHO_U_WHEN_U_X_U_AUX +"RTN","VWMUAUD",93,0) + ; +"RTN","VWMUAUD",94,0) +PT(X) ; +"RTN","VWMUAUD",95,0) + I '$G(AUDIEN) Q "" +"RTN","VWMUAUD",96,0) + N DFN S DFN=$P(^DIA(2,AUDIEN,0),U) +"RTN","VWMUAUD",97,0) + N WHO S WHO=$P(^DIA(2,AUDIEN,0),U,4) +"RTN","VWMUAUD",98,0) + N WHEN S WHEN=$P(^DIA(2,AUDIEN,0),U,2) +"RTN","VWMUAUD",99,0) + N OPTION S OPTION=$P($G(^DIA(2,AUDIEN,4.1)),U) +"RTN","VWMUAUD",100,0) + S OPTION=$P($G(^DIC(19,+OPTION,0),OPTION),U,1) +"RTN","VWMUAUD",101,0) + N AUX S AUX=OPTION +"RTN","VWMUAUD",102,0) + Q "FILE"_FILE_";"_AUDIEN_U_DFN_U_WHO_U_WHEN_U_X_U_AUX +"RTN","VWMUAUD",103,0) + ; +"RTN","VWMUAUD",104,0) +CLASSPT(FILE,AUDIEN,COUNT) ; +"RTN","VWMUAUD",105,0) + I FILE'=2 W !,"not PATIENT" Q +"RTN","VWMUAUD",106,0) + I AUDIEN="" W !,"Null IEN" Q +"RTN","VWMUAUD",107,0) + ; +"RTN","VWMUAUD",108,0) + I $D(^DIA(FILE,AUDIEN,2)),$D(^DIA(FILE,AUDIEN,3)) D Q $$PT("M") +"RTN","VWMUAUD",109,0) + . S COUNT("MODIFIED")=$G(COUNT("MODIFIED"))+1 Q +"RTN","VWMUAUD",110,0) + I $D(^DIA(FILE,AUDIEN,2)) D Q $$PT("D") +"RTN","VWMUAUD",111,0) + . S COUNT("DELETED")=$G(COUNT("DELETED"))+1 Q +"RTN","VWMUAUD",112,0) + I $D(^DIA(FILE,AUDIEN,3)) D Q $$PT("C") +"RTN","VWMUAUD",113,0) + . S COUNT("CREATED")=$G(COUNT("CREATED"))+1 Q +"RTN","VWMUAUD",114,0) + S COUNT("ACCESSED")=$G(COUNT("ACCESSED"))+1 +"RTN","VWMUAUD",115,0) + Q $$PT("A") +"RTN","XWBPRS") +0^2^B39321763 +"RTN","XWBPRS",1,0) +XWBPRS ;ISF/STAFF - VISTA BROKER MSG PARSER ;18FEB2011 +"RTN","XWBPRS",2,0) + ;;1.1;RPC BROKER;**35,43,46,VW**;Mar 28, 1997;Build 3 +"RTN","XWBPRS",3,0) + ;XWB holds info from the message used by the RPC +"RTN","XWBPRS",4,0) +CALLP(XWBP,XWBDEBUG) ;make API call using Protocol string +"RTN","XWBPRS",5,0) + N ERR,S,XWBARY K XWB +"RTN","XWBPRS",6,0) + S ERR=0 +"RTN","XWBPRS",7,0) + S ERR=$$PRSP("[XWB]") ;Read the rest of the protocol header +"RTN","XWBPRS",8,0) + I '+ERR S ERR=$$PRSM ;Read and parse message +"RTN","XWBPRS",9,0) + I $G(XWB(2,"RPC"))="XUS SET SHARED" S XWBSHARE=1 Q +"RTN","XWBPRS",10,0) + I '+ERR S ERR=$$RPC ;Check the RPC +"RTN","XWBPRS",11,0) + I +ERR S XWBSEC=$P(ERR,U,2) ;P10 -- dpc +"RTN","XWBPRS",12,0) + I '+ERR D CHKPRMIT^XWBSEC($G(XWB(2,"RPC"))) ;checks if RPC allowed to run +"RTN","XWBPRS",13,0) + S:$L($G(XWBSEC)) ERR="-1^"_XWBSEC +"RTN","XWBPRS",14,0) + I '+ERR D +"RTN","XWBPRS",15,0) + . D CAPI(.XWBP,XWB("PARAM")) +"RTN","XWBPRS",16,0) + E I ($G(XWBTCMD)'="#BYE#") D LOG^XWBTCPM("Bad Msg"_ERR),CLRBUF +"RTN","XWBPRS",17,0) + I 'XWBDEBUG K XWB +"RTN","XWBPRS",18,0) + I $D(XWBARY) K @XWBARY,XWBARY +"RTN","XWBPRS",19,0) + Q +"RTN","XWBPRS",20,0) + ; +"RTN","XWBPRS",21,0) +PRSP(P) ;ef, Parse Protocol +"RTN","XWBPRS",22,0) + ;M Extrinsic Function +"RTN","XWBPRS",23,0) + ;Outputs +"RTN","XWBPRS",24,0) + ;ERR 0 for success, "-1^Text" if error +"RTN","XWBPRS",25,0) + ; +"RTN","XWBPRS",26,0) + N ERR,C,M,R,X +"RTN","XWBPRS",27,0) + S R=0,C=";",ERR=0 +"RTN","XWBPRS",28,0) + S P=$$BREAD^XWBRW(4) +"RTN","XWBPRS",29,0) + IF $L(P)'=4 S ERR="-1^Short Header info" +"RTN","XWBPRS",30,0) + IF +ERR=0 D +"RTN","XWBPRS",31,0) + . S XWB(R,"VER")=+$E(P,1) +"RTN","XWBPRS",32,0) + . S XWB(R,"TYPE")=+$E(P,2) +"RTN","XWBPRS",33,0) + . S (XWBENVL,XWB(R,"LENV"))=+$E(P,3) +"RTN","XWBPRS",34,0) + . S (XWBPRT,XWB(R,"RT"))=+$E(P,4) +"RTN","XWBPRS",35,0) + I XWBENVL<1 S (XWBENVL,XWB(R,"LENV"))=3 +"RTN","XWBPRS",36,0) + Q ERR +"RTN","XWBPRS",37,0) + ; +"RTN","XWBPRS",38,0) +PRSM() ;ef, Parse message +"RTN","XWBPRS",39,0) + ;M Extrinsic Function +"RTN","XWBPRS",40,0) + ;See document on msg format +"RTN","XWBPRS",41,0) + ;Outputs +"RTN","XWBPRS",42,0) + ;ERR 0 for success, "-1^Text" if error +"RTN","XWBPRS",43,0) + N C,EX1,ERR,R,X,CNK +"RTN","XWBPRS",44,0) + S R=1,C=";",CNK=0,EX1=0 ;Max buffer +"RTN","XWBPRS",45,0) + S ERR="-1^Invalid Chunk" +"RTN","XWBPRS",46,0) + F S CNK=$$BREAD^XWBRW(1) Q:("12345"'[CNK) D Q:EX1 +"RTN","XWBPRS",47,0) + . S EX1=(CNK=5),@("ERR=$$PRS"_CNK) +"RTN","XWBPRS",48,0) + Q ERR +"RTN","XWBPRS",49,0) + ; +"RTN","XWBPRS",50,0) +PRS1() ;Parse the HEADER chunk +"RTN","XWBPRS",51,0) + N %,L,R +"RTN","XWBPRS",52,0) + S R=1 +"RTN","XWBPRS",53,0) + S XWB(R,"VER")=$$SREAD +"RTN","XWBPRS",54,0) + S XWB(R,"RETURN")=$$SREAD +"RTN","XWBPRS",55,0) + Q 0 +"RTN","XWBPRS",56,0) + ; +"RTN","XWBPRS",57,0) +PRS2() ;Parse the RPC chunk +"RTN","XWBPRS",58,0) + N L,R +"RTN","XWBPRS",59,0) + S R=2 +"RTN","XWBPRS",60,0) + S (XWBAPVER,XWB(R,"VER"))=$$SREAD ;RPC version +"RTN","XWBPRS",61,0) + S XWB(R,"RPC")=$$SREAD +"RTN","XWBPRS",62,0) + I $G(XWBDEBUG)>1 D LOG^XWBTCPM("RPC: "_XWB(R,"RPC")) +"RTN","XWBPRS",63,0) + Q 0 +"RTN","XWBPRS",64,0) +PRS3() ;Parse the Security chunk +"RTN","XWBPRS",65,0) + N L,R +"RTN","XWBPRS",66,0) + S R=3 +"RTN","XWBPRS",67,0) + Q 0 +"RTN","XWBPRS",68,0) +PRS4() ;Parse the Command chunk +"RTN","XWBPRS",69,0) + N R +"RTN","XWBPRS",70,0) + S R=4,XWBTCMD=$$SREAD,XWB(R,"CMD")=XWBTCMD +"RTN","XWBPRS",71,0) + I $G(XWBDEBUG)>1 D LOG^XWBTCPM("CMD: "_XWBTCMD) +"RTN","XWBPRS",72,0) + Q ("TCPConnect^#BYE#"[XWBTCMD) +"RTN","XWBPRS",73,0) + ; +"RTN","XWBPRS",74,0) +PRS5() ;Parse Data Parameter chunk +"RTN","XWBPRS",75,0) + ;M Extrinsic Function +"RTN","XWBPRS",76,0) + ;Outputs +"RTN","XWBPRS",77,0) + ;ERR 0 for success, "-1^Text" if error +"RTN","XWBPRS",78,0) + ; +"RTN","XWBPRS",79,0) + N CONT,DONE,ERR,F,FL,IX,K,L,P1,P2,P3,P4,P5,MAXP,R,TY,VA +"RTN","XWBPRS",80,0) + S R=5,ERR=0,F=3,IX=0,DONE=0,CONT="f",XWB("PARAM")="" +"RTN","XWBPRS",81,0) + F S:CONT="f" TY=$$BREAD^XWBRW(1) D Q:DONE S CONT=$$BREAD^XWBRW(1) S:CONT'="t" IX=IX+1 +"RTN","XWBPRS",82,0) + . K VA,P1 +"RTN","XWBPRS",83,0) + . IF TY=$C(4) S DONE=1 Q ;EOT +"RTN","XWBPRS",84,0) + . IF TY=0 D Q ;literal +"RTN","XWBPRS",85,0) + . . D LREAD("VA") +"RTN","XWBPRS",86,0) + . . S XWB(R,"P",IX)=VA(1) D PARAM($NA(XWB(R,"P",IX))) +"RTN","XWBPRS",87,0) + . . Q +"RTN","XWBPRS",88,0) + . IF TY=1 D Q ;reference +"RTN","XWBPRS",89,0) + . . D LREAD("VA") +"RTN","XWBPRS",90,0) + . . S XWB(R,"P",IX)=$$GETV(VA(1)) D PARAM($NA(XWB(R,"P",IX))) +"RTN","XWBPRS",91,0) + . . Q +"RTN","XWBPRS",92,0) + . IF TY=2 D Q ;list +"RTN","XWBPRS",93,0) + . . I CONT'="t" D +"RTN","XWBPRS",94,0) + . . . S XWBARY=$$OARY,XWB(R,"P",IX)="."_XWBARY +"RTN","XWBPRS",95,0) + . . . D PARAM(XWB(R,"P",IX)) +"RTN","XWBPRS",96,0) + . . D LREAD("P1") Q:P1(1)="" D LREAD("VA") +"RTN","XWBPRS",97,0) + . . D LINST(XWBARY,P1(1),VA(1)) +"RTN","XWBPRS",98,0) + . . Q +"RTN","XWBPRS",99,0) + . IF TY=3 D Q ;global +"RTN","XWBPRS",100,0) + . . I CONT'="t" D +"RTN","XWBPRS",101,0) + . . . S XWBARY=$NA(^TMP("XWBA",$J,IX)),XWB(R,"P",IX)=XWBARY +"RTN","XWBPRS",102,0) + . . . K @XWBARY S @XWBARY="" +"RTN","XWBPRS",103,0) + . . . D PARAM(XWBARY) +"RTN","XWBPRS",104,0) + . . D LREAD("P1") Q:P1(1)="" D LREAD("VA") +"RTN","XWBPRS",105,0) + . . D GINST(XWBARY,P1(1),VA(1)) +"RTN","XWBPRS",106,0) + . . Q +"RTN","XWBPRS",107,0) + . IF TY=4 D Q ;empty - ,, +"RTN","XWBPRS",108,0) + . . S XWB(R,"XWB",IX)="" +"RTN","XWBPRS",109,0) + . . Q +"RTN","XWBPRS",110,0) + . IF TY=5 D Q +"RTN","XWBPRS",111,0) + . . ;stream still to be done +"RTN","XWBPRS",112,0) + . Q ;End of loop +"RTN","XWBPRS",113,0) + Q ERR +"RTN","XWBPRS",114,0) +PARAM(NA) ;Add a new parameter to the list +"RTN","XWBPRS",115,0) + N A +"RTN","XWBPRS",116,0) + S A=$G(XWB("PARAM")) S:'$L(NA) NA="""""" ;Empty +"RTN","XWBPRS",117,0) + S A=A_$S($L(A):",",1:"")_$S(TY=3:"$NA(",1:"")_NA_$S(TY=3:")",1:"") +"RTN","XWBPRS",118,0) + S XWB("PARAM")=A +"RTN","XWBPRS",119,0) + Q +"RTN","XWBPRS",120,0) + ; +"RTN","XWBPRS",121,0) +RPC() ;Check the rpc information. +"RTN","XWBPRS",122,0) + ;M Extrinsic Function +"RTN","XWBPRS",123,0) + ;Outputs +"RTN","XWBPRS",124,0) + ;ERR 0 for success, "-1^Text" if error +"RTN","XWBPRS",125,0) + ; +"RTN","XWBPRS",126,0) + N C,DR,ERR,M,R,RPC,T,X +"RTN","XWBPRS",127,0) + S R=2,C=";",ERR=0,M=512 ;Max buffer +"RTN","XWBPRS",128,0) + S RPC=$G(XWB(R,"RPC")) I '$L(RPC) Q "-1^No RPC sent" +"RTN","XWBPRS",129,0) + S T=$O(^XWB(8994,"B",RPC,0)) +"RTN","XWBPRS",130,0) + I '+T Q "-1^Remote Procedure '"_RPC_"' doesn't exist on the server." +"RTN","XWBPRS",131,0) + S T(0)=$G(^XWB(8994,T,0)) +"RTN","XWBPRS",132,0) + I $P(T(0),U,6)=1!($P(T(0),U,6)=2) Q "-1^Remote Procedure '"_RPC_"' cannot be run at this time." ;P10. Check INACTIVE field. - dpc. +"RTN","XWBPRS",133,0) + S XWB(R,"RTAG")=$P(T(0),"^",2) +"RTN","XWBPRS",134,0) + S XWB(R,"RNAM")=$P(T(0),"^",3) +"RTN","XWBPRS",135,0) + S XWBPTYPE=$P(T(0),"^",4) +"RTN","XWBPRS",136,0) + S XWBWRAP=+$P(T(0),"^",8) +"RTN","XWBPRS",137,0) + Q ERR +"RTN","XWBPRS",138,0) + ; +"RTN","XWBPRS",139,0) +SREAD() ;Read a S_PACK +"RTN","XWBPRS",140,0) + N L,V7 +"RTN","XWBPRS",141,0) + S L=$$BREAD^XWBRW(1),L=$A(L) +"RTN","XWBPRS",142,0) + S V7=$$BREAD^XWBRW(L) +"RTN","XWBPRS",143,0) + Q V7 +"RTN","XWBPRS",144,0) + ; +"RTN","XWBPRS",145,0) +LREAD(ROOT) ;Read a L_PACK +"RTN","XWBPRS",146,0) + N L,V7,I ;p45 Remove limit on length of string. +"RTN","XWBPRS",147,0) + S I=1,@ROOT@(I)="" +"RTN","XWBPRS",148,0) + S L=$$BREAD^XWBRW(XWBENVL),L=+L +"RTN","XWBPRS",149,0) + I L>0 S V7=$$BREAD^XWBRW(L),@ROOT@(I)=V7,I=I+1 +"RTN","XWBPRS",150,0) + Q +"RTN","XWBPRS",151,0) + ; +"RTN","XWBPRS",152,0) + ;X can be something like '"TEXT",1,0'. +"RTN","XWBPRS",153,0) +LINST(A,X,XWBY) ;instantiate local array +"RTN","XWBPRS",154,0) + IF XWBY=$C(1) S XWBY="" +"RTN","XWBPRS",155,0) + S X=A_"("_X_")" +"RTN","XWBPRS",156,0) + S @X=XWBY +"RTN","XWBPRS",157,0) + Q +"RTN","XWBPRS",158,0) + ; +"RTN","XWBPRS",159,0) + ;S can be something like '"TEXT",1,0'. +"RTN","XWBPRS",160,0) +GINST(R,S,V) ;instantiate global +"RTN","XWBPRS",161,0) + N N +"RTN","XWBPRS",162,0) + I V=$C(1) S V="" +"RTN","XWBPRS",163,0) + S N=$P(R,")")_","_S_")" +"RTN","XWBPRS",164,0) + S @N=V +"RTN","XWBPRS",165,0) + Q +"RTN","XWBPRS",166,0) + ; +"RTN","XWBPRS",167,0) +GETV(V) ;get value of V - reference parameter +"RTN","XWBPRS",168,0) + N X +"RTN","XWBPRS",169,0) + S X=V +"RTN","XWBPRS",170,0) + IF $E(X,1,2)="$$" Q "" +"RTN","XWBPRS",171,0) + IF $C(34,36)[$E(V) X "S V="_$$VCHK(V) +"RTN","XWBPRS",172,0) + E S V=@V +"RTN","XWBPRS",173,0) + Q V +"RTN","XWBPRS",174,0) + ; +"RTN","XWBPRS",175,0) +VCHK(S) ;Parse string for first argument +"RTN","XWBPRS",176,0) + N C,I,P +"RTN","XWBPRS",177,0) + F I=1:1 S C=$E(S,I) D VCHKP:C="(",VCHKQ:C=$C(34) Q:" ,"[C +"RTN","XWBPRS",178,0) + Q $E(S,1,I-1) +"RTN","XWBPRS",179,0) +VCHKP S P=1 ;Find closing paren +"RTN","XWBPRS",180,0) + F I=I+1:1 S C=$E(S,I) Q:P=0!(C="") I "()"""[C D VCHKQ:C=$C(34) S P=P+$S("("[C:1,")"[C:-1,1:0) +"RTN","XWBPRS",181,0) + Q +"RTN","XWBPRS",182,0) +VCHKQ ;Find closing quote +"RTN","XWBPRS",183,0) + F I=I+1:1 S C=$E(S,I) Q:C=""!(C=$C(34)) +"RTN","XWBPRS",184,0) + Q +"RTN","XWBPRS",185,0) +CLRBUF ;Empties Input buffer +"RTN","XWBPRS",186,0) + N % +"RTN","XWBPRS",187,0) + F R *%:2 Q:'$T!(%=4) ;!(%=-1) +"RTN","XWBPRS",188,0) + Q +"RTN","XWBPRS",189,0) +ZZZ(X) ;Convert +"RTN","XWBPRS",190,0) + N I +"RTN","XWBPRS",191,0) + F S I=$F(X,"$C(") Q:'I S J=$F(X,")",I),X=$E(X,1,I-4)_$C($E(X,I,J-2))_$E(X,J,999) +"RTN","XWBPRS",192,0) + Q X +"RTN","XWBPRS",193,0) + ; +"RTN","XWBPRS",194,0) +CAPI(XWBY,PAR) ;make API call +"RTN","XWBPRS",195,0) + N XWBCALL,T,DX,DY +"RTN","XWBPRS",196,0) + S XWBCALL=XWB(2,"RTAG")_"^"_XWB(2,"RNAM")_"(.XWBY"_$S($L(PAR):","_PAR,1:"")_")",XWBCALL2="" +"RTN","XWBPRS",197,0) + K PAR +"RTN","XWBPRS",198,0) + O XWBNULL U XWBNULL ;p43 Make sure its open +"RTN","XWBPRS",199,0) + ; +"RTN","XWBPRS",200,0) + I $G(XWBDEBUG)>2 D LOG^XWBDLOG("Call: "_$E(XWBCALL,1,247)) +"RTN","XWBPRS",201,0) + ;start RUM for RPC +"RTN","XWBPRS",202,0) + I $G(XWB(2,"CAPI"))]"" D LOGRSRC^%ZOSV(XWB(2,"CAPI"),2,1) +"RTN","XWBPRS",203,0) +VWAUDIT I $G(XWB(2,"RPC"))]"" D TRAP^XWBVW(.XWB) +"RTN","XWBPRS",204,0) + D @XWBCALL S XWBCALL2=XWBCALL ;Save call for debug +"RTN","XWBPRS",205,0) + ; +"RTN","XWBPRS",206,0) + ;restart RUM for handler +"RTN","XWBPRS",207,0) + D LOGRSRC^%ZOSV("$BROKER HANDLER$",2,1) +"RTN","XWBPRS",208,0) + ; +"RTN","XWBPRS",209,0) + U XWBTDEV +"RTN","XWBPRS",210,0) + Q +"RTN","XWBPRS",211,0) + ; +"RTN","XWBPRS",212,0) +OARY() ;create storage array +"RTN","XWBPRS",213,0) + N A,DONE,I +"RTN","XWBPRS",214,0) + S I=1+$G(XWB("ARRAY")),XWB("ARRAY")=I +"RTN","XWBPRS",215,0) + S A="XWBS"_I +"RTN","XWBPRS",216,0) + K @A ;temp fix for single array +"RTN","XWBPRS",217,0) + S @A="" ;set naked +"RTN","XWBPRS",218,0) + Q A +"RTN","XWBPRS",219,0) + ; +"RTN","XWBPRS",220,0) +CREF(R,P) ;Convert array contained in P to reference A +"RTN","XWBPRS",221,0) + N I,X,DONE,F1,S +"RTN","XWBPRS",222,0) + S DONE=0 +"RTN","XWBPRS",223,0) + S S="" +"RTN","XWBPRS",224,0) + F I=1:1 D Q:DONE +"RTN","XWBPRS",225,0) + . IF $P(P,",",I)="" S DONE=1 Q +"RTN","XWBPRS",226,0) + . S X(I)=$P(P,",",I) +"RTN","XWBPRS",227,0) + . IF X(I)?1"."1A.E D +"RTN","XWBPRS",228,0) + . . S F1=$F(X(I),".") +"RTN","XWBPRS",229,0) + . . S X(I)="."_R +"RTN","XWBPRS",230,0) + . S S=S_X(I)_"," +"RTN","XWBPRS",231,0) + Q $E(S,1,$L(S)-1) +"RTN","XWBPRS",232,0) + ; +"RTN","XWBVW") +0^3^B9598967 +"RTN","XWBVW",1,0) +XWBVW ;GFT - PURGE RPC AUDIT;18FEB2011 +"RTN","XWBVW",2,0) + ;;8.0;KERNEL;;Jul 10, 1995;Build 3 +"RTN","XWBVW",3,0) + ; +"RTN","XWBVW",4,0) + ; +"RTN","XWBVW",5,0) + ; +"RTN","XWBVW",6,0) +TRAP(XWB) ;BRING IN THE XWB ARRAY AT TIME OF CALL +"RTN","XWBVW",7,0) + N DFN,RPCNAME +"RTN","XWBVW",8,0) + S RPCNAME=$G(XWB(2,"RPC")) +"RTN","XWBVW",9,0) + S DFN=$$FINDFN(RPCNAME) ;'RPCNAME' IS NAME OF RPC TO BE FOUND IN FILE 8994.8 +"RTN","XWBVW",10,0) + I DFN D LOGRPC(RPCNAME,DFN) +"RTN","XWBVW",11,0) + Q +"RTN","XWBVW",12,0) + ; +"RTN","XWBVW",13,0) + ; +"RTN","XWBVW",14,0) +FINDFN(RPCNAME) ;XWB ARRAY IS ALSO DEFINED WHEN ENTERING HERE +"RTN","XWBVW",15,0) + N XWBVW,X +"RTN","XWBVW",16,0) + I $G(RPCNAME)="" Q "" +"RTN","XWBVW",17,0) + S XWBVW=$O(^XWBVW("B",RPCNAME,0)) I 'XWBVW Q "" +"RTN","XWBVW",18,0) + I '$P($G(^XWBVW(XWBVW,0)),"^",2) Q "" ;WON'T WORK IF LOGGABLE RPC IS NOT ACTIVE +"RTN","XWBVW",19,0) + S X=+$G(^XWBVW(XWBVW,100)) I X Q +$G(XWB(5,"P",X-1)) ;NODE 100 SAYS WHICH PARAMETER IS DFN; PARAMETERS ARE NUMBERED STARTING FROM 0 +"RTN","XWBVW",20,0) + S X=+$G(^XWBVW(XWBVW,101)) I X S X=+$G(XWB(5,"P",X-1)) I X S X=$P($G(^OR(100,X,0)),U,2) I X["DPT(" Q +X ;NODE 101 SAYS WHICH PARAMETER IS ORDER +"RTN","XWBVW",21,0) + Q "" +"RTN","XWBVW",22,0) + ; +"RTN","XWBVW",23,0) + ; +"RTN","XWBVW",24,0) +LOGRPC(RPC,XWBDFN) ;RPC audit --- something like XQ12 routine +"RTN","XWBVW",25,0) + N %,Y,XWBVW +"RTN","XWBVW",26,0) + I '$G(XWBDFN) Q +"RTN","XWBVW",27,0) + I RPC'?1.NP Q:RPC="" S RPC=$O(^XWB(8994,"B",RPC,0)) Q:'RPC +"RTN","XWBVW",28,0) + S %=$P($H,",",2),%=DT_(%\60#60/100+(%\3600)+(%#60/10000)/100) +"RTN","XWBVW",29,0) + L +^XUSEC(8994,0):0 +"RTN","XWBVW",30,0) + F XWBVW=%:.00000001 Q:'$D(^XUSEC(8994,XWBVW)) +"RTN","XWBVW",31,0) + S ^(XWBVW,0)=RPC_"^"_$G(DUZ)_"^"_$I_"^"_$J +"RTN","XWBVW",32,0) + L -^XUSEC(8994,0) +"RTN","XWBVW",33,0) + S $P(^(0),U,3,4)=XWBVW_"^"_($P(^XUSEC(8994,0),U,4)+1) +"RTN","XWBVW",34,0) + D GETENV^%ZOSV S $P(^XUSEC(8994,XWBVW,0),U,6)=$P(Y,U,2) +"RTN","XWBVW",35,0) + S ^XUSEC(8994,XWBVW,100)=XWBDFN +"RTN","XWBVW",36,0) + ;djw-indices +"RTN","XWBVW",37,0) + S ^XUSEC(8994,"APAT",XWBDFN,XWBVW)="" +"RTN","XWBVW",38,0) + S ^XUSEC(8994,"AD",+$G(DUZ),XWBVW)="" +"RTN","XWBVW",39,0) + Q +"RTN","XWBVW",40,0) + ; +"RTN","XWBVW",41,0) + ; +"RTN","XWBVW",42,0) + ; +"RTN","XWBVW",43,0) +XWBPURGE ;RPC audit purge --- 'XWBAPURGE' Option --- stolen from XUAPURGE routine +"RTN","XWBVW",44,0) + N %DT,BDATE,EDATE,ZTIO,ZTRTN,ZTUCI,ZTSAVE,ZTSK +"RTN","XWBVW",45,0) + D BEG G:'$D(EDATE) END +"RTN","XWBVW",46,0) + ;S ZTIO="",ZTRTN="PURGE^XWBVW",ZTDESC="Purge Menu Option Audit Entries" F G="BDATE","EDATE" S ZTSAVE(G)="" +"RTN","XWBVW",47,0) + ;D ^%ZTLOAD K ZTIO,ZTRTN,ZTDESC,ZTUCI,ZTSAVE +"RTN","XWBVW",48,0) + ;Q +"RTN","XWBVW",49,0) +PURGE F REC=BDATE-.000001:0 S REC=$O(^XUSEC(8994,REC)) Q:REC'>0!(REC>EDATE) S DIK="^XUSEC(8994,",DA=REC D ^DIK K DA +"RTN","XWBVW",50,0) +END Q +"RTN","XWBVW",51,0) + ; +"RTN","XWBVW",52,0) +BEG W !!,"You will be asked for a date range to purge, Begin to End" +"RTN","XWBVW",53,0) + S %DT("A")="PURGE BEGIN DATE: ",%DT="AETX" D ^%DT S BDATE=Y G:Y<1 END S %DT(0)=BDATE,%DT("A")="PURGE END DATE: " D ^%DT S EDATE=Y G:Y<1 END +"RTN","XWBVW",54,0) + Q +"RTN","XWBVW",55,0) + ; +"RTN","XWBVW",56,0) + ; +"RTN","XWBVW",57,0) + ; +"RTN","XWBVW",58,0) + ; +"RTN","XWBVW",59,0) + ; +"RTN","XWBVW",60,0) +POPTEMPL(TEMPLATE) ;FROM AN 8994 TEMPLATE INTO 8994.8 +"RTN","XWBVW",61,0) + N DIC,DFN,RPC,DFNX,ORD,ORDX +"RTN","XWBVW",62,0) + Q:$P($G(^DIBT(TEMPLATE,0)),U,4)-8994 +"RTN","XWBVW",63,0) + F RPC=0:0 S RPC=$O(^DIBT(TEMPLATE,1,RPC)) Q:'RPC D POPRPC(RPC) +"RTN","XWBVW",64,0) + Q +"RTN","XWBVW",65,0) + ; +"RTN","XWBVW",66,0) +POPRPC(RPC) ; +"RTN","XWBVW",67,0) + S X=$P(^XWB(8994,RPC,0),U,2,3) I X[U,$T(@X)]"" D +"RTN","XWBVW",68,0) + .S (DFN,DFNX,ORD,ORDX)=0 +"RTN","XWBVW",69,0) + .F SEQ=0:0 S SEQ=$O(^XWB(8994,RPC,2,SEQ)) Q:'SEQ D Q:DFN +"RTN","XWBVW",70,0) + ..I $P(^(SEQ,0),U)["DFN" S DFNX=SEQ,DFN=$P(^(0),U,5) Q +"RTN","XWBVW",71,0) + ..;I $P(^(0),U)["ORIFN" S ORDX=SEQ,ORD=$P(^(0),U,5) +"RTN","XWBVW",72,0) + .S:DFN DFNX=DFN Q:'DFNX +"RTN","XWBVW",73,0) + .S DIC=8994.8,DIC(0)="L",DIC("DR")="100///"_DFNX,X=$$GET1^DIQ(8994,RPC,.01) D ^DIC +"RTN","XWBVW",74,0) + Q +"SEC","^DIC",8994.8,8994.8,0,"AUDIT") +@ +"SEC","^DIC",8994.8,8994.8,0,"DD") +@ +"SEC","^DIC",8994.8,8994.8,0,"DEL") +@ +"SEC","^DIC",8994.8,8994.8,0,"LAYGO") +@ +"SEC","^DIC",8994.8,8994.8,0,"RD") +@ +"SEC","^DIC",8994.8,8994.8,0,"WR") +@ +"SEC","^DIC",8994.81,8994.81,0,"AUDIT") +@ +"SEC","^DIC",8994.81,8994.81,0,"DD") +@ +"SEC","^DIC",8994.81,8994.81,0,"DEL") +@ +"SEC","^DIC",8994.81,8994.81,0,"LAYGO") +@ +"SEC","^DIC",8994.81,8994.81,0,"RD") +@ +"SEC","^DIC",8994.81,8994.81,0,"WR") +@ +"SEC","^DIC",250001.1,250001.1,0,"AUDIT") +@ +"SEC","^DIC",250001.1,250001.1,0,"DD") +@ +"SEC","^DIC",250001.1,250001.1,0,"DEL") +@ +"SEC","^DIC",250001.1,250001.1,0,"LAYGO") +@ +"SEC","^DIC",250001.1,250001.1,0,"RD") +@ +"SEC","^DIC",250001.1,250001.1,0,"WR") +@ +"VER") +8.0^22.0 +"^DD",8994.8,8994.8,0) +FIELD^^.04^6 +"^DD",8994.8,8994.8,0,"DT") +3110621 +"^DD",8994.8,8994.8,0,"IX","B",8994.8,.01) + +"^DD",8994.8,8994.8,0,"NM","LOGGABLE RPC") + +"^DD",8994.8,8994.8,.01,0) +NAME^RFXJ60^^0;1^K:'$D(^XWB(8994,"B")) X +"^DD",8994.8,8994.8,.01,1,0) +^.1 +"^DD",8994.8,8994.8,.01,1,1,0) +8994.8^B +"^DD",8994.8,8994.8,.01,1,1,1) +S ^XWBVW("B",$E(X,1,30),DA)="" +"^DD",8994.8,8994.8,.01,1,1,2) +K ^XWBVW("B",$E(X,1,30),DA) +"^DD",8994.8,8994.8,.01,3) +MUST BE NAME OF AN RPC +"^DD",8994.8,8994.8,.01,"DT") +3110214 +"^DD",8994.8,8994.8,.02,0) +ACTIVE^S^1:YES;^0;2^Q +"^DD",8994.8,8994.8,.02,3) +'YES' IF RPC IS TO BE AUDITED IN 'AUDIT LOG FOR RPCS' FILE +"^DD",8994.8,8994.8,.02,"DT") +3110214 +"^DD",8994.8,8994.8,.03,0) +READABLE NAME^FJ99^^0;3^K:$L(X)>99!($L(X)<4) X +"^DD",8994.8,8994.8,.03,3) +Answer must be 4-99 characters in length. +"^DD",8994.8,8994.8,.03,"DT") +3110326 +"^DD",8994.8,8994.8,.04,0) +ACTION OCCURRED^S^A:ACCESSED;M:MODIFIED;D:DELETED;C:CREATED;^0;4^Q +"^DD",8994.8,8994.8,.04,"DT") +3110621 +"^DD",8994.8,8994.8,100,0) +PATIENT PARAMETER^NJ1,0^^100;1^K:+X'=X!(X>9)!(X<1)!(X?.E1"."1.N) X +"^DD",8994.8,8994.8,100,3) +TELLS WHICH PARAMETER OF THE RPC CALL IS THE 'DFN' +"^DD",8994.8,8994.8,100,"DT") +3110214 +"^DD",8994.8,8994.8,101,0) +ORDER PARAMETER^NJ1,0^^101;1^K:+X'=X!(X>9)!(X<1)!(X?.E1"."1.N) X +"^DD",8994.8,8994.8,101,3) +TELLS WHICH PARAMETER OF THE RPC CALL IS THE ORDER NUMBER +"^DD",8994.8,8994.8,101,"DT") +3110214 +"^DD",8994.81,8994.81,0) +FIELD^^100^9 +"^DD",8994.81,8994.81,0,"DT") +3110215 +"^DD",8994.81,8994.81,0,"NM","AUDIT LOG FOR RPCS") + +"^DD",8994.81,8994.81,.001,0) +DATE/TIME^D^^ ^S %DT="ETXR" D ^%DT S X=Y K:Y<1 X +"^DD",8994.81,8994.81,.001,21,0) +^^5^5^2890125^ +"^DD",8994.81,8994.81,.001,21,1,0) +Entries in this file are uniquely identified by the precise time when +"^DD",8994.81,8994.81,.001,21,2,0) +the option was accessed. An entry will be made as specified in the +"^DD",8994.81,8994.81,.001,21,3,0) +Kernel Site Parameters File. Once the date set in the 'Initiate +"^DD",8994.81,8994.81,.001,21,4,0) +Audit' Field has been reached, this file will be used to maintain a +"^DD",8994.81,8994.81,.001,21,5,0) +log according to the 'Option Audit' flag. +"^DD",8994.81,8994.81,.001,"AUDIT") +n +"^DD",8994.81,8994.81,.001,"DT") +3110215 +"^DD",8994.81,8994.81,.01,0) +RPC^RP8994'^XWB(8994,^0;1^Q +"^DD",8994.81,8994.81,.01,1,0) +^.1^^0 +"^DD",8994.81,8994.81,.01,3) + +"^DD",8994.81,8994.81,.01,21,0) +^^1^1^2890125^ +"^DD",8994.81,8994.81,.01,21,1,0) +This field indicates the name of the option being audited. +"^DD",8994.81,8994.81,.01,"AUDIT") +n +"^DD",8994.81,8994.81,.01,"DT") +3110215 +"^DD",8994.81,8994.81,1,0) +USER^P200'^VA(200,^0;2^Q +"^DD",8994.81,8994.81,1,21,0) +^^1^1^2890125^ +"^DD",8994.81,8994.81,1,21,1,0) +This field indicates the name of the user who has accessed the option. +"^DD",8994.81,8994.81,1,"AUDIT") +n +"^DD",8994.81,8994.81,1,"DT") +3110213 +"^DD",8994.81,8994.81,2,0) +DEVICE^FXJ60^^0;3^K:$L(X)>60!($L(X)<1) X +"^DD",8994.81,8994.81,2,3) + +"^DD",8994.81,8994.81,2,21,0) +^^1^1^2890125^ +"^DD",8994.81,8994.81,2,21,1,0) +This field indicates the device used while the option was accessed. +"^DD",8994.81,8994.81,2,"AUDIT") +n +"^DD",8994.81,8994.81,2,"DT") +3110215 +"^DD",8994.81,8994.81,3,0) +JOB^NJ8,0^^0;4^K:+X'=X!(X>99999999)!(X<1)!(X?.E1"."1N.N) X +"^DD",8994.81,8994.81,3,3) +TYPE A WHOLE NUMBER BETWEEN 1 AND 99999999 +"^DD",8994.81,8994.81,3,21,0) +^^1^1^2890125^ +"^DD",8994.81,8994.81,3,21,1,0) +This field records the job number associated with the option access. +"^DD",8994.81,8994.81,3,"AUDIT") +n +"^DD",8994.81,8994.81,3,"DT") +3110213 +"^DD",8994.81,8994.81,5,0) +CPU^F^^0;6^K:$L(X)>16!($L(X)<1) X +"^DD",8994.81,8994.81,5,3) +ANSWER MUST BE 1-16 CHARACTERS IN LENGTH +"^DD",8994.81,8994.81,5,21,0) +^^1^1^2890125^ +"^DD",8994.81,8994.81,5,21,1,0) +This field records the CPU location of the option access. +"^DD",8994.81,8994.81,5,"AUDIT") +n +"^DD",8994.81,8994.81,5,"DT") +3110213 +"^DD",8994.81,8994.81,8,0) +SUBJECT^FX^^2;E1,65^K:$L(X)>65!($L(X)<3) X +"^DD",8994.81,8994.81,8,3) +Answer must be 3-65 characters in length. +"^DD",8994.81,8994.81,8,21,0) +^^3^3^2911230^ +"^DD",8994.81,8994.81,8,21,1,0) +For a Server-type option this field will contain the subject of +"^DD",8994.81,8994.81,8,21,2,0) +the MailMan message that activated (or tried to activate) the +"^DD",8994.81,8994.81,8,21,3,0) +option. +"^DD",8994.81,8994.81,8,"AUDIT") +n +"^DD",8994.81,8994.81,8,"DT") +3110215 +"^DD",8994.81,8994.81,9,0) +ACTION^F^^3;E1,245^K:$L(X)>245!($L(X)<1) X +"^DD",8994.81,8994.81,9,3) +Answer must be 1-245 characters in length. +"^DD",8994.81,8994.81,9,21,0) +^^3^3^2911230^ +"^DD",8994.81,8994.81,9,21,1,0) +For a Server-type option this field will contain the resulting action +"^DD",8994.81,8994.81,9,21,2,0) +of a server request. In the event of an error, the error will be +"^DD",8994.81,8994.81,9,21,3,0) +trapped by the server software and entered into this field. +"^DD",8994.81,8994.81,9,"AUDIT") +n +"^DD",8994.81,8994.81,9,"DT") +3110215 +"^DD",8994.81,8994.81,100,0) +PATIENT^P2'^DPT(^100;1^Q +"^DD",8994.81,8994.81,100,"DT") +3110214 +"^DD",250001.1,250001.1,0) +FIELD^^4^10 +"^DD",250001.1,250001.1,0,"DDA") +N +"^DD",250001.1,250001.1,0,"DT") +3110620 +"^DD",250001.1,250001.1,0,"IX","B",250001.1,.01) + +"^DD",250001.1,250001.1,0,"NM","AUDIT LOG FOR MU") + +"^DD",250001.1,250001.1,.01,0) +AUDIT ID^RF^^0;1^K:$L(X)>30!($L(X)<3)!'(X'?1P.E) X +"^DD",250001.1,250001.1,.01,1,0) +^.1 +"^DD",250001.1,250001.1,.01,1,1,0) +250001.1^B +"^DD",250001.1,250001.1,.01,1,1,1) +S ^XUSEC(250001.1,"B",$E(X,1,30),DA)="" +"^DD",250001.1,250001.1,.01,1,1,2) +K ^XUSEC(250001.1,"B",$E(X,1,30),DA) +"^DD",250001.1,250001.1,.01,3) +Answer must be 3-30 characters in length. +"^DD",250001.1,250001.1,.01,"DT") +3110620 +"^DD",250001.1,250001.1,.02,0) +PATIENT NAME^P2'^DPT(^0;2^Q +"^DD",250001.1,250001.1,.02,"DT") +3110620 +"^DD",250001.1,250001.1,.03,0) +USER NAME^P200'^VA(200,^0;3^Q +"^DD",250001.1,250001.1,.03,"DT") +3110620 +"^DD",250001.1,250001.1,.04,0) +AUDIT DTTM^D^^0;4^S %DT="ESTXR" D ^%DT S X=Y K:Y<1 X +"^DD",250001.1,250001.1,.04,"DT") +3110620 +"^DD",250001.1,250001.1,.05,0) +ACTION OCCURRED^S^C:CREATED;M:MODIFIED;A:ACCESSED;D:DELETED;O:OTHER;^0;5^Q +"^DD",250001.1,250001.1,.05,3) + +"^DD",250001.1,250001.1,.05,"DT") +3110620 +"^DD",250001.1,250001.1,.06,0) +ACTION INDICATION^F^^0;6^K:$L(X)>80!($L(X)<1) X +"^DD",250001.1,250001.1,.06,3) +Answer must be 1-80 characters in length. +"^DD",250001.1,250001.1,.06,"DT") +3110620 +"^DD",250001.1,250001.1,1,0) +AUDIT DATE^CD^^ ; ^S Y(250001.1,1,1)=$S($D(^XUSEC(250001.1,D0,0)):^(0),1:"") S X=$P(Y(250001.1,1,1),U,4),X=X S X=X\1,X=$P(X,".",1) +"^DD",250001.1,250001.1,1,9) +^ +"^DD",250001.1,250001.1,1,9.01) +250001.1^.04 +"^DD",250001.1,250001.1,1,9.1) +DATE(INTERNAL(#.04)\1) +"^DD",250001.1,250001.1,2,0) +AUDIT TIME^CF^^ ; ^S Y(250001.1,2,1)=$S($D(^XUSEC(250001.1,D0,0)):^(0),1:"") S X=$P(Y(250001.1,2,1),U,4),X=X#1_"000000",X=$E(X,2,3)_":"_$E(X,4,5)_":"_$E(X,6,7) +"^DD",250001.1,250001.1,2,9) +^ +"^DD",250001.1,250001.1,2,9.01) +250001.1^1;250001.1^.04 +"^DD",250001.1,250001.1,2,9.1) +INTERNAL(AUDIT DTTM)#1 +"^DD",250001.1,250001.1,2,9.2) +X "N I,Y "_$P(^DD(250001.1,1,0),U,5,99) S Y(250001.1,2,2)=X S Y(250001.1,2,1)=$S($D(^XUSEC(250001.1,D0,0)):^(0),1:"") S X=$P(Y(250001.1,2,1),U,4),X=X S X=XY(250001.1,2,2) +"^DD",250001.1,250001.1,3,0) +USER ID^CJ15^^ ; ^S Y(250001.1,3,1)=$S($D(^XUSEC(250001.1,D0,0)):^(0),1:"") S X=$P(Y(250001.1,3,1),U,3),X=X +"^DD",250001.1,250001.1,3,9) +^ +"^DD",250001.1,250001.1,3,9.01) +250001.1^.03 +"^DD",250001.1,250001.1,3,9.1) +INTERNAL(#.03) +"^DD",250001.1,250001.1,4,0) +PATIENT ID^C^^ ; ^S Y(250001.1,4,1)=$S($D(^XUSEC(250001.1,D0,0)):^(0),1:"") S X=$P(Y(250001.1,4,1),U,2),X=X +"^DD",250001.1,250001.1,4,9) +^ +"^DD",250001.1,250001.1,4,9.01) +250001.1^.02 +"^DD",250001.1,250001.1,4,9.1) +INTERNAL(PATIENT NAME) +"^DIC",8994.8,8994.8,0) +LOGGABLE RPC^8994.8 +"^DIC",8994.8,8994.8,0,"GL") +^XWBVW( +"^DIC",8994.8,8994.8,"%D",0) +^^10^10^3110331^ +"^DIC",8994.8,8994.8,"%D",1,0) +THIS FILE LISTS THE NAMES OF +"^DIC",8994.8,8994.8,"%D",2,0) +RPCS THAT MAY NEED TO BE AUDITED IN THE 'AUDIT LOG FOR RPCS'. SITE TURNS +"^DIC",8994.8,8994.8,"%D",3,0) +THE 'ACTIVE' FIELD ON OR OFF TO CONTROL THIS. THERE IS ALSO A 'READABLE +"^DIC",8994.8,8994.8,"%D",4,0) +NAME' FIELD THAT COULD BE USED TO TRANSLATE 'ORQQPL PROBLEM LIST' TO +"^DIC",8994.8,8994.8,"%D",5,0) +SOMETHING MORE USER-FRIENDLY LIKE 'SHOW PATIENT'S PROBLEM LIST'. THIS +"^DIC",8994.8,8994.8,"%D",6,0) +FILE ALSO HAS INFORMATION ON HOW TO INTERCEPT INPUT PARAMETERS AT THE +"^DIC",8994.8,8994.8,"%D",7,0) +TIME OF THE RPC CALL SO AS TO IDENTIFY WHICH PATIENT IS BEING DEALT WITH +"^DIC",8994.8,8994.8,"%D",8,0) +ON THE CLIENT SIDE. NOTE THAT AN ENTRY IN THIS FILE NEED NOT NECESSARILY +"^DIC",8994.8,8994.8,"%D",9,0) +CORRESPOND TO AN ACTUAL RPC IN FILE 8994 AT THE SITE, BECAUSE THE .01 +"^DIC",8994.8,8994.8,"%D",10,0) +FIELD IS FREE-TEXT, NOT A POINTER. +"^DIC",8994.8,"B","LOGGABLE RPC",8994.8) + +"^DIC",8994.81,8994.81,0) +AUDIT LOG FOR RPCS^8994.81 +"^DIC",8994.81,8994.81,0,"GL") +^XUSEC(8994, +"^DIC",8994.81,8994.81,"%D",0) +^^9^9^3110331^ +"^DIC",8994.81,8994.81,"%D",1,0) +THIS FILE IS ANALOGOUS +"^DIC",8994.81,8994.81,"%D",2,0) +TO THE EXISTING VA FILE NAMED 'AUDIT LOG FOR OPTIONS'. +"^DIC",8994.81,8994.81,"%D",3,0) +IT WILL BE POPULATED AS USERS +"^DIC",8994.81,8994.81,"%D",4,0) +RUN CERTAIN RPC'S. THIS IS THE FILE OUT OF WHICH REPORTS WILL BE NEEDED. +"^DIC",8994.81,8994.81,"%D",5,0) + +"^DIC",8994.81,8994.81,"%D",6,0) + +"^DIC",8994.81,8994.81,"%D",7,0) +File 8994.8 establishes +"^DIC",8994.81,8994.81,"%D",8,0) +when and how a log of RPC +"^DIC",8994.81,8994.81,"%D",9,0) +usage will be recorded in this file. +"^DIC",8994.81,"B","AUDIT LOG FOR RPCS",8994.81) + +"^DIC",250001.1,250001.1,0) +AUDIT LOG FOR MU^250001.1 +"^DIC",250001.1,250001.1,0,"GL") +^XUSEC(250001.1, +"^DIC",250001.1,250001.1,"%D",0) +^^1^1^3110620^ +"^DIC",250001.1,250001.1,"%D",1,0) +Audit Log for Meaningful Use +"^DIC",250001.1,"B","AUDIT LOG FOR MU",250001.1) + +**END** +**END**