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

DG53528P.m

Go to the documentation of this file.
  1. DG53528P ;ALB/ERC - COMBAT VET PRE & POSTINSTALLS ;7/22/03
  1. ;;5.3;Registration;**528,1015**; Aug 13, 1993;Build 21
  1. ;
  1. PRE ;add 5 new entries to the INCONSISTENT DATA ELEMENTS file (#38.6)
  1. ;to alert users that critical dates for the determination of CV
  1. ;status are either imprecise or missing
  1. ;
  1. ;first check to see if patch already installed - if so do not
  1. ;add these new entries
  1. I $$PATCH^XPDUTL("DG*5.3*528") Q
  1. N DGK,DGWP
  1. K XPDABORT
  1. F DGK=67:1:71 I $D(^DGIN(38.6,DGK)) Q:$G(XPDABORT)=2 D
  1. . D BMES^XPDUTL(" ** Internal Entry # "_DGK_" already exists in file #38.6, contact NVS **")
  1. . S XPDABORT=2
  1. I $G(XPDABORT)'=2 D
  1. . D BMES^XPDUTL(" >> Adding new entries into the INCONSISTENT DATA ELEMENTS file (#38.6).")
  1. . D ADD
  1. Q
  1. ADD ;set up FDA arrays for the addition of new entries in 38.6
  1. N DG,DG67,DG68,DG69,DG70,DG71,DGERR,DGFDA,DGIEN,DGWORD,DGX
  1. D SET
  1. F DGX=DG67,DG68,DG69,DG70,DG71 D
  1. . K DGFDA
  1. . S DGFDA(38.6,"+1,",.01)=$P(DGX,U)
  1. . S DGFDA(38.6,"+1,",2)=$P(DGX,U,2)
  1. . S DGFDA(38.6,"+1,",50)="DGWP"
  1. . S DGWP(1,0)=DGWORD
  1. . I $D(DGFDA) D UPD
  1. Q
  1. UPD ;call UPDATE^DIE
  1. S DGIEN(1)=$P(DGX,U,3)
  1. D UPDATE^DIE("E","DGFDA","DGIEN","DGERR")
  1. I $D(DGERR) D BMES^XPDUTL(" >>> ERROR! "_$P($G(DGX),U)_" not added to file #38.6"),MES^XPDUTL(DGERR("DIERR",1)_": "_DGERR("DIERR",1,"TEXT",1)) Q
  1. D BMES^XPDUTL(" "_$P($G(DGX),U)_" successfully added.")
  1. Q
  1. SET ;set the entry field values into variables
  1. N DGA,DGB
  1. S DGA="NO CV, CHECK "
  1. S DGB="Imprecise or Missing"
  1. S DGWORD="Combat Vet status cannot be determined if critical dates are missing or imprecise."
  1. S DG67=DGA_"SERVICE SEP DATE^SERVICE SEPARATION DATE [LAST] "_DGB_"^"_67
  1. S DG68=DGA_"COMBAT TO DATE^COMBAT TO DATE "_DGB_"^"_68
  1. S DG69=DGA_"YUGOSLAV TO DATE^YUGOSLAVIA TO DATE "_DGB_"^"_69
  1. S DG70=DGA_"SOMALIA TO DATE^SOMALIA TO DATE "_DGB_"^"_70
  1. S DG71=DGA_"PERS GULF TO DATE^PERSIAN GULF TO DATE "_DGB_"^"_71
  1. Q
  1. ;
  1. POST ;post install routine for Combat Veteran - will loop through the
  1. ;Patient file and populate field .5295 (Combat Veteran End Date)
  1. ;for any veterans who are eligible (.5296 will be also stuffed with
  1. ;the current date in SERCV^DGCV and DELCV^DGCV)
  1. N DFN,DG,DGDONE,ZTSAVE
  1. D POST1 Q:DGDONE
  1. D POSTQ
  1. Q
  1. POST1 ;check to see if process already finished, already started or currently
  1. ;running
  1. N DGMSG,DGSTAT,DGTASK
  1. S DGDONE=0
  1. I '$D(^XTMP("DGCV")) Q
  1. I $G(^XTMP("DGCV","DONE"))=1 D Q
  1. . S DGMSG="COMBAT VET INITIAL SEEDING COMPLETED ON PREVIOUS INSTALL. EXITING"
  1. . D BMES^XPDUTL(.DGMSG)
  1. . S DGDONE=1
  1. I $G(DGREQ)'=1 K ^XTMP("DGCV")
  1. S DGTASK=$G(^XTMP("DGCV","TASK"))
  1. I DGTASK'="" D
  1. . S DGSTAT=$$ACTIVE(DGTASK)
  1. . I DGSTAT>0 S DGMSG="Task: "_DGTASK_" is currently running, cannot start duplicate process." D
  1. . . D BMES^XPDUTL(.DGMSG)
  1. . . S DGDONE=1
  1. Q
  1. ACTIVE(DGTASK) ;check to see if task already running
  1. ; DGTASK - taskman task number
  1. ; output - (1,0) is the task running?
  1. N DGSTAT,Y,ZTSK
  1. S DGSTAT=0,ZTSK=DGTASK
  1. D STAT^%ZTLOAD
  1. S Y=ZTSK(1)
  1. I Y=0 S DGSTAT=-1
  1. I ",1,2,"[(","_Y_",") S DGSTAT=1
  1. I ",3,5,"[(","_Y_",") S DGSTAT=0
  1. Q DGSTAT
  1. POSTQ ;queue the task
  1. N DGTXT,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSK
  1. S ZTRTN="LOOP^DG53528P",ZTIO="",ZTDTH=$$NOW^XLFDT()
  1. S ZTDESC="COMBAT VET INITIAL DATA SEEDING"
  1. S ZTSAVE("POS1")="",ZTSAVE("XPDQUES")=""
  1. S ZTSAVE("*")=""
  1. D NOW^%DTC
  1. S ZTDTH=%
  1. D ^%ZTLOAD
  1. S ^XTMP("DGCV","TASK")=ZTSK
  1. S DGTXT(1)="Task: "_ZTSK_" queued."
  1. D BMES^XPDUTL(.DGTXT)
  1. Q
  1. LOOP ;
  1. N DGC,DGT,X,X1,X2,ZTSTOP
  1. S (DFN,DGC,DGT,ZTSTOP)=0
  1. S DFN=+$G(^XTMP("DGCV","DFN"))
  1. S X1=DT,X2=30 D C^%DTC
  1. S ^XTMP("DGCV",0)=X_"^"_$$DT^XLFDT_"^Combat Veteran Initial Patient File Seeding - DG*5.3*528"
  1. I '$D(^XTMP("DGCV","START")) S ^XTMP("DGCV","START")=$$FMTE^XLFDT($$NOW^XLFDT(),"5P")
  1. I $G(XPDQUES("POS1","B"))]"" S IOP=$G(XPDQUES("POS1","B")) ;result of install question
  1. I $G(IOP)]"" D
  1. . S IOP=$O(^%ZIS(1,"B",IOP,""))
  1. . S IOP="`"_IOP
  1. I $G(IOP)]"" D
  1. . S ^XTMP("DGCV","DEVICE")=IOP
  1. . I '$D(^XTMP("DGCV",0)) D
  1. . . N X,X1,X2
  1. . . S X1=DT,X2=60 D C^%DTC
  1. . . S ^XTMP("DGCV",0)=X_"^"_$$DT^XLFDT_"^Combat Veteran Initial Patient File Seeding - DG*5.3*528"
  1. ;
  1. F S DFN=$O(^DPT(DFN)) Q:+DFN=0!(ZTSTOP) D
  1. . S DG=0
  1. . S DGT=DGT+1 ;count of records checked
  1. . S ^XTMP("DGCV","DFN")=DFN ;current DFN
  1. . I (DGT#1000=0),($$S^%ZTLOAD) S ZTSTOP=1 ;is there a stop request?
  1. . S DG=$$CVELIG^DGCV(DFN)
  1. . I +$G(DG)=1 D
  1. . . S DGSRV=$$GET1^DIQ(2,DFN_",",.327,"I")
  1. . . I $G(DGSRV)']"" Q
  1. . . D SETCV^DGCV(DFN,DGSRV)
  1. . . S DGC=DGC+1
  1. . S ^XTMP("DGCV","COUNT")=DGT_"^"_DGC
  1. . Q:$G(DGSRV)']""
  1. . I $G(DG)=0!($G(DG)=1)!($G(DG)']"") Q
  1. . D RPT^DGCV1(DG)
  1. S $P(^XTMP("DGCV","START"),U,2)=$$FMTE^XLFDT($$NOW^XLFDT(),"5P")
  1. I ZTSTOP D Q
  1. . N DGMSG,XMDUZ,XMSUB,XMTEXT,XMY
  1. . S XMSUB="COMBAT VET INITIAL DATA SEEDING"
  1. . S DGMSG(1)="Patch DG*5.3*528"
  1. . S DGMSG(2)="Combat Veteran Initial database seeding was interrupted by"
  1. . S DGMSG(3)="user request. Please re-start by using the following command at the"
  1. . S DGMSG(4)="programmer prompt."
  1. . S DGMSG(5)="D REQUE^DG53528P"
  1. . D BMES^XPDUTL(.DGMSG)
  1. . D SENDMSG^XMXAPI(DUZ,XMSUB,"DGMSG",DUZ)
  1. D REPORT^DGCV1
  1. N DGMSG
  1. S DGMSG(1)=""
  1. S DGMSG(2)=" Patient file seeding completed...."
  1. S XMSUB="COMBAT VET INITIAL DATA SEEDING - DG*5.3*528"
  1. D SENDMSG^XMXAPI(DUZ,XMSUB,"DGMSG",DUZ)
  1. D BMES^XPDUTL(.DGMSG)
  1. S ^XTMP("DGCV","DONE")=1
  1. K DG,DGCOM,DGCVDT,DGGULF,DGSOM,DGSRV,DGYUG
  1. Q
  1. REQUE ;requeue initial seeding if interrupted
  1. N DGREQ
  1. S DGREQ=1
  1. D POST
  1. Q