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

DGPTCR.m

Go to the documentation of this file.
  1. DGPTCR ;ALB/MJK - Census Worklist Re-gen ; JAN 27, 2005
  1. ;;5.3;Registration;**136,383,643,1015**;Aug 13, 1993;Build 21
  1. ;
  1. GEN ; -- ask user regen ques
  1. D CHKCUR^DGPTCO1
  1. W ! D DATE^DGPTCO1
  1. S DIC("A")="Generate CENSUS WORKFILE for Census date: ",DIC="^DG(45.86,",DIC(0)="AEMQ" S:Y]"" DIC("B")=Y
  1. D ^DIC K DIC G GENQ:Y<0 S DGCN=+Y,DGCDT=+$P(Y,U,2)_".9"
  1. ;
  1. GEN1 W !!,"Are you sure" S %=2 D YN^DICN
  1. I %<0!(%=2) W " (Ok, work file will remain the same.)" G GENQ
  1. I '% W !?5,"Answer 'YES' if you want the system to re-calculate which",!?5,"admissions require Census records.",!?5,"Otherwise, answer 'NO'." G GEN1
  1. S ZTRTN="REGEN^DGPTCR",ZTIO="",ZTDESC="Regenerating CENSUS WORKFILE"
  1. S ZTSAVE("DGCN")="",ZTSAVE("DGCDT")="" W ! D ^%ZTLOAD
  1. GENQ K DGCN,%,Y Q
  1. ;
  1. REGEN ; -- census workfile generation
  1. ; -- kill off old values
  1. ; input: DGCN := ifn of census date file
  1. ; DGCDT := date of census
  1. ; DGFIRST := flag(1/0) to send bulletin (option)
  1. ;
  1. ;Lock global to prevent duplicate entries in Census Workfile
  1. L +^DG(45.85,"DGPT CENSUS REGEN WORKFILE"):5 I '$T N DGPTMSG D BLDMSG,SNDMSG Q
  1. K ^UTILITY("DGPT REGEN",$J) S:'$D(XQM) XQM=0
  1. S:'$D(DGFIRST) DGFIRST='$O(^DG(45.85,"ACENSUS",DGCN,0))
  1. S DGOLD="^UTILITY(""DGPT REGEN"",$J,""OLD"")",DGNEW="^UTILITY(""DGPT REGEN"",$J,""NEW"")"
  1. F DGI=0:0 S DGI=$O(^DG(45.85,"ACENSUS",DGCN,DGI)) Q:'DGI D
  1. . S DIK="^DG(45.85,",DA=DGI
  1. . I $D(^DG(45.85,DA,0)) D
  1. . . S DGPTF=$P(^DG(45.85,DA,0),U,12)
  1. . . S @DGOLD@(+^DG(45.85,DA,0),+$P(^(0),U,3),+DGPTF)="" D ^DIK K DIK,DGPTF
  1. ; -- scan and create new values
  1. F DGDT=0:0 S DGDT=$O(^DGPM("ATT1",DGDT)) Q:'DGDT!(DGDT>DGCDT) F DGAD=0:0 S DGAD=$O(^DGPM("ATT1",DGDT,DGAD)) Q:'DGAD D CHK
  1. D FEE
  1. S DIE="^DG(45.86,",DA=DGCN,DR=".06///NOW" D ^DIE
  1. L -^DG(45.85,"DGPT CENSUS REGEN WORKFILE")
  1. D BULL
  1. Q K DGEW,DGOLD,DGI,DGMV,DGAD0,DGAD1,DGDT,DFN,DGFIRST,^UTILITY("DGPT REGEN",$J),DGOLD,DGNEW
  1. Q
  1. ;
  1. CHK ; -- determine if good adm then set work entry
  1. G CHKQ:'$D(^DGPM(DGAD,0)) S DGPMCA=DGAD,(DGPMAN,DGAD0)=^(0)
  1. S DFN=+$P(DGAD0,U,3) G CHKQ:'$D(^DPT(DFN,0))
  1. S DGT=DGCDT D WARD^DGPTC1 G CHKQ:'Y S DGCWD=+Y
  1. S DGPTF=+$P(DGAD0,U,16)
  1. S DGAD1=$S($D(^DGPM(+$P(DGAD0,U,17),0)):^(0),1:"")
  1. S:'$D(@DGOLD@(DFN,DGAD,+DGPTF)) @DGNEW@(DFN,DGAD,+DGPTF)="" K @DGOLD@(DFN,DGAD,+DGPTF)
  1. S X=DFN,DIC="^DG(45.85,",DIC(0)="L",DIC("DR")="[DGPT STUFF ENTRY]"
  1. K DD,DO D FILE^DICN K DIC
  1. CHKQ K DFN,DGT,DGPMCA,DGPMAN,DGCWD Q
  1. FEE ; --check for fee entries
  1. F DFN=0:0 S DFN=$O(^DGPT("AFEE",DFN)) Q:'DFN D
  1. . F DGDT=0:0 S DGDT=$O(^DGPT("AFEE",DFN,DGDT)) Q:'DGDT D
  1. ..; -- dgds=discharge date
  1. .. S PTFEE=$O(^DGPT("AFEE",DFN,DGDT,0))
  1. .. Q:'$D(^DGPT(PTFEE,0))
  1. .. Q:$P(^DGPT(PTFEE,0),U,11)=2
  1. .. S DGDS="" I $D(^DGPT(PTFEE,70)) S DGDS=$P(^(70),"^")
  1. .. I DGDS="" S DGDS=9999999
  1. .. D FEECHK
  1. Q
  1. FEECHK ; -- determine if good adm then set work entry
  1. G FEECHKQ:'$D(^DGPT(PTFEE,0))
  1. G FEECHKQ:'$D(^DPT(DFN,0))
  1. I DGDT<DGCDT,DGDS>DGCDT D
  1. . S DGAD0=DGDT,$P(DGAD0,U,16)=PTFEE
  1. . S DGAD1=$S((DGDS=9999999):"",1:DGDS)
  1. . S:'$D(@DGOLD@(DFN,0,+PTFEE)) @DGNEW@(DFN,0,+PTFEE)="" K @DGOLD@(DFN,0,+PTFEE)
  1. . S X=DFN,DIC="^DG(45.85,",DIC(0)="L",DIC("DR")="[DGPT STUFF ENTRY]"
  1. . K DD,DO D FILE^DICN K DIC
  1. FEECHKQ K PTFEE,DGDS Q
  1. ;
  1. BULL ; -- bull to user re-generating
  1. G BULLQ:DGFIRST K ^UTILITY("DGPT REGEN",$J,"TEXT")
  1. K DGBLK S $P(DGBLK," ",100)="",Y=+^DG(45.86,DGCN,0) X ^DD("DD")
  1. S XMSUB="Census Workfile Update (CENSUS DATE: "_Y_")",XMY(DUZ)="",XMTEXT="^UTILITY(""DGPT REGEN"",$J,""TEXT"",",DGLINE=0
  1. D BLANK
  1. S Y=$P(^DG(45.86,DGCN,0),U,6) X ^DD("DD") S DGL=" Census Work File Regeneration Finished: "_Y D SET,BLANK
  1. I $D(DGPTCV5) K @DGOLD,@DGNEW ;for v5 conversion only
  1. I '$D(@DGOLD),'$D(@DGNEW) D BLANK S DGL=" **** Work File did NOT change as a result of update. ****" D SET G BULL1
  1. S DGL="Changes resulting from regeneration of census work file:" D SET
  1. D OLD:$D(@DGOLD),NEW:$D(@DGNEW)
  1. BULL1 D ^XMD
  1. BULLQ K DGBLK,DGI,DGX,DGL,DGLINE,XMY,XMSUB,XMTEXT Q
  1. ;
  1. SET ; -- set line in xmtext array
  1. S DGLINE=DGLINE+1
  1. S ^UTILITY("DGPT REGEN",$J,"TEXT",DGLINE,0)=DGL
  1. Q
  1. ;
  1. BLANK S DGL=" " D SET Q
  1. ;
  1. OLD ;
  1. D BLANK
  1. S DGL=">>> OLD ADMISSIONS no longer needing a Census Record <<< " D SET,HEAD
  1. F DFN=0:0 S DFN=$O(@DGOLD@(DFN)) Q:'DFN F DGAD=0:0 S DGAD=$O(@DGOLD@(DFN,DGAD)) Q:'DGAD D AD
  1. Q
  1. ;
  1. NEW ;
  1. D BLANK,BLANK
  1. S DGL=">>> NEW ADMISSIONS added to workfile needing a Census Record <<< " D SET,HEAD
  1. F DFN=0:0 S DFN=$O(@DGNEW@(DFN)) Q:'DFN F DGAD=0:0 S DGAD=$O(@DGNEW@(DFN,DGAD)) Q:'DGAD D AD
  1. F DFN=0:0 S DFN=$O(@DGNEW@(DFN)) Q:'DFN F PTFEE=0:0 S PTFEE=$O(@DGNEW@(DFN,0,+PTFEE)) Q:'PTFEE D AD1
  1. Q
  1. ;
  1. D BLANK
  1. S DGL="Name Admission Date PTF# Census#" D SET
  1. S DGL="---- -------------- ---- -------" D SET
  1. Q
  1. ;
  1. S DGL=$E($S($D(^DPT(DFN,0)):$P(^(0),U),1:"")_DGBLK,1,20)_" ("_$E($P(^(0),U,9),6,10)_")"
  1. S Y=+DGX X ^DD("DD") S DGL=DGL_$E(DGBLK,1,5)_$E(Y_DGBLK,1,20)_$E(DGBLK,1,4)_$J($P(DGX,U,16),5)_$E(DGBLK,1,8)
  1. F DGCI=0:0 S DGCI=$O(^DGPT("ACENSUS",+$P(DGX,U,16),DGCI)) Q:'DGCI I $D(^DGPT(DGCI,0)),$P(^(0),U,13)=DGCN S DGL=DGL_$J(DGCI,5) Q
  1. D SET
  1. ADQ K DGCI Q
  1. AD1 G AD1Q:'$D(^DGPT(PTFEE,0)) S DGX=^(0),DGL=""
  1. S DGL=$E($S($D(^DPT(DFN,0)):$P(^(0),U),1:"")_DGBLK,1,20)_" ("_$E($P(^(0),U,9),6,10)_")"
  1. S Y=$P(DGX,U,2) X ^DD("DD") S DGL=DGL_$E(DGBLK,1,5)_$E(Y_DGBLK,1,20)_$E(DGBLK,1,4)_$J(PTFEE,5)_$E(DGBLK,1,8)
  1. F DGCI=0:0 S DGCI=$O(^DGPT("ACENSUS",PTFEE,DGCI)) Q:'DGCI I $D(^DGPT(DGCI,0)),$P(^(0),U,13)=DGCN S DGL=DGL_$J(DGCI,5) Q
  1. D SET
  1. AD1Q Q
  1. ;
  1. BLDMSG ;Build message text if regen currently running
  1. S DGPTMSG(1,0)="The Census Status Report or the Regenerate Census Workfile option was"
  1. S DGPTMSG(2,0)="running at the time of your request. If these options are scheduled"
  1. S DGPTMSG(3,0)="simultaneously, duplicate census records may be created in"
  1. S DGPTMSG(4,0)="the Census Workfile."
  1. S DGPTMSG(5,0)=""
  1. S DGPTMSG(6,0)="To prevent this possible duplication, these options may not be"
  1. S DGPTMSG(7,0)="scheduled at the same time. Please try again."
  1. Q
  1. SNDMSG ;Generate mail message to user
  1. N XMSUB,XMDUZ,XMY,XMTEXT
  1. S XMSUB="Could not generate Census Workfile"
  1. S XMDUZ="Census Workfile option"
  1. S XMY(DUZ)=""
  1. S XMTEXT="DGPTMSG("
  1. D ^XMD
  1. Q