| 1 | LAMIVTLC ;DALISC/DRH - MICRO VITEK LITERAL DATA MANAGER ; 1/8/96
 | 
|---|
| 2 |  ;;5.2;AUTOMATED LAB INSTRUMENTS;**12,30,37**;Sep 27,1994
 | 
|---|
| 3 | EN ;
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  D ^LAMIVTLW
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  S LRCMNT=$G(LART("o5",1))
 | 
|---|
| 8 |  S LRBACT=$G(LART("t4",1))
 | 
|---|
| 9 |  N LACCN,LASSN ;,J,JJ,JJJ,LADATA
 | 
|---|
| 10 |  S DBATA=""
 | 
|---|
| 11 |  I $G(CI)="" Q
 | 
|---|
| 12 |  I $G(LACI(CI))="" Q
 | 
|---|
| 13 |  I $G(LAPD(PI))="" Q
 | 
|---|
| 14 |  Q:'$D(LART(LABGNODE))
 | 
|---|
| 15 |  ;Q:'$D(LART(LANTIB))
 | 
|---|
| 16 |  S LACCN=LACI(CI) ;,ISQN=LACCN 
 | 
|---|
| 17 |  S LASSN=LAPD(PI)
 | 
|---|
| 18 |  S LADATA="",(J,JJ,JJJ)=0
 | 
|---|
| 19 |  F  S J=$O(LART(LABGNODE,J)) Q:'J  D
 | 
|---|
| 20 |  .  F  S JJ=$O(LART(RT,JJ)) Q:'JJ  D
 | 
|---|
| 21 |  .. I '$D(LART(LANTIB)) S LADATA(LART("t1",J)_LART(LABGNODE,J),LART(RT,JJ))="" QUIT
 | 
|---|
| 22 |  ..  F  S JJJ=$O(LART(LANTIB,JJJ)) Q:'JJJ  D
 | 
|---|
| 23 |  ...  S LADATA(LART("t1",J)_LART(LABGNODE,J),LART(RT,JJ),LART(LANTIB,JJJ))=$S($G(LART(LAMIC,JJJ))'="":LART(LAMIC,JJJ),1:" ")_U_$S(LART(A4,JJJ)'="":LART(A4,JJJ),1:"NA")
 | 
|---|
| 24 |  D SETMIC(LAPD(PI)_U_LACI(CI)) K LADATA
 | 
|---|
| 25 |  D NA^LAMIVTLW
 | 
|---|
| 26 |  Q
 | 
|---|
| 27 |  ;;5.2;AUTOMATED LAB INSTRUMENTS;**12,30**;Sep 27,1994
 | 
|---|
| 28 |  ; VLIST:
 | 
|---|
| 29 |  ;----------------------------------------------------------
 | 
|---|
| 30 |  ;LRA1=Antibody, LRVAB=Drug Node, LRORGNSM=ORGANISM, LRA3=MIC
 | 
|---|
| 31 |  ;LRID=SSN^ACCN
 | 
|---|
| 32 |  ;-----------------------------------------------------------
 | 
|---|
| 33 | SETMIC(LRIDX) ;This function resolves the vitek fields
 | 
|---|
| 34 |  ; resolved fields go to Alternative Interpretation (AI) written by FHS
 | 
|---|
| 35 |  ; DATA is the array..DATA(ORG,AB)=MIC
 | 
|---|
| 36 |  ; ID is ssn^accn (two pieces)
 | 
|---|
| 37 |  ;S TSK=3 D LA1+3^LASET ;--> left in for debugging
 | 
|---|
| 38 | LA3 ;X LAGEN ;set auto inst variables ;--> left in for debugging
 | 
|---|
| 39 |  ;----------------------------------------------------------------------
 | 
|---|
| 40 |  ; This block grabs the accn area, accn date and specimen
 | 
|---|
| 41 |  ; LRAA=ACCN AREA, LRAD=ACCN DATE, ID=SSN^ACCN NUMBER(comming from vitek)
 | 
|---|
| 42 |  ; LRSP=SPECIMEN --> TAKEN FROM PREVIOUS ENCODED VITEK RTNS.
 | 
|---|
| 43 | ID S SSN=+LRIDX
 | 
|---|
| 44 |  ;D NA^LAMIVTLW
 | 
|---|
| 45 |  S LRID=$P(LRIDX,U,2)
 | 
|---|
| 46 |  S LRA=$P(^LAH(LWL,1,ISQN,0),U,3,5)
 | 
|---|
| 47 |  S LRAA=+LRA ;Accn area
 | 
|---|
| 48 |  S LRAD=$P(LRA,U,2) ;Accn date
 | 
|---|
| 49 |  K LRSP
 | 
|---|
| 50 |  S LRAN=ID
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  Q:'$G(LRAN)!('$G(LRAD))!('$G(LRAA))
 | 
|---|
| 53 |  Q:'$D(^LRO(68,LRAA,1,LRAD,1,LRAN,0))
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 |  S LRSNORK=0
 | 
|---|
| 56 |  F  S LRSNORK=$O(^LRO(68,LRAA,1,LRAD,1,LRAN,5,LRSNORK)) Q:LRSNORK=""  D
 | 
|---|
| 57 |  .  Q:$D(^LRO(68,LRA,1,LRAD,1,LRAN,5,LRSNORK))
 | 
|---|
| 58 |  .  I LRAA,LRAD,LRSNORK S LRSP=+^LRO(68,LRAA,1,LRAD,1,LRAN,5,LRSNORK,0)
 | 
|---|
| 59 |  .  E  S LRSP=$O(^LAB(61,"B","UNKNOWN",0))
 | 
|---|
| 60 |  ;_________________________________________________________________
 | 
|---|
| 61 | UNPACK ; Here is where we unpack the bug,drug and min inhib conc (MIC)
 | 
|---|
| 62 |  ;                             LRORGNSM,CARD,LRA1 and LRA3
 | 
|---|
| 63 |  ; Multiple drugs and MIC vales per data set.
 | 
|---|
| 64 |  S LRTIC=0
 | 
|---|
| 65 |  S LRORGNZM=""
 | 
|---|
| 66 |  K LRISOFLG
 | 
|---|
| 67 |  F  S LRORGNZM=$O(LADATA(LRORGNZM)) Q:LRORGNZM=""  D
 | 
|---|
| 68 |  .  S CARD=""
 | 
|---|
| 69 |  .  F  S CARD=$O(LADATA(LRORGNZM,CARD)) Q:CARD=""  D
 | 
|---|
| 70 |  ..  I '$D(LART(LANTIB)) D ALTSET QUIT
 | 
|---|
| 71 |  ..  S LRA1=""
 | 
|---|
| 72 |  ..  F  S LRA1=$O(LADATA(LRORGNZM,CARD,LRA1)) Q:LRA1=""  D
 | 
|---|
| 73 |  ...  S LRA3=LADATA(LRORGNZM,CARD,LRA1)
 | 
|---|
| 74 |  ...  D CALL
 | 
|---|
| 75 |  Q
 | 
|---|
| 76 | ALTSET ;
 | 
|---|
| 77 |  S ISOLATE=+LRORGNZM,LRORGNSM=$P(LRORGNZM,ISOLATE,2)
 | 
|---|
| 78 |  ;If an isolate is not marked on vitek it = zero
 | 
|---|
| 79 |  ;So ^LAH does not get set with a "0" the following is used
 | 
|---|
| 80 |  ;---------------------------------------------------------
 | 
|---|
| 81 |  I ISOLATE=0 SET LRISOFLG=1
 | 
|---|
| 82 |  I $G(LRISOFLG) S ISOLATE=ISOLATE+1
 | 
|---|
| 83 |  ;----------------------------------------------------------
 | 
|---|
| 84 |  S ISOL=$O(^LAB(61.39,1,1,"B",LRORGNSM,0))
 | 
|---|
| 85 |  S ISOL=^LAB(61.39,1,1,ISOL,1) ; IEN ETIOLOGY FIELD
 | 
|---|
| 86 |  S LRORGNSM=ISOL
 | 
|---|
| 87 |  S ^LAH(LWL,1,ISQN,2,2)="CARD^"_CARD
 | 
|---|
| 88 |  S ^LAH(LWL,1,ISQN,3,ISOLATE,0)=ISOL_"^^"_CARD
 | 
|---|
| 89 |  Q
 | 
|---|
| 90 | CALL ;
 | 
|---|
| 91 |  ;This is where we call the LIC file containing the translation
 | 
|---|
| 92 |  ; for drugs and bugs comming from the instrument. 
 | 
|---|
| 93 |  ;I '$D(LRORGNSM) W !!!!,"NO ORG XMITTED"
 | 
|---|
| 94 |  ;_________________________________________________________________
 | 
|---|
| 95 |  ;Q:'$Q(^LAB(61.39,1,2,"B",LRA1))
 | 
|---|
| 96 |  S TMPAB=LRA1
 | 
|---|
| 97 |  S ISOLATE=+LRORGNZM,LRORGNSM=$P(LRORGNZM,ISOLATE,2)
 | 
|---|
| 98 |  ;If an isolate is not marked on vitek it = zero
 | 
|---|
| 99 |  ;So ^LAH does not get set with a "0" the following is used
 | 
|---|
| 100 |  ;---------------------------------------------------------
 | 
|---|
| 101 |  ;I ISOLATE=0 SET LRISOFLG=1
 | 
|---|
| 102 |  ;I $G(LRISOFLG) S ISOLATE=ISOLATE+1
 | 
|---|
| 103 |  ;S ISOLATE=ISOLATE+1
 | 
|---|
| 104 |  ;----------------------------------------------------------
 | 
|---|
| 105 |  S ISOL=$O(^LAB(61.39,1,1,"B",LRORGNSM,0))
 | 
|---|
| 106 |  S ISOL=^LAB(61.39,1,1,ISOL,1) ; IEN ETIOLOGY FIELD
 | 
|---|
| 107 |  S LRORGNSM=ISOL
 | 
|---|
| 108 |  ;S ISOL=$P(^LAB(61.2,ISOL,0),U) ; Pull out name from etiology
 | 
|---|
| 109 |  S LAVAB2=$O(^LAB(61.39,1,2,"B",LRA1,""))
 | 
|---|
| 110 |  S LAVAB1=^LAB(61.39,1,2,LAVAB2,1) ; IEN ANTIMICROBIAL SUSCEP
 | 
|---|
| 111 |  S LAVAB=$P(^LAB(62.06,LAVAB1,0),U,2) ; Pull out drug node (n.xxxx)
 | 
|---|
| 112 |  Q:'$G(LAVAB)
 | 
|---|
| 113 |  ;-----------------------------------------------------------------
 | 
|---|
| 114 |  S K1=LRA3
 | 
|---|
| 115 |  S MIC(ISOL,LAVAB)=LRA3
 | 
|---|
| 116 |  S ORG(ISOL)=ISOL
 | 
|---|
| 117 |  ;S ^LAH(LWL,1,ISQN,3,ISOL,0)=ISOL
 | 
|---|
| 118 |  S ^LAH(LWL,1,ISQN,2,2)="CARD^"_CARD
 | 
|---|
| 119 |  S ^LAH(LWL,"ISO",LACCN,ISOLATE)=ISQN
 | 
|---|
| 120 |  S ^LAH(LWL,1,ISQN,3,ISOLATE,1,0)=LRCMNT_U_LRBACT
 | 
|---|
| 121 |  S ^LAH(LWL,1,ISQN,3,ISOLATE,0)=ORG(ISOL)_"^^"_CARD
 | 
|---|
| 122 |  ;S ^TMPDRH(LACCN,LRORGNSM,CARD,TMPAB)=LRA3
 | 
|---|
| 123 | LA4 ;This is where I call FHS interp. program
 | 
|---|
| 124 |  ;------------------------------------------------------------------
 | 
|---|
| 125 |  S J=0
 | 
|---|
| 126 |  F  S J=$O(MIC(ISOL,J)) Q:J<1  D
 | 
|---|
| 127 |  .  S K=MIC(ISOL,J)_"^"
 | 
|---|
| 128 |  .  D INTRP^LAMIVTE6 D  QUIT
 | 
|---|
| 129 |  ..  ;S ^LAH(LWL,1,ISQN,3,ISOLATE,J)=K_$G(S) ; looking for AI
 | 
|---|
| 130 |  ..  ;K ^LAH(LWL,1,ISQN,3,ISOL)
 | 
|---|
| 131 |  ..  S ^LAH(LWL,1,ISQN,3,ISOLATE,J)=MIC(ISOL,J)_"^"_$P($G(S),U,2)
 | 
|---|
| 132 | END ;
 | 
|---|
| 133 |  ;K LRORGNSM,LRA1
 | 
|---|
| 134 |  K MIC,LRVAB,LRA3,LRID ; <--- COMMENT OUT FOR TESTING
 | 
|---|
| 135 |  Q
 | 
|---|
| 136 |  ;___________________________________________________________________
 | 
|---|
| 137 |  ; For debugging purposes only 
 | 
|---|
| 138 | DEBUG ;
 | 
|---|
| 139 |  K ZLACI,ZLART,ZLAPD,ZLASI
 | 
|---|
| 140 |  S LACOUNT=LACOUNT+1
 | 
|---|
| 141 |  S %X="LACI(",%Y="ZLACI(" D %XY^%RCR
 | 
|---|
| 142 |  S %Y="^TMP(""LA"",LACOUNT,""LACI""," D %XY^%RCR
 | 
|---|
| 143 |  S %X="LART(",%Y="ZLART(" D %XY^%RCR
 | 
|---|
| 144 |  S %Y="^TMP(""LA"",LACOUNT,""LART""," D %XY^%RCR
 | 
|---|
| 145 |  S %X="LAPD(",%Y="ZLAPD(" D %XY^%RCR
 | 
|---|
| 146 |  S %Y="^TMP(""LA"",LACOUNT,""LAPD""," D %XY^%RCR
 | 
|---|
| 147 |  S %X="LASI(",%Y="ZLASI(" D %XY^%RCR
 | 
|---|
| 148 |  S %Y="^TMP(""LA"",LACOUNT,""LASI""," D %XY^%RCR
 | 
|---|
| 149 |  Q
 | 
|---|