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

DGPTCO1.m

Go to the documentation of this file.
  1. DGPTCO1 ;ALB/MJK - Census Status Report ; 5/2/05 2:41pm
  1. ;;5.3;PIMS;**136,383,432,696,729,1015,1016**;JUN 30, 2012;Build 20
  1. ;
  1. EN D CHKCUR W ! D DATE
  1. S DIC("A")="Generate PTF Census Status Report for Census date: ",DIC="^DG(45.86,",DIC(0)="AEMQ" S:Y]"" DIC("B")=Y
  1. D ^DIC K DIC G ENQ:Y<0
  1. S DGCN=+Y,DGCDT=+$P(Y,U,2)_".9" K DGCHOICE
  1. D DIV^DGPTCO2 G ENQ:'$D(DGCHOICE("DIV"))
  1. D STATUS^DGPTCO2 G ENQ:'$D(DGCHOICE("STATUS"))
  1. S %ZIS="NQ" D ^%ZIS K %ZIS G ENQ:POP D DOQ G ENQ:POP S DGIOP=ION_";"_IOM_";"_IOSL
  1. I 'DGQ D START G ENQ
  1. S ZTRTN="START^DGPTCO1",ZTIO=DGIOP,ZTDESC="Census Status Report"
  1. F X="DGCHOICE(","DGCDT","DGCN","DGIOP" S ZTSAVE(X)=""
  1. D ^%ZTLOAD D ^%ZISC
  1. ENQ K DGQ,DHIT,DIOEND,DGC,DGCN,DGCDT,DGIOP,DGCHOICE,DIS
  1. Q
  1. ;
  1. START ; -- produce report
  1. ;Lock global to prevent duplicate entries in Census Workfile
  1. L +^DG(45.85,"DGPT CENSUS REGEN WORKFILE"):5 I '$T D Q
  1. .N DGPTMSG
  1. .D BLDMSG^DGPTCR
  1. .I $E(IOST,1,2)'="C-" D SNDMSG^DGPTCR,ENQ Q
  1. .N DGPTLINE
  1. .S DGPTLINE=0
  1. .F S DGPTLINE=$O(DGPTMSG(DGPTLINE)) Q:'DGPTLINE W !,?5,DGPTMSG(DGPTLINE,0)
  1. .Q
  1. I '$D(^DG(45.85,"ACENSUS",DGCN)) D REGEN^DGPTCR
  1. S DIC="^DG(45.85,",(BY,FLDS)="[DGPT WORKFILE]",L=0,FR=DGCN_",,@",TO=DGCN_",,"
  1. I DGCHOICE("STATUS")'="All" S (FR,TO)=DGCN_",,"_DGCHOICE("STATUS")
  1. S DIS(0)="D DIS^DGPTCO1",DHIT="D DHIT^DGPTCO1",DIOEND="D DIOEND^DGPTCO1"
  1. S Y=$P(DGCDT,".") X ^DD("DD") S DHD="Census Status Report for "_Y
  1. S IOP=DGIOP K DGC
  1. D EN1^DIP,ENQ
  1. L -^DG(45.85,"DGPT CENSUS REGEN WORKFILE")
  1. END Q
  1. ;
  1. DIOEND ; -- logic called at end of rpt for totals
  1. I $E(IOST)="C" S DIR(0)="E" D ^DIR K DIR G DIOENDQ:X="^"
  1. N D,S,Z S D="",Z="zzzz",$P(DGLN,"-",81)="" D NOW^%DTC S Y=% X ^DD("DD")
  1. W @IOF,?30,"Census Status Report",?59,Y,!!?26,"Division Summary Statistics",!
  1. ;
  1. F I=0:0 S D=$O(DGC(D)) Q:D="" D DIV S S="" F J=0:0 S S=$O(DGC(D,S)) Q:S="" S C=DGC(D,S) D PRT I $O(DGC(D,S))=Z D TOT Q
  1. W !,DGLN,!
  1. I $E(IOST)="C" S DIR(0)="E" D ^DIR K DIR
  1. DIOENDQ K C,DGLN Q
  1. ;
  1. DIV ;
  1. W !,DGLN
  1. I D="TOT" W !!?5,"OVERALL STATISTICS:" Q
  1. W:$D(^DG(40.8,+D,0)) !?5,$P(^(0),U),":"
  1. Q
  1. ;
  1. TOT ;
  1. W !?10,$S(D="TOT":"Grand Total: ",1:"Division Total: "),?30,$J(DGC(D,Z),4)
  1. Q
  1. ;
  1. PRT ;
  1. W !?10,S,": ",?30,$J(C,4)
  1. S:D'="TOT" DGC("TOT",S)=$S($D(DGC("TOT",S)):DGC("TOT",S),1:0)+C,DGC("TOT",Z)=$S($D(DGC("TOT",Z)):DGC("TOT",Z),1:0)+C
  1. Q
  1. ;
  1. DIS ; -- $T logic for each entry
  1. N X S X=^DG(45.85,D0,0)
  1. I DGCHOICE("DIV")=1 G DISQ
  1. I $D(DGCHOICE("DIV",$S($D(^DIC(42,+$P(X,U,6),0)):+$P(^(0),U,11),1:0)))
  1. DISQ Q
  1. ;
  1. DHIT ; -- logic called for each entry printed cum stats; DGC(div,status)
  1. N D,S,Z S Z="zzzz" D STATUS
  1. S S=X,D=$S($D(^DIC(42,+$P(^DG(45.85,D0,0),U,6),0)):+$P(^(0),U,11),1:0)
  1. S DGC(D,S)=$S($D(DGC(D,S)):DGC(D,S),1:0)+1,DGC(D,Z)=$S($D(DGC(D,Z)):DGC(D,Z),1:0)+1
  1. Q
  1. ;
  1. FIND ; -- find CENSUS rec#
  1. ; input: D0 := ifn of 45.85
  1. ; output: X := status ; DGCI := census ifn ; PTF := ptf ifn
  1. ;
  1. S DGCI="",X=0,Y=$S($D(^DG(45.85,D0,0)):^(0),1:"")
  1. G FINDQ:'Y S PTF=+$P(Y,U,12)
  1. F DGCI=0:0 S DGCI=$O(^DGPT("ACENSUS",PTF,DGCI)) Q:'DGCI I $D(^DGPT(DGCI,0)),$P(^(0),U,13)=+$P(Y,U,4) S X=+$P(^(0),U,6) Q
  1. FINDQ Q
  1. ;
  1. STATUS ; -- compute CENSUS status
  1. D FIND S X=$P($P($P(^DD(45,6,0),U,3),X_":",2),";")
  1. K DGCI,PTF,Y Q
  1. ;
  1. CREC ; -- compute CENSUS rec#
  1. D FIND S X=DGCI
  1. K DGCI,PTF,Y Q
  1. ;
  1. DATE ; -- calculate default census date
  1. S Y=$S($D(^DG(45.86,+$O(^DG(45.86,"AC",1,0)),0)):+^(0),1:"")
  1. X:Y]"" ^DD("DD")
  1. Q
  1. DOQ ;-- check if output device is queued. if not ask
  1. S DGQ=0
  1. I $D(IO("Q")) S DGQ=1 G DOQT
  1. I IO=IO(0) G DOQT
  1. S DIR(0)="Y",DIR("A")="DO YOU WANT YOUR OUTPUT QUEUED",DIR("B")="YES"
  1. D ^DIR
  1. I Y S DGQ=1
  1. DOQT ;
  1. K Y,DIR
  1. Q
  1. CHKCUR ; -- checks if new PTF Census Date record is needed
  1. N DGIEN,DGCLOSE,DGACT,ERR
  1. S DGIEN=$S($D(^DG(45.86,+$O(^DG(45.86,"AC",1,0)),0)):+^(0),1:"")
  1. S DGIEN=$O(^DG(45.86,"B",+$G(DGIEN),0))
  1. S ERR=0
  1. I 'DGIEN S ERR=1 D ERR Q
  1. ; look at last census closeout date
  1. S DGCLOSE=$P($G(^DG(45.86,DGIEN,0)),U,2)
  1. I 'DGCLOSE S ERR=1 D ERR Q
  1. I $P($G(^DG(45.86,DGIEN,0)),U)<3070930 D
  1. . I $E(DGCLOSE,6,7)'=19 S ERR=1
  1. I $P($G(^DG(45.86,DGIEN,0)),U)>3070930&($P($G(^DG(45.86,DGIEN,0)),U)<=3101231) D
  1. . I $E(DGCLOSE,6,7)'=14 S ERR=1
  1. I $P($G(^DG(45.86,DGIEN,0)),U)>3101231 D
  1. . I $E(DGCLOSE,6,7)'="07" S ERR=1
  1. S DGACT=$P($G(^DG(45.86,DGIEN,0)),U,4)
  1. I 'DGACT S ERR=1
  1. I ERR D ERR Q
  1. I DT>DGCLOSE D ADDREC
  1. Q
  1. ADDREC ; -- add new record
  1. N DA,DIE,DR,DGYR,DGMONTH,DGSTRT,DGENDT,ERR,FDA,IEN696,ERR696
  1. ; first inactivate last record
  1. S DA=DGIEN,DIE="^DG(45.86,",DR=".04////0" D ^DIE
  1. S DGYR=$E(DGCLOSE,1,3)
  1. ; create new record depending on last closeout date (month)
  1. S DGMONTH=$E(DGCLOSE,4,5)
  1. I DGMONTH>"00",DGMONTH<"04" S DGSTRT=DGYR_"0101",DGENDT=DGYR_"0331",DGCLOSE=DGYR_"0407"
  1. I DGMONTH>"03",DGMONTH<"07" S DGSTRT=DGYR_"0401",DGENDT=DGYR_"0630",DGCLOSE=DGYR_"0707"
  1. I DGMONTH>"06",DGMONTH<"10" S DGSTRT=DGYR_"0701",DGENDT=DGYR_"0930",DGCLOSE=DGYR_"1007"
  1. I DGMONTH>"09",DGMONTH<"13" S DGSTRT=DGYR_"1001",DGENDT=DGYR_"1231",DGYR=DGYR+1,DGCLOSE=DGYR_"0107"
  1. S FDA(696,45.86,"?+1,",.01)=DGENDT
  1. S FDA(696,45.86,"?+1,",.02)=DGCLOSE
  1. S FDA(696,45.86,"?+1,",.03)=2970331
  1. S FDA(696,45.86,"?+1,",.04)=1
  1. S FDA(696,45.86,"?+1,",.05)=DGSTRT
  1. D UPDATE^DIE("","FDA(696)","IEN696","ERR696")
  1. I $D(ERR696) S ERR=1 D ERR
  1. Q
  1. ERR ;
  1. D BMES^XPDUTL("Problem with PTF CENSUS DATE File (#45.86).")
  1. D BMES^XPDUTL("Please notify your Supervisor !!.")
  1. Q
  1. ;