| 1 | LRUTT ;AVAMC/REG/CYM - LAB TEST TURNAROUND TIME; 2/19/98 ;
 | 
|---|
| 2 |  ;;5.2;LAB SERVICE;**153,201,354**;Sep 27, 1994
 | 
|---|
| 3 |  D END W !!?24,"Laboratory Test Turnaround Times"
 | 
|---|
| 4 | AT S DIC=60,DIC(0)="AEQM" D ^DIC K DIC I Y>0 S LRT(+Y)=$P(Y,U,2) G AT
 | 
|---|
| 5 |  I '$D(LRT) W $C(7),!,"NO TESTS SELECTED" G END
 | 
|---|
| 6 | HL W ! S LRL="",INSTFLAG=0 K DIR S DIR("?",1)="Select an entry from the HOSPITAL LOCATION file (#44) or an entry from",DIR("?",2)="the INSTITUTION file (#4).",DIR("?",3)=""
 | 
|---|
| 7 |  S DIR("?",4)="To specify a selection from the HOSPITAL LOCATION file (#44), enter your",DIR("?",5)="selection with the 'L.' prefix.  Enter 'L.?' to see the list of entries in",DIR("?",6)="the HOSPITAL LOCATION file (#44)."
 | 
|---|
| 8 |  S DIR("?",7)="",DIR("?",8)="To specify a selection from the INSTITUTION file (#4), enter your selection",DIR("?",9)="with the 'I.' prefix.  Enter 'I.?' to see the list of entries in the",DIR("?",10)="INSTITUTION file (#4)."
 | 
|---|
| 9 |  S DIR("?",11)="",DIR("?",12)="If the selection entered does not have the 'L.' or 'I.' prefix, the HOSPITAL",DIR("?",13)="LOCATION file (#44) will be searched for a match first.  If no match is"
 | 
|---|
| 10 |  S DIR("?")="found, the INSTITUTION file (#4) will then be searched for a match."
 | 
|---|
| 11 |  S DIR("A")="Select HOSPITAL LOCATION NAME: ",DIR(0)="FOA" D ^DIR I $D(DIRUT) G END
 | 
|---|
| 12 |  S LRY=Y D LOC I LRL="" G HL
 | 
|---|
| 13 |  W ! D B^LRU G:Y<0 END S LRSDT=LRSDT-.1,LRLDT=LRLDT+.9
 | 
|---|
| 14 |  W !!,"Print patients " S %=2 D YN^LRU S:%=1 LRI=1
 | 
|---|
| 15 |  S ZTRTN="QUE^LRUTT" D BEG^LRUTL G:POP!($D(ZTSK)) END
 | 
|---|
| 16 | QUE U IO K ^TMP($J) D L^LRU,S^LRU,H S LR("F")=1 F A=0:0 S A=$O(LRT(A)) Q:'A  S (LRG(A),LRH(A))=0
 | 
|---|
| 17 |  F LRA=LRSDT:0 S LRA=$O(^LRO(69,LRA)) Q:'LRA!(LRA>LRLDT)  D
 | 
|---|
| 18 |  . I 'INSTFLAG D
 | 
|---|
| 19 |  . . F LRB=0:0 S LRB=$O(^LRO(69,LRA,1,"AC",LRL,LRB)) Q:'LRB  F T=0:0 S T=$O(^LRO(69,LRA,1,LRB,2,"B",T)) Q:'T  D:$D(LRT(T)) C
 | 
|---|
| 20 |  . I INSTFLAG D
 | 
|---|
| 21 |  . . S XLRL="" F  S XLRL=$O(^LRO(69,LRA,1,"AC",XLRL)) Q:XLRL=""  I $$INSTHIT(XLRL) F LRB=0:0 S LRB=$O(^LRO(69,LRA,1,"AC",XLRL,LRB)) Q:'LRB  F T=0:0 S T=$O(^LRO(69,LRA,1,LRB,2,"B",T)) Q:'T  D:$D(LRT(T)) C
 | 
|---|
| 22 |  F A=0:0 S A=$O(LRT(A)) Q:'A!(LR("Q"))  D:$Y>(IOSL-6) H Q:LR("Q")  W !,LRT(A),?30,"Count: ",$J(LRH(A),5),?45,"Average time:" I LRG(A) S X=LRG(A)\LRH(A),Y=X\60,X=X#60 W:Y $J(Y,3)," hr" W:X ?65,$J(X,2)," min"
 | 
|---|
| 23 |  F A=0:0 S A=$O(^TMP($J,A)) Q:'A  S X=^LR(A,0),Y=$P(X,"^",3),X=$P(X,"^",2),X=^DIC(X,0,"GL"),X=@(X_Y_",0)") S ^TMP($J,"B",$P(X,"^"),A)=$P(X,"^",9)
 | 
|---|
| 24 |  W ! S LRP=0 F Q=0:0 S LRP=$O(^TMP($J,"B",LRP)) Q:LRP=""!(LR("Q"))  F A=0:0 S A=$O(^TMP($J,"B",LRP,A)) Q:'A!(LR("Q"))  S SSN=^(A),LRDPF=$P(^LR(A,0),U,2) D SSN^LRU D:$Y>(IOSL-6) H Q:LR("Q")  W !,LRP,?31,SSN D L
 | 
|---|
| 25 |  D END^LRUTL,END Q
 | 
|---|
| 26 | T S V=$P(X,".",2)_"000",V=$E(V,1,2)*60+$E(V,3,4) D H^%DTC S X=%H_"."_$E("0000",1,4-$L(V))_V Q
 | 
|---|
| 27 | L F T=0:0 S T=$O(^TMP($J,A,T)) Q:'T!(LR("Q"))  F B=0:0 S B=$O(^TMP($J,A,T,B)) Q:'B!(LR("Q"))  F C=0:0 S C=$O(^TMP($J,A,T,B,C)) Q:'C!(LR("Q"))  F E=0:0 S E=$O(^TMP($J,A,T,B,C,E)) Q:'E!(LR("Q"))  D W
 | 
|---|
| 28 |  K T,B,C,E
 | 
|---|
| 29 |  Q
 | 
|---|
| 30 | W D:$Y>(IOSL-6) H1 Q:LR("Q")
 | 
|---|
| 31 |  W !?3,LRT(T),?32,$$Y2K^LRX(B,"5D"),?44 S X(1)=^TMP($J,A,T,B,C,E),X=+X(1),Y=X\60,X=X#60 W:Y $J(Y,3)," hr" W:X ?50,$J(X,2)," min" W ?60,"Arr time:" S X=$P(X(1),"^",2) W $E(X,1,2)_":"_$E(X,3,4) Q
 | 
|---|
| 32 |  ;
 | 
|---|
| 33 | C S E=$O(^LRO(69,LRA,1,LRB,2,"B",T,0)),LRS=$S($D(^LRO(69,LRA,1,LRB,3)):+^(3),1:0),E=$S($D(^(2,E,0)):^(0),1:""),W=$P(E,"^",4),LRC=$P(E,"^",3),LRX=$P(E,"^",5)
 | 
|---|
| 34 |  I $P(E,"^",11)'="" Q
 | 
|---|
| 35 |  I $$CANCEL Q
 | 
|---|
| 36 |  I LRS,W,LRC,LRX,$D(^LRO(68,W,1,LRC,1,LRX,4,T,0)) S X=$P(^(0),"^",5) Q:X'["."  Q:$P(^(0),"^",8)=""  D T S LRF=X D S
 | 
|---|
| 37 |  Q
 | 
|---|
| 38 | S S (LRS(1),X)=LRS D T S LRS=X,LRDFN=+^LRO(68,W,1,LRC,1,LRX,0) S X=$P(LRF,".")-$P(LRS,".") S:X X=X*1440 S LRT=X+$P(LRF,".",2)-$P(LRS,".",2)
 | 
|---|
| 39 |  S LRG(T)=LRG(T)+LRT,LRH(T)=LRH(T)+1 S:$D(LRI) ^TMP($J,LRDFN,T,LRA,W,LRX)=LRT_"^"_$P(LRS(1),".",2)_"000" Q
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 | H I $D(LR("F")),IOST?1"C".E D M^LRU Q:LR("Q")
 | 
|---|
| 42 |  D F^LRU W !,"Location: ",LRL,!,"Laboratory test turnaround times from: ",LRSTR," to ",LRLST,!,LR("%") Q
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 | H1 D H Q:LR("Q")  W !,LRP,?31,SSN Q
 | 
|---|
| 45 |  ;
 | 
|---|
| 46 | END D V^LRU K INSTFLAG,XLRL Q
 | 
|---|
| 47 | LOC ; check file 44 for location entered
 | 
|---|
| 48 |  I $E(LRY,1,2)="L."!($E(LRY,1,2)="l.") S LRY=$E(LRY,3,99) D HLOC Q
 | 
|---|
| 49 |  I $E(LRY,1,2)="I."!($E(LRY,1,2)="i.") S LRY=$E(LRY,3,99) D INST Q
 | 
|---|
| 50 |  D HLOC I Y<1 D INST
 | 
|---|
| 51 |  Q
 | 
|---|
| 52 | HLOC S X=LRY,DIC=44,DIC(0)="EMZ" D ^DIC K DIC I Y'<1 S LRL=$P(Y(0),U,2) I LRL="" W $C(7),!!,"There must be an abbreviation entered for the hospital location!"
 | 
|---|
| 53 |  Q
 | 
|---|
| 54 | INST ; check file 4 for location entered
 | 
|---|
| 55 |  S X=LRY,DIC=4,DIC(0)="EQMZ",DIC("S")="I $G(^DIC(4,Y,99))" D ^DIC K DIC I Y'<1 S LRL=$P(Y(0),"^"),INSTFLAG=1
 | 
|---|
| 56 |  Q
 | 
|---|
| 57 | INSTHIT(XLOC) ;
 | 
|---|
| 58 |  N HIT,LOCNUM,INSTNUM,X99
 | 
|---|
| 59 |  S HIT=0
 | 
|---|
| 60 |  S LOCNUM=$O(^SC("C",XLOC,0))
 | 
|---|
| 61 |  I LOCNUM'="" D
 | 
|---|
| 62 |  . S INSTNUM=$P($G(^SC(LOCNUM,0)),U,4)
 | 
|---|
| 63 |  . Q:INSTNUM=""
 | 
|---|
| 64 |  . I $D(^DIC(4,"B",LRL,INSTNUM)) D
 | 
|---|
| 65 |  . . S X99=$G(^DIC(4,INSTNUM,99))
 | 
|---|
| 66 |  . . Q:X99=""
 | 
|---|
| 67 |  . . I $P(X99,U,4) Q
 | 
|---|
| 68 |  . . S HIT=1
 | 
|---|
| 69 |  Q HIT
 | 
|---|
| 70 | CANCEL() ;
 | 
|---|
| 71 |  ; This function checks to see if a test was cancelled. 
 | 
|---|
| 72 |  ; If the test was cancelled the function evaluates as "true".
 | 
|---|
| 73 |  N CANFLAG,COLTIME,LRTIME,LRID,TESTNUM,LR63,PC1
 | 
|---|
| 74 |  S CANFLAG=0
 | 
|---|
| 75 |  S COLTIME=$P($G(^LRO(69,LRA,1,LRB,1)),"^",1)
 | 
|---|
| 76 |  I COLTIME D
 | 
|---|
| 77 |  . S LRTIME=9999999-COLTIME
 | 
|---|
| 78 |  . S LRID=$P($G(^LRO(69,LRA,1,LRB,0)),"^",1)
 | 
|---|
| 79 |  . I LRID="" Q
 | 
|---|
| 80 |  . S TESTNUM=$G(^LAB(60,T,.2))
 | 
|---|
| 81 |  . I TESTNUM="" Q
 | 
|---|
| 82 |  . S LR63=$G(^LR(LRID,"CH",LRTIME,TESTNUM))
 | 
|---|
| 83 |  . I LR63="" Q
 | 
|---|
| 84 |  . S PC1=$P(LR63,"^",1)
 | 
|---|
| 85 |  . I PC1="" Q
 | 
|---|
| 86 |  . I $E(PC1,1,$L(PC1))=$E("CANCELLED",1,$L(PC1))!($E(PC1,1,$L(PC1))=$E("cancelled",1,$L(PC1))) S CANFLAG=1
 | 
|---|
| 87 |  Q CANFLAG
 | 
|---|