- 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 Mar 13, 2025@21:22:05 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 ""