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

BTPWPEVT.m

Go to the documentation of this file.
  1. BTPWPEVT ;VNGT/HS/BEE-Get the tracked events ; 21 Sep 2009 12:00 PM
  1. ;;1.2;CARE MANAGEMENT EVENT TRACKING;;Jul 07, 2017;Build 71
  1. ;
  1. GET(DATA,CNT,SRC,PARMS) ; EP - BTPW GET TRACKED EVENTS
  1. ; Input parms
  1. ; CNT - Count of # of records to return
  1. ; SRC - Values to continue search
  1. ; PARMS - Delimited list of input vars
  1. ; -> STATE - State List (O - Open, C - Closed)
  1. ; -> TMFRAME - Time frame
  1. ; -> CAT - Cat
  1. ; -> COMM - Comm
  1. ; -> COMMTX - Comm Tax
  1. ; -> CMIEN - List of Event IENs to Return
  1. ;
  1. NEW UID,II,COMM,BJ,CIN,RESULT,QFL,CT,VALUE,WHEN,WHO,TRN,STAGE,HDR,CLOSE,STATE,CATLST
  1. NEW FDUE,NDUE,PCOM,PREV,PRVIEN,RDUE,OSTATE,CMIEN,TMFRAME,BDT,EDT,CAT,COMM,COMMTX
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BTPWPEVT",UID))
  1. K @DATA
  1. I $G(DT)=""!($G(U)="") D DT^DICRW
  1. ;
  1. S II=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BTPWPEVT D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ;
  1. ;Re-Assemble parm list
  1. S PARMS=$G(PARMS,"")
  1. I PARMS="" D
  1. . N LIST,BN
  1. . S LIST="",BN=""
  1. . F S BN=$O(PARMS(BN)) Q:BN="" S LIST=LIST_PARMS(BN)
  1. . K PARMS
  1. . S PARMS=LIST
  1. . K LIST
  1. ;
  1. ;Set incoming var
  1. S (CAT,STATE,TMFRAME,COMM,COMMTX,CMIEN)=""
  1. F BJ=1:1:$L(PARMS,$C(28)) D Q:$G(BMXSEC)'=""
  1. .N PDATA,NAME,VALUE,BP,BV
  1. .S PDATA=$P(PARMS,$C(28),BJ) Q:PDATA=""
  1. .S NAME=$P(PDATA,"=",1) Q:NAME=""
  1. .S VALUE=$P(PDATA,"=",2,99) Q:VALUE=""
  1. .F BP=1:1:$L(VALUE,$C(29)) S BV=$P(VALUE,$C(29),BP),@NAME=@NAME_$S(BP=1:"",1:$C(29))_BV
  1. ;
  1. ;Init/save orig val
  1. S OSTATE=STATE
  1. S SRC=$G(SRC,"")
  1. S CNT=+$G(CNT)
  1. ;
  1. ;Handle blank state
  1. S:STATE="" STATE="O"
  1. ;
  1. ;Set search beg/end dates
  1. S (BDT,EDT)=""
  1. I TMFRAME'="" D
  1. . I $E(TMFRAME,1)=">" S TMFRAME=$E(TMFRAME,2,99),EDT=$$DATE^BQIUL1(TMFRAME) Q
  1. . S BDT=$$DATE^BQIUL1(TMFRAME)
  1. ;
  1. ;Set Cat List Array
  1. I CAT'="",CAT'=0 D
  1. . F BJ=1:1:$L(CAT,$C(29)) S CIN=$P(CAT,$C(29),BJ),CATLST(CIN)=""
  1. ;
  1. ;Set Community Tax
  1. I COMMTX'="" D CMTX^BTPWPEV1
  1. ;
  1. ;Set Comm List Array
  1. I COMM'="" D
  1. . F BJ=1:1:$L(COMM,$C(29)) S CIN=$P(COMM,$C(29),BJ),COMM(CIN)=$P(^AUTTCOM(CIN,0),U,1)
  1. ;
  1. ;Header
  1. D HDR^BTPWPEV1
  1. S @DATA@(0)=HDR_$C(30)
  1. ;
  1. S QFL=0
  1. ;
  1. ;Search 1 - CMIEN list
  1. I $G(CMIEN)'="" D CMIEN(CMIEN,.COMM,SRC) G DONE
  1. ;
  1. ;Search 3 - CATEGORY, STATE, VISIT DATE
  1. I CAT'="",TMFRAME'="" D CSVD(CAT,STATE,.COMM,BDT,EDT,SRC) G DONE
  1. ;
  1. ;Search 4 - STATE, VISIT DATE
  1. I OSTATE'="",TMFRAME'="" D SV(STATE,.COMM,BDT,EDT,SRC) G DONE
  1. ;
  1. ;Search 5 - VISIT DATE
  1. I TMFRAME'="" D VD(.COMM,BDT,EDT,SRC) G DONE
  1. ;
  1. ;Search 6 - CATEGORY, STATE
  1. I STATE'="",CAT'="" D STCT(.COMM,.CATLST,STATE,CAT,SRC) G DONE
  1. ;
  1. ;Search 7 - Default search on STATUS
  1. D ST(.COMM,STATE,SRC)
  1. ;
  1. DONE ;
  1. I II=0,'$D(@DATA@(II)) S:$E(HDR,$L(HDR))="^" HDR=$E(HDR,1,$L(HDR)-1) S @DATA@(II)=HDR_$C(30)
  1. S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. CMIEN(CMIEN,COMM,OSRC) ; EP - Search 1 - List of IENs
  1. N IEN,CT,LII,ISTRT,IFND,ILST,ITSP,RESULT,SRC
  1. ;
  1. ;Last record info
  1. S IEN=$G(OSRC)
  1. ;
  1. S CT=0
  1. ;FSTR
  1. ;Loop through CMIEN list (at selected point) and retrieve records
  1. S ISTRT=1 I IEN]"" F IFND=1:1:$L(CMIEN,$C(29)) I $P(CMIEN,$C(29),IFND)=IEN S ISTRT=IFND
  1. F ITSP=ISTRT:1:$L(CMIEN,$C(29)) S IEN=$P(CMIEN,$C(29),ITSP) D Q:QFL
  1. . ;
  1. . S SRC=IEN
  1. . ;
  1. . ;Get Event Info
  1. . D SNG(IEN,.COMM,.RESULT) I RESULT="" Q
  1. . S CT=CT+1 I CNT,CT=CNT S QFL=1
  1. . S II=II+1,@DATA@(II)=RESULT_U_SRC_$C(30)
  1. Q
  1. ;
  1. CSVD(CAT,STATE,COMM,BDT,EDT,OSRC) ; EP - Search 3 - CATEGORY, STATE, VISIT DATE
  1. N CMIEN,SBDT,CT,CATP,CT,CSTRT,CFND,STSP,ST,SRC,SFND,SSTRT,CTG
  1. ;
  1. ;Last record info
  1. S CSTRT=1,CTG=$P(OSRC,$C(29),4) I CTG]"" F CFND=1:1:$L(CAT,$C(29)) I $P(CAT,$C(29),CFND)=CTG S CSTRT=CFND
  1. S SSTRT=1,ST=$P(OSRC,$C(29),3) I ST]"" F SFND=1:1:$L(STATE,$C(29)) I $P(STATE,$C(29),SFND)=ST S SSTRT=SFND
  1. S:$P(OSRC,$C(29),2)'="" SBDT=$P(OSRC,$C(29),2)
  1. S CMIEN=$P(OSRC,$C(29),1)
  1. ;
  1. S CT=0
  1. ;
  1. ;Loop through index (at selected point) and retrieve records
  1. S SBDT=$S($G(SBDT)]"":SBDT-.001,BDT]"":BDT-.001,1:"")
  1. F CATP=CSTRT:1:$L(CAT,$C(29)) S CTG=$P(CAT,$C(29),CATP) D Q:QFL
  1. . F STSP=SSTRT:1:$L(STATE,$C(29)) S ST=$P(STATE,$C(29),STSP) D Q:QFL
  1. ..F S SBDT=$O(^BTPWP("AI",CTG,ST,SBDT)) Q:(SBDT="")!((EDT]"")&(SBDT'<EDT)) D Q:QFL
  1. ... F S CMIEN=$O(^BTPWP("AI",CTG,ST,SBDT,CMIEN)) Q:CMIEN="" D Q:QFL
  1. .... S SRC=CMIEN_$C(29)_SBDT_$C(29)_ST_$C(29)_CTG
  1. .... ;
  1. .... ;Get Event Info
  1. .... D SNG(CMIEN,.COMM,.RESULT) I RESULT="" Q
  1. .... S CT=CT+1 I CNT,CT=CNT S QFL=1
  1. .... S II=II+1,@DATA@(II)=RESULT_U_SRC_$C(30)
  1. .. S SBDT=$S(BDT]"":BDT-.001,1:"")
  1. . S SSTRT=1
  1. Q
  1. ;
  1. SV(STATE,COMM,BDT,EDT,OSRC) ; EP - Search 4 - STATE, VISIT DATE
  1. N CMIEN,SBDT,CT,STSP,SRC,SFND,ST,SSTRT
  1. ;
  1. ;Last record info
  1. S SSTRT=1,ST=$P(OSRC,$C(29),3) I ST]"" F SFND=1:1:$L(STATE,$C(29)) I $P(STATE,$C(29),SFND)=ST S SSTRT=SFND
  1. S:$P(OSRC,$C(29),2)'="" SBDT=$P(OSRC,$C(29),2)
  1. S CMIEN=$P(OSRC,$C(29),1)
  1. ;
  1. S CT=0
  1. ;
  1. ;Loop through index (at selected point) and retrieve records
  1. S SBDT=$S($G(SBDT)]"":SBDT-.001,BDT]"":BDT-.001,1:"")
  1. F STSP=SSTRT:1:$L(STATE,$C(29)) S ST=$P(STATE,$C(29),STSP) D Q:QFL
  1. . F S SBDT=$O(^BTPWP("AL",ST,SBDT)) Q:(SBDT="")!((EDT]"")&(SBDT'<EDT)) D Q:QFL
  1. .. F S CMIEN=$O(^BTPWP("AL",ST,SBDT,CMIEN)) Q:CMIEN="" D Q:QFL
  1. ... S SRC=CMIEN_$C(29)_SBDT_$C(29)_ST
  1. ... ;
  1. ... ;Get Event Info
  1. ... D SNG(CMIEN,.COMM,.RESULT) I RESULT="" Q
  1. ... S CT=CT+1 I CNT,CT=CNT S QFL=1
  1. ... S II=II+1,@DATA@(II)=RESULT_U_SRC_$C(30)
  1. . S SBDT=$S(BDT]"":BDT-.001,1:"")
  1. Q
  1. ;
  1. ;
  1. VD(COMM,BDT,EDT,OSRC) ; EP - Search 5 - VISIT DATE
  1. N CMIEN,SBDT,CT
  1. ;
  1. ;Last record info
  1. S:$P(OSRC,$C(29),2)'="" SBDT=$P(OSRC,$C(29),2)
  1. S CMIEN=$P(OSRC,$C(29),1)
  1. ;
  1. S CT=0
  1. ;
  1. ;Loop through index (at selected point) and retrieve records
  1. S SBDT=$S($G(SBDT)]"":SBDT-.001,BDT]"":BDT-.001,1:"")
  1. F S SBDT=$O(^BTPWP("AH",SBDT)) Q:(SBDT="")!((EDT]"")&(SBDT'<EDT)) D Q:QFL
  1. . F S CMIEN=$O(^BTPWP("AH",SBDT,CMIEN)) Q:CMIEN="" D Q:QFL
  1. .. S SRC=CMIEN_$C(29)_SBDT
  1. .. ;
  1. .. ;Get Event Info
  1. .. D SNG(CMIEN,.COMM,.RESULT) I RESULT="" Q
  1. .. S CT=CT+1 I CNT,CT=CNT S QFL=1
  1. .. S II=II+1,@DATA@(II)=RESULT_U_SRC_$C(30)
  1. Q
  1. ;
  1. STCT(COMM,CTLST,STATE,CAT,OSRC) ;EP - Search 6 - CATEGORY, STATE
  1. N ST,STSP,SRC,SFND,SSTRT,CSTRT,CFND,CATP,CT,CTG
  1. ;
  1. ;Last record info
  1. S CSTRT=1,CTG=$P(OSRC,$C(29),3) I CTG]"" F CFND=1:1:$L(CAT,$C(29)) I $P(CAT,$C(29),CFND)=CTG S CSTRT=CFND
  1. S SSTRT=1,ST=$P(OSRC,$C(29),2) I ST]"" F SFND=1:1:$L(STATE,$C(29)) I $P(STATE,$C(29),SFND)=ST S SSTRT=SFND
  1. S CMIEN=$P(OSRC,$C(29),1)
  1. ;
  1. S CT=0,QFL=0
  1. ;
  1. ;Loop through index (at selected point) and retrieve records
  1. F CATP=CSTRT:1:$L(CAT,$C(29)) S CTG=$P(CAT,$C(29),CATP) D Q:QFL
  1. . F STSP=SSTRT:1:$L(STATE,$C(29)) S ST=$P(STATE,$C(29),STSP) D Q:QFL
  1. .. F S CMIEN=$O(^BTPWP("AF",CTG,ST,CMIEN)) Q:CMIEN="" D Q:QFL
  1. ... ;
  1. ... ;Get Event Info
  1. ... D SNG(CMIEN,.COMM,.RESULT) I RESULT="" Q
  1. ... S SRC=CMIEN_$C(29)_ST_$C(29)_CTG
  1. ... S CT=CT+1 I CNT'=0,CT=CNT S QFL=1
  1. ... S II=II+1,@DATA@(II)=RESULT_U_SRC_$C(30)
  1. . S SSTRT=1
  1. Q
  1. ;
  1. ST(COMM,STATE,OSRC) ;EP - Search 7 - Default search on STATUS
  1. N ST,STSP,SRC,SFND,SSTRT
  1. ;
  1. ;Last record info
  1. S SSTRT=1,ST=$P(OSRC,$C(29),2) I ST]"" F SFND=1:1:$L(STATE,$C(29)) I $P(STATE,$C(29),SFND)=ST S SSTRT=SFND
  1. S CMIEN=$P(OSRC,$C(29),1)
  1. ;
  1. S CT=0,QFL=0
  1. ;
  1. ;Loop through index (at selected point) and retrieve records
  1. F STSP=SSTRT:1:$L(STATE,$C(29)) S ST=$P(STATE,$C(29),STSP) D Q:QFL
  1. . F S CMIEN=$O(^BTPWP("AC",ST,CMIEN)) Q:CMIEN="" D Q:QFL
  1. .. D SNG(CMIEN,.COMM,.RESULT) I RESULT="" Q
  1. .. S SRC=CMIEN_$C(29)_ST
  1. .. S CT=CT+1 I CNT'=0,CT=CNT S QFL=1
  1. .. S II=II+1,@DATA@(II)=RESULT_U_SRC_$C(30)
  1. Q
  1. ;
  1. INTER(TIEN,WHIEN) ;EP - BTPWTINT - Return interpretation value for the event
  1. N WHRES,WHDT,IEN
  1. ;
  1. S (WHDT,WHRES)=""
  1. I $G(TIEN)'="",$G(WHIEN)="" S WHIEN=$$GET1^DIQ(90620,TIEN_",",.09,"I")
  1. I WHIEN]"" D Q:WHRES["Abnormal" WHRES
  1. . S WHRES=$$GET1^DIQ(9002086.1,WHIEN_",",.05,"I")
  1. . S:WHRES'="" WHRES=$$GET1^DIQ(9002086.31,WHRES_",",.21,"E")
  1. . S WHRES=$S(WHRES="NORMAL":"Normal",WHRES="ABNORMAL":"Abnormal",WHRES="NO RESULT":"N/A",1:"")_$C(26)_"WH RECORD"
  1. . S WHDT=$$GET1^DIQ(9002086.1,WHIEN_",",.03,"I")
  1. ;
  1. ;Loop through current findings
  1. I $G(TIEN)'="" D
  1. . S IEN=0 F S IEN=$O(^BTPWP(TIEN,10,IEN)) Q:'IEN D Q:WHRES["Abnormal"
  1. .. N FDT,INT
  1. .. ;
  1. .. ;Skip ENTERED IN ERROR
  1. .. I $$GET1^DIQ(90620.01,IEN_","_TIEN_",",.08,"I")="Y" Q
  1. .. ;
  1. .. S FDT=$$GET1^DIQ(90620.01,IEN_","_TIEN_",",.01,"I")
  1. .. S INT=$$GET1^DIQ(90620.01,IEN_","_TIEN_",",.03,"E")
  1. .. I INT="Abnormal" S WHRES=INT_$C(26)_"CMET" Q
  1. .. I INT]"",FDT>WHDT S WHRES=INT_$C(26)_"CMET"
  1. ;
  1. Q WHRES
  1. ;
  1. SNG(CMIEN,COMM,RESULT) ; Get the basic record information for a single record
  1. NEW DFN,PNAM,PCOM,TDATA,PROC,PROCNM,CAT,STATUS,HRN,DOB,AGE,SEX,PRCDT,RES,PEV,FND,FUP,NOT,STATE,TWHO,TWHEN,WHIEN,WHRES
  1. NEW FNDT,FLDT,NODT,VISIT,QIEN,DPCP,HFND,HFUP,HNOT,HRES,FSUMM
  1. ;
  1. S TDATA=$G(^BTPWP(CMIEN,0)),DFN=$P(TDATA,U,2),PCOM="",PNAM=$P(^DPT(DFN,0),"^",1)
  1. S FSUMM=$$FNDS^BTPWPLND(CMIEN)
  1. ;
  1. ;Status Check - Must be Tracked
  1. S QIEN=$P(TDATA,U,14)
  1. I QIEN]"" S STATUS=$$GET1^DIQ(90629,QIEN_",",.08,"I") I STATUS'="",STATUS'="T" S RESULT="" Q
  1. ;
  1. ;Community check
  1. S PCOM=$$GET1^DIQ(9000001,DFN_",",1117,"I")
  1. I COMM'="",PCOM'="",'$D(COMM(PCOM)) S RESULT="" Q
  1. I PCOM'="" S PCOM=$$GET1^DIQ(9000001,DFN_",",1117,"E") ;Comm
  1. ;
  1. S PROC=$P(TDATA,U,1),PROCNM=$P(^BTPW(90621,PROC,0),U,1) ;Procedure/Name (Event)
  1. S CAT=$$CAT^BTPWPDSP(PROC) ;Cat
  1. S HRN=$TR($$HRNL^BQIULPT(DFN),";",$C(10)) ;HRN
  1. S DOB=$$FMTE^BQIUL1($$GET1^DIQ(2,DFN_",",.03,"I")) ;DOB
  1. S AGE=$$AGE^BQIAGE(DFN,,1) ;Age
  1. S SEX=$$GET1^DIQ(2,DFN_",",.02,"I") ;Sex
  1. S PRCDT=$$FMTE^BQIUL1($P(TDATA,U,3)) ;Event Date
  1. S VISIT=$P(TDATA,U,4)
  1. S DPCP=$P($$DPCP^BQIULPT(DFN),U,2)
  1. S INT=$$INTER^BTPWPEVT(CMIEN),HINT=$P(INT,$C(26),2),INT=$P(INT,$C(26))
  1. ;
  1. ;Result
  1. S RES=$$LNK^BTPWPTRG(CMIEN,.06)
  1. S HRES=$P(RES,$C(28),2,3),RES=$P(RES,$C(28))
  1. ;
  1. S FND=$$FND(CMIEN),HFND=$P(FND,$C(28),2),FND=$P(FND,$C(28)) ;Findings
  1. S FUP=$$FUP(CMIEN),HFUP=$P(FUP,$C(28),2),FUP=$P(FUP,$C(28)) ;Follow Ups
  1. S NOT=$$NOT(CMIEN),HNOT=$P(NOT,$C(28),2),NOT=$P(NOT,$C(28)) ;Notifications
  1. ;
  1. S STATE=$$GET1^DIQ(90620,CMIEN_",",1.01,"E") ;STATE
  1. S TWHO=$$GET1^DIQ(90620,CMIEN_",",1.03,"E") ;TRACKED BY
  1. S TWHEN=$$FMTE^BQIUL1($$GET1^DIQ(90620,CMIEN_",",1.02,"I")) ;TRACKED DATE/TIME
  1. ;
  1. S RESULT=CMIEN_U_DFN_U_$$SENS^BQIULPT(DFN)_U_VISIT_U_PROC_U_HRN_U_DOB_U_$$CALR^BQIULPT(DFN)_U_CAT_U_PNAM_U_AGE_U_SEX_U_PCOM_U_DPCP_U_PROCNM_U_PRCDT_U_FND_U_HFND_U_FUP_U_HFUP_U_NOT_U_HNOT_U_STATE_U_TWHO_U_TWHEN_U_INT_U_HINT_U_RES_U_HRES_U_FSUMM
  1. Q
  1. ;
  1. FND(TIEN) ;EP - Calc Findings
  1. N FND,FNDT
  1. S FND="",FNDT=$$GET1^DIQ(90620,TIEN_",",1.05,"I") D
  1. . N FIEN,FNODE,FVAL,FFLG,FSTR
  1. . ;
  1. . ;Look for findings
  1. . S (FFLG,FIEN)=0,FSTR="" F S FIEN=$O(^BTPWP(TIEN,10,FIEN)) Q:'FIEN D
  1. .. N FD,FV
  1. .. ;
  1. .. ;Skip ENTERED IN ERROR
  1. .. I $$GET1^DIQ(90620.01,FIEN_","_TIEN_",",.08,"I")="Y" Q
  1. .. ;
  1. .. ;S FD=$E($$FMTE^BQIUL1($P($$GET1^DIQ(90620.01,FIEN_","_TIEN_",",.01,"I"),".")),1,11)
  1. .. S FD=$$FMTE^BQIUL1($$GET1^DIQ(90620.01,FIEN_","_TIEN_",",.01,"I")\1)
  1. .. S FV=$$GET1^DIQ(90620.01,FIEN_","_TIEN_",",.02,"E")
  1. .. I FD="",FV="" Q
  1. .. S FVAL="Finding Date: "_FD
  1. .. S FVAL=FVAL_" Finding: "_FV,FFLG=1
  1. .. S FSTR=FSTR_$S(FSTR]"":$C(13)_$C(10),1:"")_FVAL
  1. . I FFLG=1 S FND="CHECK"_$C(28)_FSTR Q
  1. . ;
  1. . ;If no findings, check for past due
  1. . I FFLG=0 D
  1. .. I FNDT]"",FNDT<DT S FND="TICKLER"_$C(28)_"Entry of Finding is overdue. Due Date: "_$P($$GET1^DIQ(90620,TIEN_",",1.05,"E"),"@")
  1. ;
  1. Q FND
  1. ;
  1. FUP(TIEN) ;EP - Calc Follow Ups
  1. N FUP,FNDT,FLUN
  1. ;
  1. ;Look for follow-up needed
  1. S FLUN=$$GET1^DIQ(90620,TIEN_",",1.11,"I") I FLUN="N" Q "N/A"_$C(28)_"Follow-up Not Recommended"
  1. ;
  1. S FUP="",FNDT=$$GET1^DIQ(90620,TIEN_",",1.06,"I") D
  1. . N FIEN,FNODE,FVAL,FFLG,FSTR
  1. . ;
  1. . ;Look for follow ups
  1. . S (FFLG,FIEN)=0,FSTR="" F S FIEN=$O(^BTPWP(TIEN,12,FIEN)) Q:'FIEN D
  1. .. N FD,FV
  1. .. ;
  1. .. ;Skip ENTERED IN ERROR
  1. .. I $$GET1^DIQ(90620.012,FIEN_","_TIEN_",",.07,"I")="Y" Q
  1. .. ;
  1. .. ;S FD=$E($$FMTE^BQIUL1($$GET1^DIQ(90620.012,FIEN_","_TIEN_",",.05,"I")),1,11)
  1. .. S FD=$$FMTE^BQIUL1($$GET1^DIQ(90620.012,FIEN_","_TIEN_",",.05,"I")\1)
  1. .. S FV=$$GET1^DIQ(90620.012,FIEN_","_TIEN_",",.02,"E")
  1. .. I FD="",FV="" Q
  1. .. S FVAL="Follow-Up Date: "_FD
  1. .. S FVAL=FVAL_" Follow-Up: "_FV,FFLG=1
  1. .. S FSTR=FSTR_$S(FSTR]"":$C(13)_$C(10),1:"")_FVAL
  1. . I FFLG=1 S FUP="CHECK"_$C(28)_FSTR Q
  1. . ;
  1. . ;If no follow ups, check for past due
  1. . I FFLG=0 D
  1. .. I FNDT]"",FNDT<DT S FUP="TICKLER"_$C(28)_"Entry of recommended follow-up is overdue. Due Date: "_$P($$GET1^DIQ(90620,TIEN_",",1.06,"E"),"@")
  1. ;
  1. Q FUP
  1. ;
  1. NOT(TIEN) ;EP - Calc Notifications
  1. N NOT,FNDT
  1. S NOT="",FNDT=$$GET1^DIQ(90620,TIEN_",",1.07,"I") D
  1. . N FIEN,FNODE,FVAL,FFLG,FSTR
  1. . ;
  1. . ;Look for notifications
  1. . S (FFLG,FIEN)=0,FSTR="" F S FIEN=$O(^BTPWP(TIEN,11,FIEN)) Q:'FIEN D
  1. .. N ND,NV
  1. .. ;
  1. .. ;Skip ENTERED IN ERROR
  1. .. I $$GET1^DIQ(90620.011,FIEN_","_TIEN_",",.09,"I")="Y" Q
  1. .. ;
  1. .. ;S ND=$E($$FMTE^BQIUL1($$GET1^DIQ(90620.011,FIEN_","_TIEN_",",.01,"I")),1,11)
  1. .. S ND=$$FMTE^BQIUL1($$GET1^DIQ(90620.011,FIEN_","_TIEN_",",.01,"I")\1)
  1. .. S NV=$$GET1^DIQ(90620.011,FIEN_","_TIEN_",",.02,"E")
  1. .. I ND="",NV="" Q
  1. .. S FVAL="Notification Date: "_ND
  1. .. S FVAL=FVAL_" Notification: "_NV,FFLG=1
  1. .. S FSTR=FSTR_$S(FSTR]"":$C(13)_$C(10),1:"")_FVAL
  1. . I FFLG=1 S NOT="CHECK"_$C(28)_FSTR Q
  1. . ;
  1. . ;If no notifications, check for past due
  1. . I FFLG=0 D
  1. .. I FNDT]"",FNDT<DT S NOT="TICKLER"_$C(28)_"Entry of the type of Patient Notification is overdue. Due Date: "_$P($$GET1^DIQ(90620,TIEN_",",1.07,"E"),"@")
  1. ;
  1. Q NOT
  1. ;
  1. STACOM(QIEN) ;EP - Get State Comments
  1. N SIEN,SCOMM
  1. S SCOMM=""
  1. S SIEN=0
  1. F S SIEN=$O(^BTPWP(QIEN,3,SIEN)) Q:'SIEN D
  1. . S SCOMM=SCOMM_$S(SCOMM]"":" ",1:"")_$G(^BTPWP(QIEN,3,SIEN,0))
  1. Q SCOMM
  1. ;
  1. ERR ;
  1. D ^%ZTER
  1. NEW Y,ERRDTM
  1. S Y=$$NOW^XLFDT() X ^DD("DD") S ERRDTM=Y
  1. S BMXSEC="Recording that an error occurred at "_ERRDTM
  1. S II=II+1,@DATA@(II)=$C(31)
  1. Q