LA7VHLUB ;DALOI/LMT - HL7 MI Bact Override Check ;03/18/11  12:23
 ;;5.2;AUTOMATED LAB INSTRUMENTS;**74**;Sep 27, 1994;Build 229
 ;
 Q
 ;
BACTCHK(LA7ONLT,LA7AA,LA7AD,LA7AN,LA76247) ;
 ;
 ; Check if Organism should be stored under Bacteriology section instead of MI section determined by OBX-3 mapping.
 ; Used in cases where a Parasite, Fungus, Mycobacterium, or Virus was reported on a Bacterial culture.
 ;
 ; Call with  LA7ONLT = <opt> NLT WKLD code from OBR-4
 ;              LA7AA = Accession Area
 ;              LA7AD = Accession Date
 ;              LA7AN = Accession Number
 ;            LA76247 = File #62.47 IEN (Concept being used)
 ;
 ; Returns    LA76247 = File #62.47 IEN (Concept to be used)
 ;
 ; -------------------
 ; LA76247
 ;    3: BACTERIA
 ;    4: MYCOBACTERIA
 ;    5: VIRUS
 ;    8: PARASITE
 ;    9: FUNGUS
 ; -------------------
 ;
 N LA764,LA760,LA7X
 ;
 S LA764=""
 I $G(LA7ONLT) S LA764=$O(^LAM("E",LA7ONLT,0))
 ;
 ; Already using Bacteria concept - No need to check
 I LA76247=3 Q LA76247
 ;
 ; If current concept is not Mycobacteria, Virus, Parasite, or Fungus - quit
 I LA76247'?1(1"4",1"5",1"8",1"9") Q LA76247
 ;
 ; If LA7ONLT exists (from OBR-4), then use that to determine ordered test DB mapping
 I LA764 D  Q LA76247
 . ; If ordered test is mapped to bacteriology section, then use Bacteria concept
 . I $$NLT2SEC(LA764)=3 S LA76247=3
 ;
 I '$G(LA7AA)!('$G(LA7AD))!('$G(LA7AN)) Q LA76247
 ;
 ; If LA7ONLT does not exist, look at tests on accession
 ;  - If one of the tests is mapped to same MI section as concept being used, no need to override
 ;  - Else: if one of the tests is mapped to bacteriology section, then override with Bacteria concept
 S LA760=0
 F  S LA760=$O(^LRO(68,LA7AA,1,LA7AD,1,LA7AN,4,LA760)) Q:'LA760  D
 . S LA764=$P($G(^LAB(60,LA760,64)),"^")
 . Q:'LA764
 . S LA7X($$NLT2SEC(LA764))=""
 ; One of tests is for same section as concept being used. No need to override.
 I $D(LA7X(LA76247)) Q LA76247
 ; Else: If one of the tests is mapped to bacteriology section, then use Bacteria concept
 I $D(LA7X(3)) S LA76247=3
 ;
 Q LA76247
 ;
 ;
NLT2SEC(LA764) ; Helper function (used by BACTCHK)
 ;
 ; Finds MI section that NLT is mapped to.
 ;
 ; Call with   LA764 = File #64 IEN
 ;
 ; Returns    LA7SEC = Section that #64 entry is mapped to (determined by MI/AP DATABASE CODE)
 ;                     3: BACTERIA
 ;                     4: MYCOBACTERIA
 ;                     5: VIRUS
 ;                     8: PARASITE
 ;                     9: FUNGUS
 ;                     0: Anything else
 ;
 N LA7SEC,LA764061,LA7MIDBCD,LA7MISB
 ;
 S LA7SEC=0
 ;
 I '$G(LA764) Q LA7SEC
 ;
 S LA764061=$P($G(^LAM(LA764,63)),"^",1)
 S LA7MIDBCD=$G(^LAB(64.061,+LA764061,63))
 ;
 ; If #64.061 entry Subscript is not 'MI' - quit
 I $P(LA7MIDBCD,"^")'="MI" Q LA7SEC
 ;
 S LA7MISB=$P(LA7MIDBCD,"^",2,3) ; File/Subfile^Field Number
 S LA7SEC=$S(LA7MISB="63.05^11":3,LA7MISB="63.05^22":4,LA7MISB="63.05^33":5,LA7MISB="63.05^14":8,LA7MISB="63.05^18":9,1:0)
 ;
 Q LA7SEC
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLA7VHLUB   3094     printed  Sep 23, 2025@19:16:17                                                                                                                                                                                                    Page 2
LA7VHLUB  ;DALOI/LMT - HL7 MI Bact Override Check ;03/18/11  12:23
 +1       ;;5.2;AUTOMATED LAB INSTRUMENTS;**74**;Sep 27, 1994;Build 229
 +2       ;
 +3        QUIT 
 +4       ;
BACTCHK(LA7ONLT,LA7AA,LA7AD,LA7AN,LA76247) ;
 +1       ;
 +2       ; Check if Organism should be stored under Bacteriology section instead of MI section determined by OBX-3 mapping.
 +3       ; Used in cases where a Parasite, Fungus, Mycobacterium, or Virus was reported on a Bacterial culture.
 +4       ;
 +5       ; Call with  LA7ONLT = <opt> NLT WKLD code from OBR-4
 +6       ;              LA7AA = Accession Area
 +7       ;              LA7AD = Accession Date
 +8       ;              LA7AN = Accession Number
 +9       ;            LA76247 = File #62.47 IEN (Concept being used)
 +10      ;
 +11      ; Returns    LA76247 = File #62.47 IEN (Concept to be used)
 +12      ;
 +13      ; -------------------
 +14      ; LA76247
 +15      ;    3: BACTERIA
 +16      ;    4: MYCOBACTERIA
 +17      ;    5: VIRUS
 +18      ;    8: PARASITE
 +19      ;    9: FUNGUS
 +20      ; -------------------
 +21      ;
 +22       NEW LA764,LA760,LA7X
 +23      ;
 +24       SET LA764=""
 +25       IF $GET(LA7ONLT)
               SET LA764=$ORDER(^LAM("E",LA7ONLT,0))
 +26      ;
 +27      ; Already using Bacteria concept - No need to check
 +28       IF LA76247=3
               QUIT LA76247
 +29      ;
 +30      ; If current concept is not Mycobacteria, Virus, Parasite, or Fungus - quit
 +31       IF LA76247'?1(1"4",1"5",1"8",1"9")
               QUIT LA76247
 +32      ;
 +33      ; If LA7ONLT exists (from OBR-4), then use that to determine ordered test DB mapping
 +34       IF LA764
               Begin DoDot:1
 +35      ; If ordered test is mapped to bacteriology section, then use Bacteria concept
 +36               IF $$NLT2SEC(LA764)=3
                       SET LA76247=3
               End DoDot:1
               QUIT LA76247
 +37      ;
 +38       IF '$GET(LA7AA)!('$GET(LA7AD))!('$GET(LA7AN))
               QUIT LA76247
 +39      ;
 +40      ; If LA7ONLT does not exist, look at tests on accession
 +41      ;  - If one of the tests is mapped to same MI section as concept being used, no need to override
 +42      ;  - Else: if one of the tests is mapped to bacteriology section, then override with Bacteria concept
 +43       SET LA760=0
 +44       FOR 
               SET LA760=$ORDER(^LRO(68,LA7AA,1,LA7AD,1,LA7AN,4,LA760))
               if 'LA760
                   QUIT 
               Begin DoDot:1
 +45               SET LA764=$PIECE($GET(^LAB(60,LA760,64)),"^")
 +46               if 'LA764
                       QUIT 
 +47               SET LA7X($$NLT2SEC(LA764))=""
               End DoDot:1
 +48      ; One of tests is for same section as concept being used. No need to override.
 +49       IF $DATA(LA7X(LA76247))
               QUIT LA76247
 +50      ; Else: If one of the tests is mapped to bacteriology section, then use Bacteria concept
 +51       IF $DATA(LA7X(3))
               SET LA76247=3
 +52      ;
 +53       QUIT LA76247
 +54      ;
 +55      ;
NLT2SEC(LA764) ; Helper function (used by BACTCHK)
 +1       ;
 +2       ; Finds MI section that NLT is mapped to.
 +3       ;
 +4       ; Call with   LA764 = File #64 IEN
 +5       ;
 +6       ; Returns    LA7SEC = Section that #64 entry is mapped to (determined by MI/AP DATABASE CODE)
 +7       ;                     3: BACTERIA
 +8       ;                     4: MYCOBACTERIA
 +9       ;                     5: VIRUS
 +10      ;                     8: PARASITE
 +11      ;                     9: FUNGUS
 +12      ;                     0: Anything else
 +13      ;
 +14       NEW LA7SEC,LA764061,LA7MIDBCD,LA7MISB
 +15      ;
 +16       SET LA7SEC=0
 +17      ;
 +18       IF '$GET(LA764)
               QUIT LA7SEC
 +19      ;
 +20       SET LA764061=$PIECE($GET(^LAM(LA764,63)),"^",1)
 +21       SET LA7MIDBCD=$GET(^LAB(64.061,+LA764061,63))
 +22      ;
 +23      ; If #64.061 entry Subscript is not 'MI' - quit
 +24       IF $PIECE(LA7MIDBCD,"^")'="MI"
               QUIT LA7SEC
 +25      ;
 +26      ; File/Subfile^Field Number
           SET LA7MISB=$PIECE(LA7MIDBCD,"^",2,3)
 +27       SET LA7SEC=$SELECT(LA7MISB="63.05^11":3,LA7MISB="63.05^22":4,LA7MISB="63.05^33":5,LA7MISB="63.05^14":8,LA7MISB="63.05^18":9,1:0)
 +28      ;
 +29       QUIT LA7SEC