| 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
 | 
|---|