Index: audit/trunk/kids/VWMU_AUDIT_1_0_T2.KID
===================================================================
--- audit/trunk/kids/VWMU_AUDIT_1_0_T2.KID	(revision 1334)
+++ audit/trunk/kids/VWMU_AUDIT_1_0_T2.KID	(revision 1334)
@@ -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**
