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

BGOVHF.m

Go to the documentation of this file.
  1. BGOVHF ; IHS/BAO/TMD - Manage V HEALTH FACTORS ;09-Oct-2013 13:19;DU
  1. ;;1.1;BGO COMPONENTS;**1,3,4,6,11,13**;Mar 20, 2007;Build 3
  1. ; Get health factors by patient
  1. ; INP = Patient IEN ^ Learn Only Flag ^ V HF IEN (optional)
  1. ; .RET returned as a list of records in the format:
  1. ; Category [1] ^ HF Name [2] ^ Visit Date [3] ^ Severity [4] ^ Quantity [5] ^ Visit IEN [6] ^
  1. ; V File IEN [7] ^ Health Factor Type [8] ^ Comment [9] ^ Visit Locked [10] ^ Event date/time
  1. GET(RET,INP) ;EP
  1. N DFN,LRN,VFIEN,TYPE,CNT,VDT,IEN,VIEN,SEV,QTY,CAT,HFNAME,VDATE,EVNDT
  1. S RET=$$TMPGBL^BGOUTL
  1. S DFN=+INP
  1. S LRN=$P(INP,U,2)
  1. S VFIEN=$P(INP,U,3)
  1. S (TYPE,CNT)=0
  1. F S TYPE=$O(^AUPNVHF("AA",DFN,TYPE)) Q:'TYPE D
  1. .I LRN,'$$ISLEARN(TYPE,1) Q
  1. .S VDT=0
  1. .F S VDT=$O(^AUPNVHF("AA",DFN,TYPE,VDT)) Q:'VDT D
  1. ..S VDATE=$$FMTDATE^BGOUTL(9999999-VDT)
  1. ..S IEN=0
  1. ..F S IEN=$O(^AUPNVHF("AA",DFN,TYPE,VDT,IEN)) Q:'IEN D
  1. ...I VFIEN,VFIEN'=IEN Q
  1. ...S REC=$G(^AUPNVHF(IEN,0))
  1. ...Q:REC=""
  1. ...S VIEN=$P(REC,U,3)
  1. ...S SEV=$$EXTERNAL^DILFD($$FNUM,.04,,$P(REC,U,4))
  1. ...;Patch 11
  1. ...S EVNDT=$$FMTDATE^BGOUTL($P($G(^AUPNVHF(IEN,12)),U,1))
  1. ...S QTY=$P(REC,U,6)
  1. ...S COMMENT=$P($G(^AUPNVHF(IEN,811)),U)
  1. ...S HFNAME=$P($G(^AUTTHF(TYPE,0)),U),CAT=$P($G(^(0)),U,3)
  1. ...S:CAT CAT=$P($G(^AUTTHF(CAT,0)),U)
  1. ...S CNT=CNT+1
  1. ...S @RET@(CNT)=CAT_U_HFNAME_U_VDATE_U_SEV_U_QTY_U_VIEN_U_IEN_U_TYPE_U_COMMENT_U_$$ISLOCKED^BEHOENCX(VIEN)_U_EVNDT
  1. Q
  1. ; Return IEN for pap smear/mammogram/ekg
  1. REFLIST(RET,INP) ;EP
  1. I INP="PAP SMEAR" S RET=$O(^LAB(60,"B","PAP SMEAR",0))
  1. E I INP="MAMMOGRAM" S RET=$O(^RAMIS(71,"D",76090,0))
  1. E I INP="EKG" S RET=$O(^AUTTDXPR("B","ECG SUMMARY",0))
  1. E S RET=$$ERR^BGOUTL(1026,INP)
  1. Q
  1. ; Add/edit health factor
  1. ; INP = HF Type IEN [1] ^ V File IEN [2] ^ Visit IEN [3] ^ Severity [4] ^ Provider IEN [5] ^ Quantity [6] ^ Comment [7] ^ Event dt [8] ^ Enc Provider [9]
  1. SET(RET,INP) ;EP
  1. N VIEN,TYPE,PRV,QTY,SEV,VFIEN,VFNEW,COMMENT,FNUM,FDA,EVNDT,ENCPR
  1. S FNUM=$$FNUM
  1. S TYPE=+INP
  1. I 'TYPE S RET=$$ERR^BGOUTL(1008) Q
  1. S VFIEN=$P(INP,U,2)
  1. S VFNEW='VFIEN
  1. S VIEN=+$P(INP,U,3)
  1. S SEV=$P(INP,U,4)
  1. S PRV=$P(INP,U,5)
  1. S QTY=$P(INP,U,6)
  1. S COMMENT=$P(INP,U,7)
  1. S RET=$$CHKVISIT^BGOUTL(VIEN)
  1. Q:RET
  1. I 'VFIEN D Q:'VFIEN
  1. .D VFNEW^BGOUTL2(.RET,FNUM,TYPE,VIEN,"Health factor")
  1. .S:RET>0 VFIEN=RET,RET=""
  1. S FDA=$NA(FDA(FNUM,VFIEN_","))
  1. S @FDA@(.01)="`"_TYPE
  1. S @FDA@(.04)=SEV
  1. S @FDA@(.05)=$S(PRV:"`"_PRV,1:"")
  1. S @FDA@(.06)=QTY
  1. ;Set event date
  1. S EVNDT=$P(INP,U,8)
  1. I EVNDT="" S EVNDT=$$NOW^XLFDT
  1. S @FDA@(1201)=EVNDT
  1. S @FDA@(1204)="`"_DUZ
  1. S:'VFNEW!$L(COMMENT) @FDA@(81101)=COMMENT
  1. ;Patch 11 Set date entered
  1. I VFNEW D
  1. .S @FDA@(1216)="N"
  1. .S @FDA@(1217)="`"_DUZ
  1. ;Patch 11 Set last modified
  1. S @FDA@(1218)="N"
  1. S @FDA@(1219)="`"_DUZ
  1. S RET=$$UPDATE^BGOUTL(.FDA,"E")
  1. I RET,VFNEW,$$DELETE^BGOUTL(FNUM,VFIEN)
  1. D:'RET VFEVT^BGOUTL2(FNUM,VFIEN,'VFNEW)
  1. S:'RET RET=VFIEN
  1. Q
  1. ; Set refusal
  1. ; INP = Refusal Type [1] ^ Item IEN [2] ^ Patient IEN [3] ^ Refusal Date [4] ^ Comment [5] ^ Provider IEN [6]
  1. SETREF(RET,INP) ;EP
  1. N DFN,REFTYP,ITEMIEN,REFDATE,COMMENT,REFTIEN,FILENUM,PRV,CT
  1. S RET=""
  1. S REFTYP=$P(INP,U)
  1. S ITEMIEN=+$P(INP,U,2)
  1. I 'ITEMIEN S RET=$$ERR^BGOUTL(1078) Q
  1. S DFN=+$P(INP,U,3)
  1. I '$D(^AUPNPAT(DFN)) S RET=$$ERR^BGOUTL(1001) Q
  1. S REFDATE=$$CVTDATE^BGOUTL($P(INP,U,4))
  1. S COMMENT=$P(INP,U,5)
  1. S PRV=$P(INP,U,6)
  1. S CT=443390004
  1. S RET=$$REFSET2^BGOUTL2(DFN,REFDATE,ITEMIEN,REFTYP,"R",COMMENT,PRV,"",CT)
  1. Q
  1. ; Delete a refusal
  1. DELREF(RET,REF) ;EP
  1. S RET=$$REFDEL^BGOUTL2(+REF)
  1. Q
  1. ; Delete a health factor
  1. DEL(RET,VFIEN) ;EP
  1. D VFDEL^BGOUTL2(.RET,$$FNUM,VFIEN)
  1. Q
  1. ;
  1. ; Return health factor types
  1. ; INP = 1: all (default), 2: learning only
  1. ; Returns a list of records in the format:
  1. ; Name [1] ^ Category Name [2] ^ Gender [3] ^ Type [4] ^ HF Type IEN [5] ^ Quantity Phrase [6] ^ Level Phrase [7]
  1. GETTYPES(RET,INP) ;EP
  1. N ALL,NAME,CATP,CATNAME,TYPE,SEX,HF,CNT,REC,X,QTYPHR,LVLPHR
  1. S RET=$$TMPGBL^BGOUTL
  1. S ALL=INP'=2
  1. S (HF,CNT)=0
  1. F S HF=$O(^AUTTHF(HF)) Q:'HF D ;!(HF>99999) D
  1. .S REC=$G(^AUTTHF(HF,0))
  1. .Q:$P(REC,U,$S($G(DUZ("AG"))="I":13,1:11)) ;P6 ;inactive
  1. .I 'ALL,'$$ISLEARN(+$P(REC,U,3)) Q
  1. .S NAME=$P(REC,U)
  1. .S CATP=$P(REC,U,3)
  1. .S CATNAME=$S(CATP:$P($G(^AUTTHF(CATP,0)),U),1:"")
  1. .S SEX=$P(REC,U,5)
  1. .S TYPE=$P(REC,U,10)
  1. .S QTYPHR=$P(REC,U,11)
  1. .S LVLPHR=$P(REC,U,12)
  1. .S CNT=CNT+1,@RET@(CNT)=NAME_U_CATNAME_U_SEX_U_TYPE_U_HF_U_QTYPHR_U_LVLPHR
  1. Q
  1. ; Returns true if health factor is a learning category
  1. ISLEARN(TYPE,CHKPAR) ;
  1. N X
  1. S TYPE=+TYPE
  1. Q:'TYPE!$D(TYPE(TYPE)) 0
  1. S X=$G(^AUTTHF(TYPE,0))
  1. Q:$P(X,U)["LEARN"&($P(X,U,10)="C") 1
  1. Q:'$G(CHKPAR) 0
  1. S TYPE(TYPE)="",TYPE=$P(X,U,3)
  1. Q $$ISLEARN(.TYPE,1)
  1. ; Return V File #
  1. FNUM() Q 9000010.23