- LRWRKLST ;DALOI/STAFF - LONG ACCESSION LIST ;Mar 22, 2021@17:48
- ;;5.2;LAB SERVICE;**1,17,38,153,185,221,268,362,350,536,543,555,565**;Sep 27, 1994;Build 7
- ;
- N LRDICS
- ;
- ; Save and restore DIC("S") if micro long form accession option (LRMIACC1).
- I $D(DIC("S")) S LRDICS=DIC("S")
- D LREND
- I $D(LRDICS) S DIC("S")=LRDICS
- ;
- S LRDT=$$FMTE^XLFDT($$NOW^XLFDT,"5MZ")
- ;
- S LREND=0
- S DIC="^LRO(68,",DIC(0)="AEMOQ"
- D ^DIC S LRAA=+Y,LRNAME=$P(Y,U,2)
- I LRAA<1 D LREND Q
- ;
- ; Ask if list by date rather than accession number
- I $P(^LRO(68,LRAA,0),U,3)="Y" D STAR^LRWU3 S LRLAST=$G(LAST)
- I LREND D LREND Q
- ; List by accession number
- I '$D(LRSTAR) D PHD
- I LREND D LREND Q
- ;
- W ; from LRVER, LRVR
- ; Added to protect "%*" variables from %ZTLOAD corruption
- N %,%A,%A0,%B,%B1,%B2,%B3,%BA,%BU,%C,%D1,%D2,%DT,%E,%G,%H,%I,%J
- N %J1,%K,%M,%N,%P,%S,%T,%W,%W0,%X,%Y
- N A0,C,D,DD,DDH,DDQ,DDSV,DG,DH,DIC,DIFLD,DIR,DIRO,DIROUT,DIRUT
- N DIX,DIY,DISYS,DO,DP,DQ,DTOUT,DU,DZ,X1,XQH
- ;
- I '$D(^LRO(68,LRAA,1,LRAD,1,0)),'$D(LRSTAR) D LREND Q
- ;
- S (LRUNC,LRTSE)=0
- S:'$D(LRNAME) LRNAME=$P(^LRO(68,LRAA,0),U,1)
- ;
- S DIR(0)="YO",DIR("A")="Do you want a specific test",DIR("B")="NO"
- D ^DIR
- I $D(DIRUT) D LREND Q
- I Y=1 D
- . N DIC,X,Y
- . S DIC="^LAB(60,",DIC(0)="AEZOQ"
- . D ^DIC
- . I Y>0 S LRTSE=+Y
- ;
- K DIR
- S DIR(0)="YO",DIR("A")="Do you want only incomplete entries",DIR("B")="YES"
- D ^DIR
- I $D(DIRUT) D LREND Q
- S LRUNC=Y
- ;
- S %ZIS="Q" D ^%ZIS
- I POP D ^%ZISC,LREND Q
- ;
- ; Queue report via Taskman
- I $D(IO("Q")) D Q
- . N ZTDESC,ZTSK,ZTRTN,ZTIO,ZTSAVE,%T
- . S ZTRTN="ENT^LRWRKLST",ZTDESC="Long form accession list",ZTSAVE("LR*")=""
- . D ^%ZTLOAD,^%ZISC
- . W !,"Task ",$S($G(ZTSK):ZTSK,1:"NOT")," Queued"
- . D LREND K IO("Q")
- ;
- ENT ;
- ;
- N LRTST,LRMIPND
- ;
- I $D(ZTQUEUED) S ZTREQ="@"
- S (LREND,LRSTOP)=0
- ;
- ;
- U IO
- D HED,URG^LRX
- ;
- ; Process by accession date
- I '$D(LRSTAR) D
- . S LRAN=LRFAN-1
- . F S LRAN=$O(^LRO(68,LRAA,1,LRAD,1,LRAN)) Q:'LRAN!(LRAN>LRLAN) D Q:LRSTOP
- . . S LREND=0 D TD
- . . I LREND Q
- . . D LST,TESTS
- ;
- ; Process by date received in lab - yearly accession area
- I $D(LRSTAR) D
- . F S LRAD=$O(^LRO(68,LRAA,1,LRAD)) Q:LRAD<1!(LRAD>LRWDTL) D AC Q:LRSTOP
- ;
- D ^%ZISC,LREND
- Q
- ;
- ;
- TD ; Check tests on accession to determine if meets criteria to display.
- ; If incomplete only (LRUNC=1) and complete date then skip
- ; If not specific test selected (LRTSE=file #60 ien) then skip
- ; Otherwise set LRTST array with file #60 ien.
- ;
- K LRTST,LRMIPND
- ;
- I '$D(^LRO(68,LRAA,1,LRAD,1,LRAN,0)) S LREND=1 Q
- S LRSN=+$P(^LRO(68,LRAA,1,LRAD,1,LRAN,0),U,5),LRDAT=+$P(^(0),U,4)
- S LRI=0
- F S LRI=$O(^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRI)) Q:LRI<.5 D
- . I LRTSE,LRTSE'=+^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRI,0) Q
- . ;LR*5.2*536 added line below
- . I $P(^LRO(68,LRAA,0),U,2)="MI",$P(^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRI,0),"^",5) D MICRO
- . I LRUNC,$P(^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRI,0),"^",5) Q
- . S LRTST(LRI)=""
- ;
- I '$D(LRTST) S LREND=1
- Q
- ;
- MICRO ;further evaluation for Microbiology test
- N LRDFNX,LRIDTX,LREXCODE,LRMIAREA
- S LRDFNX=$P(^LRO(68,LRAA,1,LRAD,1,LRAN,0),U)
- S LRIDTX=$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,3)),U,5)
- S LREXCODE=$P($G(^LAB(60,LRI,0)),"^",14)
- Q:'LREXCODE
- S LREXCODE=$G(^LAB(62.07,LREXCODE,.1))
- ;Logic below is the same as the logic in result verification
- ;routine LRMIEDZ2 which determines which Microbiology area is
- ;defined for a Microbiology test
- S LRMIAREA=$S(LREXCODE["11.5":1,LREXCODE["23":11,LREXCODE["19":8,LREXCODE["15":5,LREXCODE["34":16,1:"")
- ;If the [area] RPT DATE APPROVED field is null, display this test as "pending"
- ;LR*5.2*543: Add check at 6th piece as to whether has been marked "not performed" or "merged".
- I $P(^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRI,0),"^",6)']"",$D(^LR(LRDFNX,"MI",LRIDTX,LRMIAREA)),$P(^(LRMIAREA),U)="" D
- . ;Include on report as a pending test if user specific only incompletes
- . I LRUNC S LRTST(LRI)=""
- . ;flag as a pending test for section TS2
- . S LRMIPND(LRI)=""
- Q
- ;
- TESTS ;
- N S1,S2
- ;
- D CHKPAGE^LRWRKLS1
- Q:LRSTOP!LREND
- ;
- Q:'$D(^LRO(68,LRAA,1,LRAD,1,LRAN,4,0))
- ;
- S LRSPEC=+$G(^LRO(68,LRAA,1,LRAD,1,LRAN,5,1,0)),LRSAMP=$S(LRSPEC:$P(^(0),U,2),1:"")
- S S1=$P($G(^LAB(61,+LRSPEC,0)),U,1)
- S S2=$P($G(^LAB(62,+LRSAMP,0)),U,1)
- ;
- W !," SAMPLE: ",S1_$S(S1'=S2:" "_S2,1:"")
- S LN=LN+1
- ;
- S LRLO69=$G(^LRO(69,LRDAT,1,LRSN,0))
- I LRLO69'="",$D(^LRO(69,LRDAT,1,LRSN,1)),$L($P(^(1),U,6)) W !,$P(^(1),U,6) S LN=LN+1
- ;
- K LRNAC
- S LRI=0
- F S LRI=$O(LRTST(LRI)) Q:'LRI D TS2
- ;
- I '$D(LRNAC),$L($P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,3)),U,4)) D
- . W !,"ALL COMPLETED",!!
- . S LN=LN+3
- E I $$CHKAC() W !,"ALL COMPLETED",!! S LN=LN+3
- Q
- ;
- ;
- CHKAC() ;Are all tests complete?
- N LRT,LRP,LRC
- Q:'$D(^LRO(68,LRAA,1,LRAD,1,LRAN,4))
- S LRT=0 F S LRT=$O(^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRT)) Q:LRT<1 D
- . I $P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRT,0)),U,5)'="" S LRC(LRT)=$P(^(0),U,4)
- . E S LRP(LRT)=$P(^(0),U,5)_U_$P(^(0),U,9)
- Q '$D(LRP)
- TS2 ;
- ;
- D CHKPAGE^LRWRKLS1
- Q:LRSTOP!LREND
- ;
- S LRXXX=$G(^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRI,0)),LRURG=+$P(LRXXX,U,2)
- W !," TEST: ",$P($G(^LAB(60,+LRXXX,0),"deleted test"),"^")
- S LN=LN+1
- ;
- W ?40,$S($D(LRURG(LRURG)):LRURG(LRURG),1:"")
- I $P(LRXXX,U,3)'="" W ?55," LIST: ",$P($G(^LRO(68.2,+$P(LRXXX,U,3),0)),U,1)," ",$P($P(LRXXX,U,3),";",2,3)
- ;
- I $D(^LRO(69,LRDAT,1,LRSN,2,"B",LRI)) D
- . N I,X
- . S X=$O(^LRO(69,LRDAT,1,LRSN,2,"B",LRI,0))
- . I X,$O(^LRO(69,LRDAT,1,LRSN,2,X,1,0)) D
- . . S I=0
- . . F S I=$O(^LRO(69,LRDAT,1,LRSN,2,X,1,I)) Q:I<1 W !?3,": "_^(I,0)
- ;
- D REF
- ;
- ;LR*5.2*536 - add check of LRMIPND for pending Microbiology test
- I $P(LRXXX,U,5),'$D(LRMIPND(LRI)) W !," COMPLETED: ",$$FMTE^XLFDT($P(LRXXX,U,5),"MZ") S LN=LN+1
- E S LRNAC=""
- Q
- ;
- ;
- REF ; if referred test, display status and manifest
- ;
- N LRDFN,LRDN,LREVNT,LRIDT,LRIENS,LRMAN,LRSCFG,LRSS,LRUID,LRY
- ;
- S LRUID=$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,.3)),"^") Q:LRUID=""
- S LRMAN=$P(LRXXX,"^",10),LRSCFG=""
- I LRMAN D
- . S LRSCFG=$P($G(^LAHM(62.8,LRMAN,0)),"^",2)
- . I LRSCFG S LRSCFG(0)=$G(^LAHM(62.9,LRSCFG,0),"Unknown/deleted")
- . S LRMAN=$P($G(^LAHM(62.8,LRMAN,0)),"^")
- S LREVNT=$$STATUS^LREVENT(LRUID,+LRXXX,LRMAN)
- I LREVNT'="" D
- . W !,?4,"REFERRAL STATUS..: "_$P(LREVNT,"^")_" ("_$P(LREVNT,"^",2)_")"
- . W !,?4,"SHIPPING MANIFEST: "_$P(LREVNT,"^",3)
- . S LN=LN+2
- . I LRSCFG D
- . . W " using shipping config "_$P(LRSCFG(0),"^")
- . . W !,?4,"SHIPPED TO.......: "_$P($$NS^XUAF4($P(LRSCFG(0),"^",3)),"^")
- . . S LN=LN+1
- ;
- ; Display external order info (placer/filler) if any.
- S LRDFN=+LRDX
- S LRY=$G(^LRO(68,LRAA,1,LRAD,1,LRAN,3))
- S LRIDT=$P(LRY,"^",5),LRSS=$P($G(^LRO(68,LRAA,0)),"^",2)
- S LRDN=0,LRTEST=+LRXXX
- I LRSS="CH" D LR60DN(.LRDN,LRTEST,.LRTST)
- ;
- S LRDN=0
- F S LRDN=$O(LRDN(LRDN)) Q:LRDN<1 D
- . S LRIENS=LRDFN_","_LRSS_","_LRIDT_","_LRDN
- . F LRTYPE=3,4 I $D(^LR(LRDFN,"EPR","AD",LRIENS,LRTYPE)) D
- . . N LRDATA,LRON,LRREF,LRJ
- . . S LRJ=$O(^LR(LRDFN,"EPR","AD",LRIENS,LRTYPE,0)),LRREF=LRJ_","_LRDFN_","
- . . D GETDATA^LRUEPR(.LRDATA,LRREF)
- . . S LRON=$G(LRDATA(63.00013,LRREF,1,"I")),LRON(0)="Unknown"
- . . I LRON="" Q
- . . I $P($G(LRDATA(63.00013,LRREF,.03,"I")),";",2)="DIC(4," S LRON(0)=$P($$NS^XUAF4(+LRDATA(63.00013,LRREF,.03,"I")),"^")
- . . W !,?4,LRON(0)_$S(LRTYPE=3:" placer",1:" filler")_" order # "_LRON
- ;
- Q
- ;
- ;
- PHD ;
- Q:LREND
- S LREND=0,U="^"
- D ADATE^LRWU Q:LREND
- D LRAN^LRWU3
- Q
- ;
- LST ;
- D HED:($E(IOST)="P"&($Y+11>IOSL)),LST1^LRWRKLS1
- Q
- ;
- HED ;
- W @IOF,!,"LONG FORM",?30,"NOT FOR WARD USE",!
- W "Accession Area: ",LRNAME,?40,LRDT,!!
- S LN=4
- Q
- ;
- AC ;
- I LRSTOP!LREND Q
- ;
- S LRTK=LRSTAR-.00001
- F S LRTK=$O(^LRO(68,LRAA,1,LRAD,1,"E",LRTK)) Q:LRTK<1!(LRTK\1>LRLAST) D Q:LRSTOP
- . S LRAN=0
- . F S LRAN=$O(^LRO(68,LRAA,1,LRAD,1,"E",LRTK,LRAN)) Q:LRAN<1!(LRSTOP) D
- . . I '$D(^LRO(68,LRAA,1,LRAD,1,LRAN,0)) Q
- . . S LREND=0 D TD
- . . I LREND Q
- . . D LST,TESTS
- Q
- ;
- ;
- LREND ;
- D KVAR^VADPT
- K %,%DT,%ZIS
- K LN,LRA,AGE,DFN,DIC,DIR,DIRUT,DOB,DTOUT,DUOUT,K,LAST
- K LRACC,LRDLA,LRDLC,LRDX,LRI,LRLO69,LRSAMP,LRSPEC
- K LRURG,LRWRD,LRACO,DIC,LRUNC,LRDAT,LRAA,LRAD
- K LRNAC,LRAN,LRCE,LRDPF,LRSN,LRDTO,LRLAST,LRPRAC,LRSTAR,LRXXX
- K LRB,LRLAN,LRDT,LREND,LRFAN,LRIX,LRNAME,LRTSE,LRTST
- K LRDFN,LREDT,LRLLOC,LRSDT,LRTK,LRWDTL,POP,LRSTOP
- K PNM,SEX,SSN,X,X1,X2,Y,Z,ZTSK
- Q
- ;
- ;
- EN ;
- SINGLE ;
- ;
- N LRAA,LRACC,LRAD,LRAN,LREND,LRSTOP,LRTSE,LRUNC,LRURG
- ;
- D URG^LRX
- ;
- F D Q:LREND!LRSTOP
- . S (LREND,LRUNC,LRSTOP,LRTSE)=0
- . S LRACC="" D ^LRWU4
- . I LRAN<1 S LREND=1 Q
- . I '$D(^LRO(68,LRAA,1,LRAD,1,LRAN,0)) W !,"Doesn't exist." Q
- . ;LR*5.2*565: Reset date subscript if accession rolled over.
- . N LRROLL
- . S LRROLL=$G(^LRO(68,LRAA,1,LRAD,1,LRAN,9))
- . I LRROLL S LRAD=LRROLL
- . D TD,LST1^LRWRKLS1,TESTS
- . W !
- ;
- D LREND
- Q
- ;
- ;
- LR60DN(LRDN,LR60,LRTST) ; Retreive CH subscript dataname for a test
- N LRX,LRY
- ;
- S LRX=$P($G(^LAB(60,LR60,.2)),"^")
- I LRX>0 S LRDN(LRX)="" Q
- ;
- ; Expand and check panel tests
- S LRY=0
- F S LRY=$O(^LAB(60,LR60,2,LRY)) Q:LRY<1 D
- . S LRY(0)=$P($G(^LAB(60,LR60,2,LRY,0)),"^")
- . I LRY(0)<1 Q
- . I $D(LRTST(LRY(0))) Q ; test on panel also on accession as individual test
- . D LR60DN(.LRDN,LRY(0))
- ;
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLRWRKLST 9389 printed Feb 18, 2025@23:49:03 Page 2
- LRWRKLST ;DALOI/STAFF - LONG ACCESSION LIST ;Mar 22, 2021@17:48
- +1 ;;5.2;LAB SERVICE;**1,17,38,153,185,221,268,362,350,536,543,555,565**;Sep 27, 1994;Build 7
- +2 ;
- +3 NEW LRDICS
- +4 ;
- +5 ; Save and restore DIC("S") if micro long form accession option (LRMIACC1).
- +6 IF $DATA(DIC("S"))
- SET LRDICS=DIC("S")
- +7 DO LREND
- +8 IF $DATA(LRDICS)
- SET DIC("S")=LRDICS
- +9 ;
- +10 SET LRDT=$$FMTE^XLFDT($$NOW^XLFDT,"5MZ")
- +11 ;
- +12 SET LREND=0
- +13 SET DIC="^LRO(68,"
- SET DIC(0)="AEMOQ"
- +14 DO ^DIC
- SET LRAA=+Y
- SET LRNAME=$PIECE(Y,U,2)
- +15 IF LRAA<1
- DO LREND
- QUIT
- +16 ;
- +17 ; Ask if list by date rather than accession number
- +18 IF $PIECE(^LRO(68,LRAA,0),U,3)="Y"
- DO STAR^LRWU3
- SET LRLAST=$GET(LAST)
- +19 IF LREND
- DO LREND
- QUIT
- +20 ; List by accession number
- +21 IF '$DATA(LRSTAR)
- DO PHD
- +22 IF LREND
- DO LREND
- QUIT
- +23 ;
- W ; from LRVER, LRVR
- +1 ; Added to protect "%*" variables from %ZTLOAD corruption
- +2 NEW %,%A,%A0,%B,%B1,%B2,%B3,%BA,%BU,%C,%D1,%D2,%DT,%E,%G,%H,%I,%J
- +3 NEW %J1,%K,%M,%N,%P,%S,%T,%W,%W0,%X,%Y
- +4 NEW A0,C,D,DD,DDH,DDQ,DDSV,DG,DH,DIC,DIFLD,DIR,DIRO,DIROUT,DIRUT
- +5 NEW DIX,DIY,DISYS,DO,DP,DQ,DTOUT,DU,DZ,X1,XQH
- +6 ;
- +7 IF '$DATA(^LRO(68,LRAA,1,LRAD,1,0))
- IF '$DATA(LRSTAR)
- DO LREND
- QUIT
- +8 ;
- +9 SET (LRUNC,LRTSE)=0
- +10 if '$DATA(LRNAME)
- SET LRNAME=$PIECE(^LRO(68,LRAA,0),U,1)
- +11 ;
- +12 SET DIR(0)="YO"
- SET DIR("A")="Do you want a specific test"
- SET DIR("B")="NO"
- +13 DO ^DIR
- +14 IF $DATA(DIRUT)
- DO LREND
- QUIT
- +15 IF Y=1
- Begin DoDot:1
- +16 NEW DIC,X,Y
- +17 SET DIC="^LAB(60,"
- SET DIC(0)="AEZOQ"
- +18 DO ^DIC
- +19 IF Y>0
- SET LRTSE=+Y
- End DoDot:1
- +20 ;
- +21 KILL DIR
- +22 SET DIR(0)="YO"
- SET DIR("A")="Do you want only incomplete entries"
- SET DIR("B")="YES"
- +23 DO ^DIR
- +24 IF $DATA(DIRUT)
- DO LREND
- QUIT
- +25 SET LRUNC=Y
- +26 ;
- +27 SET %ZIS="Q"
- DO ^%ZIS
- +28 IF POP
- DO ^%ZISC
- DO LREND
- QUIT
- +29 ;
- +30 ; Queue report via Taskman
- +31 IF $DATA(IO("Q"))
- Begin DoDot:1
- +32 NEW ZTDESC,ZTSK,ZTRTN,ZTIO,ZTSAVE,%T
- +33 SET ZTRTN="ENT^LRWRKLST"
- SET ZTDESC="Long form accession list"
- SET ZTSAVE("LR*")=""
- +34 DO ^%ZTLOAD
- DO ^%ZISC
- +35 WRITE !,"Task ",$SELECT($GET(ZTSK):ZTSK,1:"NOT")," Queued"
- +36 DO LREND
- KILL IO("Q")
- End DoDot:1
- QUIT
- +37 ;
- ENT ;
- +1 ;
- +2 NEW LRTST,LRMIPND
- +3 ;
- +4 IF $DATA(ZTQUEUED)
- SET ZTREQ="@"
- +5 SET (LREND,LRSTOP)=0
- +6 ;
- +7 ;
- +8 USE IO
- +9 DO HED
- DO URG^LRX
- +10 ;
- +11 ; Process by accession date
- +12 IF '$DATA(LRSTAR)
- Begin DoDot:1
- +13 SET LRAN=LRFAN-1
- +14 FOR
- SET LRAN=$ORDER(^LRO(68,LRAA,1,LRAD,1,LRAN))
- if 'LRAN!(LRAN>LRLAN)
- QUIT
- Begin DoDot:2
- +15 SET LREND=0
- DO TD
- +16 IF LREND
- QUIT
- +17 DO LST
- DO TESTS
- End DoDot:2
- if LRSTOP
- QUIT
- End DoDot:1
- +18 ;
- +19 ; Process by date received in lab - yearly accession area
- +20 IF $DATA(LRSTAR)
- Begin DoDot:1
- +21 FOR
- SET LRAD=$ORDER(^LRO(68,LRAA,1,LRAD))
- if LRAD<1!(LRAD>LRWDTL)
- QUIT
- DO AC
- if LRSTOP
- QUIT
- End DoDot:1
- +22 ;
- +23 DO ^%ZISC
- DO LREND
- +24 QUIT
- +25 ;
- +26 ;
- TD ; Check tests on accession to determine if meets criteria to display.
- +1 ; If incomplete only (LRUNC=1) and complete date then skip
- +2 ; If not specific test selected (LRTSE=file #60 ien) then skip
- +3 ; Otherwise set LRTST array with file #60 ien.
- +4 ;
- +5 KILL LRTST,LRMIPND
- +6 ;
- +7 IF '$DATA(^LRO(68,LRAA,1,LRAD,1,LRAN,0))
- SET LREND=1
- QUIT
- +8 SET LRSN=+$PIECE(^LRO(68,LRAA,1,LRAD,1,LRAN,0),U,5)
- SET LRDAT=+$PIECE(^(0),U,4)
- +9 SET LRI=0
- +10 FOR
- SET LRI=$ORDER(^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRI))
- if LRI<.5
- QUIT
- Begin DoDot:1
- +11 IF LRTSE
- IF LRTSE'=+^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRI,0)
- QUIT
- +12 ;LR*5.2*536 added line below
- +13 IF $PIECE(^LRO(68,LRAA,0),U,2)="MI"
- IF $PIECE(^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRI,0),"^",5)
- DO MICRO
- +14 IF LRUNC
- IF $PIECE(^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRI,0),"^",5)
- QUIT
- +15 SET LRTST(LRI)=""
- End DoDot:1
- +16 ;
- +17 IF '$DATA(LRTST)
- SET LREND=1
- +18 QUIT
- +19 ;
- MICRO ;further evaluation for Microbiology test
- +1 NEW LRDFNX,LRIDTX,LREXCODE,LRMIAREA
- +2 SET LRDFNX=$PIECE(^LRO(68,LRAA,1,LRAD,1,LRAN,0),U)
- +3 SET LRIDTX=$PIECE($GET(^LRO(68,LRAA,1,LRAD,1,LRAN,3)),U,5)
- +4 SET LREXCODE=$PIECE($GET(^LAB(60,LRI,0)),"^",14)
- +5 if 'LREXCODE
- QUIT
- +6 SET LREXCODE=$GET(^LAB(62.07,LREXCODE,.1))
- +7 ;Logic below is the same as the logic in result verification
- +8 ;routine LRMIEDZ2 which determines which Microbiology area is
- +9 ;defined for a Microbiology test
- +10 SET LRMIAREA=$SELECT(LREXCODE["11.5":1,LREXCODE["23":11,LREXCODE["19":8,LREXCODE["15":5,LREXCODE["34":16,1:"")
- +11 ;If the [area] RPT DATE APPROVED field is null, display this test as "pending"
- +12 ;LR*5.2*543: Add check at 6th piece as to whether has been marked "not performed" or "merged".
- +13 IF $PIECE(^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRI,0),"^",6)']""
- IF $DATA(^LR(LRDFNX,"MI",LRIDTX,LRMIAREA))
- IF $PIECE(^(LRMIAREA),U)=""
- Begin DoDot:1
- +14 ;Include on report as a pending test if user specific only incompletes
- +15 IF LRUNC
- SET LRTST(LRI)=""
- +16 ;flag as a pending test for section TS2
- +17 SET LRMIPND(LRI)=""
- End DoDot:1
- +18 QUIT
- +19 ;
- TESTS ;
- +1 NEW S1,S2
- +2 ;
- +3 DO CHKPAGE^LRWRKLS1
- +4 if LRSTOP!LREND
- QUIT
- +5 ;
- +6 if '$DATA(^LRO(68,LRAA,1,LRAD,1,LRAN,4,0))
- QUIT
- +7 ;
- +8 SET LRSPEC=+$GET(^LRO(68,LRAA,1,LRAD,1,LRAN,5,1,0))
- SET LRSAMP=$SELECT(LRSPEC:$PIECE(^(0),U,2),1:"")
- +9 SET S1=$PIECE($GET(^LAB(61,+LRSPEC,0)),U,1)
- +10 SET S2=$PIECE($GET(^LAB(62,+LRSAMP,0)),U,1)
- +11 ;
- +12 WRITE !," SAMPLE: ",S1_$SELECT(S1'=S2:" "_S2,1:"")
- +13 SET LN=LN+1
- +14 ;
- +15 SET LRLO69=$GET(^LRO(69,LRDAT,1,LRSN,0))
- +16 IF LRLO69'=""
- IF $DATA(^LRO(69,LRDAT,1,LRSN,1))
- IF $LENGTH($PIECE(^(1),U,6))
- WRITE !,$PIECE(^(1),U,6)
- SET LN=LN+1
- +17 ;
- +18 KILL LRNAC
- +19 SET LRI=0
- +20 FOR
- SET LRI=$ORDER(LRTST(LRI))
- if 'LRI
- QUIT
- DO TS2
- +21 ;
- +22 IF '$DATA(LRNAC)
- IF $LENGTH($PIECE($GET(^LRO(68,LRAA,1,LRAD,1,LRAN,3)),U,4))
- Begin DoDot:1
- +23 WRITE !,"ALL COMPLETED",!!
- +24 SET LN=LN+3
- End DoDot:1
- +25 IF '$TEST
- IF $$CHKAC()
- WRITE !,"ALL COMPLETED",!!
- SET LN=LN+3
- +26 QUIT
- +27 ;
- +28 ;
- CHKAC() ;Are all tests complete?
- +1 NEW LRT,LRP,LRC
- +2 if '$DATA(^LRO(68,LRAA,1,LRAD,1,LRAN,4))
- QUIT
- +3 SET LRT=0
- FOR
- SET LRT=$ORDER(^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRT))
- if LRT<1
- QUIT
- Begin DoDot:1
- +4 IF $PIECE($GET(^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRT,0)),U,5)'=""
- SET LRC(LRT)=$PIECE(^(0),U,4)
- +5 IF '$TEST
- SET LRP(LRT)=$PIECE(^(0),U,5)_U_$PIECE(^(0),U,9)
- End DoDot:1
- +6 QUIT '$DATA(LRP)
- TS2 ;
- +1 ;
- +2 DO CHKPAGE^LRWRKLS1
- +3 if LRSTOP!LREND
- QUIT
- +4 ;
- +5 SET LRXXX=$GET(^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRI,0))
- SET LRURG=+$PIECE(LRXXX,U,2)
- +6 WRITE !," TEST: ",$PIECE($GET(^LAB(60,+LRXXX,0),"deleted test"),"^")
- +7 SET LN=LN+1
- +8 ;
- +9 WRITE ?40,$SELECT($DATA(LRURG(LRURG)):LRURG(LRURG),1:"")
- +10 IF $PIECE(LRXXX,U,3)'=""
- WRITE ?55," LIST: ",$PIECE($GET(^LRO(68.2,+$PIECE(LRXXX,U,3),0)),U,1)," ",$PIECE($PIECE(LRXXX,U,3),";",2,3)
- +11 ;
- +12 IF $DATA(^LRO(69,LRDAT,1,LRSN,2,"B",LRI))
- Begin DoDot:1
- +13 NEW I,X
- +14 SET X=$ORDER(^LRO(69,LRDAT,1,LRSN,2,"B",LRI,0))
- +15 IF X
- IF $ORDER(^LRO(69,LRDAT,1,LRSN,2,X,1,0))
- Begin DoDot:2
- +16 SET I=0
- +17 FOR
- SET I=$ORDER(^LRO(69,LRDAT,1,LRSN,2,X,1,I))
- if I<1
- QUIT
- WRITE !?3,": "_^(I,0)
- End DoDot:2
- End DoDot:1
- +18 ;
- +19 DO REF
- +20 ;
- +21 ;LR*5.2*536 - add check of LRMIPND for pending Microbiology test
- +22 IF $PIECE(LRXXX,U,5)
- IF '$DATA(LRMIPND(LRI))
- WRITE !," COMPLETED: ",$$FMTE^XLFDT($PIECE(LRXXX,U,5),"MZ")
- SET LN=LN+1
- +23 IF '$TEST
- SET LRNAC=""
- +24 QUIT
- +25 ;
- +26 ;
- REF ; if referred test, display status and manifest
- +1 ;
- +2 NEW LRDFN,LRDN,LREVNT,LRIDT,LRIENS,LRMAN,LRSCFG,LRSS,LRUID,LRY
- +3 ;
- +4 SET LRUID=$PIECE($GET(^LRO(68,LRAA,1,LRAD,1,LRAN,.3)),"^")
- if LRUID=""
- QUIT
- +5 SET LRMAN=$PIECE(LRXXX,"^",10)
- SET LRSCFG=""
- +6 IF LRMAN
- Begin DoDot:1
- +7 SET LRSCFG=$PIECE($GET(^LAHM(62.8,LRMAN,0)),"^",2)
- +8 IF LRSCFG
- SET LRSCFG(0)=$GET(^LAHM(62.9,LRSCFG,0),"Unknown/deleted")
- +9 SET LRMAN=$PIECE($GET(^LAHM(62.8,LRMAN,0)),"^")
- End DoDot:1
- +10 SET LREVNT=$$STATUS^LREVENT(LRUID,+LRXXX,LRMAN)
- +11 IF LREVNT'=""
- Begin DoDot:1
- +12 WRITE !,?4,"REFERRAL STATUS..: "_$PIECE(LREVNT,"^")_" ("_$PIECE(LREVNT,"^",2)_")"
- +13 WRITE !,?4,"SHIPPING MANIFEST: "_$PIECE(LREVNT,"^",3)
- +14 SET LN=LN+2
- +15 IF LRSCFG
- Begin DoDot:2
- +16 WRITE " using shipping config "_$PIECE(LRSCFG(0),"^")
- +17 WRITE !,?4,"SHIPPED TO.......: "_$PIECE($$NS^XUAF4($PIECE(LRSCFG(0),"^",3)),"^")
- +18 SET LN=LN+1
- End DoDot:2
- End DoDot:1
- +19 ;
- +20 ; Display external order info (placer/filler) if any.
- +21 SET LRDFN=+LRDX
- +22 SET LRY=$GET(^LRO(68,LRAA,1,LRAD,1,LRAN,3))
- +23 SET LRIDT=$PIECE(LRY,"^",5)
- SET LRSS=$PIECE($GET(^LRO(68,LRAA,0)),"^",2)
- +24 SET LRDN=0
- SET LRTEST=+LRXXX
- +25 IF LRSS="CH"
- DO LR60DN(.LRDN,LRTEST,.LRTST)
- +26 ;
- +27 SET LRDN=0
- +28 FOR
- SET LRDN=$ORDER(LRDN(LRDN))
- if LRDN<1
- QUIT
- Begin DoDot:1
- +29 SET LRIENS=LRDFN_","_LRSS_","_LRIDT_","_LRDN
- +30 FOR LRTYPE=3,4
- IF $DATA(^LR(LRDFN,"EPR","AD",LRIENS,LRTYPE))
- Begin DoDot:2
- +31 NEW LRDATA,LRON,LRREF,LRJ
- +32 SET LRJ=$ORDER(^LR(LRDFN,"EPR","AD",LRIENS,LRTYPE,0))
- SET LRREF=LRJ_","_LRDFN_","
- +33 DO GETDATA^LRUEPR(.LRDATA,LRREF)
- +34 SET LRON=$GET(LRDATA(63.00013,LRREF,1,"I"))
- SET LRON(0)="Unknown"
- +35 IF LRON=""
- QUIT
- +36 IF $PIECE($GET(LRDATA(63.00013,LRREF,.03,"I")),";",2)="DIC(4,"
- SET LRON(0)=$PIECE($$NS^XUAF4(+LRDATA(63.00013,LRREF,.03,"I")),"^")
- +37 WRITE !,?4,LRON(0)_$SELECT(LRTYPE=3:" placer",1:" filler")_" order # "_LRON
- End DoDot:2
- End DoDot:1
- +38 ;
- +39 QUIT
- +40 ;
- +41 ;
- PHD ;
- +1 if LREND
- QUIT
- +2 SET LREND=0
- SET U="^"
- +3 DO ADATE^LRWU
- if LREND
- QUIT
- +4 DO LRAN^LRWU3
- +5 QUIT
- +6 ;
- LST ;
- +1 if ($EXTRACT(IOST)="P"&($Y+11>IOSL))
- DO HED
- DO LST1^LRWRKLS1
- +2 QUIT
- +3 ;
- HED ;
- +1 WRITE @IOF,!,"LONG FORM",?30,"NOT FOR WARD USE",!
- +2 WRITE "Accession Area: ",LRNAME,?40,LRDT,!!
- +3 SET LN=4
- +4 QUIT
- +5 ;
- AC ;
- +1 IF LRSTOP!LREND
- QUIT
- +2 ;
- +3 SET LRTK=LRSTAR-.00001
- +4 FOR
- SET LRTK=$ORDER(^LRO(68,LRAA,1,LRAD,1,"E",LRTK))
- if LRTK<1!(LRTK\1>LRLAST)
- QUIT
- Begin DoDot:1
- +5 SET LRAN=0
- +6 FOR
- SET LRAN=$ORDER(^LRO(68,LRAA,1,LRAD,1,"E",LRTK,LRAN))
- if LRAN<1!(LRSTOP)
- QUIT
- Begin DoDot:2
- +7 IF '$DATA(^LRO(68,LRAA,1,LRAD,1,LRAN,0))
- QUIT
- +8 SET LREND=0
- DO TD
- +9 IF LREND
- QUIT
- +10 DO LST
- DO TESTS
- End DoDot:2
- End DoDot:1
- if LRSTOP
- QUIT
- +11 QUIT
- +12 ;
- +13 ;
- LREND ;
- +1 DO KVAR^VADPT
- +2 KILL %,%DT,%ZIS
- +3 KILL LN,LRA,AGE,DFN,DIC,DIR,DIRUT,DOB,DTOUT,DUOUT,K,LAST
- +4 KILL LRACC,LRDLA,LRDLC,LRDX,LRI,LRLO69,LRSAMP,LRSPEC
- +5 KILL LRURG,LRWRD,LRACO,DIC,LRUNC,LRDAT,LRAA,LRAD
- +6 KILL LRNAC,LRAN,LRCE,LRDPF,LRSN,LRDTO,LRLAST,LRPRAC,LRSTAR,LRXXX
- +7 KILL LRB,LRLAN,LRDT,LREND,LRFAN,LRIX,LRNAME,LRTSE,LRTST
- +8 KILL LRDFN,LREDT,LRLLOC,LRSDT,LRTK,LRWDTL,POP,LRSTOP
- +9 KILL PNM,SEX,SSN,X,X1,X2,Y,Z,ZTSK
- +10 QUIT
- +11 ;
- +12 ;
- EN ;
- SINGLE ;
- +1 ;
- +2 NEW LRAA,LRACC,LRAD,LRAN,LREND,LRSTOP,LRTSE,LRUNC,LRURG
- +3 ;
- +4 DO URG^LRX
- +5 ;
- +6 FOR
- Begin DoDot:1
- +7 SET (LREND,LRUNC,LRSTOP,LRTSE)=0
- +8 SET LRACC=""
- DO ^LRWU4
- +9 IF LRAN<1
- SET LREND=1
- QUIT
- +10 IF '$DATA(^LRO(68,LRAA,1,LRAD,1,LRAN,0))
- WRITE !,"Doesn't exist."
- QUIT
- +11 ;LR*5.2*565: Reset date subscript if accession rolled over.
- +12 NEW LRROLL
- +13 SET LRROLL=$GET(^LRO(68,LRAA,1,LRAD,1,LRAN,9))
- +14 IF LRROLL
- SET LRAD=LRROLL
- +15 DO TD
- DO LST1^LRWRKLS1
- DO TESTS
- +16 WRITE !
- End DoDot:1
- if LREND!LRSTOP
- QUIT
- +17 ;
- +18 DO LREND
- +19 QUIT
- +20 ;
- +21 ;
- LR60DN(LRDN,LR60,LRTST) ; Retreive CH subscript dataname for a test
- +1 NEW LRX,LRY
- +2 ;
- +3 SET LRX=$PIECE($GET(^LAB(60,LR60,.2)),"^")
- +4 IF LRX>0
- SET LRDN(LRX)=""
- QUIT
- +5 ;
- +6 ; Expand and check panel tests
- +7 SET LRY=0
- +8 FOR
- SET LRY=$ORDER(^LAB(60,LR60,2,LRY))
- if LRY<1
- QUIT
- Begin DoDot:1
- +9 SET LRY(0)=$PIECE($GET(^LAB(60,LR60,2,LRY,0)),"^")
- +10 IF LRY(0)<1
- QUIT
- +11 ; test on panel also on accession as individual test
- IF $DATA(LRTST(LRY(0)))
- QUIT
- +12 DO LR60DN(.LRDN,LRY(0))
- End DoDot:1
- +13 ;
- +14 QUIT