GMVUTL ;HOIFO/RM,MD,FT-CALLABLE ENTRY POINTS FOR PROGRAMMER UTILITIES ;08/12/09 17:15
;;5.0;GEN. MED. REC. - VITALS;**23**;Oct 31, 2002;Build 25
;
; This routine uses the following IAs:
; #5076 - MDCLIO1 calls (private)
; #5269 - MDTERM calls (private)
; #10103 - XLFDT calls (supported)
;
; This routine supports the following IAs:
; #5046 - CLIO, F1250 entry points (supported)
;
EN1 ; CALL TO CONVERT TEMPERATURE (F) IN VARIABLE X TO TEMPERATURE (C)
; IN VARIABLE Y
S Y=$J(X-32*5/9,0,1)
Q
EN2 ; CALL TO CONVERT AN INCHES MEASUREMENT IN X TO A CENTIMETER
; MEASUREMENT IN Y
S Y=$J(2.54*X,0,2)
Q
EN3 ; CALL TO CONVERT A WEIGHT (LBS) IN VARIABLE X TO A WEIGHT (KG)
; IN VARIABLE Y
S Y=$J(X/2.2,0,2)
Q
CLIO(GMVCLIO,GMVGUID) ; Calls Clinical Observations to get a single record
; Input:
; GMVCLIO = array name (required)
; GMVGUID = Global Unique ID (required)
; Output:
; GMVCLIO(0) =
;
I $G(GMVGUID)="" S GMVCLIO(0)="" Q
N GMVARRAY,GMVCNT,GMVCS,GMVDATE,GMVDY,GMVFLAG,GMVFLD,GMVFR,GMVHR,GMVL,GMVLOOP,GMVM,GMVMI,GMVMO
N GMVO2,GMVP,GMVPAIN,GMVPO2,GMVQ,GMVQFLAG,GMVQLOOP,GMVS,GMVSC,GMVSUP,GMVTIME,GMVU,GMVX,GMVY,GMVYR,X,Y
I $T(QRYOBS^MDCLIO1)="" S GMVCLIO(0)="",GMVCLIO(5)="" Q
D QRYOBS^MDCLIO1("GMVARRAY",GMVGUID)
I '$D(GMVARRAY("OBSERVED_DATE_TIME")) S GMVCLIO(0)="",GMVCLIO(5)="" Q
S GMVPAIN=$$GETIEN^GMVGETVT("PN",2),GMVCNT=0
S GMVPO2=$$GETIEN^GMVGETVT("PO2",2),(GMVFR,GMVO2,GMVSUP)=""
S $P(GMVCLIO(0),U,1)=$G(GMVARRAY("OBSERVED_DATE_TIME","I"))
S $P(GMVCLIO(0),U,2)=$G(GMVARRAY("PATIENT_ID","I"))
S $P(GMVCLIO(0),U,4)=$G(GMVARRAY("ENTERED_DATE_TIME","I"))
S $P(GMVCLIO(0),U,5)=$G(GMVARRAY("HOSPITAL_LOCATION_ID","I"))
S $P(GMVCLIO(0),U,6)=$G(GMVARRAY("ENTERED_BY_ID","I"))
S $P(GMVCLIO(0),U,8)=$G(GMVARRAY("SVALUE","I"))
S GMVX=$G(GMVARRAY("TERM_ID","I"))
I GMVX]"" D
.S GMVX=$$GETIEN^GMVGETVT(GMVX,4)
.S $P(GMVCLIO(0),U,3)=GMVX
.Q
; NOTE: PAIN needs external value from CLIO
I $P(GMVCLIO(0),U,3)=GMVPAIN D
.S $P(GMVCLIO(0),U,8)=$G(GMVARRAY("SVALUE","E"))
.Q
S GMVFLAG=0
F GMVLOOP=1,2,3,8 D Q:GMVFLAG
.S:$P(GMVCLIO(0),U,GMVLOOP)="" GMVFLAG=1
.Q
I GMVFLAG S GMVCLIO(0)="",GMVCLIO(5)="" Q
;check unit of measurement and convert value if needed
I $G(GMVARRAY("UNIT_ID","E"))="DEGREES C" D
.S $P(GMVCLIO(0),U,8)=+$$CVTVAL^MDTERM($P(GMVCLIO(0),U,8),"DEGREES C","DEGREES F",1)
I $G(GMVARRAY("UNIT_ID","E"))="CENTIMETER" D
.S $P(GMVCLIO(0),U,8)=+$$CVTVAL^MDTERM($P(GMVCLIO(0),U,8),"CENTIMETER","INCH",2)
I $G(GMVARRAY("UNIT_ID","E"))="KILOGRAM" D
.S $P(GMVCLIO(0),U,8)=+$$CVTVAL^MDTERM($P(GMVCLIO(0),U,8),"KILOGRAM","POUND",2)
I $G(GMVARRAY("UNIT_ID","E"))="MILLIMETERS OF MERCURY" D
.S $P(GMVCLIO(0),U,8)=+$$CVTVAL^MDTERM($P(GMVCLIO(0),U,8),"MILLIMETERS OF MERCURY","CENTIMETERS H2O",1)
; entered-in-error - won't get errors from clio
S $P(GMVCLIO(2),U,1)="" ;error flag
S $P(GMVCLIO(2),U,2)="" ;error entered by
S $P(GMVCLIO(2),U,3)="" ;reason entered in error
;
S GMVCLIO(5)="",GMVCNT=0
S GMVCS=$G(GMVARRAY("CUFF_SIZE_ID","I"))
I GMVCS]"" D
.S GMVCS=$$GETIEN^GMVGETQL(GMVCS,2)
.S GMVCNT=GMVCNT+1
.S $P(GMVCLIO(5),U,GMVCNT)=GMVCS
.Q
S GMVL=$G(GMVARRAY("LOCATION_ID","I"))
I GMVL]"" D
.S GMVL=$$GETIEN^GMVGETQL(GMVL,2)
.S GMVCNT=GMVCNT+1
.S $P(GMVCLIO(5),U,GMVCNT)=GMVL
.Q
S GMVM=$G(GMVARRAY("METHOD_ID","I"))
I GMVM]"" D
.S GMVM=$$GETIEN^GMVGETQL(GMVM,2)
.S GMVCNT=GMVCNT+1
.S $P(GMVCLIO(5),U,GMVCNT)=GMVM
.Q
S GMVP=$G(GMVARRAY("POSITION_ID","I"))
I GMVP]"" D
.S GMVP=$$GETIEN^GMVGETQL(GMVP,2)
.S GMVCNT=GMVCNT+1
.S $P(GMVCLIO(5),U,GMVCNT)=GMVP
.Q
S GMVS=$G(GMVARRAY("SITE_ID","I"))
I GMVS]"" D
.S GMVS=$$GETIEN^GMVGETQL(GMVS,2)
.S GMVCNT=GMVCNT+1
.S $P(GMVCLIO(5),U,GMVCNT)=GMVS
.Q
S GMVQ=$G(GMVARRAY("QUALITY_ID","I"))
I GMVQ]"" D
.S GMVQ=$$GETIEN^GMVGETQL(GMVQ,2)
.S GMVCNT=GMVCNT+1
.S $P(GMVCLIO(5),U,GMVCNT)=GMVQ
.Q
I $P(GMVCLIO(0),U,3)=GMVPO2 D
.S GMVLOOP=0
.F S GMVLOOP=$O(GMVARRAY("CONTEXT",GMVLOOP)) Q:'GMVLOOP D
..I $G(GMVARRAY("CONTEXT",GMVLOOP,"TERM_ID","E"))="SUPPLEMENTAL OXYGEN CONCENTRATION" D
...S GMVO2=$G(GMVARRAY("CONTEXT",GMVLOOP,"SVALUE","E"))
..I $G(GMVARRAY("CONTEXT",GMVLOOP,"TERM_ID","E"))="SUPPLEMENTAL OXYGEN FLOW RATE" D
...S GMVFR=$G(GMVARRAY("CONTEXT",GMVLOOP,"SVALUE","E"))
..S GMVM=$G(GMVARRAY("CONTEXT",GMVLOOP,"METHOD_ID","I"))
..I GMVM]"" D
...S GMVM=$$GETIEN^GMVGETQL(GMVM,2)
...Q:'GMVM
...S GMVQFLAG=0
...F GMVQLOOP=1:1 Q:$P($G(GMVCLIO(5)),U,GMVQLOOP)="" I $P($G(GMVCLIO(5)),U,GMVQLOOP)=GMVM S GMVQFLAG=1 Q
...I GMVQFLAG=0 S GMVCNT=GMVCNT+1,$P(GMVCLIO(5),U,GMVCNT)=GMVM
S:GMVO2]"" GMVO2=GMVO2_"%"
S:GMVFR]"" GMVFR=GMVFR_" l/min"
I GMVFR="",GMVO2="" S GMVSUP=""
I GMVFR'="",GMVO2="" S GMVSUP=GMVFR
I GMVFR="",GMVO2'="" S GMVSUP=GMVO2
I GMVFR'="",GMVO2'="" S GMVSUP=GMVFR_" "_GMVO2
S $P(GMVCLIO(0),U,10)=GMVSUP
Q
;
F1205(GMV1205,GMVX,GMVY) ; Return file 120.5 record as nodes
; Input: GMV1205 = array name to hold nodes (required)
; GMVX = File 120.5 IEN or CliO GUID (required)
; GMVY = Return records marked as errors? (optional)
; 0 = don't return, 1 = return error records
; (default = 0)
; Output:GMV1205(0) = file 120.5 zero node
; (2) = 120.5,#2 ^ 120.5, #3 ^ 120.5, #4 delimited by
; tilde (~)
; (3) = qualifier IENS delimited by caret (^)
;
N GMVCNT,GMVFLAG,GMVLIST,GMVLOOP,GMVNODE,GMVNODE2,GMVIEN1
S GMVX=$G(GMVX),GMVY=$G(GMVY,0)
S (GMV1205(0),GMV1205(2),GMV1205(5))=""
I GMVX'=+GMVX Q
S GMVY=$S(GMVY=1:1,1:0)
S GMVNODE2=$G(^GMR(120.5,+GMVX,2))
I GMVY=0,$P(GMVNODE2,U,1)=1 Q
S GMV1205(0)=$G(^GMR(120.5,GMVX,0))
S GMVFLAG=0
F GMVLOOP=1,2,3,8 D Q:GMVFLAG
.S:$P(GMV1205(0),U,GMVLOOP)="" GMVFLAG=1
.Q
I GMVFLAG S (GMV1205(0),GMV1205(2),GMV1205(5))="" Q
S GMV1205(2)=GMVNODE2
S (GMVCNT,GMVIEN1)=0,GMVLIST=""
F S GMVIEN1=$O(^GMR(120.5,GMVX,2.1,GMVIEN1)) Q:'GMVIEN1 D
.S GMVCNT=GMVCNT+1
.S $P(GMVLIST,"~",GMVCNT)=+$P($G(^GMR(120.5,GMVX,2.1,GMVIEN1,0)),U,1)
.Q
S $P(GMV1205(2),U,3)=GMVLIST
S (GMVCNT,GMVIEN1)=0
F S GMVIEN1=$O(^GMR(120.5,GMVX,5,"B",GMVIEN1)) Q:'GMVIEN1 D
.S GMVCNT=GMVCNT+1
.S $P(GMV1205(5),U,GMVCNT)=GMVIEN1
.Q
Q
;
GETREC(GMVARRAY,GMVID,GMVERR) ; Checks CLIO and Vitals databases. Returns
; record as nodes with internal values.
; Input: GMVARRAY = array name passed by reference (required)
; GMVID = File 120.5 IEN or CliO GUID (required)
; GMVERR = Return records marked as errors? (optional)
; 0 = don't return, 1 = return error records
; (default = 0)
; Output:GMVARRAY(0) = same as File 120.5 zero node
; (2) = 120.5, #2 ^ 120.5, #3 ^ 120.5, #4 delimited by
; tilde (~)
; (3) = qualifier IENS (File 120.52) delimited by caret (^)
;
; example:
; >D GETREC^GMVUTL(.RESULT,12196,0) ZW RESULT
; RESULT(0)="3080108.093626^217^21^3080108.0937^67^4658^^4^^1.0 l/min 22%"
; RESULT(2)="^^"
; RESULT(5)=134
;
S GMVID=$G(GMVID),GMVERR=$G(GMVERR)
I GMVID="" Q
S GMVERR=$S(GMVERR=1:1,1:0)
I GMVID=+GMVID D Q
.D F1205(.GMVARRAY,GMVID,GMVERR)
.Q
I GMVID'=+GMVID D Q
.D CLIO(.GMVARRAY,GMVID)
.Q
Q
QRYDATE(RESULT,SDATE,EDATE) ; Returns a list of GUIDs found in the
; Clinical Observations package for the date range specified
; Input: RESULT = array name surrounded by quotes (required)
; ex: "ARRAY", "^TMP($J)"
; SDATE = start date of search range in FileMan internal
; format (optional)
; default is T-24 hours
; EDATE = end date in FileMan internal format (optional)
; default is current date/time
; Output: RESULT(0)=number of entries returned
; or "-1^error message"
; RESULT(n)=Global Unique ID (aka GUID)
; where n is a sequential number starting with 1
;
; example:
; >D QRYDATE^GMVUTL("ARRAY",3070301,3070401)
; >ZW ARRAY
; ARRAY(0)=3
; ARRAY(1)="{FD0FEBBC-8EC1-42E4-9483-4BDBE6370728}"
; ARRAY(2)="{A7C7FFEB-0CD5-4D55-BB34-35B9620F4ECC}"
; ARRAY(3)="{D0CEA9D2-A519-41C2-A4AE-9C24C7498E56}"
;
I $T(QRYDATE^MDCLIO1)="" D Q
.S @RESULT@(0)="-1^QRYDATE entry point not found in MDCLIO1"
.Q
K ^TMP($J),@RESULT
S SDATE=$G(SDATE,$$FMADD^XLFDT($$NOW^XLFDT(),,-24))
S EDATE=$G(EDATE,$$NOW^XLFDT())
I SDATE>EDATE D Q
.S @RESULT@(0)="-1^Start Date is after end date"
.Q
D QRYDATE^MDCLIO1(RESULT,SDATE,EDATE)
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HGMVUTL 8700 printed Oct 16, 2024@18:00:44 Page 2
GMVUTL ;HOIFO/RM,MD,FT-CALLABLE ENTRY POINTS FOR PROGRAMMER UTILITIES ;08/12/09 17:15
+1 ;;5.0;GEN. MED. REC. - VITALS;**23**;Oct 31, 2002;Build 25
+2 ;
+3 ; This routine uses the following IAs:
+4 ; #5076 - MDCLIO1 calls (private)
+5 ; #5269 - MDTERM calls (private)
+6 ; #10103 - XLFDT calls (supported)
+7 ;
+8 ; This routine supports the following IAs:
+9 ; #5046 - CLIO, F1250 entry points (supported)
+10 ;
EN1 ; CALL TO CONVERT TEMPERATURE (F) IN VARIABLE X TO TEMPERATURE (C)
+1 ; IN VARIABLE Y
+2 SET Y=$JUSTIFY(X-32*5/9,0,1)
+3 QUIT
EN2 ; CALL TO CONVERT AN INCHES MEASUREMENT IN X TO A CENTIMETER
+1 ; MEASUREMENT IN Y
+2 SET Y=$JUSTIFY(2.54*X,0,2)
+3 QUIT
EN3 ; CALL TO CONVERT A WEIGHT (LBS) IN VARIABLE X TO A WEIGHT (KG)
+1 ; IN VARIABLE Y
+2 SET Y=$JUSTIFY(X/2.2,0,2)
+3 QUIT
CLIO(GMVCLIO,GMVGUID) ; Calls Clinical Observations to get a single record
+1 ; Input:
+2 ; GMVCLIO = array name (required)
+3 ; GMVGUID = Global Unique ID (required)
+4 ; Output:
+5 ; GMVCLIO(0) =
+6 ;
+7 IF $GET(GMVGUID)=""
SET GMVCLIO(0)=""
QUIT
+8 NEW GMVARRAY,GMVCNT,GMVCS,GMVDATE,GMVDY,GMVFLAG,GMVFLD,GMVFR,GMVHR,GMVL,GMVLOOP,GMVM,GMVMI,GMVMO
+9 NEW GMVO2,GMVP,GMVPAIN,GMVPO2,GMVQ,GMVQFLAG,GMVQLOOP,GMVS,GMVSC,GMVSUP,GMVTIME,GMVU,GMVX,GMVY,GMVYR,X,Y
+10 IF $TEXT(QRYOBS^MDCLIO1)=""
SET GMVCLIO(0)=""
SET GMVCLIO(5)=""
QUIT
+11 DO QRYOBS^MDCLIO1("GMVARRAY",GMVGUID)
+12 IF '$DATA(GMVARRAY("OBSERVED_DATE_TIME"))
SET GMVCLIO(0)=""
SET GMVCLIO(5)=""
QUIT
+13 SET GMVPAIN=$$GETIEN^GMVGETVT("PN",2)
SET GMVCNT=0
+14 SET GMVPO2=$$GETIEN^GMVGETVT("PO2",2)
SET (GMVFR,GMVO2,GMVSUP)=""
+15 SET $PIECE(GMVCLIO(0),U,1)=$GET(GMVARRAY("OBSERVED_DATE_TIME","I"))
+16 SET $PIECE(GMVCLIO(0),U,2)=$GET(GMVARRAY("PATIENT_ID","I"))
+17 SET $PIECE(GMVCLIO(0),U,4)=$GET(GMVARRAY("ENTERED_DATE_TIME","I"))
+18 SET $PIECE(GMVCLIO(0),U,5)=$GET(GMVARRAY("HOSPITAL_LOCATION_ID","I"))
+19 SET $PIECE(GMVCLIO(0),U,6)=$GET(GMVARRAY("ENTERED_BY_ID","I"))
+20 SET $PIECE(GMVCLIO(0),U,8)=$GET(GMVARRAY("SVALUE","I"))
+21 SET GMVX=$GET(GMVARRAY("TERM_ID","I"))
+22 IF GMVX]""
Begin DoDot:1
+23 SET GMVX=$$GETIEN^GMVGETVT(GMVX,4)
+24 SET $PIECE(GMVCLIO(0),U,3)=GMVX
+25 QUIT
End DoDot:1
+26 ; NOTE: PAIN needs external value from CLIO
+27 IF $PIECE(GMVCLIO(0),U,3)=GMVPAIN
Begin DoDot:1
+28 SET $PIECE(GMVCLIO(0),U,8)=$GET(GMVARRAY("SVALUE","E"))
+29 QUIT
End DoDot:1
+30 SET GMVFLAG=0
+31 FOR GMVLOOP=1,2,3,8
Begin DoDot:1
+32 if $PIECE(GMVCLIO(0),U,GMVLOOP)=""
SET GMVFLAG=1
+33 QUIT
End DoDot:1
if GMVFLAG
QUIT
+34 IF GMVFLAG
SET GMVCLIO(0)=""
SET GMVCLIO(5)=""
QUIT
+35 ;check unit of measurement and convert value if needed
+36 IF $GET(GMVARRAY("UNIT_ID","E"))="DEGREES C"
Begin DoDot:1
+37 SET $PIECE(GMVCLIO(0),U,8)=+$$CVTVAL^MDTERM($PIECE(GMVCLIO(0),U,8),"DEGREES C","DEGREES F",1)
End DoDot:1
+38 IF $GET(GMVARRAY("UNIT_ID","E"))="CENTIMETER"
Begin DoDot:1
+39 SET $PIECE(GMVCLIO(0),U,8)=+$$CVTVAL^MDTERM($PIECE(GMVCLIO(0),U,8),"CENTIMETER","INCH",2)
End DoDot:1
+40 IF $GET(GMVARRAY("UNIT_ID","E"))="KILOGRAM"
Begin DoDot:1
+41 SET $PIECE(GMVCLIO(0),U,8)=+$$CVTVAL^MDTERM($PIECE(GMVCLIO(0),U,8),"KILOGRAM","POUND",2)
End DoDot:1
+42 IF $GET(GMVARRAY("UNIT_ID","E"))="MILLIMETERS OF MERCURY"
Begin DoDot:1
+43 SET $PIECE(GMVCLIO(0),U,8)=+$$CVTVAL^MDTERM($PIECE(GMVCLIO(0),U,8),"MILLIMETERS OF MERCURY","CENTIMETERS H2O",1)
End DoDot:1
+44 ; entered-in-error - won't get errors from clio
+45 ;error flag
SET $PIECE(GMVCLIO(2),U,1)=""
+46 ;error entered by
SET $PIECE(GMVCLIO(2),U,2)=""
+47 ;reason entered in error
SET $PIECE(GMVCLIO(2),U,3)=""
+48 ;
+49 SET GMVCLIO(5)=""
SET GMVCNT=0
+50 SET GMVCS=$GET(GMVARRAY("CUFF_SIZE_ID","I"))
+51 IF GMVCS]""
Begin DoDot:1
+52 SET GMVCS=$$GETIEN^GMVGETQL(GMVCS,2)
+53 SET GMVCNT=GMVCNT+1
+54 SET $PIECE(GMVCLIO(5),U,GMVCNT)=GMVCS
+55 QUIT
End DoDot:1
+56 SET GMVL=$GET(GMVARRAY("LOCATION_ID","I"))
+57 IF GMVL]""
Begin DoDot:1
+58 SET GMVL=$$GETIEN^GMVGETQL(GMVL,2)
+59 SET GMVCNT=GMVCNT+1
+60 SET $PIECE(GMVCLIO(5),U,GMVCNT)=GMVL
+61 QUIT
End DoDot:1
+62 SET GMVM=$GET(GMVARRAY("METHOD_ID","I"))
+63 IF GMVM]""
Begin DoDot:1
+64 SET GMVM=$$GETIEN^GMVGETQL(GMVM,2)
+65 SET GMVCNT=GMVCNT+1
+66 SET $PIECE(GMVCLIO(5),U,GMVCNT)=GMVM
+67 QUIT
End DoDot:1
+68 SET GMVP=$GET(GMVARRAY("POSITION_ID","I"))
+69 IF GMVP]""
Begin DoDot:1
+70 SET GMVP=$$GETIEN^GMVGETQL(GMVP,2)
+71 SET GMVCNT=GMVCNT+1
+72 SET $PIECE(GMVCLIO(5),U,GMVCNT)=GMVP
+73 QUIT
End DoDot:1
+74 SET GMVS=$GET(GMVARRAY("SITE_ID","I"))
+75 IF GMVS]""
Begin DoDot:1
+76 SET GMVS=$$GETIEN^GMVGETQL(GMVS,2)
+77 SET GMVCNT=GMVCNT+1
+78 SET $PIECE(GMVCLIO(5),U,GMVCNT)=GMVS
+79 QUIT
End DoDot:1
+80 SET GMVQ=$GET(GMVARRAY("QUALITY_ID","I"))
+81 IF GMVQ]""
Begin DoDot:1
+82 SET GMVQ=$$GETIEN^GMVGETQL(GMVQ,2)
+83 SET GMVCNT=GMVCNT+1
+84 SET $PIECE(GMVCLIO(5),U,GMVCNT)=GMVQ
+85 QUIT
End DoDot:1
+86 IF $PIECE(GMVCLIO(0),U,3)=GMVPO2
Begin DoDot:1
+87 SET GMVLOOP=0
+88 FOR
SET GMVLOOP=$ORDER(GMVARRAY("CONTEXT",GMVLOOP))
if 'GMVLOOP
QUIT
Begin DoDot:2
+89 IF $GET(GMVARRAY("CONTEXT",GMVLOOP,"TERM_ID","E"))="SUPPLEMENTAL OXYGEN CONCENTRATION"
Begin DoDot:3
+90 SET GMVO2=$GET(GMVARRAY("CONTEXT",GMVLOOP,"SVALUE","E"))
End DoDot:3
+91 IF $GET(GMVARRAY("CONTEXT",GMVLOOP,"TERM_ID","E"))="SUPPLEMENTAL OXYGEN FLOW RATE"
Begin DoDot:3
+92 SET GMVFR=$GET(GMVARRAY("CONTEXT",GMVLOOP,"SVALUE","E"))
End DoDot:3
+93 SET GMVM=$GET(GMVARRAY("CONTEXT",GMVLOOP,"METHOD_ID","I"))
+94 IF GMVM]""
Begin DoDot:3
+95 SET GMVM=$$GETIEN^GMVGETQL(GMVM,2)
+96 if 'GMVM
QUIT
+97 SET GMVQFLAG=0
+98 FOR GMVQLOOP=1:1
if $PIECE($GET(GMVCLIO(5)),U,GMVQLOOP)=""
QUIT
IF $PIECE($GET(GMVCLIO(5)),U,GMVQLOOP)=GMVM
SET GMVQFLAG=1
QUIT
+99 IF GMVQFLAG=0
SET GMVCNT=GMVCNT+1
SET $PIECE(GMVCLIO(5),U,GMVCNT)=GMVM
End DoDot:3
End DoDot:2
End DoDot:1
+100 if GMVO2]""
SET GMVO2=GMVO2_"%"
+101 if GMVFR]""
SET GMVFR=GMVFR_" l/min"
+102 IF GMVFR=""
IF GMVO2=""
SET GMVSUP=""
+103 IF GMVFR'=""
IF GMVO2=""
SET GMVSUP=GMVFR
+104 IF GMVFR=""
IF GMVO2'=""
SET GMVSUP=GMVO2
+105 IF GMVFR'=""
IF GMVO2'=""
SET GMVSUP=GMVFR_" "_GMVO2
+106 SET $PIECE(GMVCLIO(0),U,10)=GMVSUP
+107 QUIT
+108 ;
F1205(GMV1205,GMVX,GMVY) ; Return file 120.5 record as nodes
+1 ; Input: GMV1205 = array name to hold nodes (required)
+2 ; GMVX = File 120.5 IEN or CliO GUID (required)
+3 ; GMVY = Return records marked as errors? (optional)
+4 ; 0 = don't return, 1 = return error records
+5 ; (default = 0)
+6 ; Output:GMV1205(0) = file 120.5 zero node
+7 ; (2) = 120.5,#2 ^ 120.5, #3 ^ 120.5, #4 delimited by
+8 ; tilde (~)
+9 ; (3) = qualifier IENS delimited by caret (^)
+10 ;
+11 NEW GMVCNT,GMVFLAG,GMVLIST,GMVLOOP,GMVNODE,GMVNODE2,GMVIEN1
+12 SET GMVX=$GET(GMVX)
SET GMVY=$GET(GMVY,0)
+13 SET (GMV1205(0),GMV1205(2),GMV1205(5))=""
+14 IF GMVX'=+GMVX
QUIT
+15 SET GMVY=$SELECT(GMVY=1:1,1:0)
+16 SET GMVNODE2=$GET(^GMR(120.5,+GMVX,2))
+17 IF GMVY=0
IF $PIECE(GMVNODE2,U,1)=1
QUIT
+18 SET GMV1205(0)=$GET(^GMR(120.5,GMVX,0))
+19 SET GMVFLAG=0
+20 FOR GMVLOOP=1,2,3,8
Begin DoDot:1
+21 if $PIECE(GMV1205(0),U,GMVLOOP)=""
SET GMVFLAG=1
+22 QUIT
End DoDot:1
if GMVFLAG
QUIT
+23 IF GMVFLAG
SET (GMV1205(0),GMV1205(2),GMV1205(5))=""
QUIT
+24 SET GMV1205(2)=GMVNODE2
+25 SET (GMVCNT,GMVIEN1)=0
SET GMVLIST=""
+26 FOR
SET GMVIEN1=$ORDER(^GMR(120.5,GMVX,2.1,GMVIEN1))
if 'GMVIEN1
QUIT
Begin DoDot:1
+27 SET GMVCNT=GMVCNT+1
+28 SET $PIECE(GMVLIST,"~",GMVCNT)=+$PIECE($GET(^GMR(120.5,GMVX,2.1,GMVIEN1,0)),U,1)
+29 QUIT
End DoDot:1
+30 SET $PIECE(GMV1205(2),U,3)=GMVLIST
+31 SET (GMVCNT,GMVIEN1)=0
+32 FOR
SET GMVIEN1=$ORDER(^GMR(120.5,GMVX,5,"B",GMVIEN1))
if 'GMVIEN1
QUIT
Begin DoDot:1
+33 SET GMVCNT=GMVCNT+1
+34 SET $PIECE(GMV1205(5),U,GMVCNT)=GMVIEN1
+35 QUIT
End DoDot:1
+36 QUIT
+37 ;
GETREC(GMVARRAY,GMVID,GMVERR) ; Checks CLIO and Vitals databases. Returns
+1 ; record as nodes with internal values.
+2 ; Input: GMVARRAY = array name passed by reference (required)
+3 ; GMVID = File 120.5 IEN or CliO GUID (required)
+4 ; GMVERR = Return records marked as errors? (optional)
+5 ; 0 = don't return, 1 = return error records
+6 ; (default = 0)
+7 ; Output:GMVARRAY(0) = same as File 120.5 zero node
+8 ; (2) = 120.5, #2 ^ 120.5, #3 ^ 120.5, #4 delimited by
+9 ; tilde (~)
+10 ; (3) = qualifier IENS (File 120.52) delimited by caret (^)
+11 ;
+12 ; example:
+13 ; >D GETREC^GMVUTL(.RESULT,12196,0) ZW RESULT
+14 ; RESULT(0)="3080108.093626^217^21^3080108.0937^67^4658^^4^^1.0 l/min 22%"
+15 ; RESULT(2)="^^"
+16 ; RESULT(5)=134
+17 ;
+18 SET GMVID=$GET(GMVID)
SET GMVERR=$GET(GMVERR)
+19 IF GMVID=""
QUIT
+20 SET GMVERR=$SELECT(GMVERR=1:1,1:0)
+21 IF GMVID=+GMVID
Begin DoDot:1
+22 DO F1205(.GMVARRAY,GMVID,GMVERR)
+23 QUIT
End DoDot:1
QUIT
+24 IF GMVID'=+GMVID
Begin DoDot:1
+25 DO CLIO(.GMVARRAY,GMVID)
+26 QUIT
End DoDot:1
QUIT
+27 QUIT
QRYDATE(RESULT,SDATE,EDATE) ; Returns a list of GUIDs found in the
+1 ; Clinical Observations package for the date range specified
+2 ; Input: RESULT = array name surrounded by quotes (required)
+3 ; ex: "ARRAY", "^TMP($J)"
+4 ; SDATE = start date of search range in FileMan internal
+5 ; format (optional)
+6 ; default is T-24 hours
+7 ; EDATE = end date in FileMan internal format (optional)
+8 ; default is current date/time
+9 ; Output: RESULT(0)=number of entries returned
+10 ; or "-1^error message"
+11 ; RESULT(n)=Global Unique ID (aka GUID)
+12 ; where n is a sequential number starting with 1
+13 ;
+14 ; example:
+15 ; >D QRYDATE^GMVUTL("ARRAY",3070301,3070401)
+16 ; >ZW ARRAY
+17 ; ARRAY(0)=3
+18 ; ARRAY(1)="{FD0FEBBC-8EC1-42E4-9483-4BDBE6370728}"
+19 ; ARRAY(2)="{A7C7FFEB-0CD5-4D55-BB34-35B9620F4ECC}"
+20 ; ARRAY(3)="{D0CEA9D2-A519-41C2-A4AE-9C24C7498E56}"
+21 ;
+22 IF $TEXT(QRYDATE^MDCLIO1)=""
Begin DoDot:1
+23 SET @RESULT@(0)="-1^QRYDATE entry point not found in MDCLIO1"
+24 QUIT
End DoDot:1
QUIT
+25 KILL ^TMP($JOB),@RESULT
+26 SET SDATE=$GET(SDATE,$$FMADD^XLFDT($$NOW^XLFDT(),,-24))
+27 SET EDATE=$GET(EDATE,$$NOW^XLFDT())
+28 IF SDATE>EDATE
Begin DoDot:1
+29 SET @RESULT@(0)="-1^Start Date is after end date"
+30 QUIT
End DoDot:1
QUIT
+31 DO QRYDATE^MDCLIO1(RESULT,SDATE,EDATE)
+32 QUIT