LRMITSPO ;DALOI/STAFF - MICRO TREND PROCESS ORGANISMS ;Dec 20, 2008
;;5.2;LAB SERVICE;**96,116,350**;Sep 27, 1994;Build 230
;
; from LRMITSPE
;
; bacteria
I $D(LROTYPE("B")),+$G(^LR(LRDFN,"MI",LRIDT,1)),$O(^(3,0)) D
. S LROTYPE="B",LRSUBN=0
. F S LRSUBN=$O(^LR(LRDFN,"MI",LRIDT,3,LRSUBN)) Q:LRSUBN<1 S LRORGN=+^(LRSUBN,0) D
. . ; if specific organisms required and not valid quit
. . I $D(LRSORG),'$D(LRSORG(LROTYPE,LRORGN)) Q
. . S LRORGNM=$E($P($G(^LAB(61.2,+LRORGN,0)),U),1,30)
. . I LRORGNM="" S LRORGNM=LRUNK
. . ; if antibiotic pattern required and not valid quit
. . I $D(LRAP) D Q:'LROK
. . . S LROK=1,LRDN=0
. . . F S LRDN=$O(LRAP(LRDN)) Q:LRDN="" S LRX=$G(^LR(LRDFN,"MI",LRIDT,3,LRSUBN,LRDN)) D Q:'LROK
. . . . S LRX=$$SENS(LRDN,LRX)
. . . . I LRX="" S LROK=0 Q
. . . . I LRX'=LRAP(LRDN) S LROK=0
. . K LRANTIM
. . S LRDN=2
. . F S LRDN=$O(^LR(LRDFN,"MI",LRIDT,3,LRSUBN,LRDN)) Q:LRDN<2!(LRDN=3) S LRX=$G(^(LRDN)) I LRX'="" D
. . . S LRINTERP=$$SENS(LRDN,LRX)
. . . I LRINTERP'="" S LRANTIM(LRDN)=LRINTERP_U_LRX
. . S LRORGNM="("_LROTYPE_") "_LRORGNM
. . D ^LRMITSPS
K LRANTIM
;
; fungus
I $D(LROTYPE("F")),+$G(^LR(LRDFN,"MI",LRIDT,8)),$O(^(9,0)) D
. S LROTYPE="F",LRSUBN=0
. F S LRSUBN=$O(^LR(LRDFN,"MI",LRIDT,9,LRSUBN)) Q:LRSUBN<1 S LRORGN=+^(LRSUBN,0) D SETUP
;
; mycobacteria
I $D(LROTYPE("M")),+$G(^LR(LRDFN,"MI",LRIDT,11)),$O(^(12,0)) D
. S LROTYPE="M",LRSUBN=0
. F S LRSUBN=$O(^LR(LRDFN,"MI",LRIDT,12,LRSUBN)) Q:LRSUBN<1 S LRORGN=+^(LRSUBN,0) D
. . K LRTB
. . S LRDN=2
. . F S LRDN=$O(^LR(LRDFN,"MI",LRIDT,12,LRSUBN,LRDN)) Q:LRDN="" S LRTB(LRDN)=$P(^(LRDN),U)
. . D SETUP
K LRTB
;
; parasite
I $D(LROTYPE("P")),+$G(^LR(LRDFN,"MI",LRIDT,5)),$O(^(6,0)) D
. S LROTYPE="P",LRSUBN=0
. F S LRSUBN=$O(^LR(LRDFN,"MI",LRIDT,6,LRSUBN)) Q:LRSUBN<1 S LRORGN=+^(LRSUBN,0) D SETUP
;
; virus
I $D(LROTYPE("V")),+$G(^LR(LRDFN,"MI",LRIDT,16)),$O(^(17,0)) D
. S LROTYPE="V",LRSUBN=0
. F S LRSUBN=$O(^LR(LRDFN,"MI",LRIDT,17,LRSUBN)) Q:LRSUBN<1 S LRORGN=+^(LRSUBN,0) D SETUP
;
; Expanded Search
I '$D(LROTYPE("B")),+$G(^LR(LRDFN,"MI",LRIDT,0)),$O(^(3,0)) D
. S LROTYPE=$S($D(LROTYPE("V")):"V",$D(LROTYPE("P")):"P",$D(LROTYPE("F")):"F",$D(LROTYPE("M")):"M",1:"")
. Q:LROTYPE=""
. S LRSUBN=0
. F S LRSUBN=$O(^LR(LRDFN,"MI",LRIDT,3,LRSUBN)) Q:LRSUBN<1 S LRORGN=+^(LRSUBN,0) D:LROTYPE=$P(^LAB(61.2,+LRORGN,0),U,5) SETUP
Q
;
;
SETUP ; if specific organisms are required, do not setup unless valid organism
I $D(LRSORG),'$D(LRSORG(LROTYPE,LRORGN)) Q
S LRORGNM=$E($P($G(^LAB(61.2,+LRORGN,0)),U),1,30) I LRORGNM="" S LRORGNM=LRUNK
S LRORGNM="("_LROTYPE_") "_LRORGNM
; setup data on isolate
D ^LRMITSPS
Q
;
;
SENS(DRUGNODE,VALUES) ; $$(antibiotic,susceptibility) -> "S","R" or ""
N INTERP,RESULT
S INTERP=$P(VALUES,U,2),RESULT=$P(VALUES,U)
I INTERP="",RESULT'="" S INTERP=$G(^LAB(62.06,"AI",DRUGNODE,RESULT))
I INTERP="" S INTERP=RESULT
I INTERP="" Q ""
I $D(LRSUSS(INTERP)) Q "S"
I $D(LRSUSR(INTERP)) Q "R"
I INTERP["S" Q "S"
Q ""
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLRMITSPO 3101 printed Oct 16, 2024@18:18:20 Page 2
LRMITSPO ;DALOI/STAFF - MICRO TREND PROCESS ORGANISMS ;Dec 20, 2008
+1 ;;5.2;LAB SERVICE;**96,116,350**;Sep 27, 1994;Build 230
+2 ;
+3 ; from LRMITSPE
+4 ;
+5 ; bacteria
+6 IF $DATA(LROTYPE("B"))
IF +$GET(^LR(LRDFN,"MI",LRIDT,1))
IF $ORDER(^(3,0))
Begin DoDot:1
+7 SET LROTYPE="B"
SET LRSUBN=0
+8 FOR
SET LRSUBN=$ORDER(^LR(LRDFN,"MI",LRIDT,3,LRSUBN))
if LRSUBN<1
QUIT
SET LRORGN=+^(LRSUBN,0)
Begin DoDot:2
+9 ; if specific organisms required and not valid quit
+10 IF $DATA(LRSORG)
IF '$DATA(LRSORG(LROTYPE,LRORGN))
QUIT
+11 SET LRORGNM=$EXTRACT($PIECE($GET(^LAB(61.2,+LRORGN,0)),U),1,30)
+12 IF LRORGNM=""
SET LRORGNM=LRUNK
+13 ; if antibiotic pattern required and not valid quit
+14 IF $DATA(LRAP)
Begin DoDot:3
+15 SET LROK=1
SET LRDN=0
+16 FOR
SET LRDN=$ORDER(LRAP(LRDN))
if LRDN=""
QUIT
SET LRX=$GET(^LR(LRDFN,"MI",LRIDT,3,LRSUBN,LRDN))
Begin DoDot:4
+17 SET LRX=$$SENS(LRDN,LRX)
+18 IF LRX=""
SET LROK=0
QUIT
+19 IF LRX'=LRAP(LRDN)
SET LROK=0
End DoDot:4
if 'LROK
QUIT
End DoDot:3
if 'LROK
QUIT
+20 KILL LRANTIM
+21 SET LRDN=2
+22 FOR
SET LRDN=$ORDER(^LR(LRDFN,"MI",LRIDT,3,LRSUBN,LRDN))
if LRDN<2!(LRDN=3)
QUIT
SET LRX=$GET(^(LRDN))
IF LRX'=""
Begin DoDot:3
+23 SET LRINTERP=$$SENS(LRDN,LRX)
+24 IF LRINTERP'=""
SET LRANTIM(LRDN)=LRINTERP_U_LRX
End DoDot:3
+25 SET LRORGNM="("_LROTYPE_") "_LRORGNM
+26 DO ^LRMITSPS
End DoDot:2
End DoDot:1
+27 KILL LRANTIM
+28 ;
+29 ; fungus
+30 IF $DATA(LROTYPE("F"))
IF +$GET(^LR(LRDFN,"MI",LRIDT,8))
IF $ORDER(^(9,0))
Begin DoDot:1
+31 SET LROTYPE="F"
SET LRSUBN=0
+32 FOR
SET LRSUBN=$ORDER(^LR(LRDFN,"MI",LRIDT,9,LRSUBN))
if LRSUBN<1
QUIT
SET LRORGN=+^(LRSUBN,0)
DO SETUP
End DoDot:1
+33 ;
+34 ; mycobacteria
+35 IF $DATA(LROTYPE("M"))
IF +$GET(^LR(LRDFN,"MI",LRIDT,11))
IF $ORDER(^(12,0))
Begin DoDot:1
+36 SET LROTYPE="M"
SET LRSUBN=0
+37 FOR
SET LRSUBN=$ORDER(^LR(LRDFN,"MI",LRIDT,12,LRSUBN))
if LRSUBN<1
QUIT
SET LRORGN=+^(LRSUBN,0)
Begin DoDot:2
+38 KILL LRTB
+39 SET LRDN=2
+40 FOR
SET LRDN=$ORDER(^LR(LRDFN,"MI",LRIDT,12,LRSUBN,LRDN))
if LRDN=""
QUIT
SET LRTB(LRDN)=$PIECE(^(LRDN),U)
+41 DO SETUP
End DoDot:2
End DoDot:1
+42 KILL LRTB
+43 ;
+44 ; parasite
+45 IF $DATA(LROTYPE("P"))
IF +$GET(^LR(LRDFN,"MI",LRIDT,5))
IF $ORDER(^(6,0))
Begin DoDot:1
+46 SET LROTYPE="P"
SET LRSUBN=0
+47 FOR
SET LRSUBN=$ORDER(^LR(LRDFN,"MI",LRIDT,6,LRSUBN))
if LRSUBN<1
QUIT
SET LRORGN=+^(LRSUBN,0)
DO SETUP
End DoDot:1
+48 ;
+49 ; virus
+50 IF $DATA(LROTYPE("V"))
IF +$GET(^LR(LRDFN,"MI",LRIDT,16))
IF $ORDER(^(17,0))
Begin DoDot:1
+51 SET LROTYPE="V"
SET LRSUBN=0
+52 FOR
SET LRSUBN=$ORDER(^LR(LRDFN,"MI",LRIDT,17,LRSUBN))
if LRSUBN<1
QUIT
SET LRORGN=+^(LRSUBN,0)
DO SETUP
End DoDot:1
+53 ;
+54 ; Expanded Search
+55 IF '$DATA(LROTYPE("B"))
IF +$GET(^LR(LRDFN,"MI",LRIDT,0))
IF $ORDER(^(3,0))
Begin DoDot:1
+56 SET LROTYPE=$SELECT($DATA(LROTYPE("V")):"V",$DATA(LROTYPE("P")):"P",$DATA(LROTYPE("F")):"F",$DATA(LROTYPE("M")):"M",1:"")
+57 if LROTYPE=""
QUIT
+58 SET LRSUBN=0
+59 FOR
SET LRSUBN=$ORDER(^LR(LRDFN,"MI",LRIDT,3,LRSUBN))
if LRSUBN<1
QUIT
SET LRORGN=+^(LRSUBN,0)
if LROTYPE=$PIECE(^LAB(61.2,+LRORGN,0),U,5)
DO SETUP
End DoDot:1
+60 QUIT
+61 ;
+62 ;
SETUP ; if specific organisms are required, do not setup unless valid organism
+1 IF $DATA(LRSORG)
IF '$DATA(LRSORG(LROTYPE,LRORGN))
QUIT
+2 SET LRORGNM=$EXTRACT($PIECE($GET(^LAB(61.2,+LRORGN,0)),U),1,30)
IF LRORGNM=""
SET LRORGNM=LRUNK
+3 SET LRORGNM="("_LROTYPE_") "_LRORGNM
+4 ; setup data on isolate
+5 DO ^LRMITSPS
+6 QUIT
+7 ;
+8 ;
SENS(DRUGNODE,VALUES) ; $$(antibiotic,susceptibility) -> "S","R" or ""
+1 NEW INTERP,RESULT
+2 SET INTERP=$PIECE(VALUES,U,2)
SET RESULT=$PIECE(VALUES,U)
+3 IF INTERP=""
IF RESULT'=""
SET INTERP=$GET(^LAB(62.06,"AI",DRUGNODE,RESULT))
+4 IF INTERP=""
SET INTERP=RESULT
+5 IF INTERP=""
QUIT ""
+6 IF $DATA(LRSUSS(INTERP))
QUIT "S"
+7 IF $DATA(LRSUSR(INTERP))
QUIT "R"
+8 IF INTERP["S"
QUIT "S"
+9 QUIT ""