| 1 | PSOPRA ;BIR/JLC/MHA - INTERNET PRESCRIPTION REFILL APIS ; 4/14/05 4:51pm | 
|---|
| 2 | ;;7.0;OUTPATIENT PHARMACY;**116,151,204,264**;DEC 1997;Build 19 | 
|---|
| 3 | ; | 
|---|
| 4 | Q | 
|---|
| 5 | AP1(PSODFN,PSORX) ;ACCEPT REQUEST | 
|---|
| 6 | ; Input:  PSODFN (required) - Patient IEN Number | 
|---|
| 7 | ;         PSORX  (required) - Prescription Number | 
|---|
| 8 | ; Output: PSORET - Return Value | 
|---|
| 9 | ;         See IA# 3768 for description and values | 
|---|
| 10 | ; | 
|---|
| 11 | N PSORET,PSRX,PSRXD,IEN,PSORR,PSOICN,SITE,PSOSITE | 
|---|
| 12 | I $G(PSODFN)="" S PSORET=-4 G QUITAP1 | 
|---|
| 13 | S PSOICN=+$$GETICN^MPIF001(PSODFN) | 
|---|
| 14 | I +$G(PSOICN)=-1 S PSORET=-4 G QUITAP1 | 
|---|
| 15 | I $G(PSORX)="" S PSORET=-3 G QUITAP1 | 
|---|
| 16 | I $O(^PSRX("B",PSORX,""))="" S PSORET=-3 G QUITAP1 | 
|---|
| 17 | I '$D(^PSRX("B",PSORX)) S PSORET=-3 G QUITAP1 | 
|---|
| 18 | S PSRX=$O(^PSRX("B",PSORX,"")),PSRXD=$G(^PSRX(PSRX,0)) | 
|---|
| 19 | I PSRXD="" S PSORET=-3 G QUITAP1 | 
|---|
| 20 | I $P(PSRXD,"^",2)'=PSODFN S PSORET=-5 G QUITAP1 | 
|---|
| 21 | S (SITE,DA)=$P(^XMB(1,1,"XUS"),"^",17),DIC="4",DIQ(0)="IE",DR=".01;99",DIQ="PSXUTIL" D EN^DIQ1 S PSOSITE=$G(PSXUTIL(4,SITE,99,"I")) | 
|---|
| 22 | I '$D(^PS(52.43,"AC",PSODFN,PSORX)) G FILEAP1 | 
|---|
| 23 | S IEN=$O(^PS(52.43,"AC",PSODFN,PSORX,"")) | 
|---|
| 24 | I '$D(^PS(52.43,IEN,0)) G FILEAP1 | 
|---|
| 25 | S PSORR=$G(^PS(52.43,IEN,0)) | 
|---|
| 26 | I $P(PSORR,"^",5)="" S PSORET=-2 G QUITAP1 | 
|---|
| 27 | S PSORET=-1 G QUITAP1 | 
|---|
| 28 | FILEAP1 K DO,DIC,DD S DIC(0)="L",DIC=52.43,X=PSOICN D FILE^DICN I Y=-1 S PSORET=0 G QUITAP1 | 
|---|
| 29 | N % D NOW^%DTC | 
|---|
| 30 | K DA,DR,DIE S DA=+Y,DIE=DIC,DR="3///"_PSORX_";7///0;8///"_PSRX_";4///"_PSOSITE_";9////"_PSODFN_";11///"_$E(%,1,12) D ^DIE | 
|---|
| 31 | S PSORET=1 | 
|---|
| 32 | QUITAP1 Q PSORET | 
|---|
| 33 | ; | 
|---|
| 34 | AP2(PSODFN,PSORX) ;STATUS OF REQUEST | 
|---|
| 35 | ; Input:  PSODFN (required) - Patient IEN Number | 
|---|
| 36 | ;         PSORX  (required) - Prescription Number | 
|---|
| 37 | ; Output: PSORET - Return Value | 
|---|
| 38 | ;         See IA ... for description and values | 
|---|
| 39 | ; | 
|---|
| 40 | N PSORET,PSORR,IEN | 
|---|
| 41 | I $G(PSODFN)="" S PSORET=-4 G QUITAP2 | 
|---|
| 42 | I $G(PSORX)="" S PSORET=-3 G QUITAP2 | 
|---|
| 43 | I '$D(^PS(52.43,"AC",PSODFN,PSORX)) S PSORET=-6 G QUITAP2 | 
|---|
| 44 | S IEN=$O(^PS(52.43,"AC",PSODFN,PSORX,"")) | 
|---|
| 45 | I '$D(^PS(52.43,IEN,0)) K ^PS(52.43,"AC",PSODFN,PSORX) S PSORET=-6 G QUITAP2 | 
|---|
| 46 | S PSORR=$G(^PS(52.43,IEN,0)) | 
|---|
| 47 | I $P(PSORR,"^",5)="" S PSORET=-2 G QUITAP2 | 
|---|
| 48 | S PSORET=$P(PSORR,"^",6)_"^"_$P(PSORR,"^",5) | 
|---|
| 49 | QUITAP2 Q PSORET | 
|---|
| 50 | ; | 
|---|
| 51 | AP5(PSODFN,PSORX) ;PROCESS MHEV UPDATE | 
|---|
| 52 | ; Input:  PSODFN (required) - Patient IEN Number | 
|---|
| 53 | ;         PSORX  (required) - Prescription Number | 
|---|
| 54 | ; Output: PSORET - Return Value | 
|---|
| 55 | ;         See IA ... for description and values | 
|---|
| 56 | ; | 
|---|
| 57 | N PSORET,PSORR,IEN,PSOIN | 
|---|
| 58 | I $G(PSODFN)="" S PSORET=-4 G ENDAP5 | 
|---|
| 59 | I $G(PSORX)="" S PSORET=-3 G ENDAP5 | 
|---|
| 60 | I '$D(^PS(52.43,"AC",PSODFN,PSORX)) S PSORET=-6 G ENDAP5 | 
|---|
| 61 | S IEN=$O(^PS(52.43,"AC",PSODFN,PSORX,"")) | 
|---|
| 62 | I '$D(^PS(52.43,IEN,0)) K ^PS(52.43,"AC",PSODFN,PSORX) S PSORET=-6 G ENDAP5 | 
|---|
| 63 | S PSORR=$G(^PS(52.43,IEN,0)) | 
|---|
| 64 | I $P(PSORR,"^",5)="" S PSORET=-2 G ENDAP5 | 
|---|
| 65 | S PSOIN=$P(PSORR,"^",4) | 
|---|
| 66 | K DA,DR,DIE | 
|---|
| 67 | S DA=IEN | 
|---|
| 68 | S DIE="^PS(52.43,",DR="7///1" D ^DIE S PSORET=1 | 
|---|
| 69 | K ^PS(52.43,"AC",PSODFN,PSORX) | 
|---|
| 70 | ENDAP5 Q PSORET | 
|---|
| 71 | ; | 
|---|
| 72 | AP6(PSODIEN,PSOAP6) ;OUTPATIENT PHARMACY DIVISION LOOKUP | 
|---|
| 73 | ; Input:  PSODIEN  (required) - Outpatient Pharmacy Division IEN. | 
|---|
| 74 | ;                  1. Single Division IEN. | 
|---|
| 75 | ;                  2. Delimited list of Division IEN's (IEN1,IEN2,IEN3). | 
|---|
| 76 | ;                  3. Text word "ALL". | 
|---|
| 77 | ;         PSOAP6   (required) - Information return Array. | 
|---|
| 78 | ; Output: PSOAP6 - Information return Array. | 
|---|
| 79 | ;                  PSOAP6(DIV)=Active(0)/Inactive(1) | 
|---|
| 80 | ;                  PSOAP6(DIV,1)=Division Name^Area Code^Phone Number | 
|---|
| 81 | ;                  PSOAP6(DIV,2,1)=Narrative text 1st line. | 
|---|
| 82 | ;                  PSOAP6(DIV,2,n)=Narrative text nth line. | 
|---|
| 83 | ;         PSORET - 0 (Process failure). | 
|---|
| 84 | ;                  1 (Process success). | 
|---|
| 85 | ; | 
|---|
| 86 | N DIEN,TEMP,NAME,AREACODE,PHONENUM,INACTIVE | 
|---|
| 87 | Q:$G(PSODIEN)="" 0 | 
|---|
| 88 | I PSODIEN="ALL" S ZS2=$O(^PS(59,0)),PSODIEN=ZS2 Q:'+ZS2 0 F  S ZS2=$O(^PS(59,ZS2)) Q:'+ZS2  S PSODIEN=PSODIEN_","_ZS2 | 
|---|
| 89 | F XX=1:1:$L(PSODIEN,",") S DIEN=$P(PSODIEN,",",XX) D | 
|---|
| 90 | .S NAME=$$GET1^DIQ(59,DIEN,".01") | 
|---|
| 91 | .Q:NAME="" | 
|---|
| 92 | .S AREACODE=$$GET1^DIQ(59,DIEN,".03") | 
|---|
| 93 | .S PHONENUM=$$GET1^DIQ(59,DIEN,".04") | 
|---|
| 94 | .S INACTIVE=$$GET1^DIQ(59,DIEN,2004,"I") | 
|---|
| 95 | .S PSOAP6(DIEN)=0 I INACTIVE S PSOAP6(DIEN)=1 | 
|---|
| 96 | .S PSOAP6(DIEN,1)=NAME_"^"_AREACODE_"^"_PHONENUM | 
|---|
| 97 | .S TEMP=$$GET1^DIQ(59,DIEN,1005,"","PSOAP6("_DIEN_",2)") | 
|---|
| 98 | ; | 
|---|
| 99 | ENDAP6 Q 1 | 
|---|