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

CIAVIHVT.m

Go to the documentation of this file.
  1. CIAVIHVT ;CIA/DKM - Vitals support for RPMS ;07-Sep-2004 19:29;DKM
  1. ;;1.1;VUECENTRIC RPMS SUPPORT;;Sep 14, 2004
  1. ;;Copyright 2000-2003, Clinical Informatics Associates, Inc.
  1. ;=================================================================
  1. ; Converts vitals to proper formatting for PCC
  1. VIT2PCC(VIT) ;
  1. N PCC,X,VAL,TYP,VST,OBS,DFN,VSTR,UNT,DAT,ERR
  1. S PCC="",X=0,VSTR="",ERR=""
  1. F S X=$O(VIT(X)) Q:'X D Q:$L(ERR)
  1. .S VAL=VIT(X),OBS=$P(VAL,U,2),TYP=$TR($P(VAL,U),"+")
  1. .I TYP="VST" S VAL=$P(VAL,U,3)
  1. .E S UNT=$P(VAL,U,7),DAT=$P(VAL,U,8),VAL=$P(VAL,U,5)
  1. .D:$L(VAL) VALIDATE(TYP,.OBS,.VAL,.UNT,.ERR)
  1. .I $L(ERR) S ERR="-1^"_ERR Q
  1. .I $L(VAL),TYP="VIT" S PCC=PCC_$S($L(PCC):"|",1:"")_OBS_";"_VAL
  1. I '$L(ERR) D
  1. .S VST=$$VSTR2VIS^CIAVCXEN(DFN,VSTR,1)
  1. .I VST>0 S VST=+VST
  1. .E S ERR=VST
  1. Q $S($L(ERR):ERR,1:VST_"|"_DUZ_"|"_PCC)
  1. ; Validate VAL
  1. VALIDATE(TYP,OBS,VAL,UNT,ERR) ;
  1. N EP
  1. S EP=TYP_OBS,ERR="",UNT=$G(UNT)
  1. I $T(@EP)="" S ERR="Unknown measurement type."
  1. E D @EP
  1. Q
  1. ; Validates units
  1. CHKUNT(UNIT) ;
  1. S:'$L(UNT) UNT=UNIT
  1. S:UNT'=UNIT ERR="Improper units: "_UNT
  1. Q:$Q $L(ERR)
  1. Q
  1. ; Validate numeric range
  1. CHKRNG(VAL,LOW,HI,FR) ;
  1. I '$G(FR),VAL["." S ERR="Fractional portion not allowed"
  1. E I "."'[$TR(VAL,"0123456789") S ERR="Invalid numeric format"
  1. E S VAL=+VAL S:(VAL<LOW)!(VAL>HI) ERR="Entry outside acceptable range"
  1. Q:$Q $L(ERR)
  1. Q
  1. VSTDT S $P(VSTR,";",2)=+VAL
  1. Q
  1. VSTPT S DFN=+VAL
  1. Q
  1. VSTHL S $P(VSTR,";")=+VAL
  1. Q
  1. VITPN S OBS="PA"
  1. VITPA D CHKRNG(.VAL,0,10)
  1. Q
  1. VITBP I VAL'?2.3N1"/"2.3N S ERR="Invalid data format" Q
  1. N SBP,DBP
  1. S SBP=$P(VAL,"/"),DBP=$P(VAL,"/",2)
  1. Q:$$CHKRNG(.SBP,0,300)
  1. Q:$$CHKRNG(.DBP,0,200)
  1. S VAL=SBP_"/"_DBP
  1. Q
  1. VITTMP S:UNT="C" VAL=VAL*9/5+32,UNT="F"
  1. Q:$$CHKUNT("F")
  1. Q:$$CHKRNG(.VAL,80,110,1)
  1. Q
  1. VITPU D CHKRNG(.VAL,0,300)
  1. Q
  1. VITRS Q
  1. VITHT S:UNT="CM" VAL=VAL/2.54,UNT="IN"
  1. Q:$$CHKUNT("IN")
  1. Q
  1. VITWT S:UNT="KG" VAL=VAL/2.2,UNT="LB"
  1. Q:$$CHKUNT("LB")
  1. Q
  1. ; Store vitals data in V MEASUREMENT
  1. VALSTORE(DATA,VIT) ;
  1. S VIT=$$VIT2PCC(.VIT)
  1. I VIT'>0 S DATA(1)=VIT
  1. E D MEA^BTRSETME(.DATA,VIT)
  1. I $G(DATA(1))<0 S DATA(0)=-1,DATA(1)=$P(DATA(1),U,2)
  1. E S DATA(0)=1
  1. Q
  1. ; RPC for validate
  1. RATECHK(DATA,OBS,VAL,UNT) ;
  1. N ERR
  1. D VALIDATE("VIT",OBS,.VAL,.UNT,.ERR)
  1. S DATA=$S($L(ERR):"0^"_ERR,1:"1^"_VAL_U_UNT)
  1. Q
  1. ; Return most recent vital of specified type
  1. ; Return value is IEN^VALUE^D/T
  1. VITAL(DFN,TYP) ;
  1. N IDT,IEN,DAT,VIS
  1. S:TYP'=+TYP TYP=$O(^AUTTMSR("B",TYP,0))
  1. Q:'TYP ""
  1. S IDT=$O(^AUPNVMSR("AA",DFN,TYP,0)) Q:'IDT "" S IEN=$O(^(IDT,0))
  1. Q:'IEN ""
  1. S X=$G(^AUPNVMSR(IEN,0)),DAT=+$G(^(12))
  1. S:'DAT DAT=+$G(^AUPNVSIT(+$P(X,U,3),0))
  1. Q IEN_U_$P(X,U,4)_U_DAT
  1. ; Return data for vital entry template
  1. ; Format is:
  1. ; DATA(n)=Type IEN^Type Abbr^Type Desc^Last Value^Last Date^Units
  1. TEMPLATE(DATA,DFN,LOC) ;
  1. N ENT,TMP,ERR,TYP,X
  1. S ENT=$S($G(LOC):"ALL^LOC.`"_LOC,1:"ALL"),DATA=$$TMPGBL^CIAVMRPC
  1. D GETLST^XPAR(.TMP,ENT,"CIAOCVVM TEMPLATE","I",.ERR)
  1. F TMP=0:0 S TMP=$O(TMP(TMP)) Q:'TMP D
  1. .S TYP=+TMP(TMP),X=$$VITAL(DFN,TYP),@DATA@(TMP)=TYP_U_$P($G(^AUTTMSR(TYP,0)),U,1,2)_U_$P(X,U,2,3)
  1. Q
  1. ; Postinit for installation
  1. POSTINIT D SETLIST^CIAOCVVM("CIAOCVVM TEMPLATE")
  1. Q