| [613] | 1 | ECXAMTL ;ALB/JAM - MTL Extract Audit Report; May 24, 1999
 | 
|---|
 | 2 |  ;;3.0;DSS EXTRACTS;**24,44**;May 24, 1999
 | 
|---|
 | 3 | EN ;entry point for MTL extract audit report
 | 
|---|
 | 4 |  N %X,%Y
 | 
|---|
 | 5 |  ;ecxaud=0 for 'extract' audit
 | 
|---|
 | 6 |  S ECXERR=0
 | 
|---|
 | 7 |  S ECXHEAD="MTL",ECXAUD=0
 | 
|---|
 | 8 |  W !!,"Setup for ",ECXHEAD," Extract Audit Report --",!!
 | 
|---|
 | 9 |  ;select extract
 | 
|---|
 | 10 |  D AUDIT^ECXUTLA(ECXHEAD,.ECXERR,.ECXARRAY,ECXAUD) I ECXERR D  Q
 | 
|---|
 | 11 |  . K ECXHEAD,ECXAUD,ECXERR
 | 
|---|
 | 12 |  ;get facility/division
 | 
|---|
 | 13 |  S ECXALL=1
 | 
|---|
 | 14 |  D MTL^ECXDVSN2(.ECXDIV,ECXALL,.ECXERR) I ECXERR D AUDIT^ECXKILL Q
 | 
|---|
 | 15 |  ;select output device and queue report if requested
 | 
|---|
 | 16 |  S ECXPGM="PROCESS^ECXAMTL",ECXDESC="MTL Extract Audit Report"
 | 
|---|
 | 17 |  S ECXSAVE("ECXHEAD")="",ECXSAVE("ECXALL")="",ECXSAVE("ECXDIV(")=""
 | 
|---|
 | 18 |  S ECXSAVE("ECXARRAY(")="" W !
 | 
|---|
 | 19 |  D DEVICE^ECXUTLA(ECXPGM,ECXDESC,.ECXSAVE)
 | 
|---|
 | 20 |  I ECXSAVE("POP")=1 D  Q
 | 
|---|
 | 21 |  . W !!,?5,"Try again later... exiting.",!
 | 
|---|
 | 22 |  . D AUDIT^ECXKILL
 | 
|---|
 | 23 |  I ECXSAVE("ZTSK")=0 D
 | 
|---|
 | 24 |  . K ECXSAVE,ECXPGM,ECXDESC
 | 
|---|
 | 25 |  . D PROCESS^ECXAMTL
 | 
|---|
 | 26 |  I IO'=IO(0) D ^%ZISC
 | 
|---|
 | 27 |  D HOME^%ZIS
 | 
|---|
 | 28 |  D AUDIT^ECXKILL
 | 
|---|
 | 29 |  Q
 | 
|---|
 | 30 | PROCESS ;process data in file #727.812
 | 
|---|
 | 31 |  N DAY,MTLDAT,MTLDAT1,SSN,NAME,EXN,IEN,ASI,SPC,TSTNAM,PROV,DATND,TSTSC
 | 
|---|
 | 32 |  N NODE
 | 
|---|
 | 33 |  K ^TMP($J,"ECXMTL") S EXN=ECXARRAY("EXTRACT")
 | 
|---|
 | 34 |  ;set start and end date in interal format
 | 
|---|
 | 35 |  S X=ECXARRAY("START") S %DT="" D ^%DT S ECXSTART=Y
 | 
|---|
 | 36 |  S X=ECXARRAY("END") D ^%DT S ECXEND=Y
 | 
|---|
 | 37 |  ;get run date in external format
 | 
|---|
 | 38 |  D NOW^%DTC S Y=$E(%,1,12) D DD^%DT S ECXRUN=Y
 | 
|---|
 | 39 |  ;get records for specified date range within extract
 | 
|---|
 | 40 |  S IEN=0 F  S IEN=$O(^ECX(727.812,"AC",EXN,IEN)) Q:'IEN  D
 | 
|---|
 | 41 |  . S MTLDAT=^ECX(727.812,IEN,0),MTLDAT1=$G(^ECX(727.812,IEN,1))
 | 
|---|
 | 42 |  . ;convert date to fileman internal format
 | 
|---|
 | 43 |  . S DAY=$P(MTLDAT,U,9),$E(DAY,1,2)=$E(DAY,1,2)-17 Q:$L(DAY)<7
 | 
|---|
 | 44 |  . I DAY<ECXSTART!(DAY>ECXEND) Q
 | 
|---|
 | 45 |  . S SSN=$P(MTLDAT,U,6),NAME=$P(MTLDAT,U,7),TSTNAM=$P(MTLDAT,U,21)
 | 
|---|
 | 46 |  . S PROV=$P(MTLDAT,U,18)
 | 
|---|
 | 47 |  . S:PROV'="" PROV=$$GET1^DIQ(200,$E(PROV,2,999),.01,"I")
 | 
|---|
 | 48 |  . S TSTSC=$P(MTLDAT,U,25),ASI=$P(MTLDAT1,U,5),SPC=$P(MTLDAT1,U,6)
 | 
|---|
 | 49 |  . ;determine next level for ^TMP($J,"ECXMTL",
 | 
|---|
 | 50 |  . Q:TSTNAM=""  S NODE=TSTNAM I TSTNAM'="ASI",TSTNAM'="GAF" S NODE="PI"
 | 
|---|
 | 51 |  . ;data to be stored at node in ^TMP($J,"ECXMTL,NODE
 | 
|---|
 | 52 |  . S DATND=$S(NODE="ASI":ASI_U_SPC,NODE="GAF":TSTSC_U_PROV,1:"")
 | 
|---|
 | 53 |  . ;store data in ^TMP($J,"ECXMTL",NODE
 | 
|---|
 | 54 |  . I NODE="PI" D  Q
 | 
|---|
 | 55 |  . . I '$D(^TMP($J,"ECXMTL",NODE,TSTNAM,NAME,SSN,DAY)) D
 | 
|---|
 | 56 |  . . . S ^TMP($J,"ECXMTL",NODE,TSTNAM,NAME,SSN,DAY)=DATND
 | 
|---|
 | 57 |  . . . S ^TMP($J,"ECXMTL",NODE,TSTNAM)=$G(^TMP($J,"ECXMTL",NODE,TSTNAM))+1
 | 
|---|
 | 58 |  . I '$D(^TMP($J,"ECXMTL",NODE,NAME,SSN,DAY)) D
 | 
|---|
 | 59 |  . . S ^TMP($J,"ECXMTL",NODE,NAME,SSN,DAY)=DATND
 | 
|---|
 | 60 |  D PRINT,AUDIT^ECXKILL
 | 
|---|
 | 61 |  Q
 | 
|---|
 | 62 | PRINT ;print the MTL audit report
 | 
|---|
 | 63 |  N ND,NAM,SSN,DAY,PITOT,GAFTOT,ASI,INSTOT,CNT,DIV,QFL,LN,I,CLS,SPC,ASISP
 | 
|---|
 | 64 |  N PG,ASITOT,ASISPTOT
 | 
|---|
 | 65 |  U IO
 | 
|---|
 | 66 |  I $D(ZTQUEUED),$$S^%ZTLOAD S ZTSTOP=1 K ZTREQ Q
 | 
|---|
 | 67 |  S (ASITOT,ASISPTOT,QFL,PG,CNT)=0,$P(LN,"-",74)="",DIV=$O(ECXDIV(""))
 | 
|---|
 | 68 |  ;
 | 
|---|
 | 69 |  ;- Added new class, ASI-MV, per MH patch YS*5.01*67
 | 
|---|
 | 70 |  F I=1:1:4,999 S (ASI(I),ASISP(I))=0 D
 | 
|---|
 | 71 |  . S ASI(I,0)=$S(I=1:"Full",I=2:"Lite",I=3:"Follow-up",I=4:"For ASI-MV",1:"Unspecified")
 | 
|---|
 | 72 |  . S ASISP(I,0)=$S(I=1:"Terminated",I=2:"Refused",I=3:"Unable",1:"Unspecified")
 | 
|---|
 | 73 |  S ASISP(0)=0,ASISP(0,0)="Completed" D HEADER
 | 
|---|
 | 74 |  S ND="" F  S ND=$O(^TMP($J,"ECXMTL",ND)) Q:ND=""  D  I QFL Q
 | 
|---|
 | 75 |  . S CNT=CNT+1 D H1 S NAM="" I ($Y+3)>IOSL D HEADER I QFL Q
 | 
|---|
 | 76 |  . I ND="PI" D  Q
 | 
|---|
 | 77 |  . . F  S NAM=$O(^TMP($J,"ECXMTL",ND,NAM)) Q:NAM=""  D  I QFL Q
 | 
|---|
 | 78 |  . . . S INSTOT=^TMP($J,"ECXMTL",ND,NAM)
 | 
|---|
 | 79 |  . . . D:($Y+3)>IOSL HEADER Q:QFL  W ?5,NAM,?32,$J(INSTOT,8),!
 | 
|---|
 | 80 |  . . . S PITOT=$G(PITOT)+INSTOT
 | 
|---|
 | 81 |  . . I ($Y+3)>IOSL D HEADER I QFL Q
 | 
|---|
 | 82 |  . . W ?5,LN,!,?5,"Total",?30,$J(PITOT,10),!
 | 
|---|
 | 83 |  . F  S NAM=$O(^TMP($J,"ECXMTL",ND,NAM)) Q:NAM=""  S SSN="" D  I QFL Q
 | 
|---|
 | 84 |  . .F  S SSN=$O(^TMP($J,"ECXMTL",ND,NAM,SSN)) Q:SSN=""  S DAY="" D  Q:QFL
 | 
|---|
 | 85 |  . . . F  S DAY=$O(^TMP($J,"ECXMTL",ND,NAM,SSN,DAY)) Q:DAY=""  D P1 Q:QFL
 | 
|---|
 | 86 |  . I QFL Q
 | 
|---|
 | 87 |  . ;print GAF total
 | 
|---|
 | 88 |  . I ND="GAF" D  Q
 | 
|---|
 | 89 |  . . D:($Y+3)>IOSL HEADER Q:QFL  W ?5,LN,!,?5,"Total: ",GAFTOT,!
 | 
|---|
 | 90 |  . ;print ASI totals
 | 
|---|
 | 91 |  . I ND="ASI" D  Q
 | 
|---|
 | 92 |  . . D:($Y+3)>IOSL HEADER Q:QFL  W ?5,LN,! S (CLS,SPC)=-1
 | 
|---|
 | 93 |  . . F I=1:1:5 D  Q:(CLS="")&(SPC="")  I QFL Q
 | 
|---|
 | 94 |  . . . I ($Y+3)>IOSL D HEADER I QFL Q
 | 
|---|
 | 95 |  . . . I CLS'="" S CLS=$O(ASI(CLS)) D:CLS'=""
 | 
|---|
 | 96 |  . . . . W ?29,$J(ASI(CLS),8)," ",ASI(CLS,0)
 | 
|---|
 | 97 |  . . . . S ASITOT=ASITOT+ASI(CLS)
 | 
|---|
 | 98 |  . . . I SPC'="" S SPC=$O(ASISP(SPC)) D:SPC'=""
 | 
|---|
 | 99 |  . . . . W ?50,$J(ASISP(SPC),8)," ",ASISP(SPC,0) D
 | 
|---|
 | 100 |  . . . . S ASISPTOT=ASISPTOT+ASISP(SPC)
 | 
|---|
 | 101 |  . . . W !
 | 
|---|
 | 102 |  . . Q:QFL  W ?5,LN,!,?27,$J(ASITOT,10),?48,$J(ASISPTOT,10)," ","Total"
 | 
|---|
 | 103 |  Q
 | 
|---|
 | 104 | P1 ;print ASI and GAF records
 | 
|---|
 | 105 |  N DATND,DATE
 | 
|---|
 | 106 |  S DATND=^TMP($J,"ECXMTL",ND,NAM,SSN,DAY)
 | 
|---|
 | 107 |  S DATE=$E(DAY,4,5)_"/"_$E(DAY,6,7)_"/"_($E(DAY)+17)_$E(DAY,2,3)
 | 
|---|
 | 108 |  D:($Y+3)>IOSL HEADER Q:QFL  W ?5,NAM,?14,$E(SSN,$L(SSN)-3,$L(SSN))
 | 
|---|
 | 109 |  I ND="ASI" D  Q
 | 
|---|
 | 110 |  . S CLS=$P(DATND,U),SPC=$P(DATND,U,2)
 | 
|---|
 | 111 |  . W ?21,DATE,?36,$S(CLS=1:"Full",CLS=2:"Lite",CLS=3:"F-up",CLS=4:"ASI-MV",1:""),?57,SPC,!
 | 
|---|
 | 112 |  . S:CLS="" CLS=999 S:SPC="" SPC=999 S:SPC="N" SPC=0
 | 
|---|
 | 113 |  . S ASI(CLS)=$G(ASI(CLS))+1,ASISP(SPC)=$G(ASISP(SPC))+1
 | 
|---|
 | 114 |  I ND="GAF" D  Q
 | 
|---|
 | 115 |  . W ?21,DATE,?36,$P(DATND,U,2),!
 | 
|---|
 | 116 |  . S GAFTOT=$G(GAFTOT)+1
 | 
|---|
 | 117 |  Q
 | 
|---|
 | 118 | HEADER ;header and page control
 | 
|---|
 | 119 |  N JJ,SS
 | 
|---|
 | 120 |  I $E(IOST)="C" D  I QFL Q
 | 
|---|
 | 121 |  . S SS=22-$Y F JJ=1:1:SS W !
 | 
|---|
 | 122 |  . I PG S DIR(0)="E" W ! D ^DIR K DIR S:'Y QFL=1
 | 
|---|
 | 123 |  W:PG!($E(IOST)="C") @IOF S PG=PG+1
 | 
|---|
 | 124 |  W !,ECXARRAY("TYPE")_" ("_ECXHEAD_") Extract Audit Report"
 | 
|---|
 | 125 |  W !,"DSS Extract Log #:    "_ECXARRAY("EXTRACT")
 | 
|---|
 | 126 |  W !,"Date Range of Audit:  "_ECXARRAY("START")_" to "_ECXARRAY("END")
 | 
|---|
 | 127 |  W !,"Report Run Date/Time: "_ECXRUN
 | 
|---|
 | 128 |  I $P(ECXDIV(DIV),U)="" D
 | 
|---|
 | 129 |  . S $P(ECXDIV(DIV),U)=$P(ECXDIV(DIV),U,3)
 | 
|---|
 | 130 |  . I $P(ECXDIV(DIV),U)="" S $P(ECXDIV(DIV),U)="Unknown"
 | 
|---|
 | 131 |  W !,"Facility:             "_$P(ECXDIV(DIV),U)
 | 
|---|
 | 132 |  W " ("_$P(ECXDIV(DIV),U,4)_")",?68,"Page: "_PG
 | 
|---|
 | 133 | H1 I $G(ND)'="" D
 | 
|---|
 | 134 |  . W !!,CNT,".",?5
 | 
|---|
 | 135 |  . I ND="PI" W "Psych Instruments segment",!! Q
 | 
|---|
 | 136 |  . W ND," segment",!!
 | 
|---|
 | 137 |  . W ?5,"Name",?14,"SSN",?21
 | 
|---|
 | 138 |  . I ND="ASI" W "Interview",?36,"Class",?54,"Special"
 | 
|---|
 | 139 |  . I ND="GAF" W "Date",?36,"Clinician"
 | 
|---|
 | 140 |  . W !,?5,LN,!
 | 
|---|
 | 141 |  Q
 | 
|---|