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

LRORDB.m

Go to the documentation of this file.
LRORDB ;DALOI/STAFF - ORDER LEDI TEST USING BARCODE FROM 69.6 ;06/22/11  12:38
 ;;5.2;LAB SERVICE;**153,222,286,350**;Sep 27, 1994;Build 230
 ;
EN(LRRUID,LRSSMP) ;
 ;
 N I,LRDIR,LRSTATUS,LRX,X
 ;
 K LROT
 ;
 S (LROT,LRSTATUS)=""
 ;
 Q:($G(LRRUID)="")!($G(LRSSMP)="")
 S LR696=$O(^LRO(69.6,"AD",LRSSMP,LRRUID,0)) Q:'LR696
 Q:'($D(^LRO(69.6,LR696,0))#2)
 ;
 S LRDIR("A",2)=" "
 S LRDIR("A",2.001)="Collecting Site UID: "_LRRUID
 ;S LRDIR("A",2.002)="Current Tests on Order:"
 S LRDIR("A",2.003)="Collecting Site Test           Host UID        Host Site Test"
 S LRDIR("A",2.004)="--------------------           --------        --------------"
 S I=0
 F  S I=$O(^LRO(69.6,LR696,2,I)) Q:'I  D
 . S I(0)=$G(^LRO(69.6,LR696,2,I,0))
 . S X=$P(I(0),"^",3)
 . I X="" S X=$P(I(0),"^",1) ; If no remote test name then display NLT Test field value.
 . S LRDIR("A","2."_I)=$$LJ^XLFSTR($E(X,1,30),31)_$$LJ^XLFSTR($P(I(0),"^",9),15)_" "_$E($P($G(^LAB(60,+$P(I(0),"^",11),0)),"^"),1,30)
 K I
 ;
 S LRX=+$P(^LRO(69.6,LR696,0),U,10)
 I LRX S LRSTATUS=$$GET1^DIQ(64.061,LRX_",",.01)
 I LRSTATUS'="",LRSTATUS'="In-Transit" D
 . S I=0
 . F  S I=$O(^LRO(69.6,LR696,2,I)) Q:'I  D  Q:LRSTATUS="In-Transit"
 . . S X=$P(^LRO(69.6,LR696,2,I,0),"^",6) Q:'X
 . . I $$GET1^DIQ(64.061,X_",",.01)="In-Transit" S LRSTATUS="In-Transit"
 ;
 I LRSTATUS'="",LRSTATUS'="In-Transit" D  Q
 . S LRDIR("A",1)="This order has a status of ["_LRSTATUS_"]"
 . S LRDIR("A",1.1)="No test selected."
 . D DISPLO(.LRDIR)
 ;
 ; Display any comments that accompanied order
 I $D(^LRO(69.6,LR696,99)) D
 . N LRWP
 . S LRWP=$$GET1^DIQ(69.6,LR696_",",99,"","LRWP")
 . S LRWP(.5)="Collecting site order comments:",LRWP(.5,"F")="!!"
 . D EN^DDIOL(.LRWP)
 ;
 D LROT(LR696)
 ;
 ;I $O(LROT(0)) D LL3^LROW3
 I '$O(LROT(0)) D  Q
 . S LRDIR("A",2)="NO tests found on Shipping Manifest "_$G(LRRSITE("SMID"))
 . S LRDIR("A",2.1)="For UID "_$G(LRRUID)
 . D DISPLO(.LRDIR)
 ;
 S $P(^LRO(69.6,LR696,0),U,11)=$G(LRSD("RIEN"))
 Q
 ;
 ;
LROT(LR696) ;
 ;
 N LR60,LR6205,LR6964,LRATG,LRMICHK,LRNLT,LRX,LRY,X
 ;
 K LROT
 ;
 S LR696(0)=$G(^LRO(69.6,LR696,0))
 S LRSPEC=+$P(LR696(0),U,7),LRSAMP=+$P(LR696(0),U,8)
 ;Q:'LRSPEC!('$D(^LAB(61,LRSPEC,0)))
 S (LR6964,LRMICHK)=0
 F  S LR6964=+$O(^LRO(69.6,LR696,2,LR6964)) Q:LR6964<1  D
 . S LR6964(0)=$G(^LRO(69.6,LR696,2,LR6964,0))
 . I LR6964(0)="" Q
 . I $P(LR6964(0),"^",6),$$GET1^DIQ(64.061,$P(LR6964(0),"^",6)_",",.01)'="In-Transit" Q
 . S LR60=$P(LR6964(0),U,11) ; Lab test to order
 . S LR6205=$P(LR6964(0),U,12) ; Urgency
 . I 'LRMICHK,LR60>0,"MISPCYEM"[$P(^LAB(60,LR60,0),U,4) D MICHECK
 . S LRATG=0
 . ; If have everything, then don't check accession test group.
 . I LR60,LRSPEC,LRSAMP,LR6205 D  Q:LRATG
 . . S LR64=+$G(^LAB(60,LR60,64))
 . . I 'LR64 Q
 . . S LRNLT=$P($G(^LAM(LR64,0)),U,2),LRNLT(2)=$P($G(^LAM(LR64,0)),U)
 . . ; Find available spot.
 . . F LRATG=LRWPC+1:1 I '$D(LROT(LRSAMP,LRSPEC,LRATG)) S LRWPC=LRATG Q
 . . D CHKURG,SETLROT
 . S LRNLT=$P(LR6964(0),U,2) Q:'LRNLT
 . S LRNLT(1)=+$O(^LAM("C",LRNLT_" ",0))
 . I 'LRNLT(1)!('$D(^LAM(LRNLT(1),0))) Q
 . S LRNLT(2)=$P(^LAM(LRNLT(1),0),U),LR60=0
 . F  S LR60=+$O(^LAB(60,"AC",LRNLT(1),LR60)) Q:'LR60  D
 . . S LRATG=+$O(^TMP("LRSTIK",$J,"C",LR60,0)) Q:LRATG<1
 . . S LRATG(1)=$G(^TMP("LRSTIK",$J,LRATG)) Q:'LRATG(1)!('$P(LRATG(1),U,3))
 . . S:'$G(LRSAMP) LRSAMP=$P(LRATG(1),U,3)
 . . D CHKURG
 . . I LR60,LRSPEC,LRSAMP,LR6205 D SETLROT
 Q
 ;
 ;
SETLROT ; Setup LROT array
 ;
 S LROT(LRSAMP,LRSPEC,LRATG)=LR60
 S LROT(LRSAMP,LRSPEC,LRATG,1)=LR6205
 S LROT(LRSAMP,LRSPEC,LRATG,"B",LR60)=LR6964_U_LRNLT_U_LRNLT(2)
 ;
 ; Required comment
 S:$P($G(^LAB(60,LR60,0)),U,19) LROT(LRSAMP,LRSPEC,LRATG,2)=$P(^(0),U,19)
 ;
 Q
 ;
 ;
CHKURG ; Check for forced, highest allowed and missing urgency on this test
 ;
 N X
 ;
 ; Forced urgency
 I +$P(^LAB(60,LR60,0),U,18) S LR6205=+$P(^LAB(60,LR60,0),U,18)
 ;
 ; If missing urgency then look above workload urgencies for last urgency
 ; that matches on HL7 urgency otherwise use site's default for routine.
 I 'LR6205 D
 . S X=$P(LR6964(0),U,5)
 . I X'="" S LR6205=+$O(^LAB(62.05,"HL7",X,50),-1)
 . S LR6205=$S(LR6205>0:LR6205,1:LROUTINE)
 ;
 ; Highest urgency allowed, reset if higher than highest allowed.
 S X=+$P(^LAB(60,LR60,0),U,16)
 I LR6205<X S LR6205=X
 ;
 Q
 ;
 ;
MICHECK ; Check "MI" subscript test for missing topography and collection sample
 ;
 N DA,DIE,DR,X,Y
 S DA=LR696,DIE=69.6,DR="",LRMICHK=1
 I LRSPEC'>0 S DR=4_";"
 I LRSAMP'>0 S DR=DR_5
 I LRSPEC D
 . I $P(^LAB(60,LR60,0),U,4)'="MI" Q
 . S LRX=$$GET1^DIQ(61,LRSPEC_",",".09:2")
 . I LRX="XXX"!(LRX="ORH") S DR="4;5"
 I DR="" Q
 D EN^DDIOL("Update missing order information for:",,"!!")
 D EN^DDIOL("",,"!")
 D ^DIE
 S LR696(0)=$G(^LRO(69.6,LR696,0))
 S LRSPEC=+$P(LR696(0),U,7),LRSAMP=+$P(LR696(0),U,8)
 ;
 Q
 ;
 ;
SMID ; Call to get shipping manifest ID (manual selection)
 N CNT,DA,DIR,LRSMID,LRY,X,Y
 S LREND=0,LRSMID=""
 S DIR(0)="69.6,18" D ^DIR
 I $D(DTOUT)!($D(DUOUT)) S LREND=1 Q
 I $D(DIRUT) Q
 S LRY=Y
 I LRY'="",$D(^LRO(69.6,"D",LRY)) D
 . N LR696
 . S LR696=$O(^LRO(69.6,"D",LRY,0))
 . I $P($G(^LRO(69.6,+LR696,0)),"^",5)=+$G(LRRSITE("RSITE")) S LRSMID=LRY
 I LRSMID="" D
 . D SHOW
 . K ^TMP("LR",$J,"SMID")
 ;
 I LRSMID="" D  Q
 . N DIR
 . S DIR(0)="YO",DIR("A")="Use manifest '"_LRY_"' anyway",DIR("B")="NO"
 . W ! D ^DIR
 . I Y S LRRSITE("SMID")=LRY
 ;
 S LRRSITE("SMID")=LRSMID
 S LRY=$O(^LRO(69.6,"D",LRSMID,0))
 I LRY S LRRSITE("SDT")=$$GET1^DIQ(69.6,LRY_",",14,"I")
 K DIR
 ;
 ; Flag to determine if this shipping manifest should be used to
 ; look up orders when manually accessioning.
 S DIR(0)="YO",DIR("A")="Lookup orders using this manifest",DIR("B")="YES"
 D ^DIR
 I $D(DIRUT) S LREND=1 Q
 S LRRSITE("SMID-OK")=Y
 Q
 ;
 ;
SHOW ; Gather a list of possible SMID to select from
 N CNT,DIR,IEN,LEN,SMID,VAL
 K ^TMP("LR",$J,"SMID")
 S SMID=LRY,LEN=$L(LRY),CNT=0
 I SMID?1.N S SMID=SMID_" "
 F  S SMID=$O(^LRO(69.6,"D",SMID)) Q:$E(SMID,1,LEN)'=LRY  D
 . S IEN=+$O(^LRO(69.6,"D",SMID,0))
 . I $P($G(^LRO(69.6,IEN,0)),"^",5)'=+$G(LRRSITE("RSITE")) Q
 . S CNT=CNT+1
 . S ^TMP("LR",$J,"SMID",CNT)=SMID
 I 'CNT W !,"No manifest '",LRY,"' found on file." Q
 I CNT=1 S LRSMID=^TMP("LR",$J,"SMID",CNT) Q
 ;
 ; Select SMID from List
 D DISPL
 S DIR(0)="NO^1:"_CNT,DIR("A")="Select Manifest Number"
 D ^DIR
 I $D(DIRUT) W !,"No manifest selected." Q
 S LRSMID=$G(^TMP("LR",$J,"SMID",Y))
 Q
 ;
 ;
DISPL ;
 N CNT,DIR,DIRUT
 W @IOF
 S CNT=0
 F  S CNT=$O(^TMP("LR",$J,"SMID",CNT)) Q:'CNT  D  Q:$D(DIRUT)
 . I CNT#3=1 D  Q:$D(DIRUT)
 . . I '(CNT#(IOSL-3)) S DIR(0)="E" D ^DIR Q:$D(DIRUT)
 . . W !
 . W $$LJ^XLFSTR(CNT_". "_^TMP("LR",$J,"SMID",CNT),26)
 Q
 ;
 ;
DISPLO(LRDIR) ; Display the order from #69.6
 ; Call with LRDIR = array of additonal prompts to display, pass by reference
 ;
 N DA,DIC,DIR,DIRUT,DTOUT,DUOUT,DX,S,X,Y
 ;
 M DIR=LRDIR
 S DIR("A")="Would you like a display of the Order",DIR("B")="NO"
 S DIR(0)="Y" D ^DIR K DIR
 I $D(DIRUT)!(Y'=1) W ! Q
 S DA=LR696,DIC="^LRO(69.6,",S=0 W @IOF D EN^DIQ W !
 Q