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