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

LROLOVER.m

Go to the documentation of this file.
  1. LROLOVER ;SLC/CJS/DALISC/FHS - ROLL OVER DAILY LAB ACCESSION NUMBERS ; 22-Oct-2013 09:22 ; MKK
  1. ;;5.2;LR;**65,98,160,153,1018,1033**;NOV 01, 1997
  1. ;;
  1. EN S:$D(ZTQUEUED) ZTREQ="@"
  1. I $D(^LAB(69.9,1,"RO")),^("RO")=+$H W:'$D(ZTQUEUED) !!?20,"ROLLOVER NOT REQUIRED ",!!,$C(7) Q
  1. S U="^"
  1. I $P($G(^LAB(69.9,1,"RO")),U,2) W:'$D(ZTQUEUED) !,"ROLLOVER IS RUNNING. " Q
  1. S $P(^LAB(69.9,1,"RO"),U,2)=1
  1. ; L +^LRO(68) S X="T-1",%DT="X" D ^%DT S LRYDT=Y D DT^LRX S LRAD=DT
  1. L +^LRO(68):5 S X="T-1",%DT="X" D ^%DT S LRYDT=Y D DT^LRX S LRAD=DT ; IHS/MSC/MKK - LR*5.2*1033 -- Adding Lock Timeout
  1. LRAA F LRAA=0:0 S LRAA=$O(^LRO(68,LRAA)) Q:LRAA<1 I $D(^LRO(68,LRAA,0))#2 D LRAN:$P(^(0),U,3)="D"&('$P(^(0),U,10)) W:'$D(ZTQUEUED) !,$P($G(^LRO(68,LRAA,0)),U),?40," Completed ... "
  1. D ROLLAH
  1. S ^LAB(69.9,1,"RO")=+$H L -^LRO(68)
  1. W:'$D(ZTQUEUED) !!?30,"ALL DONE ....."
  1. K %,%H,%X,%Y,LRI,LRAA,LRAD,LRAN,LRDFN,LRDPF,LRIDT,LRIOZERO,LRLL,LRLL2,LRLL3,LRODT,LRORD,LROWDT,LRPWL,LRSN,LRSS,LRSTATUS,LRYDT,POP,LRT,X,Y,Z
  1. K LRMOVE,LRTS,LRVER,LRDFN,LROAD
  1. K ^TMP("BLRRLMUU") ; IHS/MSC/MKK - LR*5.2*1033
  1. Q
  1. LRAN S LRPWL=$P(^LRO(68,LRAA,0),U,4),LRSS=$P(^(0),U,2) S:'$D(^LRO(68,LRAA,1,0)) ^(0)="^68.01DA^" S:'$D(^LRO(68,LRAA,1,LRAD,0)) ^(0)=DT,$P(^LRO(68,LRAA,1,0),U,3)=DT,$P(^(0),U,4)=1+$P(^(0),U,4)
  1. S:'$D(^LRO(68,LRAA,1,LRAD,1,0))#2 ^(0)="^68.02PA^"
  1. F LRAN=0:0 S LRAN=$O(^LRO(68,LRAA,1,LRYDT,1,LRAN)) Q:LRAN<1 I $D(^(LRAN,3)),'$L($P(^(3),U,4)) D OVER
  1. Q
  1. OVER Q:'$O(^LRO(68,LRAA,1,LRYDT,1,LRAN,4,0))
  1. D VERCHK
  1. Q:$D(^LRO(68,LRAA,1,DT,1,LRAN,0)) ;DON'T ROLL OVER SOMEONE
  1. REQ S (LRTS,LRMOVE)=0 F S LRTS=$O(^LRO(68,LRAA,1,LRYDT,1,LRAN,4,LRTS)) Q:LRTS<.5!($G(LRMOVE)) D
  1. . Q:'$D(^(LRTS,0))#2 Q:$P(^(0),U,5)!('$D(^LAB(60,+LRTS,0))#2)
  1. . S LRMOVE=$S($P($G(^LAB(60,+LRTS,0)),U,17):1,'$L($P(^(0),U,5)):1,1:0)
  1. Q:'$G(LRMOVE)
  1. S XX=$G(^LRO(68,LRAA,1,LRYDT,1,LRAN,0)),LRDFN=+XX,LRDPF=+$P(XX,U,2),LRIDT=$P($G(^(3)),U,5) K XX
  1. S LRUID=$G(^LRO(68,LRAA,1,LRYDT,1,LRAN,.3))
  1. Q:LRDPF=62.3!('LRDFN)!('LRDPF)!('LRIDT)!('$L($P(LRUID,U)))
  1. S LRSN=+$P(^LRO(68,LRAA,1,LRYDT,1,LRAN,0),U,5),LRODT=$P(^(0),U,4)
  1. Q:'LRSN S LRSTATUS=$S($D(^LRO(69,LRODT,1,LRSN,1)):$P(^(1),U,4),1:"") Q:LRSTATUS'="C"
  1. S $P(^LRO(68,LRAA,1,LRAD,1,0),U,4)=$P(^LRO(68,LRAA,1,LRAD,1,0),U,4)+1
  1. XY I '$G(LRPWLX) M ^LRO(68,LRAA,1,LRAD,1,LRAN)=^LRO(68,LRAA,1,LRYDT,1,LRAN) D:$G(LRPWL) LRPWL
  1. S LRORD=$S($D(^LRO(68,LRAA,1,LRAD,1,LRAN,.1)):+^(.1),1:0) S:LRORD ^LRO(68,LRAA,1,LRAD,1,"D",LRORD,LRAN)=""
  1. I $D(^LRO(68,LRAA,1,LRAD,1,LRAN,3)) S X=+$P(^(3),U,3) I X S ^LRO(68,LRAA,1,LRAD,1,"E",X,LRAN)=""
  1. LRI S ^LRO(68,LRAA,1,LRAD,1,LRAN,4,0)="^68.04PA^0^0"
  1. S LRI=0 F S LRI=$O(^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRI)) Q:LRI<.5 S LRT=$S($D(^(LRI,0)):^(0),1:"") D TEST
  1. I $O(^LRO(68,LRAA,1,LRAD,1,LRAN,4,0)) D
  1. . K ^LRO(68,"C",$P(LRUID,U))
  1. . K:$L($P(LRUID,U,2)) ^LRO(68,"AF",$P(LRUID,U,2))
  1. . K:$L($P(LRUID,U,4)) ^LRO(68,"D",$P(LRUID,U,4))
  1. . D UID
  1. S LROWDT=$P(^LRO(68,LRAA,1,LRAD,1,LRAN,0),U,3),^LRO(68,LRAA,1,LROWDT,1,LRAN,9)=LRAD
  1. I $P(^LRO(68,LRAA,1,LRYDT,1,LRAN,0),U,3)'=LRYDT D CLEAN
  1. Q
  1. LRPWL ;
  1. Q:'LRPWL!($D(^LRO(68,LRPWL,1,LRAD,1,LRAN,0))#2)
  1. LRPWL1 ;
  1. N XX,LRPWLX,LRAAX,LRUID
  1. S LRPWLX=LRPWL,LRAAX=LRAA
  1. S XX=^LRO(68,LRPWL,1,LRYDT,1,LRAN,0),XX(.1)=$G(^(.1)),XX(.2)=$G(^(.2)),XX(3)=$G(^(3)),XX(.4)=$G(^(.4))
  1. S LRUID=$G(^LRO(68,LRPWL,1,LRYDT,1,LRAN,.3))
  1. I '$D(^LRO(68,LRPWL,1,LRAD,0))#2 S ^(0)=LRAD
  1. I '$D(^LRO(68,LRPWL,1,LRAD,1,0))#2 S ^(0)="^68.02PA^"
  1. S $P(^LRO(68,LRPWL,1,LRAD,1,0),U,4)=1+$P(^(0),U,4)
  1. S ^LRO(68,LRPWL,1,LRAD,1,LRAN,0)=XX,^(.1)=XX(.1),^(.2)=XX(.2),^(3)=XX(3),^(.3)=LRUID,^(.4)=XX(.4)
  1. S ^LRO(68,LRPWL,1,LRAD,1,"D",+XX(.1),LRAN)=""
  1. S ^LRO(68,LRPWL,1,LRAD,1,"E",+$P(XX(3),U,3),LRAN)=""
  1. S ^LRO(68,LRPWL,1,LRAD,1,LRAN,"AD")=$G(^LRO(68,LRPWL,1,LRYDT,1,LRAN,"AD"))
  1. M ^LRO(68,LRPWL,1,LRAD,1,LRAN,5)=^LRO(68,LRPWL,1,LRYDT,1,LRAN,5)
  1. K ^LRO(68,"C",$P(LRUID,U))
  1. S ^LRO(68,"C",$P(LRUID,U),LRPWL,LRAD,LRAN)=""
  1. N LRAA,LRPWL,XX,LRMOVE
  1. S LRPWL=0,LRAA=LRPWLX
  1. CHK S (LRTS,LRMOVE)=0 F S LRTS=$O(^LRO(68,LRAA,1,LRYDT,1,LRAN,4,LRTS)) Q:LRTS<.5!($G(LRMOVE)) D
  1. . Q:'$D(^(LRTS,0))#2 Q:$P(^(0),U,5)!('$D(^LAB(60,+LRTS,0))#2)
  1. . S LRMOVE=$S($P($G(^LAB(60,+LRTS,0)),U,17):1,'$L($P(^(0),U,5)):1,1:0)
  1. Q:'$G(LRMOVE)
  1. M ^LRO(68,LRAA,1,LRAD,1,LRAN,4)=LRO(68,LRAA,1,LRYDT,1,LRAN,4)
  1. D LRI
  1. Q
  1. CLEAN Q:$G(LRDEBUG)
  1. N DA,DIK,X,Y
  1. I $D(^LRO(68,LRAA,1,LRYDT,1,LRAN,3)) S X=+$P(^(3),U,3) I X K ^LRO(68,LRAA,1,LRYDT,1,"E",X,LRAN)
  1. S LRORD=$S($D(^LRO(68,LRAA,1,LRYDT,1,LRAN,.1)):+^(.1),1:0) K:LRORD ^LRO(68,LRAA,1,LRYDT,1,"D",LRORD,LRAN)
  1. S DA=LRAN,DA(1)=LRYDT,DA(2)=LRAA,DIK="^LRO(68,"_DA(2)_",1,"_DA(1)_",1,"
  1. D ^DIK
  1. K ^LRO(68,LRAA,1,LRYDT,1,LRAN)
  1. Q
  1. TEST I '+LRT D KB K ^LRO(68,LRAA,1,LRAD,1,LRAN,4,"AB") Q
  1. I $P(LRT,U,5) G KB
  1. K ^LRO(68,LRAA,1,LRAD,1,LRAN,"AE") S $P(^(0),U,12)=""
  1. S XX=$G(^LAB(60,+LRT,0)) I $L($P(XX,U,5)),'$P(XX,U,17) G KB
  1. S X=^LRO(68,LRAA,1,LRAD,1,LRAN,4,0),$P(X,U,3)=LRI,$P(X,U,4)=($P(X,U,4)+1),^(0)=X
  1. K ^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRT,1)
  1. I $P(LRT,U,3) S X=$P(LRT,U,3),LRLL=$P(X,";",1),LRLL2=$P(X,";",2),LRLL3=$P(X,";",3) I $D(^LRO(68.2,LRLL,1,LRLL2,1,LRLL3,0)),$P(^(0),U,2)=LRYDT,$P(^(0),U,3)=LRAN S $P(^(0),U,2)=DT
  1. Q
  1. KB K ^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRI),^LRO(68,LRAA,1,LRAD,1,LRAN,4,"B",LRI),XX Q
  1. UID ;These fields are also set in rtn LRX
  1. N DA,DIE,X,Y
  1. ; L +^LRO(68,"C")
  1. L +^LRO(68,"C"):5 ; IHS/MSC/MKK - LR*5.2*1033 -- Adding Lock Timeout
  1. S DR="16////"_$P(LRUID,U)
  1. I $P(LRUID,U,2) D
  1. . S DR=DR_";16.1////"_$P(LRUID,U,2)_";16.2////"_$P(LRUID,U,3)_";16.3////"_$P(LRUID,U,4)_";16.4////"_$P(LRUID,U,5)
  1. S DA=LRAN,DA(1)=LRAD,DA(2)=LRAA,DIE="^LRO(68,"_DA(2)_",1,"_DA(1)_",1,",DLAYGO=68
  1. D ^DIE
  1. L -^LRO(68,"C") K DLAYGO
  1. Q
  1. ;
  1. ROLLAH ; Checks results stored in LAH global pending verification, updates accession date
  1. ; on zeroth node to reflect accessions that have rolled over in ACCESSION file #68.
  1. N LRAA,LRAD,LRAN,LRLL,LRSQ,LRX,LRYDT,X,Y
  1. S X="T-1",%DT="X" D ^%DT S LRYDT=Y D DT^LRX
  1. S LRAD=$$DT^XLFDT
  1. S LRLL=0
  1. F S LRLL=$O(^LAH(LRLL)) Q:'LRLL D
  1. . ; L +^LAH(LRLL)
  1. . L +^LAH(LRLL):5 ; IHS/MSC/MKK - LR*5.2*1033 -- Adding Lock Timeout
  1. . S LRSQ=0
  1. . F S LRSQ=$O(^LAH(LRLL,1,LRSQ)) Q:'LRSQ D
  1. . . S LRX=$G(^LAH(LRLL,1,LRSQ,0))
  1. . . S LRAA=+$P(LRX,"^",3),LRAN=+$P(LRX,"^",5)
  1. . . I 'LRAA!('LRAN) Q ; No accession area/number
  1. . . I $P(LRX,"^",4)'=LRYDT Q ; Not previous accession date
  1. . . I $P($G(^LRO(68,LRAA,0)),"^",3)'="D"!($P($G(^LRO(68,LRAA,0)),"^",10)) Q ;Not a "daily" accession area using rollover.
  1. . . I '$D(^LRO(68,LRAA,1,LRAD,1,LRAN,0)) Q ; Accession doesn't exist.
  1. . . I $P(LRX,"^",4)<$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,0)),"^",3) Q ; This entry not within range of accession's original accession date.
  1. . . I $P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,0)),"^")'=$P($G(^LRO(68,LRAA,1,+$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,0)),"^",3),1,LRAN,0)),"^") Q ; LRDFN of original and rolled over accesion do not match.
  1. . . S $P(^LAH(LRLL,1,LRSQ,0),"^",4)=LRAD ; Move accession date to accession's current date.
  1. . L -^LAH(LRLL)
  1. Q
  1. VERCHK ;
  1. N LROAD,LRDFN,LRTS,LRIDT
  1. S LRDFN=+$G(^LRO(68,LRAA,1,LRYDT,1,LRAN,0)),LROAD=$P(^(0),U,3)
  1. S LRIDT=$P($G(^LRO(68,LRAA,1,LRYDT,1,LRAN,3)),U,5)
  1. I LROAD,LROAD'=LRYDT,$P($G(^LRO(68,LRAA,1,LROAD,1,LRAN,3)),U,5)=LRIDT D
  1. . Q:+$G(^LRO(68,LRAA,1,LROAD,1,LRAN,0))'=LRDFN
  1. . S LRTS=0
  1. . F S LRTS=$O(^LRO(68,LRAA,1,LRYDT,1,LRAN,4,LRTS)) Q:LRTS<1 S LRNODE=$G(^(LRTS,0)) I LRNODE D
  1. . . Q:$P(LRNODE,U,5)
  1. . . Q:'$P($G(^LRO(68,LRAA,1,LROAD,1,LRAN,4,LRTS,0)),U,5)
  1. . . S LRVER=^LRO(68,LRAA,1,LROAD,1,LRAN,4,LRTS,0) S $P(LRVER,U,7)=""
  1. . . W:$G(LRDEBUG) !,"Old = ",LRNODE,!,"New = ",LRVER
  1. . . S ^LRO(68,LRAA,1,LRYDT,1,LRAN,4,LRTS,0)=LRVER
  1. Q