- GMVDCCHK ;HOIFO/DAD,FT-VITALS COMPONENT: CHECK DATA VALUE ;9/29/00 09:15
- ;;5.0;GEN. MED. REC. - VITALS;;Oct 31, 2002
- ;
- ; This routine uses the following IAs:
- ; #10104 - ^XLFSTR calls (supported)
- ;
- VALID(GMVALUE,GMVMSYS,GMVTYPE) ;
- ; *** Validate a vital measurement ***
- ; Input:
- ; GMVALUE = The vital measurement to be validated
- ; GMVMSYS = The measurement system the measurement is expressed in
- ; (C - US Customary, M - Metric)
- ; GMVTYPE = A vital type abbreviation
- ; Output:
- ; 0 - Invalid, 1 - Valid
- S GMVTYPE=$$UP^XLFSTR(GMVTYPE)
- I $T(@GMVTYPE)]"" D
- . N GMVCODE,GMVOK
- . S GMVCODE="S GMVOK=$$"_GMVTYPE_"(GMVALUE)"
- . X GMVCODE I 'GMVOK K GMVALUE
- . Q
- E D
- . K GMVALUE
- . Q
- Q ''$D(GMVALUE)
- ;
- AG(X) ; ABDOMINAL GIRTH
- S X=$$CNV^GMVDCCNV(X,GMVMSYS,"S",GMVTYPE)
- K:X'=+X!(X>150)!(X<0)!(X?.E1".".N) X
- Q ''$D(X)
- ;
- AUD(X) ; AUDIOMETRY
- N I,Y
- K:X'?.N1"/".N1"/".N1"/".N1"/".N1"/".N1"/".N1"/".N1"/".N1"/".N1"/".N1"/".N1"/".N1"/".N1"/".N1"/".N1"/" X
- I $D(X) F I=1:1:16 S Y=$P(Y,"/",I) I Y]"" I Y'=+Y!(Y>110)!(Y<0) K X Q
- Q ''$D(X)
- ;
- BP(X) ; BLOOD PRESSURE
- N I,Y
- K:(X'?1.3N1"/"1.3N1"/"1.3N)&(X'?1.3N1"/"1.3N)&(X'?1.3N) X
- I $D(X) F I=1:1:$L(X,"/") S Y=$P(X,"/",I) I Y]"" I Y<0!(Y>300) K X Q
- I $D(X),(X'?1.3N),$P(X,"/")'>$P(X,"/",$L(X,"/")) K X
- Q ''$D(X)
- ;
- CG(X) ; CIRCUMFERENCE/GIRTH
- S X=$$CNV^GMVDCCNV(X,GMVMSYS,"S",GMVTYPE)
- K:X'=+X!(X>200)!(X<0)!(X?.E1"."3.N) X
- Q ''$D(X)
- ;
- CVP(X) ; CENTRAL VENOUS PRESSURE
- S X=$$CNV^GMVDCCNV(X,GMVMSYS,"S",GMVTYPE)
- K:X<-13.6!(X>136)!(X?.E1"."2.N) X
- Q ''$D(X)
- ;
- FH(X) ; FUNDAL HEIGHT
- S X=$$CNV^GMVDCCNV(X,GMVMSYS,"S",GMVTYPE)
- K:X'=+X!(X>50)!(X<10)!(X?.E1".".N) X
- Q ''$D(X)
- ;
- FT(X) ; FETAL HEART TONES
- K:X'=+X!(X>250)!(X<50)!(X?.E1".".N) X
- Q ''$D(X)
- ;
- HC(X) ; HEAD CIRCUMFERENCE
- I GMVMSYS="M" D
- . K:+X>76!(+X<26)!(X?.E1"."3.N) X
- . Q
- I GMVMSYS="C" D
- . K:+X>30!(+X<10)!(X?.E1"."4.N) X
- . I $D(X),X#1>0 K:"^.125^.25^.375^.5^.625^.75^.875^"'[(U_(X#1)_U) X
- . Q
- Q ''$D(X)
- ;
- HE(X) ; HEARING
- K:"^A^N^"'[(U_X_U) X
- Q ''$D(X)
- ;
- HT(X) ; HEIGHT
- S X=$$CNV^GMVDCCNV(X,GMVMSYS,"S",GMVTYPE)
- K:X'=+X!(X>100)!(X<1)!(X?.E1"."3.N) X
- Q ''$D(X)
- ;
- P(X) ; PULSE
- K:+X'=X!(X>300)!(X<0)!(X?.E1".".N) X
- Q ''$D(X)
- ;
- PN(X) ; PAIN
- K:"^0^1^2^3^4^5^6^7^8^9^10^99^"'[(U_X_U) X
- Q ''$D(X)
- ;
- PO2(X) ; PULSE OXIMETRY
- K:X<0!(X>100)!(X?.E1".".N) X
- Q ''$D(X)
- ;
- R(X) ; RESPIRATION
- K:X'=+X!(X>100)!(X<0)!(X?.E1".".N) X
- Q ''$D(X)
- ;
- T(X) ; TEMPERATURE
- S X=$$CNV^GMVDCCNV(X,GMVMSYS,"S",GMVTYPE)
- K:X'=+X!(X>120)!(X<45)!(X?.E1"."3.N) X
- Q ''$D(X)
- ;
- TON(X) ; TONOMETRY
- N I,Y
- K:(X'?1.2N1"/"1.2N)&(X'?1.2N1"/")&(X'?1"/"1.2N) X
- I $D(X) F I=1,2 S Y=$P(X,"/",I) I Y]"" I Y'=+Y!(Y>80)!(Y<0) K X Q
- Q ''$D(X)
- ;
- VC(X) ; VISION CORRECTED
- N I,Y
- K:(X'?1.3N1"/"1.3N)&(X'?1.3N1"/")&(X'?1"/"1.3N) X
- I $D(X) F I=1,2 S Y=$P(X,"/",I) I Y]"" I Y'=+Y!(Y>999)!(Y<10) K X Q
- Q ''$D(X)
- ;
- VU(X) ; VISION UNCORRECTED
- Q $$VC(X)
- ;
- WT(X) ; WEIGHT
- S X=$$CNV^GMVDCCNV(X,GMVMSYS,"S",GMVTYPE)
- K:X'=+X!(X>1500)!(X'>0)!(X?.E1"."3.N) X
- Q ''$D(X)
- GMVDCCHK ;HOIFO/DAD,FT-VITALS COMPONENT: CHECK DATA VALUE ;9/29/00 09:15
- +1 ;;5.0;GEN. MED. REC. - VITALS;;Oct 31, 2002
- +2 ;
- +3 ; This routine uses the following IAs:
- +4 ; #10104 - ^XLFSTR calls (supported)
- +5 ;
- VALID(GMVALUE,GMVMSYS,GMVTYPE) ;
- +1 ; *** Validate a vital measurement ***
- +2 ; Input:
- +3 ; GMVALUE = The vital measurement to be validated
- +4 ; GMVMSYS = The measurement system the measurement is expressed in
- +5 ; (C - US Customary, M - Metric)
- +6 ; GMVTYPE = A vital type abbreviation
- +7 ; Output:
- +8 ; 0 - Invalid, 1 - Valid
- +9 SET GMVTYPE=$$UP^XLFSTR(GMVTYPE)
- +10 IF $TEXT(@GMVTYPE)]""
- Begin DoDot:1
- +11 NEW GMVCODE,GMVOK
- +12 SET GMVCODE="S GMVOK=$$"_GMVTYPE_"(GMVALUE)"
- +13 XECUTE GMVCODE
- IF 'GMVOK
- KILL GMVALUE
- +14 QUIT
- End DoDot:1
- +15 IF '$TEST
- Begin DoDot:1
- +16 KILL GMVALUE
- +17 QUIT
- End DoDot:1
- +18 QUIT ''$DATA(GMVALUE)
- +19 ;
- AG(X) ; ABDOMINAL GIRTH
- +1 SET X=$$CNV^GMVDCCNV(X,GMVMSYS,"S",GMVTYPE)
- +2 IF X'=+X!(X>150)!(X<0)!(X?.E1".".N)
- KILL X
- +3 QUIT ''$DATA(X)
- +4 ;
- AUD(X) ; AUDIOMETRY
- +1 NEW I,Y
- +2 IF X'?.N1"/".N1"/".N1"/".N1"/".N1"/".N1"/".N1"/".N1"/".N1"/".N1"/".N1"/".N1"/".N1"/".N1"/".N1"/".N1"/"
- KILL X
- +3 IF $DATA(X)
- FOR I=1:1:16
- SET Y=$PIECE(Y,"/",I)
- IF Y]""
- IF Y'=+Y!(Y>110)!(Y<0)
- KILL X
- QUIT
- +4 QUIT ''$DATA(X)
- +5 ;
- BP(X) ; BLOOD PRESSURE
- +1 NEW I,Y
- +2 IF (X'?1.3N1"/"1.3N1"/"1.3N)&(X'?1.3N1"/"1.3N)&(X'?1.3N)
- KILL X
- +3 IF $DATA(X)
- FOR I=1:1:$LENGTH(X,"/")
- SET Y=$PIECE(X,"/",I)
- IF Y]""
- IF Y<0!(Y>300)
- KILL X
- QUIT
- +4 IF $DATA(X)
- IF (X'?1.3N)
- IF $PIECE(X,"/")'>$PIECE(X,"/",$LENGTH(X,"/"))
- KILL X
- +5 QUIT ''$DATA(X)
- +6 ;
- CG(X) ; CIRCUMFERENCE/GIRTH
- +1 SET X=$$CNV^GMVDCCNV(X,GMVMSYS,"S",GMVTYPE)
- +2 IF X'=+X!(X>200)!(X<0)!(X?.E1"."3.N)
- KILL X
- +3 QUIT ''$DATA(X)
- +4 ;
- CVP(X) ; CENTRAL VENOUS PRESSURE
- +1 SET X=$$CNV^GMVDCCNV(X,GMVMSYS,"S",GMVTYPE)
- +2 IF X<-13.6!(X>136)!(X?.E1"."2.N)
- KILL X
- +3 QUIT ''$DATA(X)
- +4 ;
- FH(X) ; FUNDAL HEIGHT
- +1 SET X=$$CNV^GMVDCCNV(X,GMVMSYS,"S",GMVTYPE)
- +2 IF X'=+X!(X>50)!(X<10)!(X?.E1".".N)
- KILL X
- +3 QUIT ''$DATA(X)
- +4 ;
- FT(X) ; FETAL HEART TONES
- +1 IF X'=+X!(X>250)!(X<50)!(X?.E1".".N)
- KILL X
- +2 QUIT ''$DATA(X)
- +3 ;
- HC(X) ; HEAD CIRCUMFERENCE
- +1 IF GMVMSYS="M"
- Begin DoDot:1
- +2 IF +X>76!(+X<26)!(X?.E1"."3.N)
- KILL X
- +3 QUIT
- End DoDot:1
- +4 IF GMVMSYS="C"
- Begin DoDot:1
- +5 IF +X>30!(+X<10)!(X?.E1"."4.N)
- KILL X
- +6 IF $DATA(X)
- IF X#1>0
- IF "^.125^.25^.375^.5^.625^.75^.875^"'[(U_(X#1)_U)
- KILL X
- +7 QUIT
- End DoDot:1
- +8 QUIT ''$DATA(X)
- +9 ;
- HE(X) ; HEARING
- +1 IF "^A^N^"'[(U_X_U)
- KILL X
- +2 QUIT ''$DATA(X)
- +3 ;
- HT(X) ; HEIGHT
- +1 SET X=$$CNV^GMVDCCNV(X,GMVMSYS,"S",GMVTYPE)
- +2 IF X'=+X!(X>100)!(X<1)!(X?.E1"."3.N)
- KILL X
- +3 QUIT ''$DATA(X)
- +4 ;
- P(X) ; PULSE
- +1 IF +X'=X!(X>300)!(X<0)!(X?.E1".".N)
- KILL X
- +2 QUIT ''$DATA(X)
- +3 ;
- PN(X) ; PAIN
- +1 IF "^0^1^2^3^4^5^6^7^8^9^10^99^"'[(U_X_U)
- KILL X
- +2 QUIT ''$DATA(X)
- +3 ;
- PO2(X) ; PULSE OXIMETRY
- +1 IF X<0!(X>100)!(X?.E1".".N)
- KILL X
- +2 QUIT ''$DATA(X)
- +3 ;
- R(X) ; RESPIRATION
- +1 IF X'=+X!(X>100)!(X<0)!(X?.E1".".N)
- KILL X
- +2 QUIT ''$DATA(X)
- +3 ;
- T(X) ; TEMPERATURE
- +1 SET X=$$CNV^GMVDCCNV(X,GMVMSYS,"S",GMVTYPE)
- +2 IF X'=+X!(X>120)!(X<45)!(X?.E1"."3.N)
- KILL X
- +3 QUIT ''$DATA(X)
- +4 ;
- TON(X) ; TONOMETRY
- +1 NEW I,Y
- +2 IF (X'?1.2N1"/"1.2N)&(X'?1.2N1"/")&(X'?1"/"1.2N)
- KILL X
- +3 IF $DATA(X)
- FOR I=1,2
- SET Y=$PIECE(X,"/",I)
- IF Y]""
- IF Y'=+Y!(Y>80)!(Y<0)
- KILL X
- QUIT
- +4 QUIT ''$DATA(X)
- +5 ;
- VC(X) ; VISION CORRECTED
- +1 NEW I,Y
- +2 IF (X'?1.3N1"/"1.3N)&(X'?1.3N1"/")&(X'?1"/"1.3N)
- KILL X
- +3 IF $DATA(X)
- FOR I=1,2
- SET Y=$PIECE(X,"/",I)
- IF Y]""
- IF Y'=+Y!(Y>999)!(Y<10)
- KILL X
- QUIT
- +4 QUIT ''$DATA(X)
- +5 ;
- VU(X) ; VISION UNCORRECTED
- +1 QUIT $$VC(X)
- +2 ;
- WT(X) ; WEIGHT
- +1 SET X=$$CNV^GMVDCCNV(X,GMVMSYS,"S",GMVTYPE)
- +2 IF X'=+X!(X>1500)!(X'>0)!(X?.E1"."3.N)
- KILL X
- +3 QUIT ''$DATA(X)