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

LAKDIFF1.m

Go to the documentation of this file.
  1. LAKDIFF1 ;DALOI/RWF/LL/RES - KEYBOARD DIFF PART 2 ; 7/14/87 08:02
  1. ;;5.2;AUTOMATED LAB INSTRUMENTS;**52**;Sep 27, 1994
  1. ; WBC DIFF CELL COUNTER
  1. ;
  1. A ;
  1. N LAI
  1. ;
  1. K KEY,NC,TY,T1,T2
  1. ;
  1. S KEY="",LAI=0
  1. F S LAI=$O(^TMP($J,"W",LAI)) Q:LAI="" D
  1. . S K=^TMP($J,"W",LAI),KEY(K)=LAI,KEY=KEY_K,TY(K)=""
  1. . I $D(^TMP($J,"NC",LAI)) S NC(K)=""
  1. ;
  1. F LAI=1:1:27 D Q:$O(^TMP($J,"W",LAI))=""
  1. . S X=$G(^TMP("LA",$J,LAI,4))
  1. . S Y=$G(^TMP("LA",$J,LAI,.1))
  1. . S ^TMP($J,"A",LAI\9+1,LAI#9)=X_"^"_Y,T2=LAI
  1. ;
  1. S T1=1,(T1(1),T2(1))=""
  1. ;
  1. F LAI=1:1:T2 D
  1. . S X=^TMP($J,"A",LAI\9+1,LAI#9)
  1. . S T1(T1)=T1(T1)_$J($P(X,U,1),8)
  1. . S T2(T1)=T2(T1)_$J($P(X,U,2),8)
  1. . I '(LAI#9) S T1=T1+1,(T1(T1),T2(T1))=""
  1. ;
  1. S (TOTAL,FLAG,STORE)=0
  1. D HD1,HD4,HD2
  1. ;
  1. F Q:TOTAL=200!FLAG!STORE D
  1. . N DTOUT
  1. . D SAY^XGF(IOSL-1,0,"WBC: ")
  1. . S TYPE=$$READ^XGF(1,DTIME)
  1. . I TYPE="^"!($D(DTOUT)) S FLAG=1 Q
  1. . S LINE=$S(TYPE="":"STOP",TYPE="-":"MINUS",TYPE="!":"COM",KEY'[TYPE:"HELP",1:"COUNT")
  1. . D @LINE
  1. ;
  1. D STORE:(TOTAL=200)!(STORE)
  1. ;
  1. K TEMP,T1,T2,KEY,NC,CONT,J,L,TOTAL,CHK,STORE
  1. Q
  1. ;
  1. COUNT ; Add key to cell count
  1. ;
  1. ; Count key
  1. I '$D(NC(TYPE)) S TOTAL=TOTAL+1
  1. ;
  1. S TY(TYPE)=TY(TYPE)+1
  1. I LAUPDATE D SHOWCNT
  1. D HD3
  1. I '$D(NC(TYPE)),(TOTAL=100!(TOTAL=200)) D EVAL
  1. Q
  1. ;
  1. HELP ;
  1. ;
  1. I TYPE'="?" D Q
  1. . D CLEAR^XGF(IOSL-1,0,IOSL-1,IOM-1)
  1. . D SAY^XGF(IOSL-1,0,$C(7)_"INVALID WBC CELL KEY")
  1. . H 2
  1. . D CLEAR^XGF(IOSL-1,0,IOSL-1,IOM-1)
  1. . D HD3
  1. ;
  1. D SHOWCNT,HD3
  1. Q
  1. ;
  1. SHOWCNT ; Display current cell count
  1. ;
  1. N I,I1,X,K
  1. ;
  1. S $Y=LRDY
  1. F I1=1:9:T2 D
  1. . S $Y=$Y+3,$X=6
  1. . F I=I1:1:I1+8 Q:I>T2 D
  1. . . S X=$G(^TMP($J,"W",I),"^"),K=$G(TY(X))
  1. . . I '$L(K) S $X=$X+8
  1. . . E D SAY^XGF($Y,$X+(9-$L(K)),K,"R1")
  1. . S $Y=$Y+1
  1. Q
  1. ;
  1. STOP ;
  1. D EVAL
  1. ;
  1. N DIR,DIROUT,DTOUT,DUOUT,X,Y
  1. ;
  1. S DIR(0)="YO",DIR("B")="Y"
  1. I TOTAL<100 S DIR("A",1)=$C(7)_"* You have counted "_TOTAL_" CELLS *"
  1. S DIR("A")="Are you finished with the WBC cell count"
  1. D ^DIR
  1. I $D(DIRUT) S FLAG=1 Q
  1. I Y=1 S STORE=1
  1. I FLAG=STORE D HD1,HD4,HD2,SHOWCNT
  1. Q
  1. ;
  1. EVAL ;
  1. N LAI
  1. ;
  1. W $C(7) D HD1
  1. I TOTAL<100 W $C(7),!,"NOTE: ONLY ",TOTAL," CELLS COUNTED",!! Q:TOTAL=0
  1. W !,"Test",?11,"Count Value"
  1. S LAI=0
  1. F S LAI=$O(^TMP($J,"W",LAI)) Q:LAI="" D
  1. . S K=^TMP($J,"W",LAI)
  1. . W !,$$LJ^XLFSTR(^TMP("LA",$J,LAI,.1),11,".")
  1. . S V=TY(K)
  1. . W $J(V,5)," "
  1. . X ^TMP("LA",$J,LAI,2)
  1. . W $J(V,5)
  1. ;
  1. W !,$$LJ^XLFSTR("Total",11,".")," ",$J(TOTAL,5),!
  1. I '(TOTAL=100!(TOTAL=200)) Q
  1. I TOTAL=100 D TWO
  1. Q
  1. ;
  1. TWO ;
  1. N DIR,DIROUT,DTOUT,DUOUT,X,Y
  1. ;
  1. ; Flush buffer
  1. F S X=$$READ^XGF(1,1) Q:$D(DTOUT)
  1. ;
  1. S DIR(0)="SBO^C:CONTINUE;S:STOP"
  1. S DIR("A",1)="100 Cells counted"
  1. S DIR("A")="CONTINUE counting to 200 or STOP"
  1. S DIR("B")="STOP"
  1. D ^DIR
  1. I $D(DIRUT) S FLAG=1 Q
  1. I Y="S" S STORE=1
  1. I Y="C" D
  1. . N TYPE
  1. . D HD1,HD4,HD2
  1. . I LAUPDATE S TYPE="?" D HELP
  1. ;
  1. Q
  1. ;
  1. STORE ;
  1. N LAI
  1. ;
  1. S LAI=0
  1. F S LAI=$O(^TMP($J,"W",LAI)) Q:LAI="" D
  1. . S K=^(LAI),V=TY(K)
  1. . X ^TMP("LA",$J,LAI,2)
  1. . S @^TMP("LA",$J,LAI,1)=V
  1. Q
  1. ;
  1. MINUS ;
  1. ; Clear line on screen display
  1. D CLEAR^XGF(IOSL-1,0,IOSL-1,IOM-1)
  1. ;
  1. D SAY^XGF(IOSL-1,0,"SUBTRACT WHICH CELL TYPE: ")
  1. ;
  1. S TYPE=$$READ^XGF(1,DTIME)
  1. ;
  1. ; Clear line on screen display
  1. D CLEAR^XGF(IOSL-1,0,IOSL-1,IOM-1)
  1. ;
  1. I $D(DTOUT) S FLAG=1 Q
  1. I $L(TYPE) D
  1. . I KEY'[TYPE D Q
  1. . . D CLEAR^XGF(IOSL-1,0,IOSL-1,IOM-1)
  1. . . D SAY^XGF(IOSL-1,0,"INVALID WBC CELL KEY")
  1. . . H 2
  1. . . D CLEAR^XGF(IOSL-1,0,IOSL-1,IOM-1)
  1. . I TY(TYPE)>0 D
  1. . . S TY(TYPE)=TY(TYPE)-1
  1. . . I '$D(NC(TYPE)),TOTAL>0 S TOTAL=TOTAL-1
  1. ;
  1. D HD1,HD4,HD2
  1. I LAUPDATE D SHOWCNT
  1. Q
  1. ;
  1. HD1 ;
  1. W IOEDALL
  1. D SAY^XGF(0,0,"Patient name: "_PNM)
  1. D SAY^XGF(0,45,"SSN: "_SSN)
  1. Q
  1. ;
  1. HD2 ;
  1. D SAY^XGF("+2",0,"CELL DIFFERENTIAL ('?' = DISPLAY, '!' = COMMENTS, '-' = MINUS, <RETURN> = EXIT)")
  1. S LRDY=$Y
  1. F I=1:1:T1 D
  1. . D SAY^XGF("+",0,$$LJ^XLFSTR("KEY",7)_T1(I))
  1. . D SAY^XGF("+",0,$$LJ^XLFSTR("TEST",7)_T2(I))
  1. . S $Y=$Y+2
  1. ;
  1. HD3 ;
  1. ; Clear line on screen display
  1. D CLEAR^XGF(IOSL-1,0,IOSL-1,IOM-1)
  1. ;
  1. D SAY^XGF(IOSL-1,18,"TOTAL: ")
  1. D SAY^XGF(IOSL-1,$X+(3-$L(TOTAL)),TOTAL,"R1")
  1. Q
  1. ;
  1. HD4 ;
  1. N C,I,LADY,LAPN,LAQUIT,LAROW,LAYOFF,X,Y,V
  1. ;
  1. K ^TMP("LADATA",$J)
  1. ;
  1. D SAY^XGF($Y+1,0,$$CJ^XLFSTR("> CBC PROFILE *=unverified <",IOM))
  1. S LADY=$Y+1
  1. ;
  1. ; Find unverified results in LAH
  1. S C=1
  1. F S C=$O(^LAH(LWL,1,ISQN,C)) Q:C<1 D
  1. . S V=^LAH(LWL,1,ISQN,C)
  1. . S LAPN=$$PN(C)
  1. . S ^TMP("LADATA",$J,C)="*"_$$LJ^XLFSTR(LAPN,8,".")_" "_$P(V,U,1)_" "_$P(V,U,2)
  1. ;
  1. ; Find verified results in LR, overwrite any LAH unverified results.
  1. S C=1
  1. F S C=$O(^LR(LRDFN,"CH",LRIDT,C)) Q:C<1 D
  1. . S V=^LR(LRDFN,"CH",LRIDT,C)
  1. . S LAPN=$$PN(C)
  1. . S ^TMP("LADATA",$J,C)=" "_$$LJ^XLFSTR(LAPN,8,".")_" "_$P(V,U,1)_" "_$P(V,U,2)
  1. ;
  1. ; Determine number of key rows and screen cutoff
  1. S LAROW=$O(T1(""),-1)
  1. S LAYOFF=$P("8^13^17","^",LAROW)
  1. ;
  1. S C=1,(I,LAQUIT)=0
  1. F S C=$O(^TMP("LADATA",$J,C)) Q:'C D Q:LAQUIT
  1. . S V=^TMP("LADATA",$J,C)
  1. . D SAY^XGF(LADY,I*25,V)
  1. . S I=I+1
  1. . I I>2 D
  1. . . S I=0,LADY=LADY+1
  1. . . I (IOSL-LAYOFF)<LADY,$O(^TMP("LADATA",$J,C)) D
  1. . . . D SAY^XGF(LADY,0,$$CJ^XLFSTR("*** RESULTS TRUNCATED - INSUFFICIENT DISPLAY SPACE ***",IOM))
  1. . . . S LAQUIT=1
  1. ;
  1. K ^TMP("LADATA",$J)
  1. Q
  1. ;
  1. PN(LA60) ; get print name for result
  1. ; Call with LA60 = ien of file #63 dataname
  1. ; Returns print name
  1. ;
  1. N LAPN,X
  1. ;
  1. S LAPN=""
  1. ;
  1. S X=$O(^LAB(60,"C","CH;"_LA60_";1",0))
  1. I X>0 D
  1. . S LAPN=$P($G(^LAB(60,X,.1)),"^")
  1. . ; If no print name use full name
  1. . I LAPN="" S LAPN=$P($G(^LAB(60,X,0)),"^")
  1. ;
  1. Q LAPN
  1. ;
  1. COM ;
  1. D COM1
  1. D HD1,HD4,HD2
  1. I LAUPDATE D SHOWCNT
  1. Q
  1. ;
  1. COM1 ;
  1. ;
  1. N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
  1. ;
  1. S DIR(0)="FO^1:68",DIR("A")="Comment"
  1. I $L($G(RMK)) S DIR("B")=RMK
  1. D ^DIR
  1. I $D(DIRUT) D Q
  1. . I X="@" S RMK=""
  1. S RMK=Y
  1. ;
  1. Q