Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: GMRCSTU

GMRCSTU.m

Go to the documentation of this file.
  1. GMRCSTU ;SLC/DCM,dee - Statistic Utilities for C/RT ;09/26/02 10:16
  1. ;;3.0;CONSULT/REQUEST TRACKING;**1,7,29,30,43,61**;DEC 27, 1997;Build 2
  1. Q
  1. ;
  1. GETDT(GMRCO) ;get the date that the consult/request was accepted by service
  1. N ND,GMRCDA
  1. S COMPLDT=9999999
  1. S ND=0 F S ND=$O(^GMR(123,GMRCO,40,ND)) Q:ND?1A.E!(ND="") D
  1. .S:$P(^GMR(123,GMRCO,40,ND,0),"^",2)=21 GMRCDA=$P(^(0),"^",1)
  1. .S:$P(^GMR(123,GMRCO,40,ND,0),"^",2)=1 GMRCDA(1)=$P(^(0),"^",1)
  1. .S:$P(^GMR(123,GMRCO,40,ND,0),"^",2)=15 GMRCDA(15)=$P(^(0),"^",3)
  1. .I $P(^GMR(123,GMRCO,40,ND,0),"^",2)=10,$P(^(0),"^",3)<COMPLDT S COMPLDT=$P(^(0),"^",3)
  1. S RCVDT=$S($D(GMRCDA)#2:GMRCDA,$D(GMRCDA(1)):GMRCDA(1),$D(GMRCDA(15)):GMRCDA(15),1:$P(^GMR(123,GMRCO,0),"^",1))
  1. Q
  1. EN ;
  1. K ^TMP("GMRCSLIST",$J),GMRCQUT
  1. ;Get the service/grouper
  1. D ASRV^GMRCASV
  1. G:$D(GMRCQUT) KILL
  1. I '$O(^TMP("GMRCSLIST",$J,0)) S GMRCQUT=1 G KILL
  1. ;Get the date range
  1. D ^GMRCSPD
  1. G:$D(GMRCQUT) KILL
  1. Q
  1. ;
  1. ENOR(RETURN,GMRCSRVC,GMRCDT1,GMRCDT2) ;Entry point for GUI interface.
  1. ;.RETURN: This is the root to the returned temp array.
  1. ;GMRCSRVC: Service for which consults are to be displayed.
  1. ;GMRCDT1: Starting date or "ALL"
  1. ;GMRCDT2: Ending date if not GMRCDT1="ALL"
  1. ;
  1. ;^TMP("GMRCSLIST",$J,n)=ien^name^parient ien^"+" if grouper^status
  1. ; status is "" tracking and/or grouper
  1. ; 1 grouper only
  1. ; 2 tracking only
  1. ; 9 disabled
  1. ;
  1. N GMRCEDT1,GMRCEDT2,GMRCDG,GMRCHEAD,GMRCCT,GMRCGRP,VALMCNT,VALMBCK
  1. N GMRCWRIT
  1. S GMRCWRIT=0
  1. K ^TMP("GMRCR",$J,"PRL")
  1. S RETURN="^TMP(""GMRCR"",$J,""PRL"")"
  1. I '($D(GMRCSRVC)#2) S GMRCSRVC=1
  1. Q:'$D(^GMR(123.5,$G(GMRCSRVC),0))
  1. ;Build service array
  1. S GMRCDG=GMRCSRVC
  1. D SERV1^GMRCASV
  1. ;Get external form of date range
  1. I '($D(GMRCDT1)#2) S GMRCDT1="ALL"
  1. S:GMRCDT1="ALL" GMRCDT2=0
  1. D LISTDATE^GMRCSTU1(GMRCDT1,$G(GMRCDT2),.GMRCEDT1,.GMRCEDT2)
  1. G ODTSTR
  1. ;
  1. ODT ;List Manager entry point
  1. N GMRCWRIT
  1. S GMRCWRIT=1
  1. D WAIT^DICD
  1. ;
  1. ODTSTR ;Find the mean, standard deviation of how long to complete a consult from when it is accepted in the service to when it is complete
  1. N RCVDT,COMPLDT,INDEX,TEMPTMP,GROUPER,TAB
  1. N GMRCDG,GMRCDGT,GMRCDT,GMRCDTP
  1. N GMRCGRP,GMRCND,GMRCO,ND,X,X1,X2,X3,X4
  1. S GMRCDTP=GMRCDT2
  1. S GMRCDT2=GMRCDT2+1
  1. I '$O(^TMP("GMRCSLIST",$J,0)) S GMRCQUT=1 G KILL
  1. S INDEX=0
  1. F S INDEX=$O(^TMP("GMRCSLIST",$J,INDEX)) Q:INDEX="" D
  1. .S ND=$P(^TMP("GMRCSLIST",$J,INDEX),"^",1)
  1. .Q:$P(^TMP("GMRCSLIST",$J,INDEX),"^",5)=9
  1. .S ^TMP("GMRCSVC",$J,1,ND,"T")="0^0^0^0^0^0"
  1. .S ^TMP("GMRCSVC",$J,1,ND,"I")="0^0^0^0^0"
  1. .S ^TMP("GMRCSVC",$J,1,ND,"O")="0^0^0^0^0"
  1. .S ^TMP("GMRCSVC",$J,1,ND,"U")="0^0^0^0^0"
  1. .S ^TMP("GMRCSVC",$J,2,ND,"T")="0^0^0^0^0^0"
  1. .S ^TMP("GMRCSVC",$J,2,ND,"I")="0^0^0^0^0"
  1. .S ^TMP("GMRCSVC",$J,2,ND,"O")="0^0^0^0^0"
  1. .S ^TMP("GMRCSVC",$J,2,ND,"U")="0^0^0^0^0"
  1. S GMRCND=0
  1. S INDEX=""
  1. F S INDEX=$O(^TMP("GMRCSLIST",$J,INDEX),-1) Q:INDEX="" D
  1. .S ND=$P(^TMP("GMRCSLIST",$J,INDEX),"^",1)
  1. .Q:$P(^TMP("GMRCSLIST",$J,INDEX),"^",5)=9
  1. .Q:$P(^TMP("GMRCSVC",$J,1,ND,"T"),"^",2)>0
  1. .I $P(^TMP("GMRCSLIST",$J,INDEX),"^",5)'=1 D
  1. ..S GMRCDT=""
  1. ..F S GMRCDT=$O(^GMR(123,"AE",ND,2,GMRCDT)) Q:GMRCDT="" D
  1. ...S GMRCO=0
  1. ...F S GMRCO=$O(^GMR(123,"AE",ND,2,GMRCDT,GMRCO)) Q:GMRCO="" D W:GMRCWRIT&'(GMRCND#25) "."
  1. ....D GETDT(GMRCO)
  1. ....I COMPLDT<9999999,$S(GMRCDT1="ALL":1,RCVDT'<GMRCDT1&(RCVDT'>GMRCDT2):1,1:0) D
  1. .....S X1=COMPLDT
  1. .....S X2=RCVDT
  1. .....D ^%DTC
  1. .....IF X=0 D
  1. ......S X=$$FMDIFF^XLFDT(COMPLDT,RCVDT,3)
  1. ......S X=+$P(X," ",2)/24
  1. ......S X3=$E(X,1,3)
  1. ......S X4=$E(X,4)
  1. ......S:X4>4 X3=X3+.01
  1. ......S X=X3
  1. .....S $P(^TMP("GMRCSVC",$J,1,ND,"T"),U)=$P(^TMP("GMRCSVC",$J,1,ND,"T"),U)+X
  1. .....S $P(^TMP("GMRCSVC",$J,1,ND,"T"),"^",2)=$P(^TMP("GMRCSVC",$J,1,ND,"T"),"^",2)+1
  1. .....S $P(^TMP("GMRCSVC",$J,1,ND,"T"),"^",3)=$P(^TMP("GMRCSVC",$J,1,ND,"T"),"^",3)+(X*X)
  1. .....I $P(^GMR(123,GMRCO,0),"^",18)="I" D
  1. ......S $P(^TMP("GMRCSVC",$J,1,ND,"I"),"^",1)=$P(^TMP("GMRCSVC",$J,1,ND,"I"),"^",1)+X
  1. ......S $P(^TMP("GMRCSVC",$J,1,ND,"I"),"^",2)=$P(^TMP("GMRCSVC",$J,1,ND,"I"),"^",2)+1
  1. ......S $P(^TMP("GMRCSVC",$J,1,ND,"I"),"^",3)=$P(^TMP("GMRCSVC",$J,1,ND,"I"),"^",3)+(X*X)
  1. .....E I $P(^GMR(123,GMRCO,0),"^",18)="O" D
  1. ......S $P(^TMP("GMRCSVC",$J,1,ND,"O"),"^",1)=$P(^TMP("GMRCSVC",$J,1,ND,"O"),"^",1)+X
  1. ......S $P(^TMP("GMRCSVC",$J,1,ND,"O"),"^",2)=$P(^TMP("GMRCSVC",$J,1,ND,"O"),"^",2)+1
  1. ......S $P(^TMP("GMRCSVC",$J,1,ND,"O"),"^",3)=$P(^TMP("GMRCSVC",$J,1,ND,"O"),"^",3)+(X*X)
  1. .....E D
  1. ......S $P(^TMP("GMRCSVC",$J,1,ND,"U"),"^",1)=$P(^TMP("GMRCSVC",$J,1,ND,"U"),"^",1)+X
  1. ......S $P(^TMP("GMRCSVC",$J,1,ND,"U"),"^",2)=$P(^TMP("GMRCSVC",$J,1,ND,"U"),"^",2)+1
  1. ......S $P(^TMP("GMRCSVC",$J,1,ND,"U"),"^",3)=$P(^TMP("GMRCSVC",$J,1,ND,"U"),"^",3)+(X*X)
  1. .....S GMRCND=GMRCND+1
  1. .D PARENTS^GMRCSTU1(ND,+$P(^TMP("GMRCSLIST",$J,INDEX),"^",3))
  1. S ND=0
  1. STAT ;Do the statistics
  1. F S ND=$O(^TMP("GMRCSVC",$J,2,ND)) Q:ND="" D
  1. .I $P($G(^TMP("GMRCSVC",$J,1,ND,"T")),"^",1)>0 D DOSTAT^GMRCSTU1(1,ND)
  1. .I $P(^TMP("GMRCSVC",$J,2,ND,"T"),"^",1)>0 D DOSTAT^GMRCSTU1(2,ND)
  1. K ^TMP("GMRCR",$J,"PRL")
  1. S GMRCCT=0
  1. S GMRCDT2=GMRCDTP ;reset date value to print report heading
  1. D LISTDATE^GMRCSTU1(GMRCDT1,GMRCDT2,.GMRCEDT1,.GMRCEDT2)
  1. S TAB=""
  1. S $P(TAB," ",40)=""
  1. S GMRCCT=GMRCCT+1
  1. S ^TMP("GMRCR",$J,"PRL",GMRCCT,0)=$E(TAB,1,19)_"Consult/Request Completion Time Statistics"
  1. S GMRCCT=GMRCCT+1
  1. S TEMPTMP="FROM: "_GMRCEDT1_" TO: "_GMRCEDT2
  1. S ^TMP("GMRCR",$J,"PRL",GMRCCT,0)=$E(TAB,1,40-($L(TEMPTMP)/2))_TEMPTMP
  1. S GMRCCT=GMRCCT+1
  1. S ^TMP("GMRCR",$J,"PRL",GMRCCT,0)=""
  1. S INDEX=0
  1. S GROUPER=0
  1. S GROUPER(0)=0
  1. F S INDEX=$O(^TMP("GMRCSLIST",$J,INDEX)) Q:INDEX="" D
  1. .S ND=$P(^TMP("GMRCSLIST",$J,INDEX),"^",1)
  1. .Q:$P(^TMP("GMRCSLIST",$J,INDEX),"^",5)=9&'$D(^TMP("GMRCSVC",$J,2,ND))
  1. .F Q:GROUPER(GROUPER)=$P(^TMP("GMRCSLIST",$J,INDEX),"^",3) D
  1. ..;End of a group so print the group totals
  1. ..D SERVSTAT^GMRCSTU1(.GMRCCT,2,GROUPER(GROUPER),GROUPER(GROUPER))
  1. ..;pop grouper from stack
  1. ..S GROUPER=GROUPER-1
  1. .I $P(^TMP("GMRCSLIST",$J,INDEX),"^",4)="+" D
  1. ..;Start of a new group so print the group heading.
  1. ..S GMRCCT=GMRCCT+1
  1. ..S TEMPTMP="GROUPER: "_$P(^GMR(123.5,ND,0),"^",1)
  1. ..S:$P(^TMP("GMRCSLIST",$J,INDEX),"^",3)>0 TEMPTMP=TEMPTMP_" in Group: "_$P(^GMR(123.5,$P(^TMP("GMRCSLIST",$J,INDEX),"^",3),0),"^",1)
  1. ..S ^TMP("GMRCR",$J,"PRL",GMRCCT,0)=$E(TAB,1,40-(($L(TEMPTMP)/2)+.5))_TEMPTMP
  1. ..S GMRCCT=GMRCCT+1
  1. ..S ^TMP("GMRCR",$J,"PRL",GMRCCT,0)=""
  1. ..;push new grouper on stack
  1. ..S GROUPER=GROUPER+1
  1. ..S GROUPER(GROUPER)=ND
  1. .Q:$P(^TMP("GMRCSLIST",$J,INDEX),"^",5)=1
  1. .Q:$P(^TMP("GMRCSLIST",$J,INDEX),"^",5)=9
  1. .D SERVSTAT^GMRCSTU1(.GMRCCT,1,ND,GROUPER(GROUPER))
  1. ;Now list the group totals for the current groups.
  1. F GROUPER=GROUPER:-1:1 D
  1. .;End of a group so print the group totals
  1. .D SERVSTAT^GMRCSTU1(.GMRCCT,2,GROUPER(GROUPER),GROUPER(GROUPER))
  1. ;Done building list.
  1. S VALMCNT=GMRCCT,VALMBCK="R"
  1. KILL ;kill variables and exit
  1. S:$D(GMRCQUT) VALMBCK="Q"
  1. K ^TMP("GMRCS",$J),^TMP("GMRCSLIST",$J)
  1. Q
  1. PRNT ;print statistics to a printer
  1. ;Called from a List Manager action
  1. Q:'$D(^TMP("GMRCR",$J,"PRL",2,0))
  1. I $D(IOTM),$D(IOBM),$D(IOSTBM) D FULL^VALM1
  1. D PRNTASK
  1. D PRNTIT("PRL","PRNTQ^GMRCSTU","CONSULT/REQUEST PACKAGE PRINT COMPLETION TIME STATISTICS FROM LIST MANAGER DISPLAY")
  1. Q
  1. ;
  1. PRNTASK ;Ask for device
  1. N POP,%ZIS
  1. K GMRCQUT
  1. S POP=0
  1. S %ZIS="MQ"
  1. D ^%ZIS
  1. I POP D Q
  1. .S GMRCMSG="Printer Busy. Try Again Later."
  1. .D EXAC^GMRCADC(GMRCMSG)
  1. .K GMRCMSG
  1. .S GMRCQUT=1
  1. Q
  1. ;
  1. PRNTIT(TMPNAME,QUERTN,QUEDESC) ;Send list to printer
  1. N ANSWER,INDEX,DOLLARH,ZTRTN,ZTDESC
  1. I $D(IO("Q")) D Q
  1. .S DOLLARH=$H
  1. .M ^XTMP("GMRCR","$"_$J,DOLLARH,"PRINT")=^TMP("GMRCR",$J,TMPNAME)
  1. .S ZTRTN=QUERTN
  1. .S ZTDESC=QUEDESC
  1. .S ZTSAVE("J")="$"_$J
  1. .S ZTSAVE("DOLLARH")=""
  1. .S ZTSAVE("TMPNAME")=""
  1. .S ZTSAVE("GMRCDG")=""
  1. .S ZTSAVE("GMRCDT1")=""
  1. .S ZTSAVE("GMRCDT2")=""
  1. .D ^%ZTLOAD,^%ZISC
  1. .K ZTSAVE
  1. .S VALMBCK="R"
  1. U IO
  1. S ANSWER=""
  1. S INDEX=""
  1. F S INDEX=$O(^TMP("GMRCR",$J,TMPNAME,INDEX)) Q:INDEX="" W ^TMP("GMRCR",$J,TMPNAME,INDEX,0),! I IOST["C-",$S($D(IOSL)#2:$Y>(IOSL-2),1:$Y>22) R "Press <ENTER> To Continue, '^' To Quit: ",ANSWER:DTIME Q:'$T!(ANSWER["^") W @IOF
  1. I ANSWER'["^",IOST["C-",$Y>1 R !,"Press <ENTER> To Continue: ",ANSWER:DTIME
  1. U IO(0)
  1. D ^%ZISC
  1. S VALMBCK="R"
  1. Q
  1. ;
  1. PRNTQ ;Print Queued report from ^XTMP global then kill off ^XTMP
  1. N INDEX
  1. U IO
  1. S INDEX=""
  1. F S INDEX=$O(^XTMP("GMRCR",J,DOLLARH,"PRINT",INDEX)) Q:INDEX="" W ^XTMP("GMRCR",J,DOLLARH,"PRINT",INDEX,0),!
  1. K ^XTMP("GMRCR",J,DOLLARH,"PRINT"),J,DOLLARH
  1. D ^%ZISC
  1. Q