1 | IBDFFT1 ;ALB/MAF - FORMS TRACKING CONTINUED - JUL 6 1995
|
---|
2 | ;;3.0;AUTOMATED INFO COLLECTION SYS;**16**;APR 24, 1997
|
---|
3 | ;
|
---|
4 | START ;
|
---|
5 | N IBDCNT,IBDCNT1,IBDFTIME
|
---|
6 | S (IBDCNT,IBDNKA,IBDCNT1,VALMCNT)=0
|
---|
7 | D KILL^VALM10()
|
---|
8 | D @(IBDFL)
|
---|
9 | N IBDFDV,IBDFCL,IBDNODE,IBDFTMP,IBDFPAT,IBDFPT,IBDFT
|
---|
10 | S (IBDFDV,IBDFCL,IBDFPT)=0
|
---|
11 | ;
|
---|
12 | I $D(VAUTG) D
|
---|
13 | .N IBDFGR
|
---|
14 | .S IBDFGR=0
|
---|
15 | .F IBDFDIV=0:0 S IBDFDV=$O(^TMP("FTRK",$J,IBDFDV)) Q:IBDFDV']"" D:'$D(IBDFDIV(IBDFDV)) HEADER^IBDFFT2 F IBDFGRO=0:0 S IBDFGR=$O(^TMP("FTRK",$J,IBDFDV,IBDFGR)) Q:IBDFGR']"" D
|
---|
16 | ..F IBDFCLI=0:0 S IBDFCL=$O(^TMP("FTRK",$J,IBDFDV,IBDFGR,IBDFCL)) Q:IBDFCL']"" D:'$D(IBDFGROP(IBDFDV,IBDFGR)) HEADER2^IBDFFT2 D:'$D(IBDFCLIN(IBDFGR,IBDFCL)) HEADER1^IBDFFT2 D
|
---|
17 | ...F IBDFT=0:0 S IBDFT=$O(^TMP("FTRK",$J,IBDFDV,IBDFGR,IBDFCL,IBDFT)) Q:'IBDFT F IBDFPAT=0:0 S IBDFPT=$O(^TMP("FTRK",$J,IBDFDV,IBDFGR,IBDFCL,IBDFT,IBDFPT)) Q:IBDFPT']"" D
|
---|
18 | ....F IBDFIFN=0:0 S IBDFIFN=$O(^TMP("FTRK",$J,IBDFDV,IBDFGR,IBDFCL,IBDFT,IBDFPT,IBDFIFN)) Q:'IBDFIFN S IBDX="" F S IBDX=$O(^TMP("FTRK",$J,IBDFDV,IBDFGR,IBDFCL,IBDFT,IBDFPT,IBDFIFN,IBDX)) Q:IBDX="" S IBDFTMP=^(IBDX) D SETARR
|
---|
19 | I '$D(VAUTG) D
|
---|
20 | .F IBDFDIV=0:0 S IBDFDV=$O(^TMP("FTRK",$J,IBDFDV)) Q:IBDFDV']"" D:'$D(IBDFDIV(IBDFDV)) HEADER^IBDFFT2 F IBDFCLI=0:0 S IBDFCL=$O(^TMP("FTRK",$J,IBDFDV,IBDFCL)) Q:IBDFCL']"" D:'$D(IBDFCLIN(IBDFDV,IBDFCL)) HEADER1^IBDFFT2 D
|
---|
21 | ..F IBDFT=0:0 S IBDFT=$O(^TMP("FTRK",$J,IBDFDV,IBDFCL,IBDFT)) Q:'IBDFT F IBDFPAT=0:0 S IBDFPT=$O(^TMP("FTRK",$J,IBDFDV,IBDFCL,IBDFT,IBDFPT)) Q:IBDFPT']"" D
|
---|
22 | ...F IBDFIFN=0:0 S IBDFIFN=$O(^TMP("FTRK",$J,IBDFDV,IBDFCL,IBDFT,IBDFPT,IBDFIFN)) Q:'IBDFIFN S IBDX="" F S IBDX=$O(^TMP("FTRK",$J,IBDFDV,IBDFCL,IBDFT,IBDFPT,IBDFIFN,IBDX)) Q:IBDX="" S IBDFTMP=^(IBDX) D SETARR
|
---|
23 | I '$D(^TMP("FRM",$J)) D NUL^IBDFFT2
|
---|
24 | Q
|
---|
25 | CLN ; -- Loop clinics
|
---|
26 | N IBDFCLIN
|
---|
27 | I VAUTC=1 F IBDFCLIN=0:0 S IBDFCLIN=$O(^SC(IBDFCLIN)) Q:'IBDFCLIN D CK(IBDFCLIN) I QUIT=1 D BLD
|
---|
28 | I VAUTC=0 F IBDFCLIN=0:0 S IBDFCLIN=$O(VAUTC(IBDFCLIN)) Q:'IBDFCLIN D CK(IBDFCLIN) I QUIT=1 D BLD
|
---|
29 | D TRACKING Q
|
---|
30 | PAT ; -- Loop patients
|
---|
31 | N IBDFCLIN,IBDFPAT
|
---|
32 | I VAUTN=1 F IBDFPAT=0:0 S IBDFPAT=$O(^DPT(IBDFPAT)) Q:'IBDFPAT F IBDFT=IBDFBEG:0 S IBDFT=$O(^DPT(IBDFPAT,"S",IBDFT)) Q:'IBDFT!($P(IBDFT,".",1)>IBDFEND) I $D(^DPT(IBDFPAT,"S",IBDFT,0)) D SET
|
---|
33 | I VAUTN=0 F IBDFPAT=0:0 S IBDFPAT=$O(VAUTN(IBDFPAT)) Q:'IBDFPAT F IBDFT=IBDFBEG:0 S IBDFT=$O(^DPT(IBDFPAT,"S",IBDFT)) Q:'IBDFT!($P(IBDFT,".",1)>IBDFEND) I $D(^DPT(IBDFPAT,"S",IBDFT,0)) D SET
|
---|
34 | D TRACKING Q
|
---|
35 | GRP D GRP1^IBDFFT
|
---|
36 | N IBDFGRP,IBDFCLIN
|
---|
37 | F IBDFGRP=0:0 S IBDFGRP=$O(VAUTG(IBDFGRP)) Q:'IBDFGRP F IBDFCLIN=0:0 S IBDFCLIN=$O(VAUTG(IBDFGRP,IBDFCLIN)) Q:'IBDFCLIN D CK(IBDFCLIN) I QUIT=1 D BLD
|
---|
38 | D TRACKING Q
|
---|
39 | ;
|
---|
40 | ;
|
---|
41 | SET S IBDFCLIN=$P(^DPT(IBDFPAT,"S",IBDFT,0),"^",1) D CK(IBDFCLIN) I QUIT=1 S DFN=IBDFPAT D CK1 Q
|
---|
42 | Q
|
---|
43 | ;
|
---|
44 | ;
|
---|
45 | CK(XCL) ; -- Check clinic, division, form
|
---|
46 | Q:'$D(^SC(+XCL,0))
|
---|
47 | S QUIT=0
|
---|
48 | S IBDFNODE=$G(^SC(XCL,0))
|
---|
49 | Q:$P(IBDFNODE,"^",3)'="C"
|
---|
50 | I $G(VAUTD)=0 I $P(IBDFNODE,"^",15) Q:'$D(VAUTD($P(IBDFNODE,"^",15)))
|
---|
51 | D CHECK^IBDFFT(XCL)
|
---|
52 | Q:QUIT=0
|
---|
53 | Q
|
---|
54 | ;
|
---|
55 | ;
|
---|
56 | BLD ; -- scan appts
|
---|
57 | F IBDFT=IBDFBEG:0 S IBDFT=$O(^SC(IBDFCLIN,"S",IBDFT)) Q:'IBDFT!($P(IBDFT,".",1)>IBDFEND) D
|
---|
58 | .F IBDFDA=0:0 S IBDFDA=$O(^SC(IBDFCLIN,"S",IBDFT,1,IBDFDA)) Q:'IBDFDA I $D(^SC(IBDFCLIN,"S",IBDFT,1,IBDFDA,0)) S IBDFSA=^(0) S DFN=+IBDFSA D CK1
|
---|
59 | Q
|
---|
60 | CK1 ; --
|
---|
61 | N IBDFXPC,IBDFYPC
|
---|
62 | S IBDFXPC=$S($D(VAUTC)!($D(VAUTG)):$P(IBDFNODE,"^",1),1:$P(^DPT(IBDFPAT,0),"^",1))
|
---|
63 | S IBDFYPC=$S($D(VAUTC)!($D(VAUTG)):$P(^DPT(DFN,0),"^",1),1:$P(IBDFNODE,"^",1))
|
---|
64 | I $D(^IBD(357.96,"APTAP",DFN,IBDFT)) S IBDFIFN=0 F S IBDFIFN=$O(^IBD(357.96,"APTAP",DFN,IBDFT,IBDFIFN)) Q:'IBDFIFN I $D(^IBD(357.96,IBDFIFN,0)) D
|
---|
65 | .I $D(VAUTG) S ^TMP("FTRK",$J,$S($D(^DG(40.8,+$P(IBDFNODE,"^",15),0)):$P(^DG(40.8,$P(IBDFNODE,"^",15),0),"^",1),1:"NOT SPECIFIED"),$P(^IBD(357.99,IBDFGRP,0),"^",1),IBDFXPC,IBDFT,IBDFYPC,DFN,+IBDFIFN)=IBDFCLIN_"^"_^IBD(357.96,IBDFIFN,0)
|
---|
66 | .I '$D(VAUTG) S ^TMP("FTRK",$J,$S($D(^DG(40.8,+$P(IBDFNODE,"^",15),0)):$P(^DG(40.8,$P(IBDFNODE,"^",15),0),"^",1),1:"NOT SPECIFIED"),IBDFXPC,IBDFT,IBDFYPC,DFN,+IBDFIFN)=IBDFCLIN_"^"_^IBD(357.96,IBDFIFN,0)
|
---|
67 | .Q
|
---|
68 | E D
|
---|
69 | .I $D(VAUTG) S ^TMP("FTRK",$J,$S($D(^DG(40.8,+$P(IBDFNODE,"^",15),0)):$P(^DG(40.8,$P(IBDFNODE,"^",15),0),"^",1),1:"NOT SPECIFIED"),$P(^IBD(357.99,IBDFGRP,0),"^",1),IBDFXPC,IBDFT,IBDFYPC,DFN,0)=IBDFCLIN_"^^"_DFN_"^"_IBDFT
|
---|
70 | .I '$D(VAUTG) S ^TMP("FTRK",$J,$S($D(^DG(40.8,+$P(IBDFNODE,"^",15),0)):$P(^DG(40.8,$P(IBDFNODE,"^",15),0),"^",1),1:"NOT SPECIFIED"),IBDFXPC,IBDFT,IBDFYPC,DFN,0)=IBDFCLIN_"^^"_DFN_"^"_IBDFT
|
---|
71 | Q
|
---|
72 | ;
|
---|
73 | SETARR ; -- Set up Listman array
|
---|
74 | S DFN=$P(IBDFTMP,"^",3)
|
---|
75 | I '$D(^TMP("CNT",$J,$S(IBDFDV]"":IBDFDV,1:"NOT SPECIFIED"),IBDFCL)) D
|
---|
76 | .S ^TMP("CNT",$J,$S(IBDFDV]"":IBDFDV,1:"NOT SPECIFIED"),IBDFCL)="0^0^0^0^0^0^0"
|
---|
77 | .I $D(VAUTG) I '$D(^TMP("COUNT",$J,$S(IBDFDV]"":IBDFDV,1:"NOT SPECIFIED"),IBDFGR,IBDFCL)) D
|
---|
78 | ..S ^TMP("COUNT",$J,$S(IBDFDV]"":IBDFDV,1:"NOT SPECIFIED"),IBDFGR,IBDFCL)=1
|
---|
79 | I $D(VAUTG) K IBDFLAG I $D(^TMP("COUNT",$J,IBDFCL,IBDFT,IBDFIFN)) I IBDFGR=^TMP("COUNT",$J,IBDFCL,IBDFT,IBDFIFN) D COUNT
|
---|
80 | I $D(VAUTG) I '$D(^TMP("COUNT",$J,IBDFCL,IBDFT,IBDFIFN)) D COUNT
|
---|
81 | I '$D(VAUTG) S $P(^TMP("CNT",$J,IBDFDV,IBDFCL),"^",1)=$P(^TMP("CNT",$J,IBDFDV,IBDFCL),"^",1)+1
|
---|
82 | S IBDCNT1=IBDCNT1+1
|
---|
83 | S IBDCNT=IBDCNT+1,VALMCNT=VALMCNT+1
|
---|
84 | S X=""
|
---|
85 | S IBDFVAL=$J(IBDCNT1_")",5)
|
---|
86 | S X=$$SETSTR^VALM1(IBDFVAL,X,1,5)
|
---|
87 | S IBDFVAL=$P($G(IBDFTMP),"^",2)
|
---|
88 | S X=$$SETSTR^VALM1(IBDFVAL,X,7,8)
|
---|
89 | S IBDFVAL=$P($G(IBDFTMP),"^",4) I IBDFVAL S DNKA=$$DNKA(DFN,IBDFVAL),IBDFVAL=$P($$FMTE^XLFDT(IBDFVAL,2),":",1,2)
|
---|
90 | S X=$$SETSTR^VALM1(IBDFVAL,X,17,14)
|
---|
91 | I $D(VAUTC)!($D(VAUTG)) S (IBDFVAL,IBDFN)=$P($G(IBDFTMP),"^",3) I IBDFVAL]"" S IBDFVAL=$P(^DPT(IBDFVAL,0),"^",1)
|
---|
92 | I $D(VAUTN) S (IBDFVAL,IBDFN)=$P($G(IBDFTMP),"^",1) I IBDFVAL]"" S IBDFVAL=$P(^SC(IBDFVAL,0),"^",1)
|
---|
93 | S X=$$SETSTR^VALM1(IBDFVAL,X,34,15)
|
---|
94 | S IBDFVAL=$P($G(IBDFTMP),"^",6)
|
---|
95 | I IBDFVAL]"" S IBDFVAL=$E(IBDFVAL,4,5)_"/"_$E(IBDFVAL,6,7)_"/"_$E(IBDFVAL,2,3) I '$D(VAUTG)!($D(VAUTG)&($D(IBDFLAG))) S $P(^TMP("CNT",$J,IBDFDV,IBDFCL),"^",2)=+($P(^TMP("CNT",$J,IBDFDV,IBDFCL),"^",2))+1
|
---|
96 | S X=$$SETSTR^VALM1(IBDFVAL,X,50,8)
|
---|
97 | S VAL=$P($G(IBDFTMP),"^",12)
|
---|
98 | S IBDFVAL=$P($G(IBDFTMP),"^",7)
|
---|
99 | I IBDFVAL]"" S IBDFVAL=$E(IBDFVAL,4,5)_"/"_$E(IBDFVAL,6,7)_"/"_$E(IBDFVAL,2,3) I '$D(VAUTG)!($D(VAUTG)&($D(IBDFLAG))) I VAL=2 S $P(^TMP("CNT",$J,IBDFDV,IBDFCL),"^",3)=+($P(^TMP("CNT",$J,IBDFDV,IBDFCL),"^",3))+1
|
---|
100 | S X=$$SETSTR^VALM1(IBDFVAL,X,61,8)
|
---|
101 | N IBDFXX
|
---|
102 | S IBDFXX=$S(VAL=3:3,VAL=6:5,1:"")
|
---|
103 | I IBDFXX]"" I '$D(VAUTG)!($D(VAUTG)&($D(IBDFLAG))) S $P(^TMP("CNT",$J,IBDFDV,IBDFCL),"^",IBDFXX)=$P(^TMP("CNT",$J,IBDFDV,IBDFCL),"^",IBDFXX)+1 S $P(^TMP("CNT",$J,IBDFDV,IBDFCL),"^",6)=$P(^TMP("CNT",$J,IBDFDV,IBDFCL),"^",6)+1
|
---|
104 | S VAL=$S(DNKA:$P(DNKA,"^",2),VAL=1:"PRINTED",VAL=2:"SCANNED",VAL=3:"SCD/PCE",VAL=4:"SCD w/ER",VAL=5:"DENTRY",VAL=6:"DE to PCE",VAL=7:"DE w/ER",VAL=11:"PEND Pgs",VAL=12:"ER/NOTRN",20:"AVAIL DE",1:"NOT PRNT")
|
---|
105 | I DNKA S $P(^TMP("CNT",$J,IBDFDV,IBDFCL),"^",7)=+($P(^TMP("CNT",$J,IBDFDV,IBDFCL),"^",7))+1
|
---|
106 | S X=$$SETSTR^VALM1(VAL,X,72,8)
|
---|
107 | S IBDFVAL=$S(DNKA:"",1:$$SCHSTAT^IBDFFT($P(IBDFTMP,"^",3),$P(IBDFTMP,"^",4)))
|
---|
108 | S X=$$SETSTR^VALM1(IBDFVAL,X,82,12)
|
---|
109 | S IBDFVAL=$S($P(IBDFTMP,"^",14):" Yes",1:" No")
|
---|
110 | S X=$$SETSTR^VALM1(IBDFVAL,X,96,6)
|
---|
111 | ;
|
---|
112 | ;
|
---|
113 | TMP ; -- Set up TMP Array
|
---|
114 | S ^TMP("FRM",$J,IBDCNT,0)=$$LOWER^VALM1(X),^TMP("FRM",$J,"IDX",VALMCNT,IBDCNT1)=""
|
---|
115 | S ^TMP("FRMIDX",$J,IBDCNT1)=VALMCNT_"^"_$P(IBDFTMP,"^",2)_"^"_$P(IBDFTMP,"^",3)_"^"_$P(IBDFTMP,"^",4)_"^"_$P(IBDFTMP,"^",6)_"^"_$P(IBDFTMP,"^",7)_"^"_$P(IBDFTMP,"^",12)
|
---|
116 | D NOW^%DTC S IBDFTIME=% S X1=$S($P(IBDFTMP,"^",7):$P(IBDFTMP,"^",7),1:IBDFTIME),X2=$P(IBDFTMP,"^",4) D ^%DTC S $P(^TMP("CNT",$J,IBDFDV,IBDFCL),"^",4)=+($P(^TMP("CNT",$J,IBDFDV,IBDFCL),"^",4))+X
|
---|
117 | Q
|
---|
118 | COUNT ;
|
---|
119 | S ^TMP("COUNT",$J,IBDFCL,IBDFT,IBDFIFN)=IBDFGR,IBDFLAG=1
|
---|
120 | S $P(^TMP("CNT",$J,IBDFDV,IBDFCL),"^",1)=$P(^TMP("CNT",$J,IBDFDV,IBDFCL),"^",1)+1
|
---|
121 | Q
|
---|
122 | TRACKING ; -- loops thru forms tracking file 357.96
|
---|
123 | ; X-reference ^IBD(357.96,"ADATNA", Appt date/time, 1 or 0, IFN).
|
---|
124 | ; 1 = forms tracking file entry but no scheduled appt associated
|
---|
125 | ; 0 = forms tracking file entry with associated scheduled appt.
|
---|
126 | N IBDFCLIN,IBAPPTDT,IBDFPAT,IBDFTRK,IBDFX,IBDFT
|
---|
127 | S IBDFX=""
|
---|
128 | F IBDFT=IBDFBEG:0 S IBDFT=$O(^IBD(357.96,"ADATNA",IBDFT)) Q:'IBDFT!(IBDFT>IBDFEND) S IBDFTRK=0 F S IBDFTRK=$O(^IBD(357.96,"ADATNA",IBDFT,1,IBDFTRK)) Q:'IBDFTRK D
|
---|
129 | .Q:'$G(^IBD(357.96,IBDFTRK,0))
|
---|
130 | .S IBDFCLIN=$P(^IBD(357.96,IBDFTRK,0),"^",10)
|
---|
131 | .I IBDFCLIN']"" Q
|
---|
132 | .S IBDFPAT=$P(^IBD(357.96,IBDFTRK,0),"^",2)
|
---|
133 | .D CK(IBDFCLIN) I QUIT=1 D
|
---|
134 | ..I $D(VAUTC),VAUTC=0,'$D(VAUTC(IBDFCLIN)) Q
|
---|
135 | ..I $D(VAUTN),VAUTN=0,'$D(VAUTN(IBDFPAT)) Q
|
---|
136 | ..N IBDFXPC,IBDFYPC
|
---|
137 | ..S IBDFXPC=$S($D(VAUTC):$P(IBDFNODE,"^",1),$D(VAUTG):$P(IBDFNODE,"^",1),1:$P(^DPT(IBDFPAT,0),"^",1))
|
---|
138 | ..S IBDFYPC=$S($D(VAUTC)!($D(VAUTG)):$P(^DPT(IBDFPAT,0),"^",1),1:$P(IBDFNODE,"^",1))
|
---|
139 | ..I '$D(VAUTG) S ^TMP("FTRK",$J,$S($D(^DG(40.8,+$P(IBDFNODE,"^",15),0)):$P(^DG(40.8,$P(IBDFNODE,"^",15),0),"^",1),1:"NOT SPECIFIED"),IBDFXPC,IBDFT,IBDFYPC,IBDFPAT,IBDFTRK)=IBDFCLIN_"^"_^IBD(357.96,IBDFTRK,0)
|
---|
140 | ..I $D(VAUTG) D
|
---|
141 | ...N IBDFGRP,IBDFCLNN,IBDFCLN,IBDFGR
|
---|
142 | ...S (IBDFCLN,IBDFGR)=0
|
---|
143 | ...F IBDFGR=0:0 S IBDFGR=$O(VAUTG(IBDFGR)) Q:IBDFGR']"" F IBDFCLN=0:0 S IBDFCLN=$O(VAUTG(IBDFGR,IBDFCLN)) Q:IBDFCLN']"" I IBDFCLN=IBDFCLIN D
|
---|
144 | ....N IBX,IBY
|
---|
145 | ....S IBX=$P($G(^IBD(357.99,IBDFGR,0)),"^"),IBY=$P($G(^SC(IBDFCLN,0)),"^")
|
---|
146 | ....S ^TMP("FTRK",$J,$S($D(^DG(40.8,+$P(IBDFNODE,"^",15),0)):$P(^DG(40.8,$P(IBDFNODE,"^",15),0),"^",1),1:"NOT SPECIFIED"),IBX,IBY,IBDFT,IBDFYPC,IBDFPAT,IBDFTRK)=IBDFCLIN_"^"_^IBD(357.96,IBDFTRK,0)
|
---|
147 | Q
|
---|
148 | ;
|
---|
149 | DNKA(DFN,APPT) ;
|
---|
150 | ; -- return did not keep appointment
|
---|
151 | N STATUS,DNKA
|
---|
152 | S DNKA=0
|
---|
153 | S STATUS=$P($G(^DPT(+$G(DFN),"S",+$G(APPT),0)),"^",2)
|
---|
154 | I STATUS]"" I "^N^C^NA^CA^PC^PCA^"[STATUS S DNKA=1_"^"_$S(STATUS["N":"NO SHOW",1:"CANCELED")
|
---|
155 | Q DNKA
|
---|