1 | PSO52EX ;BHAM ISC/AGV - API FOR ORIGINAL, REFILL, AND PARTIAL DATA ;07/13/06 10:30 am
|
---|
2 | ;;7.0;OUTPATIENT PHARMACY;**252,267**;DEC 1997;Build 3
|
---|
3 | ;
|
---|
4 | ;REFERENCE TO ^DPT SUPPORTED BY DBIA 10035
|
---|
5 | ;REFERENCE TO ^PSDRUG SUPPORTED BY DBIA 221
|
---|
6 | ;
|
---|
7 | EXTRACT(SDATE,EDATE,LIST) ;MAIN DRIVER
|
---|
8 | ;SDATE: START DATE OF RECORD RETRIEVAL [REQUIRED]
|
---|
9 | ;EDATE: END DATE OF RECORD RETRIEVAL [OPTIONAL]
|
---|
10 | ;LIST: SUBSCRIPT NAME USED IN ^TMP GLOBAL [REQUIRED]
|
---|
11 | ;
|
---|
12 | Q:$G(LIST)=""
|
---|
13 | K ^TMP($J,LIST)
|
---|
14 | I '$G(SDATE) S ^TMP($J,LIST,0)="-1^NO DATA FOUND" Q
|
---|
15 | I '$G(EDATE) S EDATE=DT
|
---|
16 | D SEND
|
---|
17 | Q
|
---|
18 | ;
|
---|
19 | SEND ;SENDS CONTROL TO $$CROSS. RECEIVES AND TRACKS COUNTS.
|
---|
20 | N ALCOUNT S ALCOUNT=$$CROSS("AL")
|
---|
21 | N AMCOUNT S AMCOUNT=$$CROSS("AM")
|
---|
22 | N TCOUNT S TCOUNT=ALCOUNT+AMCOUNT
|
---|
23 | IF TCOUNT>0 S ^TMP($J,LIST,0)=TCOUNT
|
---|
24 | ELSE S ^TMP($J,LIST,0)="-1^NO DATA FOUND"
|
---|
25 | Q
|
---|
26 | ;
|
---|
27 | CROSS(REF) ;SETS UP ^TMP GLOBAL. SENDS FOR ORIGINAL, REFILL AND/OR PARTIAL FILL DATA
|
---|
28 | N PSOIEN,PSOFILL,PSOCOUNT,DATE,END
|
---|
29 | S DATE=SDATE-.001,END=(EDATE+1),PSOIEN="",PSOFILL="",PSOCOUNT=0
|
---|
30 | F S DATE=$O(^PSRX(REF,DATE)) Q:'DATE!(END'>DATE) D
|
---|
31 | .F S PSOIEN=$O(^PSRX(REF,DATE,PSOIEN)) Q:'PSOIEN D
|
---|
32 | ..F S PSOFILL=$O(^PSRX(REF,DATE,PSOIEN,PSOFILL)) Q:PSOFILL="" D
|
---|
33 | ...S ^TMP($J,LIST,REF,DATE,PSOIEN,PSOFILL)=""
|
---|
34 | ...I REF="AL",PSOFILL=0 S PSOCOUNT=PSOCOUNT+1 D ORIG(PSOIEN) Q
|
---|
35 | ...I REF="AL",PSOFILL>0 S PSOCOUNT=PSOCOUNT+1 D REFILL(PSOIEN,PSOFILL) Q
|
---|
36 | ...I REF="AM" S PSOCOUNT=PSOCOUNT+1 D PART(PSOIEN,PSOFILL) Q
|
---|
37 | Q PSOCOUNT
|
---|
38 | ;
|
---|
39 | REFILL(IEN,FILL) ;REFILL
|
---|
40 | D:'$D(^TMP($J,LIST,IEN,.01)) ORIG(IEN)
|
---|
41 | N PSORFL S PSORFL=$G(^PSRX(IEN,1,FILL,0))
|
---|
42 | S ^TMP($J,LIST,IEN,"RF",FILL,.01)=$P(PSORFL,U,1)_"^"_$$FMTE^XLFDT($P(PSORFL,U,1),1)
|
---|
43 | S ^TMP($J,LIST,IEN,"RF",FILL,1)=$P(PSORFL,U,4)
|
---|
44 | S ^TMP($J,LIST,IEN,"RF",FILL,1.1)=$P(PSORFL,U,10)
|
---|
45 | S ^TMP($J,LIST,IEN,"RF",FILL,1.2)=$P(PSORFL,U,11)
|
---|
46 | S ^TMP($J,LIST,IEN,"RF",0)=$G(^TMP($J,LIST,IEN,"RF",0))+1
|
---|
47 | Q
|
---|
48 | ;
|
---|
49 | PART(IEN,FILL) ;PARTIAL FILL
|
---|
50 | D:'$D(^TMP($J,LIST,IEN,.01)) ORIG(IEN)
|
---|
51 | N PSOPART S PSOPART=$G(^PSRX(IEN,"P",FILL,0))
|
---|
52 | S ^TMP($J,LIST,IEN,"P",FILL,.01)=$P(PSOPART,U,1)_"^"_$$FMTE^XLFDT($P(PSOPART,U,1),1)
|
---|
53 | S ^TMP($J,LIST,IEN,"P",FILL,.04)=$P(PSOPART,U,4)
|
---|
54 | S ^TMP($J,LIST,IEN,"P",FILL,.041)=$P(PSOPART,U,10)
|
---|
55 | S ^TMP($J,LIST,IEN,"P",FILL,.042)=$P(PSOPART,U,11)
|
---|
56 | S ^TMP($J,LIST,IEN,"P",0)=$G(^TMP($J,LIST,IEN,"P",0))+1
|
---|
57 | Q
|
---|
58 | ;
|
---|
59 | ORIG(IEN) ;ORIGINAL FILL
|
---|
60 | N PSOORIG S PSOORIG=$G(^PSRX(IEN,0))
|
---|
61 | S ^TMP($J,LIST,IEN,.01)=$P(PSOORIG,U,1)
|
---|
62 | S ^TMP($J,LIST,IEN,2)=$S($P(PSOORIG,U,2)>0:$P(PSOORIG,U,2)_"^"_$P($G(^DPT($P($G(PSOORIG),U,2),0)),U,1),1:"")
|
---|
63 | S ^TMP($J,LIST,IEN,6)=$S($P(PSOORIG,U,6)>0:$P(PSOORIG,U,6)_"^"_$P($G(^PSDRUG($P($G(PSOORIG),U,6),0)),U,1),1:"")
|
---|
64 | S ^TMP($J,LIST,IEN,7)=$P(PSOORIG,U,7)
|
---|
65 | S ^TMP($J,LIST,IEN,8)=$P(PSOORIG,U,8)
|
---|
66 | S ^TMP($J,LIST,IEN,17)=$P(PSOORIG,U,17)
|
---|
67 | Q
|
---|
68 | ;
|
---|
69 | REF(SDATE,EDATE,LIST) ; "AD" XREF RETRIEVAL
|
---|
70 | ;SDATE: START DATE OF "AD" XREF RETRIEVAL [REQUIRED]
|
---|
71 | ;EDATE: END DATE OF "AD" XREF RETRIEVAL [OPTIONAL]
|
---|
72 | ;LIST: SUBSCRIPT NAME USED IN ^TMP GLOBAL [REQUIRED]
|
---|
73 | ;
|
---|
74 | Q:$G(LIST)=""
|
---|
75 | K ^TMP($J,LIST)
|
---|
76 | I '$G(SDATE) S ^TMP($J,LIST,0)="-1^NO DATA FOUND" Q
|
---|
77 | I '$G(EDATE) S EDATE=SDATE
|
---|
78 | N PSORXN,PSOFILL
|
---|
79 | S DATE=SDATE-.001,END=EDATE+1,PSORXN="",PSOFILL=""
|
---|
80 | F S DATE=$O(^PSRX("AD",DATE)) Q:'DATE!(END'>DATE) D
|
---|
81 | .F S PSORXN=$O(^PSRX("AD",DATE,PSORXN)) Q:'PSORXN D
|
---|
82 | ..F S PSOFILL=$O(^PSRX("AD",DATE,PSORXN,PSOFILL)) Q:PSOFILL="" D
|
---|
83 | ...S ^TMP($J,LIST,"AD",DATE,PSORXN,PSOFILL)=""
|
---|
84 | Q
|
---|
85 | ;
|
---|
86 | ARXREF(PSODATE,PSOIEN,PSOFILL) ; SUSPENSE STATUS CHECK
|
---|
87 | ;PSODATE: RELEASED DATE/TIME
|
---|
88 | ;PSOIEN: INTERNAL ENTRY NUMBER
|
---|
89 | ;PSOFILL: FILL NUMBER OF PRESCRIPTION
|
---|
90 | ;
|
---|
91 | I $G(PSODATE)=""!($G(PSOIEN)="")!($G(PSOFILL)="") Q 0
|
---|
92 | N RESULT S RESULT=0
|
---|
93 | I $D(^PSRX("AR",PSODATE,PSOIEN,PSOFILL)) S RESULT=1
|
---|
94 | Q RESULT
|
---|