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

VPRSDAG.m

Go to the documentation of this file.
  1. VPRSDAG ;SLC/MKB -- SDA GMR utilities ;10/25/18 15:29
  1. ;;1.0;VIRTUAL PATIENT RECORD;**27,28,31**;Sep 01, 2011;Build 3
  1. ;;Per VHA Directive 6402, this routine should not be modified.
  1. ;
  1. ; External References DBIA#
  1. ; ------------------- -----
  1. ; ^AUPNPROB 5703
  1. ; ^GMPL(125.8 2974
  1. ; DIQ 2056
  1. ; GMPLEDT3 2977
  1. ; GMPLUTL2 2741
  1. ; GMRVUT0, ^UTILITY($J 1446
  1. ; GMVGETVT 5047
  1. ; GMVUTL 5046
  1. ; LEXTRAN 4912
  1. ; RMIMRP 4745
  1. ; TIULQ 2693
  1. ; XLFDT 10103
  1. ;
  1. PROBLEMS ; -- Problem List query
  1. ; Expects DSTRT, DSTOP, DMAX from DDEGET and returns DLIST(#)=ien
  1. N ID,VPRSTS,VPRPROB,VPRN,X
  1. S VPRSTS=$G(FILTER("status")) ;default = all problems
  1. D LIST^GMPLUTL2(.VPRPROB,DFN,VPRSTS)
  1. S VPRN=0 F S VPRN=$O(VPRPROB(VPRN)) Q:(VPRN<1)!(VPRN>DMAX) D
  1. . S X=$P(VPRPROB(VPRN),U,6) I X,(X<DSTRT)!(X>DSTOP) Q ;last updated
  1. . S DLIST(VPRN)=+VPRPROB(VPRN)
  1. Q
  1. ;
  1. PROB1(IEN) ; -- get info for single problem [ID Action]
  1. I '$G(^AUPNPROB(IEN,0)) S DDEOUT=1 Q
  1. K GMPFLD,GMPORIG
  1. D GETFLDS^GMPLEDT3(IEN)
  1. Q
  1. ;
  1. SCTTEXT(CODE,IEN) ; -- get Preferred Text for SCT Code
  1. N Y,GMPDT,LEX,LEXY S Y=""
  1. S GMPDT=$P($G(^AUPNPROB(IEN,0)),U,8) S:'GMPDT GMPDT=DT
  1. S LEXY=$$CODE^LEXTRAN(CODE,"SCT",GMPDT)
  1. S:LEXY>0 Y=$G(LEX("P")) ;preferred term
  1. Q Y
  1. ;
  1. PROBCMT(IEN) ; -- return list of comments in
  1. ; DLIST(#) = id ^ date ^ user ^ type ^ facility ^ text
  1. N I,J,N,X,FAC S N=0
  1. S I=0 F S I=$O(^AUPNPROB(IEN,11,I)) Q:I<1 S FAC=$G(^(I,0)) D
  1. . S J=0 F S J=$O(^AUPNPROB(IEN,11,I,11,J)) Q:J<1 S X=$G(^(J,0)) D
  1. .. Q:$P(X,U,4)'="A"
  1. .. S Y=$P(X,U,5)_U_$P(X,U,6)_U_U_FAC_U_$P(X,U,3)
  1. .. S N=N+1,DLIST(N)=J_","_I_","_IEN_U_Y
  1. Q
  1. ;
  1. DELETED(IEN,FLD) ; -- return 1 or 0, if FLD value was recently deleted
  1. N LAST,I,X,Y,WK2
  1. S IEN=+$G(IEN),FLD=+$G(FLD),Y=0
  1. S WK2=9999999-$$FMADD^XLFDT(DT,-14) ;Inv 2 weeks ago
  1. S LAST=+$O(^GMPL(125.8,"AD",IEN,0)) Q:LAST>WK2 Y
  1. S I=0 F S I=$O(^GMPL(125.8,"AD",IEN,LAST,I)) Q:I<1 D Q:Y
  1. . S X=$G(^GMPL(125.8,I,0))
  1. . I $P(X,U,2)=FLD,$L($P(X,U,5)),$P(X,U,6)="" S Y=1 Q
  1. Q Y
  1. ;
  1. ;
  1. FIMQ ; -- Functional Independence Measurements query
  1. ; Expects DSTRT, DSTOP, DMAX from DDEGET
  1. ; Returns DLIST(#)=ien, VPRSITE array
  1. N VPRS,VPRN,VPRY,ADM,VPRCNT,RMIMTIME
  1. D PRM^RMIMRP(.VPRSITE) Q:'$O(VPRSITE(1))
  1. S DFN=+$G(DFN) Q:DFN<1
  1. S VPRCNT=0
  1. S VPRS=1 F S VPRS=$O(VPRSITE(VPRS)) Q:VPRS<1 D
  1. . S VPRN=DFN_U_VPRSITE(VPRS)
  1. . D LC^RMIMRP(.VPRY,VPRN) Q:VPRY(1)<1
  1. . S VPRN=1 F S VPRN=$O(VPRY(VPRN)) Q:VPRN<1 D Q:VPRCNT'<DMAX
  1. .. S ADM=$$DATE($P(VPRY(VPRN),U,4)) Q:ADM<DSTRT Q:ADM>DSTOP
  1. .. S VPRCNT=VPRCNT+1,DLIST(VPRCNT)=+VPRY(VPRN)
  1. Q
  1. ;
  1. DATE(X) ; -- Return internal form of date X
  1. N %DT,Y
  1. S %DT="" D ^%DT S:Y<1 Y=X
  1. Q Y
  1. ;
  1. FIM1(IEN) ; -- get info for one set of measurements [ID Action]
  1. I '$D(VPRSITE) D PRM^RMIMRP(.VPRSITE) I '$O(VPRSITE(1)) S DDEOUT=1 Q
  1. D GC^RMIMRP(.VPRM,IEN)
  1. ; S:'$G(DFN) ??
  1. N NOTE S NOTE=+$P($G(VPRM(1)),U,12) K VPRTIU
  1. D EXTRACT^TIULQ(NOTE,"VPRTIU",,"1201;1202;1302",,,"I")
  1. M VPRM("TIU")=VPRTIU(NOTE)
  1. Q
  1. ;
  1. FIMS ; -- get DLIST(#)=name^value of each score
  1. ; Returns VPRFIMS = Assessment type(s) for ProblemDetail
  1. N I,J,N,X,NAMES,SCORES,SUM,TYPE
  1. S N=0,VPRFIMS=""
  1. S NAMES="Eating^Grooming^Bathing^Dressing - Upper Body^Dressing - Lower Body^Toileting^Bladder Management^Bowel Management^Bed, Chair, Wheelchair^Toilet^Tub, Shower^Walk/Wheelchair^Stairs"
  1. S NAMES=NAMES_"^Comprehension^Expression^Social Interaction^Problem Solving^Memory"
  1. S NAMES=NAMES_"^walkMode^comprehendMode^expressMode^Z"
  1. F I=5:1:9 I VPRM(I)'?1."^" D ;has data
  1. . S SCORES=VPRM(I),SUM=$$TOTAL(SCORES) Q:'SUM
  1. . S TYPE=$S(I=5:"Admission",I=6:"Discharge",I=7:"Interim",I=8:"Follow up",1:"Goals")
  1. . S VPRFIMS=VPRFIMS_$S(VPRFIMS'="":", ",1:"")_TYPE
  1. . ; add score set to list
  1. . S N=N+1,DLIST(N)="Assessment Type^"_TYPE
  1. . F J=1:1:21 S X=$P(SCORES,U,J),N=N+1,DLIST(N)=$P(NAMES,U,J)_U_X
  1. . S N=N+1,DLIST(N)="FIM Total^"_SUM
  1. S:$L(VPRFIMS) VPRFIMS=VPRFIMS_" Assessment"_$S(VPRFIMS[",":"s",1:"")
  1. Q
  1. ;
  1. TOTAL(NODE) ; -- Return total of scores, or "" if incomplete
  1. N SUM,I,X
  1. S SUM=0 F I=1:1:18 S X=$P(NODE,U,I) S:X SUM=SUM+X I X<1 S SUM="" Q
  1. Q SUM
  1. ;
  1. VIT1(IEN) ; -- get info for one Vital measurement, returns VPRGMV=^(0)
  1. S IEN=$G(IEN) I IEN="" S DDEOUT=1 Q
  1. D GETREC^GMVUTL(.VPRV,IEN,1)
  1. S VPRGMV=$G(VPRV(0)) I '$G(VPRV(0)) S DDEOUT=1 Q
  1. S VPRTYPE=$$FIELD^GMVGETVT(+$P(VPRGMV,U,3),2)
  1. I VPRTYPE="WT" D ;get BMI for weight record
  1. . I $G(^TMP("VPRGMV",$J,IEN)) S $P(VPRGMV,U,14)=$P(^(IEN),U,14) Q
  1. . ; get BMI from query array if available, else call GMRVUT0
  1. . N GMRVSTR,DFN,IDT,BMI
  1. . S GMRVSTR=VPRTYPE,GMRVSTR(0)=+VPRGMV_U_+VPRGMV_"^1^1",DFN=+$P(VPRGMV,U,2)
  1. . D EN1^GMRVUT0 S IDT=9999999-(+VPRGMV)
  1. . S BMI=$P($G(^UTILITY($J,"GMRVD",IDT,VPRTYPE,IEN)),U,14)
  1. . S:BMI'="" $P(VPRGMV,U,14)=BMI
  1. . K ^UTILITY($J,"GMRVD")
  1. S VPRANGE=$S($L(VPRTYPE):$$RANGE^VPRDGMV(VPRTYPE),1:"")
  1. Q
  1. ;
  1. VITQUAL ; -- build DLIST(#)=Qualifiers [code^name]
  1. N I,X,QUALS
  1. S QUALS=$G(VPRV(5))
  1. F I=1:1 S X=$P(QUALS,U,I) Q:X="" S DLIST(I)=X
  1. Q
  1. ;
  1. VITCODE(IEN,SFN) ; -- return [first] code for vital type
  1. ; SubFileNumber = 120.518 for Vital Type
  1. ; 120.522 for Vital Qualifier
  1. N VPRC,IENS,Y
  1. D GETS^DIQ(SFN,"1,"_IEN_",","**",,"VPRC")
  1. S IENS=$O(VPRC(SFN_1,""))
  1. S Y=$S($L(IENS):$G(VPRC(SFN_1,IENS,.01,"I")),1:"")
  1. Q Y