ORDV04A ; SLC/DAN/dcm - OE/RR ;7/30/01 14:33
;;3.0;ORDER ENTRY/RESULTS REPORTING;**109,243**;Dec 17,1997;Build 242
;
Q
ENSR ; Entry point for component
;External calls to ^GMTSROB, ^DIQ, ^GMTSORC, ^DIWP
;External references to ^SRF, ^DD, ^ICPT
N GMIDT,GMN,SURG
I '$D(^SRF("B",DFN)) Q
S GMN=0 F S GMN=$O(^SRF("B",DFN,GMN)) Q:GMN'>0 D SORT
I '$D(SURG) Q
S GMIDT=0 F S GMIDT=$O(SURG(GMIDT)) Q:GMIDT'>0!(ORCNT'<ORMAX) S GMN=SURG(GMIDT) D EXTRCT
Q
;
SORT ; Sort surgeries by inverted date
N GMDT
S GMDT=$P(^SRF(GMN,0),U,9) I GMDT>ORDBEG&(GMDT<ORDEND) D
. F Q:'$D(SURG(9999999-GMDT)) S GMDT=GMDT+.0001
. S SURG(9999999-GMDT)=GMN
Q
EXTRCT ; Extract surgical case record
N X,GMI,GMDT,OPPRC,POSDX,PREDX,SPEC,STATUS,SURGEON,VER
N DCTDTM,TRSDTM,Y,C,DIWL,DIWF,ORSITE,ORMORE,SITE
S ORCNT=ORCNT+1,ORMORE=0
S GMDT=$$DATE^ORDVU($P(^SRF(GMN,0),U,9))
D STATUS^GMTSROB S:'$D(STATUS) STATUS="UNKNOWN"
S X=$P(^SRF(GMN,0),U,4) I X>0 S Y=X,C=$P(^DD(130,.04,0),U,2) D Y^DIQ S SPEC=Y K Y
I $D(^SRF(GMN,.1)) S X=$P(^SRF(GMN,.1),U,4) I X>0 S Y=X,C=$P(^DD(130,.14,0),U,2) D Y^DIQ S SURGEON=Y K Y
S VER=$S($G(^SRF(GMN,"VER"))'="Y":"(Unverified)",1:"")
S PREDX(0)=$S($G(^SRF(GMN,33))]"":$P(^(33),U),1:"") S GMI=0 F S GMI=$O(^SRF(GMN,14,GMI)) Q:GMI'>0 S PREDX(GMI)=$P(^SRF(GMN,14,GMI,0),U)
S POSDX(0)=$S($G(^SRF(GMN,34))]"":$P(^(34),U),1:"") S GMI=0 F S GMI=$O(^SRF(GMN,15,GMI)) Q:GMI'>0 S POSDX(GMI)=$P(^SRF(GMN,15,GMI,0),U)
S OPPRC(0)=$P($G(^SRF(GMN,"OP")),U,1,2) S:$P(OPPRC(0),U,2)]"" $P(OPPRC(0),U,2)=$P($$CPT^ICPTCOD($P($G(^SRF(GMN,"OP")),U,2)),U,3) D
. S GMI=0 F S GMI=$O(^SRF(GMN,13,GMI)) Q:GMI'>0 S OPPRC(GMI)=$P($G(^SRF(GMN,13,GMI,0)),U)_U_$G(^SRF(GMN,13,GMI,2)) S:$P(OPPRC(GMI),U,2)]"" $P(OPPRC(GMI),U,2)=$P($$CPT^ICPTCOD($P($G(^SRF(GMN,13,GMI,2)),U)),U,3)
S X=$P($G(^SRF(GMN,31)),U,6) S:X>0 DCTDTM=$$DATE^ORDVU(X)
S X=$P($G(^SRF(GMN,31)),U,7) S:X>0 TRSDTM=$$DATE^ORDVU(X)
S DIWL=0,DIWF="N",ORSITE=$$SITE^VASITE,ORSITE=$P(ORSITE,"^",2)_";"_$P(ORSITE,"^",3)
K ^UTILITY($J,"W")
I $D(^SRF(GMN,12)) F GMI=1:1:$P(^SRF(GMN,12,0),U,4) S X=^SRF(GMN,12,GMI,0) D ^DIWP
S SITE=ORSITE
S ^TMP("ORDATA",$J,GMIDT,"WP",1)="1^"_SITE ;Station ID
S ^TMP("ORDATA",$J,GMIDT,"WP",2)="2^"_GMDT ; date
;
; Operative Procedure(s)
S GMI="" F S GMI=$O(OPPRC(GMI)) Q:GMI="" D S:GMI ORMORE=1
. S ^TMP("ORDATA",$J,GMIDT,"WP",3,GMI)="3^"_$P(OPPRC(GMI),U)_$S($P(OPPRC(GMI),U,2)]"":" - "_$P(OPPRC(GMI),U,2),1:"")
;
S ^TMP("ORDATA",$J,GMIDT,"WP",4)="4^"_$G(SPEC) ;surgical specialty
;
S ^TMP("ORDATA",$J,GMIDT,"WP",5)="5^"_$G(SURGEON) ; surgeon
S ^TMP("ORDATA",$J,GMIDT,"WP",6)="6^"_$G(STATUS) ; op status
;
; Pre-operative diagnosis
S GMI="" F S GMI=$O(PREDX(GMI)) Q:GMI="" D S:GMI ORMORE=1
. S ^TMP("ORDATA",$J,GMIDT,"WP",7,GMI)="7^"_PREDX(GMI)
;
; Post-operative diagnosis
S GMI="" F S GMI=$O(POSDX(GMI)) Q:GMI="" D S:GMI ORMORE=1
. S ^TMP("ORDATA",$J,GMIDT,"WP",8,GMI)="8^"_POSDX(GMI)
;
; Lab work? Y/N
S ^TMP("ORDATA",$J,GMIDT,"WP",9)="9^"_$S($O(^SRF(GMN,9,0)):"Yes",1:"No")
S ^TMP("ORDATA",$J,GMIDT,"WP",10)="10^"_$G(DCTDTM) ; dictation time
S ^TMP("ORDATA",$J,GMIDT,"WP",11)="11^"_$G(TRSDTM) ; transcription time
;
; surgeon's dictation
I $D(^UTILITY($J,"W")) D S ORMORE=1
. K ^TMP("ORHSSRT",$J)
. F GMI=1:1:^UTILITY($J,"W",DIWL) D
.. S ^TMP("ORHSSRT",$J,GMIDT,"WP",GMI)=^UTILITY($J,"W",DIWL,GMI,0)
. D SPMRG^ORDVU($NA(^TMP("ORHSSRT",$J,GMIDT,"WP")),$NA(^TMP("ORDATA",$J,GMIDT,"WP",12)),12)
. K ^UTILITY($J,"W")
. K ^TMP("ORHSSRT",$J)
I ORMORE S ^TMP("ORDATA",$J,GMIDT,"WP",13)="13^[+]" ;flag for detail
Q
VS ;Continuation of Vitals Extract (from ORDV04)
;Calls GMRVUT0
I $L($T(GCPR^OMGCOAS1)) D Q ; OMGCOAS1 routine only on Station 200
. D GCPR^OMGCOAS1(DFN,"VIT",ORDBEG,ORDEND,ORMAX)
. S ROOT=$NA(^TMP("ORDATA",$J))
N ORDT,I,TYPE,IEN,GMRVSTR,ORSITE,SITE,PLACE,GO,X,QUALIF,NODE,UNITS,UCNT,QCNT,ORI
Q:'$L(OREXT)
S GO=$P(OREXT,";")_"^"_$P(OREXT,";",2)
Q:'$L($T(@GO))
K ^UTILITY($J,"GMRVD"),^TMP("ORDATA",$J)
S GMRVSTR="T;P;R;BP;HT;WT;PN;PO2;CVP;CG",GMRVSTR(0)=ORDBEG_"^"_ORDEND_"^"_ORMAX_"^"_1
S ORSITE=$$SITE^VASITE,ORSITE=$P(ORSITE,"^",2)_";"_$P(ORSITE,"^",3)
D @GO
S ORDT=0
F I=1:1 S ORDT=$O(^UTILITY($J,"GMRVD",ORDT)) Q:'+ORDT!(I>ORMAX) D ;DBIA 4791
. S SITE=$S($L($G(^TMP("GMRVD",$J,ORDT,"facility"))):^("facility"),1:ORSITE)
. S ^TMP("ORDATA",$J,"WP",ORDT,1)="1^"_SITE
. S ^TMP("ORDATA",$J,"WP",ORDT,2)="2^"_$$DATE^ORDVU(9999999-ORDT) ;date vitals taken
. K UNITS,QUALIF
. S TYPE="",(UCNT,QCNT)=1,UNITS(UCNT)="",QUALIF(QCNT)="",QUALIF=""
. F S TYPE=$O(^UTILITY($J,"GMRVD",ORDT,TYPE)) Q:TYPE="" D
.. S IEN=$O(^UTILITY($J,"GMRVD",ORDT,TYPE,0)) Q:'IEN S NODE=$G(^(IEN))
.. S PLACE=$S(TYPE="T":3,TYPE="P":4,TYPE="R":5,TYPE="BP":6,TYPE="HT":7,TYPE="WT":8,TYPE="PN":9,TYPE="PO2":10,TYPE="CVP":11,TYPE="CG":12,1:0)
.. I PLACE S ^TMP("ORDATA",$J,"WP",ORDT,PLACE)=PLACE_"^"_$P(NODE,"^",8) ;Get value of vitals from global
.. S X=$$UNITMAP(TYPE) S:$L(UNITS(UCNT))>60 UCNT=UCNT+1,UNITS(UCNT)="" S UNITS(UCNT)=$S($L(UNITS(UCNT)):UNITS(UCNT)_","_$$MAP(TYPE)_":",1:$$MAP(TYPE)_":")_X ;Units
.. I TYPE="PO2" D
... I $L($P(NODE,"^",15)) S ^TMP("ORDATA",$J,"WP",ORDT,13)=13_"^"_$P($G(^UTILITY($J,"GMRVD",ORDT,TYPE,IEN)),"^",15) ; Flow Rate
... I $L($P(NODE,"^",16)) S ^TMP("ORDATA",$J,"WP",ORDT,14)=14_"^"_$P($G(^UTILITY($J,"GMRVD",ORDT,TYPE,IEN)),"^",16) ; O2 Concentration
.. I $L($P(NODE,"^",17)) S X=$P(NODE,"^",17) D
... I QUALIF'[($$MAP(TYPE)_":"_X) D
.... S QUALIF=$S($L(QUALIF):QUALIF_" , "_$$MAP(TYPE)_":",1:$$MAP(TYPE)_":")_X ; Qualifier
.... S:$L(QUALIF(QCNT))>60 QCNT=QCNT+1,QUALIF(QCNT)=""
.... S QUALIF(QCNT)=$S($L(QUALIF(QCNT)):QUALIF(QCNT)_" , "_$$MAP(TYPE)_":",1:$$MAP(TYPE)_":")_X ; Qualifier
.. I TYPE="WT",$L($P(NODE,"^",14)) D
... S ^TMP("ORDATA",$J,"WP",ORDT,16)=16_"^"_$P(NODE,"^",14) ; BMI
. I $O(QUALIF(0)) D
.. S ORI=0 F S ORI=$O(QUALIF(ORI)) Q:'ORI D
... S ^TMP("ORDATA",$J,"WP",ORDT,15,ORI)="15^"_QUALIF(ORI)
. I $O(UNITS(0)) D
.. S ORI=0 F S ORI=$O(UNITS(ORI)) Q:'ORI D
... S ^TMP("ORDATA",$J,"WP",ORDT,17,ORI)="17^"_UNITS(ORI)
K ^UTILITY($J,"GMRVD")
S ROOT=$NA(^TMP("ORDATA",$J))
Q
MAP(TEXT) ;Map test code to abbreviation
Q:'$L($G(TEXT)) ""
I TEXT="T" Q "TEMP"
I TEXT="P" Q "PULSE"
I TEXT="R" Q "RESP"
I TEXT="BP" Q "BP"
I TEXT="HT" Q "HT"
I TEXT="WT" Q "WT"
I TEXT="PN" Q "PAIN"
I TEXT="PO2" Q "POx"
I TEXT="CVP" Q "CVP"
I TEXT="CG" Q "C/G"
Q TEXT
UNITMAP(TEXT) ;Map units to abbreviation
Q:'$L($G(TEXT)) ""
I TEXT="T" Q "F"
I TEXT="P" Q "/min"
I TEXT="R" Q " /min"
I TEXT="BP" Q "mmHg"
I TEXT="HT" Q "in"
I TEXT="WT" Q "lb"
I TEXT="PN" Q ""
I TEXT="PO2" Q "%SpO2"
I TEXT="CVP" Q "cmH2O"
I TEXT="CG" Q " in"
Q ""
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HORDV04A 6801 printed Dec 13, 2024@02:30:10 Page 2
ORDV04A ; SLC/DAN/dcm - OE/RR ;7/30/01 14:33
+1 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**109,243**;Dec 17,1997;Build 242
+2 ;
+3 QUIT
ENSR ; Entry point for component
+1 ;External calls to ^GMTSROB, ^DIQ, ^GMTSORC, ^DIWP
+2 ;External references to ^SRF, ^DD, ^ICPT
+3 NEW GMIDT,GMN,SURG
+4 IF '$DATA(^SRF("B",DFN))
QUIT
+5 SET GMN=0
FOR
SET GMN=$ORDER(^SRF("B",DFN,GMN))
if GMN'>0
QUIT
DO SORT
+6 IF '$DATA(SURG)
QUIT
+7 SET GMIDT=0
FOR
SET GMIDT=$ORDER(SURG(GMIDT))
if GMIDT'>0!(ORCNT'<ORMAX)
QUIT
SET GMN=SURG(GMIDT)
DO EXTRCT
+8 QUIT
+9 ;
SORT ; Sort surgeries by inverted date
+1 NEW GMDT
+2 SET GMDT=$PIECE(^SRF(GMN,0),U,9)
IF GMDT>ORDBEG&(GMDT<ORDEND)
Begin DoDot:1
+3 FOR
if '$DATA(SURG(9999999-GMDT))
QUIT
SET GMDT=GMDT+.0001
+4 SET SURG(9999999-GMDT)=GMN
End DoDot:1
+5 QUIT
EXTRCT ; Extract surgical case record
+1 NEW X,GMI,GMDT,OPPRC,POSDX,PREDX,SPEC,STATUS,SURGEON,VER
+2 NEW DCTDTM,TRSDTM,Y,C,DIWL,DIWF,ORSITE,ORMORE,SITE
+3 SET ORCNT=ORCNT+1
SET ORMORE=0
+4 SET GMDT=$$DATE^ORDVU($PIECE(^SRF(GMN,0),U,9))
+5 DO STATUS^GMTSROB
if '$DATA(STATUS)
SET STATUS="UNKNOWN"
+6 SET X=$PIECE(^SRF(GMN,0),U,4)
IF X>0
SET Y=X
SET C=$PIECE(^DD(130,.04,0),U,2)
DO Y^DIQ
SET SPEC=Y
KILL Y
+7 IF $DATA(^SRF(GMN,.1))
SET X=$PIECE(^SRF(GMN,.1),U,4)
IF X>0
SET Y=X
SET C=$PIECE(^DD(130,.14,0),U,2)
DO Y^DIQ
SET SURGEON=Y
KILL Y
+8 SET VER=$SELECT($GET(^SRF(GMN,"VER"))'="Y":"(Unverified)",1:"")
+9 SET PREDX(0)=$SELECT($GET(^SRF(GMN,33))]"":$PIECE(^(33),U),1:"")
SET GMI=0
FOR
SET GMI=$ORDER(^SRF(GMN,14,GMI))
if GMI'>0
QUIT
SET PREDX(GMI)=$PIECE(^SRF(GMN,14,GMI,0),U)
+10 SET POSDX(0)=$SELECT($GET(^SRF(GMN,34))]"":$PIECE(^(34),U),1:"")
SET GMI=0
FOR
SET GMI=$ORDER(^SRF(GMN,15,GMI))
if GMI'>0
QUIT
SET POSDX(GMI)=$PIECE(^SRF(GMN,15,GMI,0),U)
+11 SET OPPRC(0)=$PIECE($GET(^SRF(GMN,"OP")),U,1,2)
if $PIECE(OPPRC(0),U,2)]""
SET $PIECE(OPPRC(0),U,2)=$PIECE($$CPT^ICPTCOD($PIECE($GET(^SRF(GMN,"OP")),U,2)),U,3)
Begin DoDot:1
+12 SET GMI=0
FOR
SET GMI=$ORDER(^SRF(GMN,13,GMI))
if GMI'>0
QUIT
SET OPPRC(GMI)=$PIECE($GET(^SRF(GMN,13,GMI,0)),U)_U_$GET(^SRF(GMN,13,GMI,2))
if $PIECE(OPPRC(GMI),U,2)]""
SET $PIECE(OPPRC(GMI),U,2)=$PIECE($$CPT^ICPTCOD($PIECE($GET(^SRF(GMN,13,GMI,2)),U)),U,3)
End DoDot:1
+13 SET X=$PIECE($GET(^SRF(GMN,31)),U,6)
if X>0
SET DCTDTM=$$DATE^ORDVU(X)
+14 SET X=$PIECE($GET(^SRF(GMN,31)),U,7)
if X>0
SET TRSDTM=$$DATE^ORDVU(X)
+15 SET DIWL=0
SET DIWF="N"
SET ORSITE=$$SITE^VASITE
SET ORSITE=$PIECE(ORSITE,"^",2)_";"_$PIECE(ORSITE,"^",3)
+16 KILL ^UTILITY($JOB,"W")
+17 IF $DATA(^SRF(GMN,12))
FOR GMI=1:1:$PIECE(^SRF(GMN,12,0),U,4)
SET X=^SRF(GMN,12,GMI,0)
DO ^DIWP
+18 SET SITE=ORSITE
+19 ;Station ID
SET ^TMP("ORDATA",$JOB,GMIDT,"WP",1)="1^"_SITE
+20 ; date
SET ^TMP("ORDATA",$JOB,GMIDT,"WP",2)="2^"_GMDT
+21 ;
+22 ; Operative Procedure(s)
+23 SET GMI=""
FOR
SET GMI=$ORDER(OPPRC(GMI))
if GMI=""
QUIT
Begin DoDot:1
+24 SET ^TMP("ORDATA",$JOB,GMIDT,"WP",3,GMI)="3^"_$PIECE(OPPRC(GMI),U)_$SELECT($PIECE(OPPRC(GMI),U,2)]"":" - "_$PIECE(OPPRC(GMI),U,2),1:"")
End DoDot:1
if GMI
SET ORMORE=1
+25 ;
+26 ;surgical specialty
SET ^TMP("ORDATA",$JOB,GMIDT,"WP",4)="4^"_$GET(SPEC)
+27 ;
+28 ; surgeon
SET ^TMP("ORDATA",$JOB,GMIDT,"WP",5)="5^"_$GET(SURGEON)
+29 ; op status
SET ^TMP("ORDATA",$JOB,GMIDT,"WP",6)="6^"_$GET(STATUS)
+30 ;
+31 ; Pre-operative diagnosis
+32 SET GMI=""
FOR
SET GMI=$ORDER(PREDX(GMI))
if GMI=""
QUIT
Begin DoDot:1
+33 SET ^TMP("ORDATA",$JOB,GMIDT,"WP",7,GMI)="7^"_PREDX(GMI)
End DoDot:1
if GMI
SET ORMORE=1
+34 ;
+35 ; Post-operative diagnosis
+36 SET GMI=""
FOR
SET GMI=$ORDER(POSDX(GMI))
if GMI=""
QUIT
Begin DoDot:1
+37 SET ^TMP("ORDATA",$JOB,GMIDT,"WP",8,GMI)="8^"_POSDX(GMI)
End DoDot:1
if GMI
SET ORMORE=1
+38 ;
+39 ; Lab work? Y/N
+40 SET ^TMP("ORDATA",$JOB,GMIDT,"WP",9)="9^"_$SELECT($ORDER(^SRF(GMN,9,0)):"Yes",1:"No")
+41 ; dictation time
SET ^TMP("ORDATA",$JOB,GMIDT,"WP",10)="10^"_$GET(DCTDTM)
+42 ; transcription time
SET ^TMP("ORDATA",$JOB,GMIDT,"WP",11)="11^"_$GET(TRSDTM)
+43 ;
+44 ; surgeon's dictation
+45 IF $DATA(^UTILITY($JOB,"W"))
Begin DoDot:1
+46 KILL ^TMP("ORHSSRT",$JOB)
+47 FOR GMI=1:1:^UTILITY($JOB,"W",DIWL)
Begin DoDot:2
+48 SET ^TMP("ORHSSRT",$JOB,GMIDT,"WP",GMI)=^UTILITY($JOB,"W",DIWL,GMI,0)
End DoDot:2
+49 DO SPMRG^ORDVU($NAME(^TMP("ORHSSRT",$JOB,GMIDT,"WP")),$NAME(^TMP("ORDATA",$JOB,GMIDT,"WP",12)),12)
+50 KILL ^UTILITY($JOB,"W")
+51 KILL ^TMP("ORHSSRT",$JOB)
End DoDot:1
SET ORMORE=1
+52 ;flag for detail
IF ORMORE
SET ^TMP("ORDATA",$JOB,GMIDT,"WP",13)="13^[+]"
+53 QUIT
VS ;Continuation of Vitals Extract (from ORDV04)
+1 ;Calls GMRVUT0
+2 ; OMGCOAS1 routine only on Station 200
IF $LENGTH($TEXT(GCPR^OMGCOAS1))
Begin DoDot:1
+3 DO GCPR^OMGCOAS1(DFN,"VIT",ORDBEG,ORDEND,ORMAX)
+4 SET ROOT=$NAME(^TMP("ORDATA",$JOB))
End DoDot:1
QUIT
+5 NEW ORDT,I,TYPE,IEN,GMRVSTR,ORSITE,SITE,PLACE,GO,X,QUALIF,NODE,UNITS,UCNT,QCNT,ORI
+6 if '$LENGTH(OREXT)
QUIT
+7 SET GO=$PIECE(OREXT,";")_"^"_$PIECE(OREXT,";",2)
+8 if '$LENGTH($TEXT(@GO))
QUIT
+9 KILL ^UTILITY($JOB,"GMRVD"),^TMP("ORDATA",$JOB)
+10 SET GMRVSTR="T;P;R;BP;HT;WT;PN;PO2;CVP;CG"
SET GMRVSTR(0)=ORDBEG_"^"_ORDEND_"^"_ORMAX_"^"_1
+11 SET ORSITE=$$SITE^VASITE
SET ORSITE=$PIECE(ORSITE,"^",2)_";"_$PIECE(ORSITE,"^",3)
+12 DO @GO
+13 SET ORDT=0
+14 ;DBIA 4791
FOR I=1:1
SET ORDT=$ORDER(^UTILITY($JOB,"GMRVD",ORDT))
if '+ORDT!(I>ORMAX)
QUIT
Begin DoDot:1
+15 SET SITE=$SELECT($LENGTH($GET(^TMP("GMRVD",$JOB,ORDT,"facility"))):^("facility"),1:ORSITE)
+16 SET ^TMP("ORDATA",$JOB,"WP",ORDT,1)="1^"_SITE
+17 ;date vitals taken
SET ^TMP("ORDATA",$JOB,"WP",ORDT,2)="2^"_$$DATE^ORDVU(9999999-ORDT)
+18 KILL UNITS,QUALIF
+19 SET TYPE=""
SET (UCNT,QCNT)=1
SET UNITS(UCNT)=""
SET QUALIF(QCNT)=""
SET QUALIF=""
+20 FOR
SET TYPE=$ORDER(^UTILITY($JOB,"GMRVD",ORDT,TYPE))
if TYPE=""
QUIT
Begin DoDot:2
+21 SET IEN=$ORDER(^UTILITY($JOB,"GMRVD",ORDT,TYPE,0))
if 'IEN
QUIT
SET NODE=$GET(^(IEN))
+22 SET PLACE=$SELECT(TYPE="T":3,TYPE="P":4,TYPE="R":5,TYPE="BP":6,TYPE="HT":7,TYPE="WT":8,TYPE="PN":9,TYPE="PO2":10,TYPE="CVP":11,TYPE="CG":12,1:0)
+23 ;Get value of vitals from global
IF PLACE
SET ^TMP("ORDATA",$JOB,"WP",ORDT,PLACE)=PLACE_"^"_$PIECE(NODE,"^",8)
+24 ;Units
SET X=$$UNITMAP(TYPE)
if $LENGTH(UNITS(UCNT))>60
SET UCNT=UCNT+1
SET UNITS(UCNT)=""
SET UNITS(UCNT)=$SELECT($LENGTH(UNITS(UCNT)):UNITS(UCNT)_","_$$MAP(TYPE)_":",1:$$MAP(TYPE)_":")_X
+25 IF TYPE="PO2"
Begin DoDot:3
+26 ; Flow Rate
IF $LENGTH($PIECE(NODE,"^",15))
SET ^TMP("ORDATA",$JOB,"WP",ORDT,13)=13_"^"_$PIECE($GET(^UTILITY($JOB,"GMRVD",ORDT,TYPE,IEN)),"^",15)
+27 ; O2 Concentration
IF $LENGTH($PIECE(NODE,"^",16))
SET ^TMP("ORDATA",$JOB,"WP",ORDT,14)=14_"^"_$PIECE($GET(^UTILITY($JOB,"GMRVD",ORDT,TYPE,IEN)),"^",16)
End DoDot:3
+28 IF $LENGTH($PIECE(NODE,"^",17))
SET X=$PIECE(NODE,"^",17)
Begin DoDot:3
+29 IF QUALIF'[($$MAP(TYPE)_":"_X)
Begin DoDot:4
+30 ; Qualifier
SET QUALIF=$SELECT($LENGTH(QUALIF):QUALIF_" , "_$$MAP(TYPE)_":",1:$$MAP(TYPE)_":")_X
+31 if $LENGTH(QUALIF(QCNT))>60
SET QCNT=QCNT+1
SET QUALIF(QCNT)=""
+32 ; Qualifier
SET QUALIF(QCNT)=$SELECT($LENGTH(QUALIF(QCNT)):QUALIF(QCNT)_" , "_$$MAP(TYPE)_":",1:$$MAP(TYPE)_":")_X
End DoDot:4
End DoDot:3
+33 IF TYPE="WT"
IF $LENGTH($PIECE(NODE,"^",14))
Begin DoDot:3
+34 ; BMI
SET ^TMP("ORDATA",$JOB,"WP",ORDT,16)=16_"^"_$PIECE(NODE,"^",14)
End DoDot:3
End DoDot:2
+35 IF $ORDER(QUALIF(0))
Begin DoDot:2
+36 SET ORI=0
FOR
SET ORI=$ORDER(QUALIF(ORI))
if 'ORI
QUIT
Begin DoDot:3
+37 SET ^TMP("ORDATA",$JOB,"WP",ORDT,15,ORI)="15^"_QUALIF(ORI)
End DoDot:3
End DoDot:2
+38 IF $ORDER(UNITS(0))
Begin DoDot:2
+39 SET ORI=0
FOR
SET ORI=$ORDER(UNITS(ORI))
if 'ORI
QUIT
Begin DoDot:3
+40 SET ^TMP("ORDATA",$JOB,"WP",ORDT,17,ORI)="17^"_UNITS(ORI)
End DoDot:3
End DoDot:2
End DoDot:1
+41 KILL ^UTILITY($JOB,"GMRVD")
+42 SET ROOT=$NAME(^TMP("ORDATA",$JOB))
+43 QUIT
MAP(TEXT) ;Map test code to abbreviation
+1 if '$LENGTH($GET(TEXT))
QUIT ""
+2 IF TEXT="T"
QUIT "TEMP"
+3 IF TEXT="P"
QUIT "PULSE"
+4 IF TEXT="R"
QUIT "RESP"
+5 IF TEXT="BP"
QUIT "BP"
+6 IF TEXT="HT"
QUIT "HT"
+7 IF TEXT="WT"
QUIT "WT"
+8 IF TEXT="PN"
QUIT "PAIN"
+9 IF TEXT="PO2"
QUIT "POx"
+10 IF TEXT="CVP"
QUIT "CVP"
+11 IF TEXT="CG"
QUIT "C/G"
+12 QUIT TEXT
UNITMAP(TEXT) ;Map units to abbreviation
+1 if '$LENGTH($GET(TEXT))
QUIT ""
+2 IF TEXT="T"
QUIT "F"
+3 IF TEXT="P"
QUIT "/min"
+4 IF TEXT="R"
QUIT " /min"
+5 IF TEXT="BP"
QUIT "mmHg"
+6 IF TEXT="HT"
QUIT "in"
+7 IF TEXT="WT"
QUIT "lb"
+8 IF TEXT="PN"
QUIT ""
+9 IF TEXT="PO2"
QUIT "%SpO2"
+10 IF TEXT="CVP"
QUIT "cmH2O"
+11 IF TEXT="CG"
QUIT " in"
+12 QUIT ""