Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: GMVUTL

GMVUTL.m

Go to the documentation of this file.
  1. 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
  1. ;
  1. ; This routine uses the following IAs:
  1. ; #5076 - MDCLIO1 calls (private)
  1. ; #5269 - MDTERM calls (private)
  1. ; #10103 - XLFDT calls (supported)
  1. ;
  1. ; This routine supports the following IAs:
  1. ; #5046 - CLIO, F1250 entry points (supported)
  1. ;
  1. EN1 ; CALL TO CONVERT TEMPERATURE (F) IN VARIABLE X TO TEMPERATURE (C)
  1. ; IN VARIABLE Y
  1. S Y=$J(X-32*5/9,0,1)
  1. Q
  1. EN2 ; CALL TO CONVERT AN INCHES MEASUREMENT IN X TO A CENTIMETER
  1. ; MEASUREMENT IN Y
  1. S Y=$J(2.54*X,0,2)
  1. Q
  1. EN3 ; CALL TO CONVERT A WEIGHT (LBS) IN VARIABLE X TO A WEIGHT (KG)
  1. ; IN VARIABLE Y
  1. S Y=$J(X/2.2,0,2)
  1. Q
  1. CLIO(GMVCLIO,GMVGUID) ; Calls Clinical Observations to get a single record
  1. ; Input:
  1. ; GMVCLIO = array name (required)
  1. ; GMVGUID = Global Unique ID (required)
  1. ; Output:
  1. ; GMVCLIO(0) =
  1. ;
  1. I $G(GMVGUID)="" S GMVCLIO(0)="" Q
  1. N GMVARRAY,GMVCNT,GMVCS,GMVDATE,GMVDY,GMVFLAG,GMVFLD,GMVFR,GMVHR,GMVL,GMVLOOP,GMVM,GMVMI,GMVMO
  1. N GMVO2,GMVP,GMVPAIN,GMVPO2,GMVQ,GMVQFLAG,GMVQLOOP,GMVS,GMVSC,GMVSUP,GMVTIME,GMVU,GMVX,GMVY,GMVYR,X,Y
  1. I $T(QRYOBS^MDCLIO1)="" S GMVCLIO(0)="",GMVCLIO(5)="" Q
  1. D QRYOBS^MDCLIO1("GMVARRAY",GMVGUID)
  1. I '$D(GMVARRAY("OBSERVED_DATE_TIME")) S GMVCLIO(0)="",GMVCLIO(5)="" Q
  1. S GMVPAIN=$$GETIEN^GMVGETVT("PN",2),GMVCNT=0
  1. S GMVPO2=$$GETIEN^GMVGETVT("PO2",2),(GMVFR,GMVO2,GMVSUP)=""
  1. S $P(GMVCLIO(0),U,1)=$G(GMVARRAY("OBSERVED_DATE_TIME","I"))
  1. S $P(GMVCLIO(0),U,2)=$G(GMVARRAY("PATIENT_ID","I"))
  1. S $P(GMVCLIO(0),U,4)=$G(GMVARRAY("ENTERED_DATE_TIME","I"))
  1. S $P(GMVCLIO(0),U,5)=$G(GMVARRAY("HOSPITAL_LOCATION_ID","I"))
  1. S $P(GMVCLIO(0),U,6)=$G(GMVARRAY("ENTERED_BY_ID","I"))
  1. S $P(GMVCLIO(0),U,8)=$G(GMVARRAY("SVALUE","I"))
  1. S GMVX=$G(GMVARRAY("TERM_ID","I"))
  1. I GMVX]"" D
  1. .S GMVX=$$GETIEN^GMVGETVT(GMVX,4)
  1. .S $P(GMVCLIO(0),U,3)=GMVX
  1. .Q
  1. ; NOTE: PAIN needs external value from CLIO
  1. I $P(GMVCLIO(0),U,3)=GMVPAIN D
  1. .S $P(GMVCLIO(0),U,8)=$G(GMVARRAY("SVALUE","E"))
  1. .Q
  1. S GMVFLAG=0
  1. F GMVLOOP=1,2,3,8 D Q:GMVFLAG
  1. .S:$P(GMVCLIO(0),U,GMVLOOP)="" GMVFLAG=1
  1. .Q
  1. I GMVFLAG S GMVCLIO(0)="",GMVCLIO(5)="" Q
  1. ;check unit of measurement and convert value if needed
  1. I $G(GMVARRAY("UNIT_ID","E"))="DEGREES C" D
  1. .S $P(GMVCLIO(0),U,8)=+$$CVTVAL^MDTERM($P(GMVCLIO(0),U,8),"DEGREES C","DEGREES F",1)
  1. I $G(GMVARRAY("UNIT_ID","E"))="CENTIMETER" D
  1. .S $P(GMVCLIO(0),U,8)=+$$CVTVAL^MDTERM($P(GMVCLIO(0),U,8),"CENTIMETER","INCH",2)
  1. I $G(GMVARRAY("UNIT_ID","E"))="KILOGRAM" D
  1. .S $P(GMVCLIO(0),U,8)=+$$CVTVAL^MDTERM($P(GMVCLIO(0),U,8),"KILOGRAM","POUND",2)
  1. I $G(GMVARRAY("UNIT_ID","E"))="MILLIMETERS OF MERCURY" D
  1. .S $P(GMVCLIO(0),U,8)=+$$CVTVAL^MDTERM($P(GMVCLIO(0),U,8),"MILLIMETERS OF MERCURY","CENTIMETERS H2O",1)
  1. ; entered-in-error - won't get errors from clio
  1. S $P(GMVCLIO(2),U,1)="" ;error flag
  1. S $P(GMVCLIO(2),U,2)="" ;error entered by
  1. S $P(GMVCLIO(2),U,3)="" ;reason entered in error
  1. ;
  1. S GMVCLIO(5)="",GMVCNT=0
  1. S GMVCS=$G(GMVARRAY("CUFF_SIZE_ID","I"))
  1. I GMVCS]"" D
  1. .S GMVCS=$$GETIEN^GMVGETQL(GMVCS,2)
  1. .S GMVCNT=GMVCNT+1
  1. .S $P(GMVCLIO(5),U,GMVCNT)=GMVCS
  1. .Q
  1. S GMVL=$G(GMVARRAY("LOCATION_ID","I"))
  1. I GMVL]"" D
  1. .S GMVL=$$GETIEN^GMVGETQL(GMVL,2)
  1. .S GMVCNT=GMVCNT+1
  1. .S $P(GMVCLIO(5),U,GMVCNT)=GMVL
  1. .Q
  1. S GMVM=$G(GMVARRAY("METHOD_ID","I"))
  1. I GMVM]"" D
  1. .S GMVM=$$GETIEN^GMVGETQL(GMVM,2)
  1. .S GMVCNT=GMVCNT+1
  1. .S $P(GMVCLIO(5),U,GMVCNT)=GMVM
  1. .Q
  1. S GMVP=$G(GMVARRAY("POSITION_ID","I"))
  1. I GMVP]"" D
  1. .S GMVP=$$GETIEN^GMVGETQL(GMVP,2)
  1. .S GMVCNT=GMVCNT+1
  1. .S $P(GMVCLIO(5),U,GMVCNT)=GMVP
  1. .Q
  1. S GMVS=$G(GMVARRAY("SITE_ID","I"))
  1. I GMVS]"" D
  1. .S GMVS=$$GETIEN^GMVGETQL(GMVS,2)
  1. .S GMVCNT=GMVCNT+1
  1. .S $P(GMVCLIO(5),U,GMVCNT)=GMVS
  1. .Q
  1. S GMVQ=$G(GMVARRAY("QUALITY_ID","I"))
  1. I GMVQ]"" D
  1. .S GMVQ=$$GETIEN^GMVGETQL(GMVQ,2)
  1. .S GMVCNT=GMVCNT+1
  1. .S $P(GMVCLIO(5),U,GMVCNT)=GMVQ
  1. .Q
  1. I $P(GMVCLIO(0),U,3)=GMVPO2 D
  1. .S GMVLOOP=0
  1. .F S GMVLOOP=$O(GMVARRAY("CONTEXT",GMVLOOP)) Q:'GMVLOOP D
  1. ..I $G(GMVARRAY("CONTEXT",GMVLOOP,"TERM_ID","E"))="SUPPLEMENTAL OXYGEN CONCENTRATION" D
  1. ...S GMVO2=$G(GMVARRAY("CONTEXT",GMVLOOP,"SVALUE","E"))
  1. ..I $G(GMVARRAY("CONTEXT",GMVLOOP,"TERM_ID","E"))="SUPPLEMENTAL OXYGEN FLOW RATE" D
  1. ...S GMVFR=$G(GMVARRAY("CONTEXT",GMVLOOP,"SVALUE","E"))
  1. ..S GMVM=$G(GMVARRAY("CONTEXT",GMVLOOP,"METHOD_ID","I"))
  1. ..I GMVM]"" D
  1. ...S GMVM=$$GETIEN^GMVGETQL(GMVM,2)
  1. ...Q:'GMVM
  1. ...S GMVQFLAG=0
  1. ...F GMVQLOOP=1:1 Q:$P($G(GMVCLIO(5)),U,GMVQLOOP)="" I $P($G(GMVCLIO(5)),U,GMVQLOOP)=GMVM S GMVQFLAG=1 Q
  1. ...I GMVQFLAG=0 S GMVCNT=GMVCNT+1,$P(GMVCLIO(5),U,GMVCNT)=GMVM
  1. S:GMVO2]"" GMVO2=GMVO2_"%"
  1. S:GMVFR]"" GMVFR=GMVFR_" l/min"
  1. I GMVFR="",GMVO2="" S GMVSUP=""
  1. I GMVFR'="",GMVO2="" S GMVSUP=GMVFR
  1. I GMVFR="",GMVO2'="" S GMVSUP=GMVO2
  1. I GMVFR'="",GMVO2'="" S GMVSUP=GMVFR_" "_GMVO2
  1. S $P(GMVCLIO(0),U,10)=GMVSUP
  1. Q
  1. ;
  1. F1205(GMV1205,GMVX,GMVY) ; Return file 120.5 record as nodes
  1. ; Input: GMV1205 = array name to hold nodes (required)
  1. ; GMVX = File 120.5 IEN or CliO GUID (required)
  1. ; GMVY = Return records marked as errors? (optional)
  1. ; 0 = don't return, 1 = return error records
  1. ; (default = 0)
  1. ; Output:GMV1205(0) = file 120.5 zero node
  1. ; (2) = 120.5,#2 ^ 120.5, #3 ^ 120.5, #4 delimited by
  1. ; tilde (~)
  1. ; (3) = qualifier IENS delimited by caret (^)
  1. ;
  1. N GMVCNT,GMVFLAG,GMVLIST,GMVLOOP,GMVNODE,GMVNODE2,GMVIEN1
  1. S GMVX=$G(GMVX),GMVY=$G(GMVY,0)
  1. S (GMV1205(0),GMV1205(2),GMV1205(5))=""
  1. I GMVX'=+GMVX Q
  1. S GMVY=$S(GMVY=1:1,1:0)
  1. S GMVNODE2=$G(^GMR(120.5,+GMVX,2))
  1. I GMVY=0,$P(GMVNODE2,U,1)=1 Q
  1. S GMV1205(0)=$G(^GMR(120.5,GMVX,0))
  1. S GMVFLAG=0
  1. F GMVLOOP=1,2,3,8 D Q:GMVFLAG
  1. .S:$P(GMV1205(0),U,GMVLOOP)="" GMVFLAG=1
  1. .Q
  1. I GMVFLAG S (GMV1205(0),GMV1205(2),GMV1205(5))="" Q
  1. S GMV1205(2)=GMVNODE2
  1. S (GMVCNT,GMVIEN1)=0,GMVLIST=""
  1. F S GMVIEN1=$O(^GMR(120.5,GMVX,2.1,GMVIEN1)) Q:'GMVIEN1 D
  1. .S GMVCNT=GMVCNT+1
  1. .S $P(GMVLIST,"~",GMVCNT)=+$P($G(^GMR(120.5,GMVX,2.1,GMVIEN1,0)),U,1)
  1. .Q
  1. S $P(GMV1205(2),U,3)=GMVLIST
  1. S (GMVCNT,GMVIEN1)=0
  1. F S GMVIEN1=$O(^GMR(120.5,GMVX,5,"B",GMVIEN1)) Q:'GMVIEN1 D
  1. .S GMVCNT=GMVCNT+1
  1. .S $P(GMV1205(5),U,GMVCNT)=GMVIEN1
  1. .Q
  1. Q
  1. ;
  1. GETREC(GMVARRAY,GMVID,GMVERR) ; Checks CLIO and Vitals databases. Returns
  1. ; record as nodes with internal values.
  1. ; Input: GMVARRAY = array name passed by reference (required)
  1. ; GMVID = File 120.5 IEN or CliO GUID (required)
  1. ; GMVERR = Return records marked as errors? (optional)
  1. ; 0 = don't return, 1 = return error records
  1. ; (default = 0)
  1. ; Output:GMVARRAY(0) = same as File 120.5 zero node
  1. ; (2) = 120.5, #2 ^ 120.5, #3 ^ 120.5, #4 delimited by
  1. ; tilde (~)
  1. ; (3) = qualifier IENS (File 120.52) delimited by caret (^)
  1. ;
  1. ; example:
  1. ; >D GETREC^GMVUTL(.RESULT,12196,0) ZW RESULT
  1. ; RESULT(0)="3080108.093626^217^21^3080108.0937^67^4658^^4^^1.0 l/min 22%"
  1. ; RESULT(2)="^^"
  1. ; RESULT(5)=134
  1. ;
  1. S GMVID=$G(GMVID),GMVERR=$G(GMVERR)
  1. I GMVID="" Q
  1. S GMVERR=$S(GMVERR=1:1,1:0)
  1. I GMVID=+GMVID D Q
  1. .D F1205(.GMVARRAY,GMVID,GMVERR)
  1. .Q
  1. I GMVID'=+GMVID D Q
  1. .D CLIO(.GMVARRAY,GMVID)
  1. .Q
  1. Q
  1. QRYDATE(RESULT,SDATE,EDATE) ; Returns a list of GUIDs found in the
  1. ; Clinical Observations package for the date range specified
  1. ; Input: RESULT = array name surrounded by quotes (required)
  1. ; ex: "ARRAY", "^TMP($J)"
  1. ; SDATE = start date of search range in FileMan internal
  1. ; format (optional)
  1. ; default is T-24 hours
  1. ; EDATE = end date in FileMan internal format (optional)
  1. ; default is current date/time
  1. ; Output: RESULT(0)=number of entries returned
  1. ; or "-1^error message"
  1. ; RESULT(n)=Global Unique ID (aka GUID)
  1. ; where n is a sequential number starting with 1
  1. ;
  1. ; example:
  1. ; >D QRYDATE^GMVUTL("ARRAY",3070301,3070401)
  1. ; >ZW ARRAY
  1. ; ARRAY(0)=3
  1. ; ARRAY(1)="{FD0FEBBC-8EC1-42E4-9483-4BDBE6370728}"
  1. ; ARRAY(2)="{A7C7FFEB-0CD5-4D55-BB34-35B9620F4ECC}"
  1. ; ARRAY(3)="{D0CEA9D2-A519-41C2-A4AE-9C24C7498E56}"
  1. ;
  1. I $T(QRYDATE^MDCLIO1)="" D Q
  1. .S @RESULT@(0)="-1^QRYDATE entry point not found in MDCLIO1"
  1. .Q
  1. K ^TMP($J),@RESULT
  1. S SDATE=$G(SDATE,$$FMADD^XLFDT($$NOW^XLFDT(),,-24))
  1. S EDATE=$G(EDATE,$$NOW^XLFDT())
  1. I SDATE>EDATE D Q
  1. .S @RESULT@(0)="-1^Start Date is after end date"
  1. .Q
  1. D QRYDATE^MDCLIO1(RESULT,SDATE,EDATE)
  1. Q