| [613] | 1 | LAKDIFF1 ;DALOI/RWF/LL/RES - KEYBOARD DIFF PART 2 ; 7/14/87  08:02
 | 
|---|
 | 2 |  ;;5.2;AUTOMATED LAB INSTRUMENTS;**52**;Sep 27, 1994
 | 
|---|
 | 3 |  ; WBC DIFF CELL COUNTER
 | 
|---|
 | 4 |  ;
 | 
|---|
 | 5 | A ;
 | 
|---|
 | 6 |  N LAI
 | 
|---|
 | 7 |  ;
 | 
|---|
 | 8 |  K KEY,NC,TY,T1,T2
 | 
|---|
 | 9 |  ;
 | 
|---|
 | 10 |  S KEY="",LAI=0
 | 
|---|
 | 11 |  F  S LAI=$O(^TMP($J,"W",LAI)) Q:LAI=""  D
 | 
|---|
 | 12 |  . S K=^TMP($J,"W",LAI),KEY(K)=LAI,KEY=KEY_K,TY(K)=""
 | 
|---|
 | 13 |  . I $D(^TMP($J,"NC",LAI)) S NC(K)=""
 | 
|---|
 | 14 |  ;
 | 
|---|
 | 15 |  F LAI=1:1:27 D  Q:$O(^TMP($J,"W",LAI))=""
 | 
|---|
 | 16 |  . S X=$G(^TMP("LA",$J,LAI,4))
 | 
|---|
 | 17 |  . S Y=$G(^TMP("LA",$J,LAI,.1))
 | 
|---|
 | 18 |  . S ^TMP($J,"A",LAI\9+1,LAI#9)=X_"^"_Y,T2=LAI
 | 
|---|
 | 19 |  ;
 | 
|---|
 | 20 |  S T1=1,(T1(1),T2(1))=""
 | 
|---|
 | 21 |  ;
 | 
|---|
 | 22 |  F LAI=1:1:T2 D
 | 
|---|
 | 23 |  . S X=^TMP($J,"A",LAI\9+1,LAI#9)
 | 
|---|
 | 24 |  . S T1(T1)=T1(T1)_$J($P(X,U,1),8)
 | 
|---|
 | 25 |  . S T2(T1)=T2(T1)_$J($P(X,U,2),8)
 | 
|---|
 | 26 |  . I '(LAI#9) S T1=T1+1,(T1(T1),T2(T1))=""
 | 
|---|
 | 27 |  ;
 | 
|---|
 | 28 |  S (TOTAL,FLAG,STORE)=0
 | 
|---|
 | 29 |  D HD1,HD4,HD2
 | 
|---|
 | 30 |  ;
 | 
|---|
 | 31 |  F  Q:TOTAL=200!FLAG!STORE  D
 | 
|---|
 | 32 |  . N DTOUT
 | 
|---|
 | 33 |  . D SAY^XGF(IOSL-1,0,"WBC: ")
 | 
|---|
 | 34 |  . S TYPE=$$READ^XGF(1,DTIME)
 | 
|---|
 | 35 |  . I TYPE="^"!($D(DTOUT)) S FLAG=1 Q
 | 
|---|
 | 36 |  . S LINE=$S(TYPE="":"STOP",TYPE="-":"MINUS",TYPE="!":"COM",KEY'[TYPE:"HELP",1:"COUNT")
 | 
|---|
 | 37 |  . D @LINE
 | 
|---|
 | 38 |  ;
 | 
|---|
 | 39 |  D STORE:(TOTAL=200)!(STORE)
 | 
|---|
 | 40 |  ;
 | 
|---|
 | 41 |  K TEMP,T1,T2,KEY,NC,CONT,J,L,TOTAL,CHK,STORE
 | 
|---|
 | 42 |  Q
 | 
|---|
 | 43 |  ;
 | 
|---|
 | 44 | COUNT ; Add key to cell count
 | 
|---|
 | 45 |  ; 
 | 
|---|
 | 46 |  ; Count key
 | 
|---|
 | 47 |  I '$D(NC(TYPE)) S TOTAL=TOTAL+1
 | 
|---|
 | 48 |  ;
 | 
|---|
 | 49 |  S TY(TYPE)=TY(TYPE)+1
 | 
|---|
 | 50 |  I LAUPDATE D SHOWCNT
 | 
|---|
 | 51 |  D HD3
 | 
|---|
 | 52 |  I '$D(NC(TYPE)),(TOTAL=100!(TOTAL=200)) D EVAL
 | 
|---|
 | 53 |  Q
 | 
|---|
 | 54 |  ;
 | 
|---|
 | 55 | HELP ;
 | 
|---|
 | 56 |  ;
 | 
|---|
 | 57 |  I TYPE'="?" D  Q
 | 
|---|
 | 58 |  . D CLEAR^XGF(IOSL-1,0,IOSL-1,IOM-1)
 | 
|---|
 | 59 |  . D SAY^XGF(IOSL-1,0,$C(7)_"INVALID WBC CELL KEY")
 | 
|---|
 | 60 |  . H 2
 | 
|---|
 | 61 |  . D CLEAR^XGF(IOSL-1,0,IOSL-1,IOM-1)
 | 
|---|
 | 62 |  . D HD3
 | 
|---|
 | 63 |  ;
 | 
|---|
 | 64 |  D SHOWCNT,HD3
 | 
|---|
 | 65 |  Q
 | 
|---|
 | 66 |  ;
 | 
|---|
 | 67 | SHOWCNT ; Display current cell count
 | 
|---|
 | 68 |  ;
 | 
|---|
 | 69 |  N I,I1,X,K
 | 
|---|
 | 70 |  ;
 | 
|---|
 | 71 |  S $Y=LRDY
 | 
|---|
 | 72 |  F I1=1:9:T2 D
 | 
|---|
 | 73 |  . S $Y=$Y+3,$X=6
 | 
|---|
 | 74 |  . F I=I1:1:I1+8 Q:I>T2  D
 | 
|---|
 | 75 |  . . S X=$G(^TMP($J,"W",I),"^"),K=$G(TY(X))
 | 
|---|
 | 76 |  . . I '$L(K) S $X=$X+8
 | 
|---|
 | 77 |  . . E  D SAY^XGF($Y,$X+(9-$L(K)),K,"R1")
 | 
|---|
 | 78 |  . S $Y=$Y+1
 | 
|---|
 | 79 |  Q
 | 
|---|
 | 80 |  ;
 | 
|---|
 | 81 | STOP ;
 | 
|---|
 | 82 |  D EVAL
 | 
|---|
 | 83 |  ;
 | 
|---|
 | 84 |  N DIR,DIROUT,DTOUT,DUOUT,X,Y
 | 
|---|
 | 85 |  ;
 | 
|---|
 | 86 |  S DIR(0)="YO",DIR("B")="Y"
 | 
|---|
 | 87 |  I TOTAL<100 S DIR("A",1)=$C(7)_"* You have counted "_TOTAL_" CELLS *"
 | 
|---|
 | 88 |  S DIR("A")="Are you finished with the WBC cell count"
 | 
|---|
 | 89 |  D ^DIR
 | 
|---|
 | 90 |  I $D(DIRUT) S FLAG=1 Q
 | 
|---|
 | 91 |  I Y=1 S STORE=1
 | 
|---|
 | 92 |  I FLAG=STORE D HD1,HD4,HD2,SHOWCNT
 | 
|---|
 | 93 |  Q
 | 
|---|
 | 94 |  ;
 | 
|---|
 | 95 | EVAL ;
 | 
|---|
 | 96 |  N LAI
 | 
|---|
 | 97 |  ;
 | 
|---|
 | 98 |  W $C(7) D HD1
 | 
|---|
 | 99 |  I TOTAL<100 W $C(7),!,"NOTE:  ONLY ",TOTAL," CELLS COUNTED",!! Q:TOTAL=0
 | 
|---|
 | 100 |  W !,"Test",?11,"Count   Value"
 | 
|---|
 | 101 |  S LAI=0
 | 
|---|
 | 102 |  F  S LAI=$O(^TMP($J,"W",LAI)) Q:LAI=""  D
 | 
|---|
 | 103 |  . S K=^TMP($J,"W",LAI)
 | 
|---|
 | 104 |  . W !,$$LJ^XLFSTR(^TMP("LA",$J,LAI,.1),11,".")
 | 
|---|
 | 105 |  . S V=TY(K)
 | 
|---|
 | 106 |  . W $J(V,5),"   "
 | 
|---|
 | 107 |  . X ^TMP("LA",$J,LAI,2)
 | 
|---|
 | 108 |  . W $J(V,5)
 | 
|---|
 | 109 |  ;
 | 
|---|
 | 110 |  W !,$$LJ^XLFSTR("Total",11,".")," ",$J(TOTAL,5),!
 | 
|---|
 | 111 |  I '(TOTAL=100!(TOTAL=200)) Q
 | 
|---|
 | 112 |  I TOTAL=100 D TWO
 | 
|---|
 | 113 |  Q
 | 
|---|
 | 114 |  ;
 | 
|---|
 | 115 | TWO ;
 | 
|---|
 | 116 |  N DIR,DIROUT,DTOUT,DUOUT,X,Y
 | 
|---|
 | 117 |  ;
 | 
|---|
 | 118 |  ; Flush buffer
 | 
|---|
 | 119 |  F  S X=$$READ^XGF(1,1) Q:$D(DTOUT)
 | 
|---|
 | 120 |  ;
 | 
|---|
 | 121 |  S DIR(0)="SBO^C:CONTINUE;S:STOP"
 | 
|---|
 | 122 |  S DIR("A",1)="100 Cells counted"
 | 
|---|
 | 123 |  S DIR("A")="CONTINUE counting to 200 or STOP"
 | 
|---|
 | 124 |  S DIR("B")="STOP"
 | 
|---|
 | 125 |  D ^DIR
 | 
|---|
 | 126 |  I $D(DIRUT) S FLAG=1 Q
 | 
|---|
 | 127 |  I Y="S" S STORE=1
 | 
|---|
 | 128 |  I Y="C" D
 | 
|---|
 | 129 |  . N TYPE
 | 
|---|
 | 130 |  . D HD1,HD4,HD2
 | 
|---|
 | 131 |  . I LAUPDATE S TYPE="?" D HELP
 | 
|---|
 | 132 |  ;
 | 
|---|
 | 133 |  Q
 | 
|---|
 | 134 |  ;
 | 
|---|
 | 135 | STORE ;
 | 
|---|
 | 136 |  N LAI
 | 
|---|
 | 137 |  ;
 | 
|---|
 | 138 |  S LAI=0
 | 
|---|
 | 139 |  F  S LAI=$O(^TMP($J,"W",LAI)) Q:LAI=""  D
 | 
|---|
 | 140 |  . S K=^(LAI),V=TY(K)
 | 
|---|
 | 141 |  . X ^TMP("LA",$J,LAI,2)
 | 
|---|
 | 142 |  . S @^TMP("LA",$J,LAI,1)=V
 | 
|---|
 | 143 |  Q
 | 
|---|
 | 144 |  ;
 | 
|---|
 | 145 | MINUS ;
 | 
|---|
 | 146 |  ; Clear line on screen display
 | 
|---|
 | 147 |  D CLEAR^XGF(IOSL-1,0,IOSL-1,IOM-1)
 | 
|---|
 | 148 |  ;
 | 
|---|
 | 149 |  D SAY^XGF(IOSL-1,0,"SUBTRACT WHICH CELL TYPE: ")
 | 
|---|
 | 150 |  ;
 | 
|---|
 | 151 |  S TYPE=$$READ^XGF(1,DTIME)
 | 
|---|
 | 152 |  ;
 | 
|---|
 | 153 |  ; Clear line on screen display
 | 
|---|
 | 154 |  D CLEAR^XGF(IOSL-1,0,IOSL-1,IOM-1)
 | 
|---|
 | 155 |  ;
 | 
|---|
 | 156 |  I $D(DTOUT) S FLAG=1 Q
 | 
|---|
 | 157 |  I $L(TYPE) D
 | 
|---|
 | 158 |  . I KEY'[TYPE D  Q
 | 
|---|
 | 159 |  . . D CLEAR^XGF(IOSL-1,0,IOSL-1,IOM-1)
 | 
|---|
 | 160 |  . . D SAY^XGF(IOSL-1,0,"INVALID WBC CELL KEY")
 | 
|---|
 | 161 |  . . H 2
 | 
|---|
 | 162 |  . . D CLEAR^XGF(IOSL-1,0,IOSL-1,IOM-1)
 | 
|---|
 | 163 |  . I TY(TYPE)>0 D
 | 
|---|
 | 164 |  . . S TY(TYPE)=TY(TYPE)-1
 | 
|---|
 | 165 |  . . I '$D(NC(TYPE)),TOTAL>0 S TOTAL=TOTAL-1
 | 
|---|
 | 166 |  ;
 | 
|---|
 | 167 |  D HD1,HD4,HD2
 | 
|---|
 | 168 |  I LAUPDATE D SHOWCNT
 | 
|---|
 | 169 |  Q
 | 
|---|
 | 170 |  ;
 | 
|---|
 | 171 | HD1 ;
 | 
|---|
 | 172 |  W IOEDALL
 | 
|---|
 | 173 |  D SAY^XGF(0,0,"Patient name: "_PNM)
 | 
|---|
 | 174 |  D SAY^XGF(0,45,"SSN: "_SSN)
 | 
|---|
 | 175 |  Q
 | 
|---|
 | 176 |  ;
 | 
|---|
 | 177 | HD2 ;
 | 
|---|
 | 178 |  D SAY^XGF("+2",0,"CELL DIFFERENTIAL ('?' = DISPLAY, '!' = COMMENTS, '-' = MINUS, <RETURN> = EXIT)")
 | 
|---|
 | 179 |  S LRDY=$Y
 | 
|---|
 | 180 |  F I=1:1:T1 D
 | 
|---|
 | 181 |  . D SAY^XGF("+",0,$$LJ^XLFSTR("KEY",7)_T1(I))
 | 
|---|
 | 182 |  . D SAY^XGF("+",0,$$LJ^XLFSTR("TEST",7)_T2(I))
 | 
|---|
 | 183 |  . S $Y=$Y+2
 | 
|---|
 | 184 |  ;
 | 
|---|
 | 185 | HD3 ;
 | 
|---|
 | 186 |  ; Clear line on screen display
 | 
|---|
 | 187 |  D CLEAR^XGF(IOSL-1,0,IOSL-1,IOM-1)
 | 
|---|
 | 188 |  ;
 | 
|---|
 | 189 |  D SAY^XGF(IOSL-1,18,"TOTAL: ")
 | 
|---|
 | 190 |  D SAY^XGF(IOSL-1,$X+(3-$L(TOTAL)),TOTAL,"R1")
 | 
|---|
 | 191 |  Q
 | 
|---|
 | 192 |  ;
 | 
|---|
 | 193 | HD4 ;
 | 
|---|
 | 194 |  N C,I,LADY,LAPN,LAQUIT,LAROW,LAYOFF,X,Y,V
 | 
|---|
 | 195 |  ;
 | 
|---|
 | 196 |  K ^TMP("LADATA",$J)
 | 
|---|
 | 197 |  ;
 | 
|---|
 | 198 |  D SAY^XGF($Y+1,0,$$CJ^XLFSTR("> CBC PROFILE  *=unverified <",IOM))
 | 
|---|
 | 199 |  S LADY=$Y+1
 | 
|---|
 | 200 |  ;
 | 
|---|
 | 201 |  ; Find unverified results in LAH
 | 
|---|
 | 202 |  S C=1
 | 
|---|
 | 203 |  F  S C=$O(^LAH(LWL,1,ISQN,C)) Q:C<1  D
 | 
|---|
 | 204 |  . S V=^LAH(LWL,1,ISQN,C)
 | 
|---|
 | 205 |  . S LAPN=$$PN(C)
 | 
|---|
 | 206 |  . S ^TMP("LADATA",$J,C)="*"_$$LJ^XLFSTR(LAPN,8,".")_" "_$P(V,U,1)_" "_$P(V,U,2)
 | 
|---|
 | 207 |  ;
 | 
|---|
 | 208 |  ; Find verified results in LR, overwrite any LAH unverified results.
 | 
|---|
 | 209 |  S C=1
 | 
|---|
 | 210 |  F  S C=$O(^LR(LRDFN,"CH",LRIDT,C)) Q:C<1  D
 | 
|---|
 | 211 |  . S V=^LR(LRDFN,"CH",LRIDT,C)
 | 
|---|
 | 212 |  . S LAPN=$$PN(C)
 | 
|---|
 | 213 |  . S ^TMP("LADATA",$J,C)=" "_$$LJ^XLFSTR(LAPN,8,".")_" "_$P(V,U,1)_" "_$P(V,U,2)
 | 
|---|
 | 214 |  ;
 | 
|---|
 | 215 |  ; Determine number of key rows and screen cutoff
 | 
|---|
 | 216 |  S LAROW=$O(T1(""),-1)
 | 
|---|
 | 217 |  S LAYOFF=$P("8^13^17","^",LAROW)
 | 
|---|
 | 218 |  ;
 | 
|---|
 | 219 |  S C=1,(I,LAQUIT)=0
 | 
|---|
 | 220 |  F  S C=$O(^TMP("LADATA",$J,C)) Q:'C  D  Q:LAQUIT
 | 
|---|
 | 221 |  . S V=^TMP("LADATA",$J,C)
 | 
|---|
 | 222 |  . D SAY^XGF(LADY,I*25,V)
 | 
|---|
 | 223 |  . S I=I+1
 | 
|---|
 | 224 |  . I I>2 D
 | 
|---|
 | 225 |  . . S I=0,LADY=LADY+1
 | 
|---|
 | 226 |  . . I (IOSL-LAYOFF)<LADY,$O(^TMP("LADATA",$J,C)) D
 | 
|---|
 | 227 |  . . . D SAY^XGF(LADY,0,$$CJ^XLFSTR("*** RESULTS TRUNCATED - INSUFFICIENT DISPLAY SPACE ***",IOM))
 | 
|---|
 | 228 |  . . . S LAQUIT=1
 | 
|---|
 | 229 |  ;
 | 
|---|
 | 230 |  K ^TMP("LADATA",$J)
 | 
|---|
 | 231 |  Q
 | 
|---|
 | 232 |  ;
 | 
|---|
 | 233 | PN(LA60) ; get print name for result
 | 
|---|
 | 234 |  ; Call with LA60 = ien of file #63 dataname
 | 
|---|
 | 235 |  ; Returns print name
 | 
|---|
 | 236 |  ;
 | 
|---|
 | 237 |  N LAPN,X
 | 
|---|
 | 238 |  ;
 | 
|---|
 | 239 |  S LAPN=""
 | 
|---|
 | 240 |  ;
 | 
|---|
 | 241 |  S X=$O(^LAB(60,"C","CH;"_LA60_";1",0))
 | 
|---|
 | 242 |  I X>0 D
 | 
|---|
 | 243 |  . S LAPN=$P($G(^LAB(60,X,.1)),"^")
 | 
|---|
 | 244 |  . ; If no print name use full name
 | 
|---|
 | 245 |  . I LAPN="" S LAPN=$P($G(^LAB(60,X,0)),"^")
 | 
|---|
 | 246 |  ;
 | 
|---|
 | 247 |  Q LAPN
 | 
|---|
 | 248 |  ;
 | 
|---|
 | 249 | COM ;
 | 
|---|
 | 250 |  D COM1
 | 
|---|
 | 251 |  D HD1,HD4,HD2
 | 
|---|
 | 252 |  I LAUPDATE D SHOWCNT
 | 
|---|
 | 253 |  Q
 | 
|---|
 | 254 |  ;
 | 
|---|
 | 255 | COM1 ;
 | 
|---|
 | 256 |  ;
 | 
|---|
 | 257 |  N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
 | 
|---|
 | 258 |  ;
 | 
|---|
 | 259 |  S DIR(0)="FO^1:68",DIR("A")="Comment"
 | 
|---|
 | 260 |  I $L($G(RMK)) S DIR("B")=RMK
 | 
|---|
 | 261 |  D ^DIR
 | 
|---|
 | 262 |  I $D(DIRUT) D  Q
 | 
|---|
 | 263 |  . I X="@" S RMK=""
 | 
|---|
 | 264 |  S RMK=Y
 | 
|---|
 | 265 |  ;
 | 
|---|
 | 266 |  Q
 | 
|---|