Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: PSOERUT2

PSOERUT2.m

Go to the documentation of this file.
PSOERUT2 ;ALB/MFR - eRx Drug on Holding Queue - Listman Utilities; 06/25/2022 5:14pm
 ;;7.0;OUTPATIENT PHARMACY;**700**;DEC 1997;Build 261
 ;
SETDRUG(MODE,NMSPC,ERXIEN,SUGGEST,RXIEN) ; Set ListMan Side-By-Side Section for eRx Vs. User entered data on Holding Queue
 ;Input: MODE    - Display Mode: "RS": Roll & Scroll | "LM": ListMan
 ;    (o)NMSPC   - ListMan Temp Global Namespace (e.g., "PSOERXP1") - Required for LM Mode only
 ;       ERXIEN  - Pointer to ERX HOLDING QUEUE file (#52.49)
 ;       SUGGEST - Suggestion?: 1 - YES (Suggesting an entry - MUST pass in RX # Pointer to #52) | 0 - NO (Actual Record Data) 
 ;    (o)RXIEN   - Prescription IEN - Pointer to PRESCRIPTION file (#52). SUGGEST must be passed in as 1
 ;       Input Global Variable: LINE - Current ListMan Line # (Default)
 ;       Output Global Variable: (ListMan Mode Only - Set by $$COMPARE^PSOERUT0)
 ;          REVLN - Array Indicating Reverse Video for Line, position and size of the string
 ;          HIGLN - Array Indicating Highlight for Line, position and size of the string
 ;
 S:'$G(LINE) LINE=1 S NMSPC=$G(NMSPC)
 N V2017,MTYPE,RSPTYPE,ERXDM,DATA,ERXDRUG,ERXSIG,ERXNOTES,ERXQTY,ERXQTYUM,ERXQTYQ,ERXDAYS,ERXREFS,ERXWRTDT,ERXEFDT,ERXRENS
 N VADRGIEN,VAOIIEN,VADRUG,VAPATIEN,RXPATIEN,VAPATINS,VAPRCOMM,VAQTY,VADAYS,VAREFS,VAQTYUM,VADRGMSG,ESIG,VSIG,FSIG,XE,XV
 N ERXDFORM,ERXDSTRE,XEI,XVI,I,DMARR,LMLINE,MEDIEN,VDRGLEN,VAPATSTS,VMAILWIN,VACLINIC,NONFORM,PSODIR,INS1,ARR,EARR,VARR
 N ERXSUBS,X,EQCOMM,EQDRUG,VAQTDMSG
 ;
 S V2017=+$$GET1^DIQ(52.49,ERXIEN,312.1,"I")
 S MTYPE=$$GET1^DIQ(52.49,ERXIEN,.08,"I")
 S RSPTYPE=$$GET1^DIQ(52.49,ERXIEN,52.1,"I")
 I V2017 D
 . I MTYPE="CX" S MEDIEN=$O(^PS(52.49,ERXIEN,311,"C","P",0))
 . I MTYPE="N" S MEDIEN=$O(^PS(52.49,ERXIEN,311,0)) Q
 . I MTYPE="RE",RSPTYPE="R" S MEDIEN=$O(^PS(52.49,ERXIEN,311,"C","MR",0))
 I '$G(MEDIEN) S MEDIEN=1
 ; eRx Data
 D GETS^DIQ(52.49,ERXIEN_",",".05;2.3;3.1;3.2;4.1;4.11;4.9;5.1;5.2;5.5;5.6;5.7;5.8;5.9;6.3;8;20.1;20.2;20.4;20.6;20.5;41;42;43","EI","DATA","ERR") I '$D(DATA) Q
 M ERXDM=DATA(52.49,ERXIEN_",")
 S ERXDRUG=ERXDM(3.1,"E"),ERXSIG=$$ERXSIG^PSOERXUT(ERXIEN)
 S ERXNOTES=ERXDM(8,"E"),ERXQTY=ERXDM(5.1,"E"),ERXDAYS=ERXDM(5.5,"E"),ERXWRTDT=ERXDM(5.9,"E"),ERXEFDT=ERXDM(6.3,"E")
 ; eRx Quantity Qualifier
 S ERXQTYQ=ERXDM(5.2,"E") I V2017 S ERXQTYQ=$$GET1^DIQ(52.49311,MEDIEN_","_ERXIEN_",",2.2,"I"),ERXQTYQ=$$GET1^DIQ(52.45,ERXQTYQ,.02,"E")
 ; Number of Refills
 S ERXREFS=ERXDM(5.6,"E") I MTYPE="RE",RSPTYPE="R",ERXREFS>0 S ERXREFS=$G(ERXREFS)-1
 S ERXSUBS=$S(ERXDM(5.8,"I")=1:"NO",ERXDM(5.8,"I")=0:"YES",1:""),ERXRENS=$S($$RENEWALS^PSOERXUT(ERXIEN):"YES",1:"NO")
 S ERXDFORM=ERXDM(41,"E"),ERXQTYUM=ERXDM(42,"E"),ERXDSTRE=ERXDM(43,"E")
 ; VistA Drug/Dose/Instructions Data
 S (VADRUG,VASIG,VAPATIEN,VAPATINS,VAPRCOMM,VAQTY,VADAYS,VAREFS,VAQTYUM,VADRGMSG,VAQTDMSG,VAPATSTS,VMAILWIN,VACLINIC)=""
 S VADRGIEN=+ERXDM(3.2,"I")
 I $G(VADRGIEN) D
 . S VAPATIEN=ERXDM(.05,"I"),VAPATSTS=$$GET1^DIQ(55,VAPATIEN,3,"E"),VADRUG=ERXDM(3.2,"E")
 . S VASIG=$$VISTASIG^PSOERXUT(ERXIEN),VAPATINS=$$GET1^DIQ(52.49,ERXIEN,27),VAPRCOMM=$$GET1^DIQ(52.49,ERXIEN,30)
 . S VAQTY=ERXDM(20.1,"E"),VADAYS=ERXDM(20.2,"E"),VMAILWIN=ERXDM(20.4,"E"),VAREFS=ERXDM(20.5,"E"),VACLINIC=ERXDM(20.6,"E")
 . S VAQTYUM=$$GET1^DIQ(50,VADRGIEN,14.5),VADRGMSG=$$GET1^DIQ(50,VADRGIEN,101),VAQTDMSG=$$GET1^DIQ(50,VADRGIEN,215)
 ; 
 ; Non-Formulary
 S NONFORM=0 I $G(VADRGIEN),$P(^PSDRUG(VADRGIEN,0),"^",9) S NONFORM=1
 ;
 I $G(RXIEN) D
 . S RXPATIEN=+$$GET1^DIQ(52,RXIEN,2,"I"),VADRGIEN=+$$GET1^DIQ(52,RXIEN,6,"I"),VAOIIEN=+$$GET1^DIQ(50,VADRGIEN,2.1,"I")
 . S VADRUG=$$GET1^DIQ(50,VADRGIEN,.01)
 . ; Rx SIG (from Rx) & Qty fields
 . S VASIG=$$SUGSIG(RXIEN,ERXIEN)
 . S VAQTY=$$GET1^DIQ(52,RXIEN,7),VAQTYUM=$$GET1^DIQ(50,VADRGIEN,14.5)
 . S VADRGMSG=$$GET1^DIQ(50,VADRGIEN,101),VAQTDMSG=$$GET1^DIQ(50,VADRGIEN,215)
 . ; Days Supply and # of Refills
 . S VADAYS=$$GET1^DIQ(52,RXIEN,8)
 . S VAREFS=$$GET1^DIQ(52,RXIEN,9)
 . ; If #of Refills > Max allowed, sets to Max allowed
 . I VAREFS>$$MAXNUMRF^PSOUTIL(VADRGIEN,VADAYS) D
 . . S VAREFS=+$$MAXNUMRF^PSOUTIL(VADRGIEN,VADAYS)
 . I $G(SUGGEST) D
 . . ; VA Provider Comments (from eRx)
 . . S VAPRCOMM=$$PROVCOMM^PSOERUT4(ERXNOTES)
 ;
 S EQDRUG=0 I ($$CLNSTR^PSOERUT0(ERXDRUG)[$$CLNSTR^PSOERUT0(VADRUG))!($$CLNSTR^PSOERUT0(VADRUG)[$$CLNSTR^PSOERUT0(ERXDRUG)) S EQDRUG=1
 S XE="Drug: "_$$COMPARE^PSOERUT0(MODE,$E(ERXDRUG,1,33),$S(EQDRUG:$E(ERXDRUG,1,33),1:""),7,,,'VADRGIEN)
 S VDRGLEN=$S(MODE="LM":32,1:33)
 S XV="|"_$S(MODE="LM":"1)",1:"")_"Drug: "_$$COMPARE^PSOERUT0(MODE,$E(VADRUG,1,VDRGLEN),$S(EQDRUG:$E(VADRUG,1,VDRGLEN),1:""),81-VDRGLEN)
 I MODE="LM" S UNDERLN(LINE,41)=2
 D ADDLINE^PSOERUT0(MODE,NMSPC,XE,XV)
 I $L(ERXDRUG)>33!($L(VADRUG)>VDRGLEN) D
 . N XEDR,XVDR
 . S XEDR=$E(ERXDRUG,34,999),XVDR=$E(VADRUG,VDRGLEN+1,999)
 . F  Q:(XEDR=""&(XVDR=""))  D
 . . S XE="      "_$$COMPARE^PSOERUT0(MODE,$E(XEDR,1,33),$S(EQDRUG:$E(XEDR,1,33),1:""),7,,,'VADRGIEN)
 . . S XV="|"_$S(MODE="LM":"  ",1:"")_"      "_$$COMPARE^PSOERUT0(MODE,$E(XVDR,1,VDRGLEN),$S(EQDRUG:$E(XVDR,1,VDRGLEN),1:""),81-VDRGLEN)
 . . D ADDLINE^PSOERUT0(MODE,NMSPC,XE,XV)
 . . S XEDR=$E(XEDR,34,999),XVDR=$E(XVDR,VDRGLEN+1,999)
 S XEI=0,XVI=0,LMLINE=LINE-1 K EARR,VARR
 I ERXDFORM'="" D
 . S XEI=XEI+1,LMLINE=LMLINE+1,EARR(XEI)="Drug Form: "_$$COMPARE^PSOERUT0(MODE,$E(ERXDFORM,1,28),$E(ERXDFORM,1,28),12,,LMLINE)
 . I $L(ERXDFORM)>28 D
 . . S XEI=XEI+1,LMLINE=LMLINE+1,EARR(XEI)="           "_$$COMPARE^PSOERUT0(MODE,$E(ERXDFORM,29,99),$E(ERXDFORM,29,99),12,,LMLINE)
 I ERXDSTRE'="",$$UP^XLFSTR(ERXDSTRE)'="UNSPECIFIED" D
 . S XEI=XEI+1,LMLINE=LMLINE+1,EARR(XEI)="Drug Strength: "_$$COMPARE^PSOERUT0(MODE,ERXDSTRE,ERXDSTRE,16,,LMLINE)
 S XEI=XEI+1,LMLINE=LMLINE+1,EARR(XEI)="Substitution? "_$$COMPARE^PSOERUT0(MODE,ERXSUBS,$S(ERXSUBS="YES":ERXSUBS,1:""),15,,LMLINE)
 S EARR(XEI)=EARR(XEI)_"    Renewals? "_$$COMPARE^PSOERUT0(MODE,ERXRENS,ERXRENS,$S(ERXSUBS="YES":32,1:31),,LMLINE)
 I NONFORM!($G(VADRGMSG)'="") S LMLINE=LINE-1
 I NONFORM D
 . S XVI=XVI+1,LMLINE=LMLINE+1,VARR(XVI)=$S(MODE="LM":"  ",1:"")_"      "_$$COMPARE^PSOERUT0(MODE,"*** NON-FORMULARY ***","*** NON-FORMULARY ***",$S(MODE="LM":49,1:47),,LMLINE)
 I $G(VADRGMSG)'="" D
 . S XVI=XVI+1,LMLINE=LMLINE+1,VARR(XVI)="Drug Message:"
 . K DMARR D WRAP^PSOERUT(VADRGMSG,38,.DMARR)
 . F I=1:1 Q:'$D(DMARR(I))  D
 . . S XVI=XVI+1,LMLINE=LMLINE+1,VARR(XVI)=" "_$$COMPARE^PSOERUT0(MODE,DMARR(I,0),DMARR(I,0),42,,LMLINE)
 ;
 F I=1:1 Q:('$D(EARR(I))&'$D(VARR(I)))  D
 . D ADDLINE^PSOERUT0(MODE,NMSPC,$G(EARR(I)),"|"_$G(VARR(I)))
 K LMLINE D BLANKLN^PSOERUT0(MODE)
 ;
 ; - eRx SIG
 K EARR D WRAP^PSOERUT(ERXSIG,38,.EARR)
 ; - VistA SIG
 K VARR D WRAP^PSOERUT($G(VASIG),39,.VARR)
 S XE="SIG:",XV="|SIG:" D ADDLINE^PSOERUT0(MODE,NMSPC,XE,XV)
 F I=1:1 Q:('$D(EARR(I))&'$D(VARR(I)))  D
 . S XE=" "_$$COMPARE^PSOERUT0(MODE,$G(EARR(I,0)),$G(EARR(I,0)),2)
 . S XV="| "_$$COMPARE^PSOERUT0(MODE,$G(VARR(I,0)),$G(VARR(I,0)),42)
 . D ADDLINE^PSOERUT0(MODE,NMSPC,XE,XV)
 D BLANKLN^PSOERUT0(MODE)
 ;
 I MODE="LM" D
 . D DOSAGE^PSOERUT4(MODE,NMSPC,ERXIEN)
 . D BLANKLN^PSOERUT0(MODE)
 ;
 ; - Patient Instructions
 I $G(VAPATINS)'=""!(MODE="LM") D
 . S XV="|"_$S(MODE="LM":"3)",1:"")_"Patient Instructions:"
 . I MODE="LM" S UNDERLN(LINE,41)=2
 . D ADDLINE^PSOERUT0(MODE,NMSPC,"",XV)
 . K VARR D WRAP^PSOERUT($G(VAPATINS),39,.VARR)
 . F I=1:1 Q:'$D(VARR(I))  D
 . . S XV="| "_$$COMPARE^PSOERUT0(MODE,$G(VARR(I,0)),$G(VARR(I,0)),42)
 . . D ADDLINE^PSOERUT0(MODE,NMSPC,"",XV)
 . D BLANKLN^PSOERUT0(MODE)
 ; - Provider Notes/Comments & Patient Instructions
 S EQCOMM=0 I $$PROVCOMM^PSOERUT4(ERXNOTES)=VAPRCOMM S EQCOMM=1
 K EARR D WRAP^PSOERUT(ERXNOTES,38,.EARR)
 ; - eRx Provider Notes/Comments
 K VARR D WRAP^PSOERUT($G(VAPRCOMM),38,.VARR)
 S XE="Provider Notes/Comments:",XV="|"_$S(MODE="LM":"4)",1:"")_"Provider Comments:"
 I MODE="LM" S UNDERLN(LINE,41)=2
 D ADDLINE^PSOERUT0(MODE,NMSPC,XE,XV)
 F I=1:1 Q:('$D(EARR(I))&'$D(VARR(I)))  D
 . S XE=" "_$$COMPARE^PSOERUT0(MODE,$G(EARR(I,0)),$S(EQCOMM:$G(EARR(I,0)),1:$G(VARR(I,0))),2)
 . S XV="| "_$$COMPARE^PSOERUT0(MODE,$G(VARR(I,0)),$S(EQCOMM:$G(VARR(I,0)),1:$G(EARR(I,0))),42)
 . D ADDLINE^PSOERUT0(MODE,NMSPC,XE,XV)
 D BLANKLN^PSOERUT0(MODE)
 ; - Patient Status
 I (MODE="LM") D
 . S XV="|5)Pat. Status: "_$$COMPARE^PSOERUT0(MODE,VAPATSTS,VAPATSTS,56)
 . S UNDERLN(LINE,41)=2
 . D ADDLINE^PSOERUT0(MODE,NMSPC,"",XV)
 . D BLANKLN^PSOERUT0(MODE)
 ;
 ; - Quantity
 S XE="Quantity: "_$$COMPARE^PSOERUT0(MODE,ERXQTY,VAQTY,11,,,'VADRGIEN)
 S XV="|"_$S(MODE="LM":"6)",1:"")_"Quantity: "_$$COMPARE^PSOERUT0(MODE,VAQTY,ERXQTY,$S(MODE="LM":53,1:51))
 I MODE="LM" S UNDERLN(LINE,41)=2
 D ADDLINE^PSOERUT0(MODE,NMSPC,XE,XV)
 ; - Dispense Unit
 S XE="Dispense Unit: "_$$COMPARE^PSOERUT0(MODE,$E(ERXQTYUM,1,24),$E(ERXQTYUM,1,24),16)
 S XV="|"_$S(MODE="LM":"  ",1:"")_"Dispense Unit: "_$$COMPARE^PSOERUT0(MODE,$G(VAQTYUM),$G(VAQTYUM),$S(MODE="LM":58,1:56))
 D ADDLINE^PSOERUT0(MODE,NMSPC,XE,XV)
 I $L(ERXQTYUM)>24 D
 . S XE=$E(ERXQTYUM,25,99),XV="|" D ADDLINE^PSOERUT0(MODE,NMSPC,XE,XV)
 ;
 S XEI=0,XVI=0,LMLINE=LINE-1 K EARR,VARR
 ; - Quantity Qualifier
 I $G(ERXQTYQ)'=""!($G(VAQTDMSG)'="") D
 . S LMLINE=LMLINE+1
 . I $G(ERXQTYQ)'="" S XEI=XEI+1,EARR(XEI)="Qty Qualifier: "_$$COMPARE^PSOERUT0(MODE,ERXQTYQ,ERXQTYQ,16,,LMLINE)
 . ; - VistA Dispense Message
 . I $G(VAQTDMSG)'="" D
 . . S XVI=XVI+1,VARR(XVI)="QTY Dispense Message:"
 . . K DMARR D WRAP^PSOERUT(VAQTDMSG,38,.DMARR)
 . . F I=1:1 Q:'$D(DMARR(I))  D
 . . . S XVI=XVI+1,LMLINE=LMLINE+1,VARR(XVI)=" "_DMARR(I,0),HIGUNDLN(LMLINE,42)=$L(DMARR(I,0))
 ;
 F I=1:1 Q:('$D(EARR(I))&'$D(VARR(I)))  D
 . D ADDLINE^PSOERUT0(MODE,NMSPC,$G(EARR(I)),"|"_$G(VARR(I)))
 K LMLINE D BLANKLN^PSOERUT0(MODE)
 ;
 ; - Days Supply & Number of Refills
 S XE="Days Supply: "_$$COMPARE^PSOERUT0(MODE,ERXDAYS,VADAYS,14,,,'VADRGIEN)
 S $E(XE,$S(MODE="LM"!(ERXDAYS=""):21,1:$L(XE)+6))="Refills: "_$$COMPARE^PSOERUT0(MODE,ERXREFS,VAREFS,30,,,'VADRGIEN)
 S XV="|"_$S(MODE="LM":"7)",1:"")_"Days Supply: "_$J($$COMPARE^PSOERUT0(MODE,VADAYS,ERXDAYS,$S(MODE="LM":56,1:54)),$L(VADAYS))
 S XV=XV_"     "_$S(MODE="LM":"8)",1:"")_"Refills: "_$$COMPARE^PSOERUT0(MODE,VAREFS,ERXREFS,$S(MODE="LM":72,1:70)+$L(VADAYS))
 I MODE="LM" S UNDERLN(LINE,41)=2,UNDERLN(LINE,61+$L(VADAYS))=2
 D ADDLINE^PSOERUT0(MODE,NMSPC,XE,XV)
 D BLANKLN^PSOERUT0(MODE)
 ;
 ; - Routing (Mail/Window)
 I MODE="LM" D
 . S XV="|9)Routing: "_$$COMPARE^PSOERUT0(MODE,VMAILWIN,VMAILWIN,52)
 . S UNDERLN(LINE,41)=2
 . D ADDLINE^PSOERUT0(MODE,NMSPC,"",XV)
 . D BLANKLN^PSOERUT0(MODE)
 ;
 ; - Clinic
 I MODE="LM" D
 . S XV="|10)Clinic: "_$$COMPARE^PSOERUT0(MODE,VACLINIC,VACLINIC,52)
 . I MODE="LM" S UNDERLN(LINE,41)=3
 . D ADDLINE^PSOERUT0(MODE,NMSPC,"",XV)
 . D BLANKLN^PSOERUT0(MODE)
 Q
 ;
SAVEDRUG(ERXIEN,RXIEN) ; Save eRx Drug Information from VistA Rx (File #52) into the eRx record (File #52.49)
 ;Input: ERXIEN  - eRx IEN - Pointer to ERX HOLDING QUEUE file (#52.49)
 ;       RXIEN - VistA Prescription IEN - Pointer to PRESCRIPTION file (#52)
 ;
 I '$D(^PS(52.49,+$G(ERXIEN),0))!'$D(^PSRX(+$G(RXIEN),0)) Q
 N VAPATIEN,VADRGIEN,VAOIIEN,DIE,DA,NEWVAL,MTYPE,ERXSTS,VADOSE,DOSE,UPDARR,VAPATINS,NEWVAL,ERR,SIG,SIGARR,ERXSIG
 N PSODRUG,VADAYS,ERXREFS,I
 S VADRGIEN=+$$GET1^DIQ(52,RXIEN,6,"I"),VAOIIEN=+$$GET1^DIQ(50,VADRGIEN,2.1,"I")
 ; - Saving VistA Drug and updating eRx Audit Log
 S DIE="^PS(52.49,",DA=ERXIEN,DR="3.2///"_VADRGIEN D ^DIE
 S NEWVAL(1)=$$GET1^DIQ(50,VADRGIEN,.01)_" (NDC#: "_$$GETNDC^PSSNDCUT(VADRGIEN)_")"
 D AUDLOG^PSOERXUT(ERXIEN,"DRUG",DUZ,.NEWVAL)
 ;
 ; - eRx Status Update
 S MTYPE=$$GET1^DIQ(52.49,ERXIEN,.08,"I")
 S ERXSTS=$$GET1^DIQ(52.49,ERXIEN,1,"E")
 I ERXSTS="N" D UPDSTAT^PSOERXU1(ERXIEN,"I")
 I MTYPE="RE",ERXSTS'="RXI" D UPDSTAT^PSOERXU1(ERXIEN,"RXI")
 ;
 ; - Deleting fields related to VA Dispense Drug
 F FLD=1.11,1.12,1.5,20.1,20.2,20.3,20.4,20.5,27 S UPDARR(52.49,ERXIEN_",",FLD)="@"
 D FILE^DIE(,"UPDARR") K UPDARR
 ;
 ; - Saving Provider Comments and Updating Audit Log
 K UPDARR S UPDARR(52.49,ERXIEN_",",30)=$$PROVCOMM^PSOERUT4($$GET1^DIQ(52.49,ERXIEN,8))
 D FILE^DIE(,"UPDARR") K UPDARR
 S NEWVAL(1)=$$PROVCOMM^PSOERUT4($$GET1^DIQ(52.49,ERXIEN,8))
 I $G(NEWVAL(1))'="" D AUDLOG^PSOERXUT(ERXIEN,"PROVIDER COMMENTS",DUZ,.NEWVAL)
 ; 
 ; - Saving VA Orderable Item Patient Instructions and Updating Audit Log
 S VAPATIEN=+$$GET1^DIQ(52.49,ERXIEN,.05,"I")
 S VAPATINS=$$VAPATINS(VAOIIEN,VAPATIEN)
 I VAPATINS'="" D
 . K UPDARR S UPDARR(52.49,ERXIEN_",",27)=VAPATINS
 . D FILE^DIE(,"UPDARR") K UPDARR
 . S NEWVAL(1)=VAPATINS
 . D AUDLOG^PSOERXUT(ERXIEN,"PATIENT INSTRUCTIONS",DUZ,.NEWVAL)
 ;
 ; - Deleting any existing Dosage Information
 K VADOSE S DOSE=0 F  S DOSE=$O(^PS(52.49,ERXIEN,21,DOSE)) Q:'DOSE  D
 . S VADOSE(52.4921,DOSE_","_ERXIEN_",",.01)="@" D FILE^DIE(,"VADOSE","ERR") K VADOSE
 ;
 ; - Retrieving VistA Rx Dose and Saving to the eRx
 K VADOSE D VARXDOSE^PSOERUT4(RXIEN,.VADOSE)
 K ERXDOSE
 F DOSE=1:1 Q:'$D(VADOSE("DOSE",DOSE))  D
 . K ERXDOSE,ERR
 . S ERXDOSE(52.4921,"+1,"_ERXIEN_",",.01)=VADOSE("DOSE",DOSE)_"&"_VADOSE("NOUN",DOSE)
 . S ERXDOSE(52.4921,"+1,"_ERXIEN_",",1)=VADOSE("SCHEDULE",DOSE)
 . S ERXDOSE(52.4921,"+1,"_ERXIEN_",",2)=VADOSE("DURATION",DOSE)
 . S ERXDOSE(52.4921,"+1,"_ERXIEN_",",6)=$S(VADOSE("CONJUNCTION",DOSE)="T":"S",1:VADOSE("CONJUNCTION",DOSE))
 . S ERXDOSE(52.4921,"+1,"_ERXIEN_",",7)=+DOSE
 . S ERXDOSE(52.4921,"+1,"_ERXIEN_",",8)=VADOSE("DOSE",DOSE)
 . S ERXDOSE(52.4921,"+1,"_ERXIEN_",",9)=VADOSE("DOSE ORDERED",DOSE)
 . S ERXDOSE(52.4921,"+1,"_ERXIEN_",",10)=VADOSE("ROUTE",DOSE)
 . S ERXDOSE(52.4921,"+1,"_ERXIEN_",",11)=VADOSE("UNITS",DOSE)
 . S ERXDOSE(52.4921,"+1,"_ERXIEN_",",12)=VADOSE("NOUN",DOSE)
 . S ERXDOSE(52.4921,"+1,"_ERXIEN_",",13)=VADOSE("VERB",DOSE)
 . D UPDATE^DIE("","ERXDOSE","ERR","")
 ;
 ; - Deleting any existing SIG Information
 K SIGARR
 S I=0 F  S I=$O(^PS(52.49,ERXIEN,"SIG",I)) Q:'I  D
 . S SIGARR(52.4926,I_","_ERXIEN_",",.01)="@"
 I $D(SIGARR) D FILE^DIE(,"SIGARR") K SIGARR
 ; - Retrieving VistA Rx SIG and Saving to the eRx
 S PSODRUG("IEN")=VADRGIEN,PSODRUG("OI")=VAOIIEN
 K SIG D EN^PSOFSIG(.VADOSE)
 K SIGARR
 S I=0 F  S I=$O(SIG(I)) Q:'I  D
 . I $G(SIG(I))'="" D
 . . S SIGARR(52.4926,"+1,"_ERXIEN_",",.01)=SIG(I)
 . . D UPDATE^DIE(,"SIGARR",,"SERR") K SIGARR
 ;
 ; - Qty/Days Supply/Route(Mail/Window)/# of Refills/Clinic
 K UPDARR
 S UPDARR(52.49,ERXIEN_",",20.1)=+$$GET1^DIQ(52,RXIEN,7)
 S (UPDARR(52.49,ERXIEN_",",20.2),VADAYS)=$$GET1^DIQ(52,RXIEN,8)
 S UPDARR(52.49,ERXIEN_",",20.4)="M"
 S ERXREFS=+$$GET1^DIQ(52,RXIEN,9)
 ; If #of Refills > Max allowed, sets to Max allowed
 I ERXREFS>$$MAXNUMRF^PSOUTIL(VADRGIEN,VADAYS) D
 . S ERXREFS=+$$MAXNUMRF^PSOUTIL(VADRGIEN,VADAYS)
 S UPDARR(52.49,ERXIEN_",",20.5)=ERXREFS
 I $G(PSOCLNC) D
 . S UPDARR(52.49,ERXIEN_",",20.6)=PSOCLNC
 E  D
 . S UPDARR(52.49,ERXIEN_",",20.6)=$$GET1^DIQ(59,PSOSITE,10,"I")
 D FILE^DIE(,"UPDARR") K UPDARR
 Q
 ;
SUGSIG(RXIEN,ERXIEN) ; Returns the Suggested SIG retrieved from the VA Rx
 ; Input:ERXIEN - Pointer to ERX HOLDING QUEUE file (#52.49)
 ;       RXIEN  - Prescription IEN - Pointer to PRESCRIPTION file (#52)
 ;Output:SUGSIG - Suggested SIG
 ;
 K SUGSIG,VADOSE,SIG,I,VAPATIEN,PSODRUG
 I '$D(^PSRX(+$G(RXIEN),0))!'$D(^PS(52.49,+$G(ERXIEN),0)) Q ""
 S PSODRUG("IEN")=+$$GET1^DIQ(52,RXIEN,6,"I"),PSODRUG("OI")=+$$GET1^DIQ(50,PSODRUG("IEN"),2.1,"I")
 S SUGSIG=""
 D VARXDOSE^PSOERUT4(RXIEN,.VADOSE)
 K SIG D EN^PSOFSIG(.VADOSE)
 F I=1:1 Q:'$D(SIG(I))  S SUGSIG=SUGSIG_SIG(I)
 ; - Appending Patient Instrutions
 S VADRGIEN=+$$GET1^DIQ(52,RXIEN,6,"I")
 S VAOIIEN=+$$GET1^DIQ(50,VADRGIEN,2.1,"I")
 S VAPATIEN=+$$GET1^DIQ(52.49,ERXIEN,.05,"I")
 S VAPATINS=$$VAPATINS(VAOIIEN,VAPATIEN)
 I VAPATINS'="" S SUGSIG=SUGSIG_" "_VAPATINS
 Q SUGSIG
 ;
VAPATINS(OI,DFN) ; Returns the Pharmacy Orderable Patient Instructions, if any
 ; Input: OI  - Pointer to the PHARMACY ORDERABLE ITEM file (#50.7)
 ;     (o)DFN - Pointer to the PATIEN file (#2)
 ;Output: VAPTINS - Expanded (if needed) OI Patient Instructions
 ;
 N VAPATINS,FLD,X,PSODIR,INS1
 S FLD=7
 I $G(DFN),$$GET1^DIQ(55,DFN,106,"I") S FLD=7.1
 S VAPATINS=$$GET1^DIQ(50.7,+$G(OI),FLD)
 ;
 I $G(VAPATINS)'="" D
 . S (X,PSODIR("INS"))=VAPATINS D SIG^PSOHELP S $E(INS1)="",VAPATINS=INS1
 Q VAPATINS