GMRVUT0 ;HIOFO/RM,YH,FT-INPUT TRANSFORMS FOR VITAL TYPES ;10/3/07
;;5.0;GEN. MED. REC. - VITALS;**23**;Oct 31, 2002;Build 25
;
; This routine uses the following IAs:
; #4290 - ^PXRMINDX global (controlled)
;
; This routine supports the following IAs:
; EN1 - 1446 (controlled)
;
EN2 ; CALLED FROM INPUT TRANSFORM OF RATE AND QUALITY SUBFIELDS OF SITE
; FIELD OF THE VITAL MEASUREMENT (#120.5) FILE - GMRFLD IS SET BEFORE
; ENTRY, BUT KILLED WITHIN THE ROUTINE
S GMRTYP=$S($D(^GMR(120.5,DA,0)):$P(^(0),U,3),1:"") G K:GMRTYP'>0
G K:GMRTYP'>0,Q2:$P(^GMRD(120.51,GMRTYP,0),U,$S(GMRFLD=1:4,GMRFLD=2:5,1:3))
K D EN^DDIOL($C(7)_"CANNOT EDIT THIS FIELD FOR THIS TYPE OF MEASUREMENT","","!?5") K X
Q2 K GMRTYP,GMRFLD Q
EN3 ; INPUT TRANSFORM FOR HEIGHT RATES
N GMR
S GMR=$P(X,+X,2,10) I GMR="" S X=0 Q
I $E(GMR)="C"!($E(GMR)="c")&("CMCmcMcm"[GMR) S X=$J(.3937*(+X),0,2) Q
I $E(GMR)="I"!($E(GMR)="i")!($E(GMR)="""") S X=+X Q
I $E(GMR)="F"!($E(GMR)="f")!($E(GMR)="'") D FTIN Q
S X=0
Q
FTIN ;
N GMRF,GMRIN,GMRXX,GMRYY
S GMRF=$E(GMR),GMR=$E(GMR,2,$L(GMR)) F GMRXX=1:0 S GMRYY=$E(GMR) Q:GMRYY?1N!(GMRYY="") S GMRF=GMRF_GMRYY,GMR=$E(GMR,2,$L(GMR))
I "FTFtfTft'"'[GMRF Q
S GMRIN=$P(GMR,+GMR,2) I "INIniNin""''"'[GMRIN!(GMRIN="'") Q
S X=+X*12+(+GMR)
Q
EN1 ; ENTRY TO GATHER PATIENT'S VITAL/MEASUREMENT DATA
; INPUT VARIABLES:
;
; DFN = Entry number of patient in Patient file.
; GMRVSTR = types of vital/measurements desired. Use the abbreviations
; found in the Vital Type (120.51) file. For multiple
; vitals, use the ; as a delimiter.
; GMRVSTR(0) = GMRVSTDT^GMRVENDT^GMRVOCC^GMRVSORD
; where GMRVSTDT = The start date/time that the utility will
; use in obtaining patient data. (OPTIONAL)
; GMRVENDT = The end date/time that the utility will use
; to stop the search. (OPTIONAL)
; GMRVOCC = The number of occurrences of the data that
; is desired by the search. (OPTIONAL)
; GMRVSORD = The sort order desired in output, see OUTPUT
; VARIABLES section. (REQUIRED)
; GMRVSTR("LT") = ^TYP1^[TYP2^...] (OPTIONAL)
; THIS VARIABLE IS AN ^ DELIMITED LIST OF HOSPITAL LOCATION
; TYPES TO EXTRACT MEASUREMENT DATA FOR. E.G., ^C^M^, WILL
; EXTRACT DATA FOR ONLY THOSE MEASUREMENTS TAKEN ON CLINICS
; OR MODULES.
;
; OUTPUT VARIABLES:
;
; The utility will create an array with the desired information. The
; array structure will be as follows if '$P(GMRVSTR(0),"^",4):
; ^UTILITY($J,"GMRVD",GMRVTYP,GMRVRDT,GMRVIEN)=GMRVDATA
; or if $P(GMRVSTR(0),"^",4) then the following will be returned:
; ^UTILITY($J,"GMRVD",GMRVRDT,GMRVTYP,GMRVIEN)=GMRVDATA
; where GMRVRDT = Reverse FileMan date/time.
; 9999999-Date/time vital/measurement was taken.
; GMRVTYP = The abbreviation used in the GMRVSTR string for the
; type of vital/measurement taken.
; GMRVIEN = Entry number in FILE 120.5 or
; pseudo entry number for File 704.117
; GMRVDATA = $P(^GMR(120.5,GMRVIEN,0),"^",1,9) will be the patient data as
; currently defined in the DD for file 120.5.
; $P(GMRVDATA,"^",10) = the first qualifier
; $P(GMRVDATA,"^",11) = the second qualifier
; $P(GMRVDATA,"^",12)= "*" for abnormal measurement, otherwise = ""
; $P(GMRVDATA,"^",13)= values in centigrade for T; KG for WT;
; in centimeter for HT and Circumference/Girth;
; in mmHg for CVP.
; $P(GMRVDATA,"^",14)= Body Mass Index.
; $P(GMRVDATA,"^",15)= L/Min of supplemental O2.
; $P(GMRVDATA,"^",16)= % of supplemental O2.
; $P(GMRVDATA,"^",17)= all qualifiers.
; The variable GMRVSTR will be killed.
Q:'$D(GMRVSTR(0))!'($D(GMRVSTR)#2)!'($D(DFN)#2) Q:DFN'>0
N GMVIENGUID
S GMRSAVE=GMRVSTR,GMRSAVE(0)=GMRVSTR(0),GMVIENGUID=0
S GMRVSTR="HT" D EN6^GMRVUTL S GMRVSTR=GMRSAVE,GMRVSTR(0)=GMRSAVE(0) S GMRHT=(+$P(X,U,8)*2.54)/100
I $G(GMRVSTR("LT"))="" S GMRVSTR("LT")=""
F GMRVSTR(1)=1:1:$L(GMRVSTR,";") D
.S GMRVSTR("T")=$P(GMRVSTR,";",GMRVSTR(1))
.I $L(GMRVSTR("T")) D
..S GMRVSTR("B")=$S($P(GMRVSTR(0),U,1):$P(GMRVSTR(0),U,1),1:0)
..S GMRVSTR("E")=$S($P(GMRVSTR(0),U,2):$P(GMRVSTR(0),U,2),1:9999999)
..S GMRVSTR("O")=0,GMRVSTR("E")=GMRVSTR("E")+.000001
..D GETD
K GMRINF,GG,GMRSAVE,GMRHT,GMRVARY,GMRVSTR,GMRSITE,GMRQUAL,GMRVX,GMRZTY,GDATA
Q
GETD ; LOOP THRU PXRMINDX XREF AND GET PATIENT DATA
S GMRVSTR("TDA")=$O(^GMRD(120.51,"C",GMRVSTR("T"),0)) Q:'GMRVSTR("TDA")
I GMRVSTR("T")="BP"!(GMRVSTR("T")="P") D BP^GMRVUT2 Q
F GMRVSTR("R")=GMRVSTR("E"):0 S GMRVSTR("R")=$O(^PXRMINDX(120.5,"PI",DFN,GMRVSTR("TDA"),GMRVSTR("R")),-1) Q:GMRVSTR("R")<GMRVSTR("B")!(GMRVSTR("R")'>0) D GETD1 Q:GMRVSTR("TMO")
Q
GETD1 ;
N GMVCLIO
S GMRVSTR("TMO")=0 ;max # of occurrences flag
S GMRVSTR("IEN")=0
F S GMRVSTR("IEN")=$O(^PXRMINDX(120.5,"PI",DFN,GMRVSTR("TDA"),GMRVSTR("R"),GMRVSTR("IEN"))) Q:$L(GMRVSTR("IEN"))'>0 D Q:GMRVSTR("TMO")
.I GMRVSTR("IEN")=+GMRVSTR("IEN") D
..D F1205^GMVUTL(.GMVCLIO,GMRVSTR("IEN"))
.I GMRVSTR("IEN")'=+GMRVSTR("IEN") D
..D CLIO^GMVUTL(.GMVCLIO,GMRVSTR("IEN"))
.S GMVCLIO(0)=$G(GMVCLIO(0)),GMVCLIO(5)=$G(GMVCLIO(5))
.I GMVCLIO(0)=""!($P(GMVCLIO(0),U,8)="") Q
.D SETU2^GMRVUT2
.Q
Q
GMRVUT0 ;HIOFO/RM,YH,FT-INPUT TRANSFORMS FOR VITAL TYPES ;10/3/07
+1 ;;5.0;GEN. MED. REC. - VITALS;**23**;Oct 31, 2002;Build 25
+2 ;
+3 ; This routine uses the following IAs:
+4 ; #4290 - ^PXRMINDX global (controlled)
+5 ;
+6 ; This routine supports the following IAs:
+7 ; EN1 - 1446 (controlled)
+8 ;
EN2 ; CALLED FROM INPUT TRANSFORM OF RATE AND QUALITY SUBFIELDS OF SITE
+1 ; FIELD OF THE VITAL MEASUREMENT (#120.5) FILE - GMRFLD IS SET BEFORE
+2 ; ENTRY, BUT KILLED WITHIN THE ROUTINE
+3 SET GMRTYP=$SELECT($DATA(^GMR(120.5,DA,0)):$PIECE(^(0),U,3),1:"")
IF GMRTYP'>0
GOTO K
+4 IF GMRTYP'>0
GOTO K
IF $PIECE(^GMRD(120.51,GMRTYP,0),U,$SELECT(GMRFLD=1:4,GMRFLD=2:5,1:3))
GOTO Q2
K DO EN^DDIOL($CHAR(7)_"CANNOT EDIT THIS FIELD FOR THIS TYPE OF MEASUREMENT","","!?5")
KILL X
Q2 KILL GMRTYP,GMRFLD
QUIT
EN3 ; INPUT TRANSFORM FOR HEIGHT RATES
+1 NEW GMR
+2 SET GMR=$PIECE(X,+X,2,10)
IF GMR=""
SET X=0
QUIT
+3 IF $EXTRACT(GMR)="C"!($EXTRACT(GMR)="c")&("CMCmcMcm"[GMR)
SET X=$JUSTIFY(.3937*(+X),0,2)
QUIT
+4 IF $EXTRACT(GMR)="I"!($EXTRACT(GMR)="i")!($EXTRACT(GMR)="""")
SET X=+X
QUIT
+5 IF $EXTRACT(GMR)="F"!($EXTRACT(GMR)="f")!($EXTRACT(GMR)="'")
DO FTIN
QUIT
+6 SET X=0
+7 QUIT
FTIN ;
+1 NEW GMRF,GMRIN,GMRXX,GMRYY
+2 SET GMRF=$EXTRACT(GMR)
SET GMR=$EXTRACT(GMR,2,$LENGTH(GMR))
FOR GMRXX=1:0
SET GMRYY=$EXTRACT(GMR)
IF GMRYY?1N!(GMRYY="")
QUIT
SET GMRF=GMRF_GMRYY
SET GMR=$EXTRACT(GMR,2,$LENGTH(GMR))
+3 IF "FTFtfTft'"'[GMRF
QUIT
+4 SET GMRIN=$PIECE(GMR,+GMR,2)
IF "INIniNin""''"'[GMRIN!(GMRIN="'")
QUIT
+5 SET X=+X*12+(+GMR)
+6 QUIT
EN1 ; ENTRY TO GATHER PATIENT'S VITAL/MEASUREMENT DATA
+1 ; INPUT VARIABLES:
+2 ;
+3 ; DFN = Entry number of patient in Patient file.
+4 ; GMRVSTR = types of vital/measurements desired. Use the abbreviations
+5 ; found in the Vital Type (120.51) file. For multiple
+6 ; vitals, use the ; as a delimiter.
+7 ; GMRVSTR(0) = GMRVSTDT^GMRVENDT^GMRVOCC^GMRVSORD
+8 ; where GMRVSTDT = The start date/time that the utility will
+9 ; use in obtaining patient data. (OPTIONAL)
+10 ; GMRVENDT = The end date/time that the utility will use
+11 ; to stop the search. (OPTIONAL)
+12 ; GMRVOCC = The number of occurrences of the data that
+13 ; is desired by the search. (OPTIONAL)
+14 ; GMRVSORD = The sort order desired in output, see OUTPUT
+15 ; VARIABLES section. (REQUIRED)
+16 ; GMRVSTR("LT") = ^TYP1^[TYP2^...] (OPTIONAL)
+17 ; THIS VARIABLE IS AN ^ DELIMITED LIST OF HOSPITAL LOCATION
+18 ; TYPES TO EXTRACT MEASUREMENT DATA FOR. E.G., ^C^M^, WILL
+19 ; EXTRACT DATA FOR ONLY THOSE MEASUREMENTS TAKEN ON CLINICS
+20 ; OR MODULES.
+21 ;
+22 ; OUTPUT VARIABLES:
+23 ;
+24 ; The utility will create an array with the desired information. The
+25 ; array structure will be as follows if '$P(GMRVSTR(0),"^",4):
+26 ; ^UTILITY($J,"GMRVD",GMRVTYP,GMRVRDT,GMRVIEN)=GMRVDATA
+27 ; or if $P(GMRVSTR(0),"^",4) then the following will be returned:
+28 ; ^UTILITY($J,"GMRVD",GMRVRDT,GMRVTYP,GMRVIEN)=GMRVDATA
+29 ; where GMRVRDT = Reverse FileMan date/time.
+30 ; 9999999-Date/time vital/measurement was taken.
+31 ; GMRVTYP = The abbreviation used in the GMRVSTR string for the
+32 ; type of vital/measurement taken.
+33 ; GMRVIEN = Entry number in FILE 120.5 or
+34 ; pseudo entry number for File 704.117
+35 ; GMRVDATA = $P(^GMR(120.5,GMRVIEN,0),"^",1,9) will be the patient data as
+36 ; currently defined in the DD for file 120.5.
+37 ; $P(GMRVDATA,"^",10) = the first qualifier
+38 ; $P(GMRVDATA,"^",11) = the second qualifier
+39 ; $P(GMRVDATA,"^",12)= "*" for abnormal measurement, otherwise = ""
+40 ; $P(GMRVDATA,"^",13)= values in centigrade for T; KG for WT;
+41 ; in centimeter for HT and Circumference/Girth;
+42 ; in mmHg for CVP.
+43 ; $P(GMRVDATA,"^",14)= Body Mass Index.
+44 ; $P(GMRVDATA,"^",15)= L/Min of supplemental O2.
+45 ; $P(GMRVDATA,"^",16)= % of supplemental O2.
+46 ; $P(GMRVDATA,"^",17)= all qualifiers.
+47 ; The variable GMRVSTR will be killed.
+48 IF '$DATA(GMRVSTR(0))!'($DATA(GMRVSTR)#2)!'($DATA(DFN)#2)
QUIT
IF DFN'>0
QUIT
+49 NEW GMVIENGUID
+50 SET GMRSAVE=GMRVSTR
SET GMRSAVE(0)=GMRVSTR(0)
SET GMVIENGUID=0
+51 SET GMRVSTR="HT"
DO EN6^GMRVUTL
SET GMRVSTR=GMRSAVE
SET GMRVSTR(0)=GMRSAVE(0)
SET GMRHT=(+$PIECE(X,U,8)*2.54)/100
+52 IF $GET(GMRVSTR("LT"))=""
SET GMRVSTR("LT")=""
+53 FOR GMRVSTR(1)=1:1:$LENGTH(GMRVSTR,";")
Begin DoDot:1
+54 SET GMRVSTR("T")=$PIECE(GMRVSTR,";",GMRVSTR(1))
+55 IF $LENGTH(GMRVSTR("T"))
Begin DoDot:2
+56 SET GMRVSTR("B")=$SELECT($PIECE(GMRVSTR(0),U,1):$PIECE(GMRVSTR(0),U,1),1:0)
+57 SET GMRVSTR("E")=$SELECT($PIECE(GMRVSTR(0),U,2):$PIECE(GMRVSTR(0),U,2),1:9999999)
+58 SET GMRVSTR("O")=0
SET GMRVSTR("E")=GMRVSTR("E")+.000001
+59 DO GETD
End DoDot:2
End DoDot:1
+60 KILL GMRINF,GG,GMRSAVE,GMRHT,GMRVARY,GMRVSTR,GMRSITE,GMRQUAL,GMRVX,GMRZTY,GDATA
+61 QUIT
GETD ; LOOP THRU PXRMINDX XREF AND GET PATIENT DATA
+1 SET GMRVSTR("TDA")=$ORDER(^GMRD(120.51,"C",GMRVSTR("T"),0))
IF 'GMRVSTR("TDA")
QUIT
+2 IF GMRVSTR("T")="BP"!(GMRVSTR("T")="P")
DO BP^GMRVUT2
QUIT
+3 FOR GMRVSTR("R")=GMRVSTR("E"):0
SET GMRVSTR("R")=$ORDER(^PXRMINDX(120.5,"PI",DFN,GMRVSTR("TDA"),GMRVSTR("R")),-1)
IF GMRVSTR("R")<GMRVSTR("B")!(GMRVSTR("R")'>0)
QUIT
DO GETD1
IF GMRVSTR("TMO")
QUIT
+4 QUIT
GETD1 ;
+1 NEW GMVCLIO
+2 ;max # of occurrences flag
SET GMRVSTR("TMO")=0
+3 SET GMRVSTR("IEN")=0
+4 FOR
SET GMRVSTR("IEN")=$ORDER(^PXRMINDX(120.5,"PI",DFN,GMRVSTR("TDA"),GMRVSTR("R"),GMRVSTR("IEN")))
IF $LENGTH(GMRVSTR("IEN"))'>0
QUIT
Begin DoDot:1
+5 IF GMRVSTR("IEN")=+GMRVSTR("IEN")
Begin DoDot:2
+6 DO F1205^GMVUTL(.GMVCLIO,GMRVSTR("IEN"))
End DoDot:2
+7 IF GMRVSTR("IEN")'=+GMRVSTR("IEN")
Begin DoDot:2
+8 DO CLIO^GMVUTL(.GMVCLIO,GMRVSTR("IEN"))
End DoDot:2
+9 SET GMVCLIO(0)=$GET(GMVCLIO(0))
SET GMVCLIO(5)=$GET(GMVCLIO(5))
+10 IF GMVCLIO(0)=""!($PIECE(GMVCLIO(0),U,8)="")
QUIT
+11 DO SETU2^GMRVUT2
+12 QUIT
End DoDot:1
IF GMRVSTR("TMO")
QUIT
+13 QUIT