- GMTSLRM ; SLC/JER,KER - Microbiology Component Driver ; 09/21/2001
- ;;2.7;Health Summary;**28,47**;Oct 20, 1995
- ;
- ; External References
- ; DBIA 525 ^LR( all fields
- ; DBIA 10035 ^DPT( field 63 Read w/Fileman
- ; DBIA 2056 $$GET1^DIQ (file 2)
- ;
- MAIN ; Microbiology
- N IX0,IX,LRDFN,MAX,D1,D2,D3
- S LRDFN=+($$GET1^DIQ(2,(+($G(DFN))_","),63,"I")) Q:+LRDFN=0 Q:'$D(^LR(LRDFN))
- Q:+($S('$D(^LR(LRDFN,"MI",0)):1,'$O(^LR(LRDFN,"MI",GMTS1)):1,$O(^(GMTS1))>GMTS2:1,1:0))
- S MAX=$S(+($G(GMTSNDM))>0:+($G(GMTSNDM)),1:999),IX=GMTS1
- F IX0=1:1:MAX S IX=$O(^LR(LRDFN,"MI",IX)) Q:+IX'>0!(IX>GMTS2)!$D(GMTSQIT) D CKP^GMTSUP Q:$D(GMTSQIT) D Q:$D(GMTSQIT)
- . D ^GMTSLRME I $D(^TMP("LRM",$J)) D:IX0>1 CKP^GMTSUP Q:$D(GMTSQIT) W:IX0>1 ! D INTRP
- . K ^TMP("LRM",$J)
- Q
- INTRP ; Interprets ^TMP("LRM",$J
- N GMZ,GMK S (GMZ,GMK)=""
- F S GMZ=$O(^TMP("LRM",$J,GMZ)) Q:GMZ="" D RDNODE Q:$D(GMTSQIT)
- Q
- RDNODE ; Reads current node of ^TMP("LRM",$J
- N GMABX,COM S GMABX=0 I GMZ=0 D Q
- . D CKP^GMTSUP Q:$D(GMTSQIT) W ?10,"Collected:",?21,$P(^TMP("LRM",$J,GMZ),U),?43,"Acc:",?48,$P(^TMP("LRM",$J,GMZ),U,2),!
- . I $P(^TMP("LRM",$J,GMZ),U,6)'=$P(^(GMZ),U,3) D
- . . D CKP^GMTSUP Q:$D(GMTSQIT) W ?2,"Collection Sample:",?21,$P(^TMP("LRM",$J,GMZ),U,6),!
- . D CKP^GMTSUP Q:$D(GMTSQIT) W ?6,"Site/Specimen:",?21,$TR($P(^TMP("LRM",$J,GMZ),U,3),"|"," "),!
- . S COM=$P(^TMP("LRM",$J,GMZ),U,7)
- . I COM]"" D
- . . D CKP^GMTSUP Q:$D(GMTSQIT)
- . . W "Comment on Specimen:"
- . . I $L(COM)>58 S COM=$$WRAP^GMTSORC(COM,58)
- . . W ?21,$P(COM,"|"),!
- . . I $L($P(COM,"|",2)) D CKP^GMTSUP Q:$D(GMTSQIT) W ?22,$P(COM,"|",2),!
- . D WRTTEST^GMTSLRM1
- S GMK="" F S GMK=$O(^TMP("LRM",$J,GMZ,GMK)) Q:GMK="" D WRTNODE Q:$D(GMTSQIT)
- Q
- WRTNODE ; Writes current node of ^TMP("LRM",$J
- N GML,SMEAR,QTY,ORG,GMN,RSMEAR
- I GMZ="BSTER" D Q
- . I GMK=0 D Q
- . . Q:$P(^TMP("LRM",$J,"BSTER",GMK),U)']""
- . . D CKP^GMTSUP Q:$D(GMTSQIT)
- . . W ?2,"Sterility Control:",?21,$P(^TMP("LRM",$J,"BSTER",GMK),U),! Q
- . D CKP^GMTSUP I $D(GMTSQIT)
- . W ?13,"Number:",?21,GMK,?34,"Sterility Results: ",$P(^TMP("LRM",$J,GMZ,GMK),U),!
- I GMK=0 S GMN=$G(^TMP("LRM",$J,GMZ,GMK)) D CKP^GMTSUP Q:$D(GMTSQIT) W ?4,$S(GMZ="BACT":" Bact ",GMZ="TB":"Mycobact ",GMZ="MYCO":"Mycology ",GMZ="PARA":"Parasite ",GMZ="VIRO":"Virology ",1:" ")_"Report:",?21,$P(GMN,U),! D Q
- . I GMZ="BACT" D Q:$D(GMTSQIT)
- . . I $P(GMN,U,3)]"" D CKP^GMTSUP Q:$D(GMTSQIT) W ?7,"Urine Screen: ",$P(GMN,U,3),!
- . . I $P(GMN,U,2)]"" D CKP^GMTSUP Q:$D(GMTSQIT) W ?6,"Sputum Screen: ",$P(GMN,U,2),!
- . I GMZ="TB" D Q:$D(GMTSQIT)
- . . I $P(GMN,U,2)]"" D CKP^GMTSUP Q:$D(GMTSQIT) W ?4,"Acid Fast Stain: ",$E($P(GMN,U,2),1,20) D
- . . . S QTY=$P(GMN,U,3)
- . . . I $L(QTY)>35 S QTY=$$WRAP^GMTSORC(QTY,35)
- . . . W ?44,$P(QTY,"|"),!
- . . . I $L($P(QTY,"|",2)) D CKP^GMTSUP Q:$D(GMTSQIT) W ?44,$P(QTY,"|",2),!
- I GMZ="GRAM" D WRTGRM^GMTSLRM1 Q
- I GMK="SMEAR" D Q
- . D CKP^GMTSUP Q:$D(GMTSQIT)
- . W ?9,"Smear/Prep:"
- . S SMEAR=0
- . F S SMEAR=$O(^TMP("LRM",$J,GMZ,GMK,SMEAR)) Q:SMEAR'>0 D I +$O(^TMP("LRM",$J,GMK,SMEAR)) D CKP^GMTSUP Q:$D(GMTSQIT)
- . . S RSMEAR=^TMP("LRM",$J,GMZ,GMK,SMEAR)
- . . I $L(RSMEAR)>58 S RSMEAR=$$WRAP^GMTSORC(RSMEAR,58)
- . . W ?21,$P(RSMEAR,"|"),!
- . . I $L($P(RSMEAR,"|",2)) D CKP^GMTSUP Q:$D(GMTSQIT) W ?22,$P(RSMEAR,"|",2),!
- I GMK="R" D REMARKS^GMTSLRM1 Q
- I GMZ'="CABXL" D Q:$D(GMTSQIT)
- . S ORG=$P(^TMP("LRM",$J,GMZ,GMK),U),QTY=$P(^(GMK),U,2)
- . I $L(ORG)>58 S ORG=$$WRAP^GMTSORC(ORG,58)
- . D CKP^GMTSUP Q:$D(GMTSQIT)
- . W ?11,"Organism:"
- . W ?21,$P(ORG,"|",1),!
- . I $L($P(ORG,"|",2)) D CKP^GMTSUP Q:$D(GMTSQIT) W ?23,$P(ORG,"|",2),!
- . I QTY]"" W ?11,"Quantity:" D
- . . I $L(QTY)>58 S QTY=$$WRAP^GMTSORC(QTY,58)
- . . D CKP^GMTSUP Q:$D(GMTSQIT) W ?21,$P(QTY,"|"),!
- . . I $L($P(QTY,"|",2)) D CKP^GMTSUP Q:$D(GMTSQIT) W ?23,$P(QTY,"|",2),!
- . D COMMENT^GMTSLRM1 Q:$D(GMTSQIT)
- . I GMZ="TB" D TBSUSC^GMTSLRM1
- I GMZ="CABXL" D
- . I GMK=1!(GMABX=1) D CKP^GMTSUP Q:$D(GMTSQIT) W ?8,"Ser Abx Lev:"
- . W ?21,$E($P(^TMP("LRM",$J,GMZ,GMK),U),1,20),?45,$$DRAW($P(^TMP("LRM",$J,GMZ,GMK),U,2)),?55,$P(^TMP("LRM",$J,GMZ,GMK),U,3)," ug/ml",! D CKP^GMTSUP Q:$D(GMTSQIT)
- I GMZ="BACT",$D(^TMP("LRM",$J,GMZ,GMK,"SUSC")) D ANTIBX^GMTSLRM1 Q
- I GMZ="PARA",$D(^TMP("LRM",$J,GMZ,GMK))=11 D
- . S GML=0
- . F S GML=$O(^TMP("LRM",$J,GMZ,GMK,GML)) Q:GML'>0 D Q:$D(GMTSQIT)
- . . D CKP^GMTSUP Q:$D(GMTSQIT)
- . . W ?23,$P(^TMP("LRM",$J,GMZ,GMK,GML),U)
- . . S QTY=$P(^TMP("LRM",$J,GMZ,GMK,GML),U,2)
- . . I $L(QTY)>34 S QTY=$$WRAP^GMTSORC(QTY,34)
- . . W ?45,$P(QTY,"|"),!
- . . I $L($P(QTY,"|",2)) D CKP^GMTSUP Q:$D(GMTSQIT) W ?45,$P(QTY,"|",2),!
- . . D PARACOMM^GMTSLRM1
- Q
- DRAW(CODE) ; Peak/Trough/Random Abx level
- Q $S(CODE="P":"PEAK",CODE="T":"TROUGH",1:"RANDOM")
- GMTSLRM ; SLC/JER,KER - Microbiology Component Driver ; 09/21/2001
- +1 ;;2.7;Health Summary;**28,47**;Oct 20, 1995
- +2 ;
- +3 ; External References
- +4 ; DBIA 525 ^LR( all fields
- +5 ; DBIA 10035 ^DPT( field 63 Read w/Fileman
- +6 ; DBIA 2056 $$GET1^DIQ (file 2)
- +7 ;
- MAIN ; Microbiology
- +1 NEW IX0,IX,LRDFN,MAX,D1,D2,D3
- +2 SET LRDFN=+($$GET1^DIQ(2,(+($GET(DFN))_","),63,"I"))
- IF +LRDFN=0
- QUIT
- IF '$DATA(^LR(LRDFN))
- QUIT
- +3 IF +($SELECT('$DATA(^LR(LRDFN,"MI",0))
- QUIT
- +4 SET MAX=$SELECT(+($GET(GMTSNDM))>0:+($GET(GMTSNDM)),1:999)
- SET IX=GMTS1
- +5 FOR IX0=1:1:MAX
- SET IX=$ORDER(^LR(LRDFN,"MI",IX))
- IF +IX'>0!(IX>GMTS2)!$DATA(GMTSQIT)
- QUIT
- DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- Begin DoDot:1
- +6 DO ^GMTSLRME
- IF $DATA(^TMP("LRM",$JOB))
- IF IX0>1
- DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- IF IX0>1
- WRITE !
- DO INTRP
- +7 KILL ^TMP("LRM",$JOB)
- End DoDot:1
- IF $DATA(GMTSQIT)
- QUIT
- +8 QUIT
- INTRP ; Interprets ^TMP("LRM",$J
- +1 NEW GMZ,GMK
- SET (GMZ,GMK)=""
- +2 FOR
- SET GMZ=$ORDER(^TMP("LRM",$JOB,GMZ))
- IF GMZ=""
- QUIT
- DO RDNODE
- IF $DATA(GMTSQIT)
- QUIT
- +3 QUIT
- RDNODE ; Reads current node of ^TMP("LRM",$J
- +1 NEW GMABX,COM
- SET GMABX=0
- IF GMZ=0
- Begin DoDot:1
- +2 DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- WRITE ?10,"Collected:",?21,$PIECE(^TMP("LRM",$JOB,GMZ),U),?43,"Acc:",?48,$PIECE(^TMP("LRM",$JOB,GMZ),U,2),!
- +3 IF $PIECE(^TMP("LRM",$JOB,GMZ),U,6)'=$PIECE(^(GMZ),U,3)
- Begin DoDot:2
- +4 DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- WRITE ?2,"Collection Sample:",?21,$PIECE(^TMP("LRM",$JOB,GMZ),U,6),!
- End DoDot:2
- +5 DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- WRITE ?6,"Site/Specimen:",?21,$TRANSLATE($PIECE(^TMP("LRM",$JOB,GMZ),U,3),"|"," "),!
- +6 SET COM=$PIECE(^TMP("LRM",$JOB,GMZ),U,7)
- +7 IF COM]""
- Begin DoDot:2
- +8 DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- +9 WRITE "Comment on Specimen:"
- +10 IF $LENGTH(COM)>58
- SET COM=$$WRAP^GMTSORC(COM,58)
- +11 WRITE ?21,$PIECE(COM,"|"),!
- +12 IF $LENGTH($PIECE(COM,"|",2))
- DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- WRITE ?22,$PIECE(COM,"|",2),!
- End DoDot:2
- +13 DO WRTTEST^GMTSLRM1
- End DoDot:1
- QUIT
- +14 SET GMK=""
- FOR
- SET GMK=$ORDER(^TMP("LRM",$JOB,GMZ,GMK))
- IF GMK=""
- QUIT
- DO WRTNODE
- IF $DATA(GMTSQIT)
- QUIT
- +15 QUIT
- WRTNODE ; Writes current node of ^TMP("LRM",$J
- +1 NEW GML,SMEAR,QTY,ORG,GMN,RSMEAR
- +2 IF GMZ="BSTER"
- Begin DoDot:1
- +3 IF GMK=0
- Begin DoDot:2
- +4 IF $PIECE(^TMP("LRM",$JOB,"BSTER",GMK),U)']""
- QUIT
- +5 DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- +6 WRITE ?2,"Sterility Control:",?21,$PIECE(^TMP("LRM",$JOB,"BSTER",GMK),U),!
- QUIT
- End DoDot:2
- QUIT
- +7 DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- +8 WRITE ?13,"Number:",?21,GMK,?34,"Sterility Results: ",$PIECE(^TMP("LRM",$JOB,GMZ,GMK),U),!
- End DoDot:1
- QUIT
- +9 IF GMK=0
- SET GMN=$GET(^TMP("LRM",$JOB,GMZ,GMK))
- DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- WRITE ?4,$SELECT(GMZ="BACT":" Bact ",GMZ="TB":"Mycobact ",GMZ="MYCO":"Mycology ",GMZ="PARA":"Parasite ",GMZ="VIRO":"Virology ",1:" ")_"Report:",?21,$PIECE(GMN,U),!
- Begin DoDot:1
- +10 IF GMZ="BACT"
- Begin DoDot:2
- +11 IF $PIECE(GMN,U,3)]""
- DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- WRITE ?7,"Urine Screen: ",$PIECE(GMN,U,3),!
- +12 IF $PIECE(GMN,U,2)]""
- DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- WRITE ?6,"Sputum Screen: ",$PIECE(GMN,U,2),!
- End DoDot:2
- IF $DATA(GMTSQIT)
- QUIT
- +13 IF GMZ="TB"
- Begin DoDot:2
- +14 IF $PIECE(GMN,U,2)]""
- DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- WRITE ?4,"Acid Fast Stain: ",$EXTRACT($PIECE(GMN,U,2),1,20)
- Begin DoDot:3
- +15 SET QTY=$PIECE(GMN,U,3)
- +16 IF $LENGTH(QTY)>35
- SET QTY=$$WRAP^GMTSORC(QTY,35)
- +17 WRITE ?44,$PIECE(QTY,"|"),!
- +18 IF $LENGTH($PIECE(QTY,"|",2))
- DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- WRITE ?44,$PIECE(QTY,"|",2),!
- End DoDot:3
- End DoDot:2
- IF $DATA(GMTSQIT)
- QUIT
- End DoDot:1
- QUIT
- +19 IF GMZ="GRAM"
- DO WRTGRM^GMTSLRM1
- QUIT
- +20 IF GMK="SMEAR"
- Begin DoDot:1
- +21 DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- +22 WRITE ?9,"Smear/Prep:"
- +23 SET SMEAR=0
- +24 FOR
- SET SMEAR=$ORDER(^TMP("LRM",$JOB,GMZ,GMK,SMEAR))
- IF SMEAR'>0
- QUIT
- Begin DoDot:2
- +25 SET RSMEAR=^TMP("LRM",$JOB,GMZ,GMK,SMEAR)
- +26 IF $LENGTH(RSMEAR)>58
- SET RSMEAR=$$WRAP^GMTSORC(RSMEAR,58)
- +27 WRITE ?21,$PIECE(RSMEAR,"|"),!
- +28 IF $LENGTH($PIECE(RSMEAR,"|",2))
- DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- WRITE ?22,$PIECE(RSMEAR,"|",2),!
- End DoDot:2
- IF +$ORDER(^TMP("LRM",$JOB,GMK,SMEAR))
- DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- End DoDot:1
- QUIT
- +29 IF GMK="R"
- DO REMARKS^GMTSLRM1
- QUIT
- +30 IF GMZ'="CABXL"
- Begin DoDot:1
- +31 SET ORG=$PIECE(^TMP("LRM",$JOB,GMZ,GMK),U)
- SET QTY=$PIECE(^(GMK),U,2)
- +32 IF $LENGTH(ORG)>58
- SET ORG=$$WRAP^GMTSORC(ORG,58)
- +33 DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- +34 WRITE ?11,"Organism:"
- +35 WRITE ?21,$PIECE(ORG,"|",1),!
- +36 IF $LENGTH($PIECE(ORG,"|",2))
- DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- WRITE ?23,$PIECE(ORG,"|",2),!
- +37 IF QTY]""
- WRITE ?11,"Quantity:"
- Begin DoDot:2
- +38 IF $LENGTH(QTY)>58
- SET QTY=$$WRAP^GMTSORC(QTY,58)
- +39 DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- WRITE ?21,$PIECE(QTY,"|"),!
- +40 IF $LENGTH($PIECE(QTY,"|",2))
- DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- WRITE ?23,$PIECE(QTY,"|",2),!
- End DoDot:2
- +41 DO COMMENT^GMTSLRM1
- IF $DATA(GMTSQIT)
- QUIT
- +42 IF GMZ="TB"
- DO TBSUSC^GMTSLRM1
- End DoDot:1
- IF $DATA(GMTSQIT)
- QUIT
- +43 IF GMZ="CABXL"
- Begin DoDot:1
- +44 IF GMK=1!(GMABX=1)
- DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- WRITE ?8,"Ser Abx Lev:"
- +45 WRITE ?21,$EXTRACT($PIECE(^TMP("LRM",$JOB,GMZ,GMK),U),1,20),?45,$$DRAW($PIECE(^TMP("LRM",$JOB,GMZ,GMK),U,2)),?55,$PIECE(^TMP("LRM",$JOB,GMZ,GMK),U,3)," ug/ml",!
- DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- End DoDot:1
- +46 IF GMZ="BACT"
- IF $DATA(^TMP("LRM",$JOB,GMZ,GMK,"SUSC"))
- DO ANTIBX^GMTSLRM1
- QUIT
- +47 IF GMZ="PARA"
- IF $DATA(^TMP("LRM",$JOB,GMZ,GMK))=11
- Begin DoDot:1
- +48 SET GML=0
- +49 FOR
- SET GML=$ORDER(^TMP("LRM",$JOB,GMZ,GMK,GML))
- IF GML'>0
- QUIT
- Begin DoDot:2
- +50 DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- +51 WRITE ?23,$PIECE(^TMP("LRM",$JOB,GMZ,GMK,GML),U)
- +52 SET QTY=$PIECE(^TMP("LRM",$JOB,GMZ,GMK,GML),U,2)
- +53 IF $LENGTH(QTY)>34
- SET QTY=$$WRAP^GMTSORC(QTY,34)
- +54 WRITE ?45,$PIECE(QTY,"|"),!
- +55 IF $LENGTH($PIECE(QTY,"|",2))
- DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- WRITE ?45,$PIECE(QTY,"|",2),!
- +56 DO PARACOMM^GMTSLRM1
- End DoDot:2
- IF $DATA(GMTSQIT)
- QUIT
- End DoDot:1
- +57 QUIT
- DRAW(CODE) ; Peak/Trough/Random Abx level
- +1 QUIT $SELECT(CODE="P":"PEAK",CODE="T":"TROUGH",1:"RANDOM")