1 | PSO52API ;BHAM ISC/SAB- Encap II API to return Rx data ;04/07/05 10:30 am
|
---|
2 | ;;7.0;OUTPATIENT PHARMACY;**213,229,252**;DEC 1997;Build 12
|
---|
3 | ;
|
---|
4 | ;Reference to ^PS(55 supported by DBIA 2228
|
---|
5 | ;
|
---|
6 | RX(DFN,LIST,IEN,RX,NODE,SDATE,EDATE) ;
|
---|
7 | ;DFN: IEN from the PATIENT file (#2) [REQUIRED]
|
---|
8 | ;LIST: Subscript name used in ^TMP global [REQUIRED]
|
---|
9 | ;IEN: Internal prescription number [optional]
|
---|
10 | ;RX#: RX # field (#.01) of the PRESCRIPTION file (#52) [optional]
|
---|
11 | ;NODE: Determines data elements returned [optional]
|
---|
12 | ;SDATE: Start Date [optional]
|
---|
13 | ;EDATE: End Date [optional]
|
---|
14 | ;
|
---|
15 | Q:'$G(DFN) Q:$G(LIST)=""
|
---|
16 | N DA,DR,PST,DIC,DIQ,ND,LK,DTE,DAT,I,X,D0 K ^TMP($J,LIST) S ^TMP($J,LIST,DFN,0)=0
|
---|
17 | I $G(IEN) D PROCESS G CLEAN
|
---|
18 | I $G(RX)]"",'$G(IEN) S IEN=$O(^PSRX("B",RX,0)) D G CLEAN
|
---|
19 | .I 'IEN S ^TMP($J,LIST,DFN,0)="-1^NO DATA FOUND" Q
|
---|
20 | .D PROCESS
|
---|
21 | D DATE
|
---|
22 | CLEAN F I=0:0 S I=$O(^TMP($J,LIST,DFN,I)) Q:'I S ^TMP($J,LIST,DFN,0)=^TMP($J,LIST,DFN,0)+1
|
---|
23 | I ^TMP($J,LIST,DFN,0)=0 S ^TMP($J,LIST,DFN,0)="-1^NO DATA FOUND"
|
---|
24 | K DA,DR,DIC,ND,DAT,PST,LK,DIQ,DTE,I,X
|
---|
25 | Q
|
---|
26 | PROCESS ;
|
---|
27 | I DFN'=$P($G(^PSRX(IEN,0)),"^",2) S ^TMP($J,LIST,IEN,0)="-1^NO DATA FOUND (MISMATCHED PATIENT)" Q
|
---|
28 | I $G(^PSRX(IEN,0))']"" S ^TMP($J,LIST,IEN,0)="-1^NO RX DATA FOUND" Q
|
---|
29 | I $G(NODE)']"" D ZE,TW,TH,MI,ST,RF,CM,AT,LB,PT^PSO52B,SD^PSO52B,TB^PSO52B,OI^PSO52B,MLT^PSO52B S DAT="I" D IB Q
|
---|
30 | D ST F LK=1:1:$L(NODE,",") S DAT=$P(NODE,",",LK),ND=$P(DAT,"^") D
|
---|
31 | .I ND=0 D ZE Q
|
---|
32 | .I ND=2 D ZE,TW Q
|
---|
33 | .I ND=3 D TW,TH Q
|
---|
34 | .I ND="R" D RF Q
|
---|
35 | .I ND="I" D IB Q
|
---|
36 | .I ND="P" D PT^PSO52B Q
|
---|
37 | .I ND="O" D OI^PSO52B Q
|
---|
38 | .I ND="T" D TB^PSO52B Q
|
---|
39 | .I ND="L" D LB Q
|
---|
40 | .I ND="S" D SD^PSO52B Q
|
---|
41 | .I ND="M" D MI Q
|
---|
42 | .I ND="C" D CM Q
|
---|
43 | .I ND="A" D AT Q
|
---|
44 | .I ND="ST" D ST Q
|
---|
45 | .I ND="ICD" D MLT^PSO52B Q
|
---|
46 | .S ^TMP($J,LIST,DFN,IEN,"INVALID REQUEST",ND)="Invalid Data Requested"
|
---|
47 | Q
|
---|
48 | ZE ;zero
|
---|
49 | K PST S DIC=52,DA=IEN,DR=".01:9;10.3;10.6;11;16;17" D DIQ
|
---|
50 | F DR=.01,1,2,3,4,5,6,6.5,7,8,9,10.3,10.6,11,16,17 D
|
---|
51 | .I PST(52,DA,DR,"E")'=PST(52,DA,DR,"I") S ^TMP($J,LIST,DFN,IEN,DR)=PST(52,DA,DR,"I")_"^"_PST(52,DA,DR,"E") Q
|
---|
52 | .S ^TMP($J,LIST,DFN,IEN,DR)=PST(52,DA,DR,"I")
|
---|
53 | K DA,DR,PST,DIC,DIQ
|
---|
54 | Q
|
---|
55 | TW ;two
|
---|
56 | Q:'$D(^PSRX(IEN,2))
|
---|
57 | K PST S DIC=52,DA=IEN,DR="20:31;32.1;32.2;32.3;104" D DIQ
|
---|
58 | F DR=20,21,22,23,24,25,26,27,28,29,30,31,32.1,32.2,32.3,104 D
|
---|
59 | .I PST(52,DA,DR,"E")'=PST(52,DA,DR,"I") S ^TMP($J,LIST,DFN,IEN,DR)=PST(52,DA,DR,"I")_"^"_PST(52,DA,DR,"E") Q
|
---|
60 | .S ^TMP($J,LIST,DFN,IEN,DR)=PST(52,DA,DR,"I")
|
---|
61 | K DA,DR,PST,DIC,DIQ
|
---|
62 | Q
|
---|
63 | TH ;three
|
---|
64 | Q:'$D(^PSRX(IEN,3))
|
---|
65 | K PST S DIC=52,DA=IEN,DR="12;26.1;34.1;101;102;102.1;102.2;109;112" D DIQ
|
---|
66 | F DR=12,26.1,34.1,101,102,102.1,102.2,109,112 D
|
---|
67 | .I PST(52,DA,DR,"E")'=PST(52,DA,DR,"I") S ^TMP($J,LIST,DFN,IEN,DR)=PST(52,DA,DR,"I")_"^"_PST(52,DA,DR,"E") Q
|
---|
68 | .S ^TMP($J,LIST,DFN,IEN,DR)=PST(52,DA,DR,"I")
|
---|
69 | K DA,DR,PST,DIC,DIQ
|
---|
70 | Q
|
---|
71 | MI ;sig
|
---|
72 | I $P($G(^PSRX(IEN,"SIG")),"^",2) D Q
|
---|
73 | .I '$O(^PSRX(IEN,"SIG1",0)) S ^TMP($J,LIST,DFN,IEN,"M",0)="-1^NO DATA FOUND" Q
|
---|
74 | .F I=0:0 S I=$O(^PSRX(IEN,"SIG1",I)) Q:'I S ^TMP($J,LIST,DFN,IEN,"M",I,0)=^PSRX(IEN,"SIG1",I,0),^TMP($J,LIST,DFN,IEN,"M",0)=$G(^TMP($J,LIST,DFN,IEN,"M",0))+1
|
---|
75 | I $P($G(^PSRX(IEN,"SIG")),"^")']"" S ^TMP($J,LIST,DFN,IEN,"M",0)="-1^NO DATA FOUND" Q
|
---|
76 | S X=$P($G(^PSRX(IEN,"SIG")),"^") D SIG^PSOHELP S ^TMP($J,LIST,DFN,IEN,"M",1,0)=$E(INS1,2,9999999),^TMP($J,LIST,DFN,IEN,"M",0)=1
|
---|
77 | K X,INS1
|
---|
78 | Q
|
---|
79 | ST ;status
|
---|
80 | I DT>$P(^PSRX(IEN,2),"^",6),$P(^PSRX(IEN,"STA"),"^")<11 D
|
---|
81 | .N PSOEXRX,PSOEXSTA,ORN,PIFN,PSUSD,PRFDT,PDA,PSST
|
---|
82 | .S PSOEXRX=IEN D EN2^PSOMAUEX K PSOEXRX,PSONM,PSONMX
|
---|
83 | K PST S DIC=52,DA=IEN,DR=".01;100" D DIQ
|
---|
84 | S ^TMP($J,LIST,DFN,IEN,100)=PST(52,DA,100,"I")_"^"_PST(52,DA,100,"E")
|
---|
85 | S ^TMP($J,LIST,"B",PST(52,DA,.01,"E"),IEN)=""
|
---|
86 | K DA,DR,PST,DIC,DIQ
|
---|
87 | Q
|
---|
88 | RF ;refill
|
---|
89 | I '$O(^PSRX(IEN,1,0)) S ^TMP($J,LIST,DFN,IEN,"RF",0)="-1^NO DATA FOUND" Q
|
---|
90 | I $P($G(DAT),"^",3) S DA(52.1)=$P(DAT,"^",3) D RFD K DA,DR,PST,DIC,DIQ Q
|
---|
91 | F RF=0:0 S RF=$O(^PSRX(IEN,1,RF)) Q:'RF S DA(52.1)=RF D RFD
|
---|
92 | K DA,DR,PST,DIC,DIQ,RF
|
---|
93 | Q
|
---|
94 | RFD K PST S DR(52.1)=".01:8;10.1;12;13;14;15;17",DIC=52,DA=IEN,DR=52 D DIQ
|
---|
95 | I $P($G(DAT),"^",3),'$G(PST(52.1,DA(52.1),.01,"I")) S ^TMP($J,LIST,DFN,IEN,"RF",0)="-1^NO DATA FOUND" Q
|
---|
96 | S ^TMP($J,LIST,DFN,IEN,"RF",0)=$G(^TMP($J,LIST,DFN,IEN,"RF",0))+1
|
---|
97 | F DR=.01,1,1.1,1.2,2,3,4,5,6,7,8,10.1,12,13,14,15,17 D
|
---|
98 | .I PST(52.1,DA(52.1),DR,"E")'=PST(52.1,DA(52.1),DR,"I") S ^TMP($J,LIST,DFN,IEN,"RF",DA(52.1),DR)=PST(52.1,DA(52.1),DR,"I")_"^"_PST(52.1,DA(52.1),DR,"E") Q
|
---|
99 | .S ^TMP($J,LIST,DFN,IEN,"RF",DA(52.1),DR)=PST(52.1,DA(52.1),DR,"I")
|
---|
100 | Q
|
---|
101 | IB ;ib ori
|
---|
102 | I $P($G(DAT),"^",2)="R" D IBR Q
|
---|
103 | I $G(^PSRX(IEN,"IB"))']"" S ^TMP($J,LIST,DFN,IEN,"IB",0)="-1^NO DATA FOUND" Q
|
---|
104 | K PST S DIC=52,DA=IEN,DR="105;106;106.5;106.6" D DIQ
|
---|
105 | F DR=105,106,106.5,106.6 D
|
---|
106 | .I PST(52,DA,DR,"E")'=PST(52,DA,DR,"I") S ^TMP($J,LIST,DFN,IEN,DR)=PST(52,DA,DR,"I")_"^"_PST(52,DA,DR,"E") Q
|
---|
107 | .S ^TMP($J,LIST,DFN,IEN,DR)=PST(52,DA,DR,"E")
|
---|
108 | K DA,DR,PST,DIC,DIQ
|
---|
109 | I $P($G(DAT),"^",2)="" D IBR Q
|
---|
110 | Q
|
---|
111 | IBR ;ib ref
|
---|
112 | I '$O(^PSRX(IEN,1,0)) S ^TMP($J,LIST,DFN,IEN,"IB",0)="-1^NO DATA FOUND" Q
|
---|
113 | I $P($G(DAT),"^",2)="R",$P($G(DAT),"^",3) S DA(52.1)=$P(DAT,"^",3) D IBS K DA,DR,PST,DIC,DIQ Q
|
---|
114 | N IB F IB=0:0 S IB=$O(^PSRX(IEN,1,IB)) Q:'IB S DA(52.1)=IB D IBS
|
---|
115 | I '$G(^TMP($J,LIST,DFN,IEN,"IB",0)) K ^TMP($J,LIST,DFN,IEN,"IB") S ^TMP($J,LIST,DFN,IEN,"IB",0)="-1^NO DATA FOUND"
|
---|
116 | K DA,DR,PST,DIC,DIQ,IB
|
---|
117 | Q
|
---|
118 | IBS I $P($G(DAT),"^",3),'$G(^PSRX(IEN,1,DA(52.1),"IB")) S ^TMP($J,LIST,DFN,IEN,"IB",0)="-1^NO DATA FOUND" Q
|
---|
119 | I '$D(^PSRX(IEN,1,DA(52.1),"IB")) S ^TMP($J,LIST,DFN,IEN,"IB",DA(52.1),0)="-1^NO DATA FOUND" Q
|
---|
120 | K PST S DR(52.1)="9;9.1",DIC=52,DA=IEN,DR=52 D DIQ
|
---|
121 | S ^TMP($J,LIST,DFN,IEN,"IB",0)=$G(^TMP($J,LIST,DFN,IEN,"IB",0))+1
|
---|
122 | F DR=9,9.1 D
|
---|
123 | .I PST(52.1,DA(52.1),DR,"E")'=PST(52.1,DA(52.1),DR,"I") S ^TMP($J,LIST,DFN,IEN,"IB",DA(52.1),DR)=PST(52.1,DA(52.1),DR,"I")_"^"_PST(52.1,DA(52.1),DR,"E") Q
|
---|
124 | .S ^TMP($J,LIST,DFN,IEN,"IB",DA(52.1),DR)=PST(52.1,DA(52.1),DR,"I")
|
---|
125 | Q
|
---|
126 | CM ;cmop
|
---|
127 | I '$O(^PSRX(IEN,4,0)) S ^TMP($J,LIST,DFN,IEN,"C",0)="-1^NO DATA FOUND" Q
|
---|
128 | N CM F CM=0:0 S CM=$O(^PSRX(IEN,4,CM)) Q:'CM S DA(52.01)=CM D CMP
|
---|
129 | K DA,DR,PST,DIC,DIQ,CM
|
---|
130 | Q
|
---|
131 | CMP S ^TMP($J,LIST,DFN,IEN,"C",0)=$G(^TMP($J,LIST,DFN,IEN,"C",0))+1
|
---|
132 | K PST S DR(52.01)="2;3;4",DIC=52,DA=IEN,DR=400 D DIQ
|
---|
133 | F DR=2,3,4 D
|
---|
134 | .I PST(52.01,DA(52.01),DR,"E")'=PST(52.01,DA(52.01),DR,"I") S ^TMP($J,LIST,DFN,IEN,"C",DA(52.01),DR)=PST(52.01,DA(52.01),DR,"I")_"^"_PST(52.01,DA(52.01),DR,"E") Q
|
---|
135 | .S ^TMP($J,LIST,DFN,IEN,"C",DA(52.01),DR)=PST(52.01,DA(52.01),DR,"I")
|
---|
136 | Q
|
---|
137 | AT ;activity log
|
---|
138 | I '$O(^PSRX(IEN,"A",0)) S ^TMP($J,LIST,DFN,IEN,"A",0)="-1^NO DATA FOUND" Q
|
---|
139 | N AT F AT=0:0 S AT=$O(^PSRX(IEN,"A",AT)) Q:'AT S DA(52.3)=AT D ATP
|
---|
140 | K DA,DR,PST,DIC,DIQ,AT
|
---|
141 | Q
|
---|
142 | ATP K PST S DR(52.3)=".01;.02;.03;.04;.05" S DIC=52,DA=IEN,DR=40 D DIQ
|
---|
143 | S ^TMP($J,LIST,DFN,IEN,"A",0)=$G(^TMP($J,LIST,DFN,IEN,"A",0))+1
|
---|
144 | F DR=.01,.02,.03,.04,.05 D
|
---|
145 | .I DR=.04 S ^TMP($J,LIST,DFN,IEN,"A",DA(52.3),DR)=PST(52.3,DA(52.3),DR,"E") Q
|
---|
146 | .I PST(52.3,DA(52.3),DR,"E")'=PST(52.3,DA(52.3),DR,"I") S ^TMP($J,LIST,DFN,IEN,"A",DA(52.3),DR)=PST(52.3,DA(52.3),DR,"I")_"^"_PST(52.3,DA(52.3),DR,"E") Q
|
---|
147 | .S ^TMP($J,LIST,DFN,IEN,"A",DA(52.3),DR)=PST(52.3,DA(52.3),DR,"I")
|
---|
148 | Q
|
---|
149 | LB ;label log
|
---|
150 | I '$O(^PSRX(IEN,"L",0)) S ^TMP($J,LIST,DFN,IEN,"L",0)="-1^NO DATA FOUND" Q
|
---|
151 | N LB F LB=0:0 S LB=$O(^PSRX(IEN,"L",LB)) Q:'LB S DA(52.032)=LB D LBP
|
---|
152 | K DA,DR,PST,DIC,DIQ,LB
|
---|
153 | Q
|
---|
154 | LBP S ^TMP($J,LIST,DFN,IEN,"L",0)=$G(^TMP($J,LIST,DFN,IEN,"L",0))+1
|
---|
155 | K PST S DR(52.032)=".01;1;2;3;4" S DIC=52,DA=IEN,DR=32 D DIQ
|
---|
156 | F DR=.01,1,2,3,4 D
|
---|
157 | .I DR=1 S ^TMP($J,LIST,DFN,IEN,"L",DA(52.032),DR)=PST(52.032,DA(52.032),DR,"E") Q
|
---|
158 | .I PST(52.032,DA(52.032),DR,"E")'=PST(52.032,DA(52.032),DR,"I") S ^TMP($J,LIST,DFN,IEN,"L",DA(52.032),DR)=PST(52.032,DA(52.032),DR,"I")_"^"_PST(52.032,DA(52.032),DR,"E") Q
|
---|
159 | .S ^TMP($J,LIST,DFN,IEN,"L",DA(52.032),DR)=PST(52.032,DA(52.032),DR,"I")
|
---|
160 | K DA,DR,PST,DIC,DIQ
|
---|
161 | Q
|
---|
162 | DATE ;date range
|
---|
163 | I $G(SDATE) S DTE=SDATE-1 D Q
|
---|
164 | .I $G(EDATE) D Q
|
---|
165 | ..F S DTE=$O(^PS(55,DFN,"P","A",DTE)) Q:'DTE!(DTE>EDATE) F IEN=0:0 S IEN=$O(^PS(55,DFN,"P","A",DTE,IEN)) Q:'IEN D:$P($G(^PSRX(IEN,"STA")),"^")'=13 PROCESS
|
---|
166 | .F S DTE=$O(^PS(55,DFN,"P","A",DTE)) Q:'DTE F IEN=0:0 S IEN=$O(^PS(55,DFN,"P","A",DTE,IEN)) Q:'IEN D:$P($G(^PSRX(IEN,"STA")),"^")'=13 PROCESS
|
---|
167 | I $G(EDATE),'$G(SDATE) S DTE=DT-1 D Q
|
---|
168 | .F S DTE=$O(^PS(55,DFN,"P","A",DTE)) Q:'DTE!(DTE>EDATE) F IEN=0:0 S IEN=$O(^PS(55,DFN,"P","A",DTE,IEN)) Q:'IEN D:$P($G(^PSRX(IEN,"STA")),"^")'=13 PROCESS
|
---|
169 | S DTE=DT-1 F S DTE=$O(^PS(55,DFN,"P","A",DTE)) Q:'DTE F IEN=0:0 S IEN=$O(^PS(55,DFN,"P","A",DTE,IEN)) Q:'IEN D:$P($G(^PSRX(IEN,"STA")),"^")'=13 PROCESS
|
---|
170 | Q
|
---|
171 | PROF(DFN,LIST,SDATE,EDATE) ;
|
---|
172 | D ^PSO52AP1
|
---|
173 | Q
|
---|
174 | DIQ ;process fields
|
---|
175 | S DIQ="PST",DIQ(0)="IE" D EN^DIQ1
|
---|
176 | Q
|
---|