1 | PXRMPDR ;SLC/AGP,PKR - Patient List Demographic report main routine ;11/16/2007
|
---|
2 | ;;2.0;CLINICAL REMINDERS;**4,6**;Feb 04, 2005;Build 123
|
---|
3 | ;
|
---|
4 | EN(PLIEN) ; -- main entry point for PXRM PATIENT LIST DEMOGRAPHIC
|
---|
5 | N ARRAY,DC,DDATA,DELIM,DTOUT,DUOUT
|
---|
6 | W @IOF
|
---|
7 | K ^TMP("PXRMPLD",$J),^TMP("PXRMPLN",$J)
|
---|
8 | S DELIM=0
|
---|
9 | OPTION ;
|
---|
10 | W !,"Select the items to include on the report."
|
---|
11 | ADDSEL D ADDSEL^PXRMPDRS(.DDATA,"ADD")
|
---|
12 | I $D(DTOUT)!$D(DUOUT) Q
|
---|
13 | APPSEL D APPSEL^PXRMPDRS(.DDATA,"APP")
|
---|
14 | I $D(DTOUT)!$D(DUOUT) G ADDSEL
|
---|
15 | DEMSEL D DEMSEL^PXRMPDRS(.DDATA,"DEM")
|
---|
16 | I $D(DTOUT)!$D(DUOUT) G APPSEL
|
---|
17 | PFACSEL S DDATA("PFAC",0)=$$ASKYN^PXRMEUT("N","Include the patient's preferred facility")
|
---|
18 | I $D(DTOUT)!$D(DUOUT) G DEMSEL
|
---|
19 | S DDATA("PFAC","LEN")=$S(DDATA("PFAC",0)=1:1,1:0)
|
---|
20 | ELIGSEL D ELIGSEL^PXRMPDRS(.DDATA,"ELIG")
|
---|
21 | I $D(DTOUT)!$D(DUOUT) G PFACSEL
|
---|
22 | DATASEL D DATASEL^PXRMPDRS(PLIEN,.DDATA,"FIND")
|
---|
23 | I $D(DTOUT)!$D(DUOUT) G ELIGSEL
|
---|
24 | INPSEL D INPSEL^PXRMPDRS(.DDATA,"INP")
|
---|
25 | I $D(DTOUT)!$D(DUOUT) G DATASEL
|
---|
26 | REMDATA D REMSEL^PXRMPDRS(PLIEN,.DDATA,"REM")
|
---|
27 | I $D(DTOUT)!$D(DUOUT) G INPSEL
|
---|
28 | S DELIM=$$ASKYN^PXRMEUT("Y","Delimited Report:")
|
---|
29 | I $D(DTOUT)!$D(DUOUT) G REMDATA
|
---|
30 | S DC=$S(DELIM:$$DELIMSEL^PXRMXSD,1:U)
|
---|
31 | I $D(DTOUT)!$D(DUOUT) G OPTION
|
---|
32 | DEVICE ;
|
---|
33 | N DESC,DIR,PXRMQUE,RTN,SAVE,%ZIS
|
---|
34 | S %ZIS="M"
|
---|
35 | S DESC="Patient List Demographic Report"
|
---|
36 | S RTN="GETPDATA^PXRMPDR(DELIM,DC,PLIEN,.DDATA)"
|
---|
37 | S SAVE("DELIM")="",SAVE("DC")="",SAVE("PLIEN")=""
|
---|
38 | S SAVE("DDATA(")=""
|
---|
39 | S PXRMQUE=$$DEVICE^PXRMXQUE(RTN,DESC,.SAVE,.%ZIS,1)
|
---|
40 | I PXRMQUE'="" G EXIT
|
---|
41 | I $D(DTOUT)!$D(DUOUT) G EXIT
|
---|
42 | S DIR(0)="E" D ^DIR
|
---|
43 | EXIT D KVA^VADPT
|
---|
44 | K ^TMP("PXRMPLD",$J),^TMP("PXRMPLN",$J)
|
---|
45 | Q
|
---|
46 | ;
|
---|
47 | GETPDATA(DELIM,DC,PLIEN,DDATA) ;
|
---|
48 | N DATA,DATE,DCREAT,DFN,DTYPE,ERRMSG
|
---|
49 | N GETADD,GETAPP,GETDEM,GETELIG,GETFIND,GETINP,GETREM
|
---|
50 | N IEN,IND,JND,KND,LND
|
---|
51 | N LISTNAME,PIECE
|
---|
52 | N PDATA,PNAME,RIEN,TDATA
|
---|
53 | K ^TMP("PXRMPD",$J)
|
---|
54 | S LISTNAME=$P(^PXRMXP(810.5,PLIEN,0),U,1)
|
---|
55 | S DCREAT=$P(^PXRMXP(810.5,PLIEN,0),U,4)
|
---|
56 | S GETDEM=$S(DDATA("DEM","LEN")>0:1,1:0)
|
---|
57 | S GETADD=$S(DDATA("ADD","LEN")>0:1,1:0)
|
---|
58 | S GETINP=$S(DDATA("INP","LEN")>0:1,1:0)
|
---|
59 | S GETELIG=$S(DDATA("ELIG","LEN")>0:1,1:0)
|
---|
60 | S GETAPP=$S(DDATA("APP","LEN")>0:1,1:0)
|
---|
61 | S GETFIND=$S(DDATA("FIND","LEN")>0:1,1:0)
|
---|
62 | S GETREM=$S(DDATA("REM","LEN")>0:1,1:0)
|
---|
63 | S IEN=0
|
---|
64 | F S IEN=+$O(^PXRMXP(810.5,PLIEN,30,IEN)) Q:IEN=0 D
|
---|
65 | . S DFN=$P(^PXRMXP(810.5,PLIEN,30,IEN,0),U,1) I DFN="" Q
|
---|
66 | .;#DBIA 10035
|
---|
67 | . S PNAME=$P($G(^DPT(DFN,0)),U,1)
|
---|
68 | . I PNAME="" S PNAME="UNDEFINED"_DFN
|
---|
69 | . S ^TMP("PXRMPLN",$J,PNAME,DFN)=""
|
---|
70 | . S PDATA=""
|
---|
71 | . I GETDEM D
|
---|
72 | .. N VADM
|
---|
73 | .. D DEM^VADPT
|
---|
74 | .. F IND=1:1:DDATA("DEM","LEN") D
|
---|
75 | ... S JND=$P(DDATA("DEM"),",",IND)
|
---|
76 | ... S KND=0
|
---|
77 | ... F S KND=$O(DDATA("DEM",JND,KND)) Q:KND="" D
|
---|
78 | .... S PIECE=$P(DDATA("DEM",JND,KND),U,2)
|
---|
79 | .... S TDATA=$P(VADM(KND),U,PIECE)
|
---|
80 | .... S LND=""
|
---|
81 | .... F S LND=$O(VADM(KND,LND)) Q:LND="" D
|
---|
82 | ..... I TDATA'="" S TDATA=TDATA_"~"
|
---|
83 | ..... S TDATA=TDATA_$P(VADM(KND,LND),U,PIECE)
|
---|
84 | .... I KND=2,'DDATA("DEM","FULLSSN") S TDATA=$E(TDATA,8,11)
|
---|
85 | .... S $P(PDATA,U,KND)=TDATA
|
---|
86 | .. I PDATA'="" S ^TMP("PXRMPLD",$J,DFN,"DEM")=PDATA,PDATA=""
|
---|
87 | . I DDATA("PFAC",0)=1 D
|
---|
88 | ..;DBIA #1850
|
---|
89 | .. S TDATA=$$GET1^DIQ(2,DFN,27.02,"E","","ERRMSG")
|
---|
90 | .. I TDATA="" S TDATA="NONE"
|
---|
91 | .. S ^TMP("PXRMPLD",$J,DFN,"PFAC")=TDATA
|
---|
92 | . I GETADD D
|
---|
93 | .. N VAPA
|
---|
94 | .. D ADD^VADPT
|
---|
95 | .. F IND=1:1:DDATA("ADD","LEN") D
|
---|
96 | ... S JND=$P(DDATA("ADD"),",",IND)
|
---|
97 | ... S KND=0
|
---|
98 | ... F S KND=$O(DDATA("ADD",JND,KND)) Q:KND="" D
|
---|
99 | .... S PIECE=$P(DDATA("ADD",JND,KND),U,2)
|
---|
100 | .... S TDATA=$P(VAPA(KND),U,PIECE)
|
---|
101 | .... S $P(PDATA,U,KND)=TDATA
|
---|
102 | .. I PDATA'="" S ^TMP("PXRMPLD",$J,DFN,"ADD")=PDATA,PDATA=""
|
---|
103 | . I GETINP D
|
---|
104 | .. N VAIP
|
---|
105 | .. D INP^VADPT
|
---|
106 | .. F IND=1:1:DDATA("INP","LEN") D
|
---|
107 | ... S JND=$P(DDATA("INP"),",",IND)
|
---|
108 | ... S KND=0
|
---|
109 | ... F S KND=$O(DDATA("INP",JND,KND)) Q:KND="" D
|
---|
110 | .... S PIECE=$P(DDATA("INP",JND,KND),U,2)
|
---|
111 | .... S TDATA=$P(VAIN(KND),U,PIECE)
|
---|
112 | .... S $P(PDATA,U,KND)=TDATA
|
---|
113 | .. I PDATA'="" S ^TMP("PXRMPLD",$J,DFN,"INP")=PDATA,PDATA=""
|
---|
114 | . I GETELIG D
|
---|
115 | .. N VAEL
|
---|
116 | .. D ELIG^VADPT
|
---|
117 | .. F IND=1:1:DDATA("ELIG","LEN") D
|
---|
118 | ... S JND=$P(DDATA("ELIG"),",",IND)
|
---|
119 | ... S KND=0
|
---|
120 | ... F S KND=$O(DDATA("ELIG",JND,KND)) Q:KND="" D
|
---|
121 | .... S PIECE=$P(DDATA("ELIG",JND,KND),U,2)
|
---|
122 | .... S TDATA=$P(VAEL(KND),U,PIECE)
|
---|
123 | .... I KND=4 S TDATA=$S(TDATA=1:"YES",1:"NO")
|
---|
124 | .... S $P(PDATA,U,KND)=TDATA
|
---|
125 | .. I PDATA'="" S ^TMP("PXRMPLD",$J,DFN,"ELIG")=PDATA,PDATA=""
|
---|
126 | . D KVA^VADPT
|
---|
127 | . I GETREM D
|
---|
128 | .. S IND=0
|
---|
129 | .. F S IND=$O(DDATA("REM","IEN",IND)) Q:IND="" D
|
---|
130 | ... S PDATA=$G(^PXRMXP(810.5,PLIEN,30,IEN,"REM",IND,0))
|
---|
131 | ... I PDATA="" Q
|
---|
132 | ... S RIEN=$P(PDATA,U,1)
|
---|
133 | ... S ^TMP("PXRMPLD",$J,DFN,"REM",RIEN)=PDATA,PDATA=""
|
---|
134 | . I GETFIND D
|
---|
135 | .. N DL
|
---|
136 | .. F IND=1:1:DDATA("FIND","LEN") D
|
---|
137 | ... S JND=$P(DDATA("FIND"),",",IND)
|
---|
138 | ... S DTYPE=DDATA("FIND",JND,JND)
|
---|
139 | ... S KND=$O(^PXRMXP(810.5,PLIEN,30,IEN,"DATA","B",DTYPE,""))
|
---|
140 | ... S DL=$S(KND="":0,1:$L(^PXRMXP(810.5,PLIEN,30,IEN,"DATA",KND,0),U))
|
---|
141 | ... S DATA=$S(KND="":"",1:$P(^PXRMXP(810.5,PLIEN,30,IEN,"DATA",KND,0),U,2,DL))
|
---|
142 | ... S ^TMP("PXRMPLD",$J,DFN,"FIND",JND)=DATA
|
---|
143 | ;Get appointment data for all patients on the list.
|
---|
144 | I GETAPP D
|
---|
145 | . N ARRAY,COUNT
|
---|
146 | . S ARRAY(1)=DT,ARRAY(3)="I;R"
|
---|
147 | . S ARRAY(4)="^TMP($J,""PXRMPL""",ARRAY("FLDS")=""
|
---|
148 | . F IND=1:1:DDATA("APP","LEN") D
|
---|
149 | .. S JND=$P(DDATA("APP"),",",IND)
|
---|
150 | .. S KND=0
|
---|
151 | .. F S KND=$O(DDATA("APP",JND,KND)) Q:KND="" S ARRAY("FLDS")=ARRAY("FLDS")_KND_";"
|
---|
152 | . K ^TMP($J,"PXRMPL"),^TMP($J,"SDAMA301")
|
---|
153 | . S IND=0
|
---|
154 | . F S IND=+$O(^PXRMXP(810.5,PLIEN,30,IND)) Q:IND=0 D
|
---|
155 | .. S DFN=$P(^PXRMXP(810.5,PLIEN,30,IND,0),U,1)
|
---|
156 | .. I DFN'="" S ^TMP($J,"PXRMPL",DFN)=""
|
---|
157 | . S COUNT=$$SDAPI^SDAMA301(.ARRAY)
|
---|
158 | . I COUNT=-1 D Q
|
---|
159 | .. D APPERR^PXRMPDRS
|
---|
160 | .. S DDATA("APP","ERROR")=""
|
---|
161 | .. K ^TMP($J,"PXRMPL"),^TMP($J,"SDAMA301")
|
---|
162 | . F IND=1:1:COUNT D
|
---|
163 | .. S DFN=""
|
---|
164 | .. F S DFN=$O(^TMP($J,"SDAMA301",DFN)) Q:DFN="" D
|
---|
165 | ... S (JND,KND)=0
|
---|
166 | ... F S JND=$O(^TMP($J,"SDAMA301",DFN,JND)) Q:JND="" D
|
---|
167 | .... S DATE=0
|
---|
168 | .... F S DATE=$O(^TMP($J,"SDAMA301",DFN,JND,DATE)) Q:DATE="" D
|
---|
169 | ..... S KND=KND+1
|
---|
170 | ..... S TDATA=^TMP($J,"SDAMA301",DFN,JND,DATE)
|
---|
171 | ..... S PDATA=$$FMTE^XLFDT($P(TDATA,U,1))
|
---|
172 | ..... S TDATA=$P(TDATA,U,2),TDATA=$P(TDATA,";",2)
|
---|
173 | ..... S PDATA=PDATA_U_TDATA
|
---|
174 | ..... S ^TMP("PXRMPLD",$J,DFN,"APP",KND)=PDATA
|
---|
175 | . K ^TMP($J,"PXRMPL"),^TMP($J,"SDAMA301")
|
---|
176 | I DELIM=1 D DELIMPR^PXRMPDRP(DC,PLIEN,.DDATA)
|
---|
177 | I DELIM=0 D REGPR^PXRMPDRP(PLIEN,.DDATA)
|
---|
178 | Q
|
---|
179 | ;
|
---|
180 | LENGTH(STR,STR1) ;
|
---|
181 | I ($L(STR)+$L(STR1))>245 W !,STR S STR=STR1
|
---|
182 | E S STR=STR_U_STR1,STR1=""
|
---|
183 | Q
|
---|
184 | ;
|
---|
185 | PAGE ;
|
---|
186 | I ($E(IOST,1,2)="C-")&(IO=IO(0)) D
|
---|
187 | .S DIR(0)="E"
|
---|
188 | .W !
|
---|
189 | .D ^DIR K DIR
|
---|
190 | I $D(DUOUT)!($D(DTOUT))!($D(DIROUT)) S DONE=1 Q
|
---|
191 | W:$D(IOF) @IOF
|
---|
192 | S PAGE=PAGE+1
|
---|
193 | I ($E(IOST,1,2)="C-")&(IO=IO(0)) W @IOF
|
---|
194 | Q
|
---|
195 | ;
|
---|