PSSDEEA ;PBM/RMS - DRUG FILE ENTER/EDIT AUDIT ; 18 May 2018 10:55 AM
;;1.0;PHARMACY DATA MANAGEMENT;**227**;;Build 18
;------------------------------------------------------------------
BEFORE(TAG) ;
; Capture the drug entry before it is edited to have to compare to
; after the user completes the editing. Email changes in
; linetag 'AFTER' (called at the end of PSSDEE).
; From: PSSDEE [PSS DRUG ENTER/EDIT]
; Output:
; 1. ^UTILITY(TAG,$J,DA)=Drug file entry number DA before editing
; 2. ZDA ; DA or IEN of Drug file #50 entry
; 3. ZN ; Will be equal to 1 if a new drug was entered into file
;
;ZEXCEPT: DA,Y,ZDA,ZN
;
K ^UTILITY(TAG,$J,DA)
M ^UTILITY(TAG,$J,DA)=^PSDRUG(DA)
;
S ZDA=DA,ZN=$P(Y,"^",3)
;
Q
;------------------------------------------------------------------
AFTER(TAG) ;
;
; DOCUMENTATION AND SETUP INFORMATION
;
; Modifications:
;
; * PSSDEE calls BEFORE^PSSDEEA to create ^UTILITY("PSSDEE",$J,DA) data.
; ^UTILITY data holds all ^PSDRUG data for drug prior to any
; editing.
; * PSSDEE later calls AFTER^PSSDEEA to compare the value of the drug
; file entry after editing to the pre-snapshot values held in
; ^UTILITY. If changes have been made, a Mailman message is
; sent to members of a mail group. (See SETUP below)
;
; Note: USING the Drug Enter/Edit option is sufficient to trigger
; the audit email, even if a non-audited field is the only change
; made by the user.
;
; ZEXCEPT: PSSZMES,PSSZNOC,ANS,CHANGES,COUNT,FIELD,FLAG,LABEL,NEWVAL,OLDVAL,USER,ZDA,ZDAN,ZN,PSSZNODE,ZZJ
EN Q:'$G(ZDA)
N COUNT,USER S COUNT=6,USER=$P(^VA(200,DUZ,0),"^"),ZDAN=$P(^PSDRUG(ZDA,0),"^")
D HEADER
D COMPAR
D SEND
K PSSZMES,ZDA,ZDAN,LABEL,PSSZNODE,OLDVAL,NEWVAL,FIELD,CHANGES,FLAG,ZZJ,ANS,ZN,PSSZNOC
S NEWVAL=""
Q
; ZEXCEPT: PSSZMES,USER,ZDAN
S PSSZMES(1)="Please Note: The Drug Enter/Edit option was used by "_USER_"."
S PSSZMES(2)="The drug that was entered/edited was "_ZDAN_"."
S PSSZMES(3)="-------------------------------------------------------------------------------"
Q
COMPAR ;
; ZEXCEPT: PSSZMES,ANS,FLAG,LABEL,NEWVAL,OLDVAL,ZDA,TAG,PSSZNOC
N CHANGES,NEWVAL,OLDVAL,SPACES,PSSZNODE,ZZJ
S $P(SPACES," ",80)="",PSSZNOC=0
F PSSZNODE=0,2,3,8.5,660,660.1,"EPH","I","ND" I $G(ZDA) D
.S:ZN=1 ^UTILITY(TAG,$J,ZDA,PSSZNODE)=""
.Q:'$D(^PSDRUG(ZDA,PSSZNODE))&('$D(^UTILITY(TAG,$J,ZDA,PSSZNODE)))
.I '$D(^UTILITY(TAG,$J,ZDA,PSSZNODE))&($D(^PSDRUG(ZDA,PSSZNODE))) S CHANGES(PSSZNODE)=^PSDRUG(ZDA,PSSZNODE)
.I '$D(^PSDRUG(ZDA,PSSZNODE))&($D(^UTILITY(TAG,$J,ZDA,PSSZNODE))) S CHANGES(PSSZNODE)=^UTILITY(TAG,$J,ZDA,PSSZNODE)
.Q:$D(CHANGES(PSSZNODE))!('$D(^PSDRUG(ZDA,PSSZNODE)))!('$D(^UTILITY(TAG,$J,ZDA,PSSZNODE)))
.Q:^UTILITY(TAG,$J,ZDA,PSSZNODE)=^PSDRUG(ZDA,PSSZNODE)
.S CHANGES(PSSZNODE)=""
.F ZZJ=1:1:10 S FLAG=0,ANS="" S:$P(^PSDRUG(ZDA,PSSZNODE),"^",ZZJ)'=$P(^UTILITY(TAG,$J,ZDA,PSSZNODE),"^",ZZJ) ANS=$P(^UTILITY(TAG,$J,ZDA,PSSZNODE),"^",ZZJ),FLAG=1 S:FLAG=1&(ANS="") ANS="NULL" S CHANGES(PSSZNODE)=CHANGES(PSSZNODE)_ANS_"^"
I '$D(CHANGES) S PSSZNOC=1,PSSZMES(4)=" *** No Audited Changes Made ***" Q
S FLAG=0
F PSSZNODE=0,2,3,8.5,660,660.1,"EPH","I","ND" S LABEL="SUB"_PSSZNODE I $D(CHANGES(PSSZNODE)) F ZZJ=1:1:11 Q:"^^^^^^^^^^^^^^^^^"[$P(CHANGES(PSSZNODE),"^",ZZJ,11) Q:$P(CHANGES(PSSZNODE),"^",ZZJ,11)="" D:'$D(^UTILITY(TAG,$J,ZDA)) SETLB Q:FLAG D
.S OLDVAL=$P(CHANGES(PSSZNODE),"^",ZZJ) Q:OLDVAL="" S OLDVAL=OLDVAL_$$OLDEXT(OLDVAL,PSSZNODE,ZZJ)
.S:$D(^PSDRUG(ZDA,PSSZNODE)) NEWVAL=$P(^PSDRUG(ZDA,PSSZNODE),"^",ZZJ)_$$NEWEXT(ZDA,PSSZNODE,ZZJ)
.D STOR
Q
OLDEXT(OLDVAL,PSSZNODE,PIECE) ;COMPUTE EXTERNAL 'OLD' VALUE WHERE NECESSARY
N FIELDNUM,FIELDTYP,PTRFILE
S FIELDNUM=$O(^DD(50,"GL",PSSZNODE,PIECE,0))
Q:'+FIELDNUM ""
S FIELDTYP=$P(^DD(50,FIELDNUM,0),U,2)
I $E(FIELDTYP)'="P" Q ""
S PTRFILE=+$E(FIELDTYP,2,99)
Q " ("_$$GET1^DIQ(PTRFILE,OLDVAL,.01)_")"
NEWEXT(ZDA,PSSZNODE,PIECE) ;COMPUTE EXTERNAL 'NEW' VALUE WHERE NECESSARY
N FIELDNUM,INTERNAL,EXTERNAL
S FIELDNUM=$O(^DD(50,"GL",PSSZNODE,PIECE,0))
Q:'+FIELDNUM ""
S EXTERNAL=$$GET1^DIQ(50,ZDA,FIELDNUM)
S INTERNAL=$$GET1^DIQ(50,ZDA,FIELDNUM,"I")
Q:(INTERNAL=EXTERNAL) ""
Q " ("_EXTERNAL_")"
SEND ;
; ZEXCEPT: ZDA,ZDAN,PSSZNOC
N XMDUZ,XMSUB,XMTEXT,XMY
S XMSUB=$S(PSSZNOC:"DRUG ENTER/EDIT ACCESS (",1:"DRUG ENTER/EDIT AUDIT (")_$G(ZDA)_":"_$G(ZDAN)_")",XMDUZ=$S($G(DUZ):DUZ,1:.5)
S XMTEXT="PSSZMES("
S XMY("G.PSS DEE AUDIT")="",XMY(DUZ)=""
D ^XMD
Q
STOR ;STORES VALUES INTO MAILMAN VARIABLES
; ZEXCEPT: PSSZMES,COUNT,FIELD,LABEL,NEWVAL,OLDVAL,SPACES
S:LABEL["660.1" LABEL="SUB6601"
S:LABEL["8.5" LABEL="SUB85"
S FIELD=$P($T(@(LABEL)+ZZJ),";",3)
;S PSSZMES(COUNT)=FIELD_$E(SPACES,1,30-$L(FIELD))_OLDVAL_$E(SPACES,1,30-$L(OLDVAL))_$G(NEWVAL),COUNT=COUNT+1
S PSSZMES(COUNT)=FIELD,COUNT=COUNT+1
S PSSZMES(COUNT)=$E(SPACES,1,5)_"OLD: "_OLDVAL,COUNT=COUNT+1
S PSSZMES(COUNT)=$E(SPACES,1,5)_"NEW: "_$G(NEWVAL),COUNT=COUNT+1
S PSSZMES(COUNT)=" ",COUNT=COUNT+1
Q
SETLB ;SETS $TEXT LABEL
; ZEXCEPT: LABEL,PSSZNODE
S LABEL=$S(PSSZNODE=0:"SUB0",PSSZNODE=2:"SUB2",PSSZNODE=3:"SUB3",PSSZNODE=8.5:"SUB85",PSSZNODE=660:"SUB660",PSSZNODE=660.1:"SUB6601",PSSZNODE="EPH":"SUBEPH",PSSZNODE="ND":"SUBND",1:"SUBI")
Q
SUB0 ;FIELDS FOR ^PSDRUG(ZDA,0)
;;GENERIC NAME
;;VA CLASSIFICATION
;;DEA, SPECIAL HDLG
;;MAXIMUM DOSE PER DAY
;;STANDARD SIG
;;FSN
;;DRUG GROUP/INTERACTION
;;WARNING LABEL
;;NON-FORMULARY
;;MESSAGE
SUB2 ;FIELDS FOR ^PSDRUG(ZDA,2)
;;PHARMACY ORDERABLE ITEM
;;RESTRICTION
;;APPLICATION PACKAGES' USE
;;NDC
;;
;;*PRIMARY DRUG
SUB3 ;FIELDS FOR ^PSDRUG(ZDA,3)
;;CMOP DISPENSE
SUB85 ;
;;*ATC CANISTER
;;ATC MNEMONIC
SUB660 ;FIELDS FOR ^PSDRUG(ZDA,660)
;;REORDER LEVEL
;;ORDER UNIT
;;PRICE PER ORDER UNIT
;;NORMAL AMOUNT TO ORDER
;;DISPENSE UNITS PER ORDER UNIT
;;PRICE PER DISPENSE UNIT
;;SOURCE OF SUPPLY
;;DISPENSE UNIT
SUB6601 ;FIELDS FOR ^PSDRUG(ZDA,660.1)
;;CURRENT INVENTORY
SUBEPH ;FIELDS FOR ^PSDRUG(ZDA,"EPH")
;;DAW CODE
;;NCPDP DISPENSE UNIT
;;NCPDP QUANTITY MULTIPLIER
;;EPHARMACY BILLABLE
;;EPHARMACY BILLABLE (TRICARE)
;;EPHARMACY BILLABLE (CHAMPVA)
;;SENSITIVE DIAGNOSIS DRUG
SUBI ;FIELDS FOR ^PSDRUG(ZDA,"I")
;;INACTIVE DATE
SUBND ;FIELDS FOR ^PSDRUG(ZDA,"ND")
;;NATIONAL DRUG FILE ENTRY
;;VA PRODUCT NAME
;;PSNDF VA PRODUCT NAME ENTRY
;;PACKAGE SIZE
;;PACKAGE TYPE
;;NATIONAL DRUG CLASS
;;
;;
;;
;;CMOP ID
;;NATIONAL FORMULARY INDICATOR
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSSDEEA 6619 printed Dec 13, 2024@02:30:45 Page 2
PSSDEEA ;PBM/RMS - DRUG FILE ENTER/EDIT AUDIT ; 18 May 2018 10:55 AM
+1 ;;1.0;PHARMACY DATA MANAGEMENT;**227**;;Build 18
+2 ;------------------------------------------------------------------
BEFORE(TAG) ;
+1 ; Capture the drug entry before it is edited to have to compare to
+2 ; after the user completes the editing. Email changes in
+3 ; linetag 'AFTER' (called at the end of PSSDEE).
+4 ; From: PSSDEE [PSS DRUG ENTER/EDIT]
+5 ; Output:
+6 ; 1. ^UTILITY(TAG,$J,DA)=Drug file entry number DA before editing
+7 ; 2. ZDA ; DA or IEN of Drug file #50 entry
+8 ; 3. ZN ; Will be equal to 1 if a new drug was entered into file
+9 ;
+10 ;ZEXCEPT: DA,Y,ZDA,ZN
+11 ;
+12 KILL ^UTILITY(TAG,$JOB,DA)
+13 MERGE ^UTILITY(TAG,$JOB,DA)=^PSDRUG(DA)
+14 ;
+15 SET ZDA=DA
SET ZN=$PIECE(Y,"^",3)
+16 ;
+17 QUIT
+18 ;------------------------------------------------------------------
AFTER(TAG) ;
+1 ;
+2 ; DOCUMENTATION AND SETUP INFORMATION
+3 ;
+4 ; Modifications:
+5 ;
+6 ; * PSSDEE calls BEFORE^PSSDEEA to create ^UTILITY("PSSDEE",$J,DA) data.
+7 ; ^UTILITY data holds all ^PSDRUG data for drug prior to any
+8 ; editing.
+9 ; * PSSDEE later calls AFTER^PSSDEEA to compare the value of the drug
+10 ; file entry after editing to the pre-snapshot values held in
+11 ; ^UTILITY. If changes have been made, a Mailman message is
+12 ; sent to members of a mail group. (See SETUP below)
+13 ;
+14 ; Note: USING the Drug Enter/Edit option is sufficient to trigger
+15 ; the audit email, even if a non-audited field is the only change
+16 ; made by the user.
+17 ;
+18 ; ZEXCEPT: PSSZMES,PSSZNOC,ANS,CHANGES,COUNT,FIELD,FLAG,LABEL,NEWVAL,OLDVAL,USER,ZDA,ZDAN,ZN,PSSZNODE,ZZJ
EN if '$GET(ZDA)
QUIT
+1 NEW COUNT,USER
SET COUNT=6
SET USER=$PIECE(^VA(200,DUZ,0),"^")
SET ZDAN=$PIECE(^PSDRUG(ZDA,0),"^")
+2 DO HEADER
+3 DO COMPAR
+4 DO SEND
+5 KILL PSSZMES,ZDA,ZDAN,LABEL,PSSZNODE,OLDVAL,NEWVAL,FIELD,CHANGES,FLAG,ZZJ,ANS,ZN,PSSZNOC
+6 SET NEWVAL=""
+7 QUIT
+1 ; ZEXCEPT: PSSZMES,USER,ZDAN
+2 SET PSSZMES(1)="Please Note: The Drug Enter/Edit option was used by "_USER_"."
+3 SET PSSZMES(2)="The drug that was entered/edited was "_ZDAN_"."
+4 SET PSSZMES(3)="-------------------------------------------------------------------------------"
+5 QUIT
COMPAR ;
+1 ; ZEXCEPT: PSSZMES,ANS,FLAG,LABEL,NEWVAL,OLDVAL,ZDA,TAG,PSSZNOC
+2 NEW CHANGES,NEWVAL,OLDVAL,SPACES,PSSZNODE,ZZJ
+3 SET $PIECE(SPACES," ",80)=""
SET PSSZNOC=0
+4 FOR PSSZNODE=0,2,3,8.5,660,660.1,"EPH","I","ND"
IF $GET(ZDA)
Begin DoDot:1
+5 if ZN=1
SET ^UTILITY(TAG,$JOB,ZDA,PSSZNODE)=""
+6 if '$DATA(^PSDRUG(ZDA,PSSZNODE))&('$DATA(^UTILITY(TAG,$JOB,ZDA,PSSZNODE)))
QUIT
+7 IF '$DATA(^UTILITY(TAG,$JOB,ZDA,PSSZNODE))&($DATA(^PSDRUG(ZDA,PSSZNODE)))
SET CHANGES(PSSZNODE)=^PSDRUG(ZDA,PSSZNODE)
+8 IF '$DATA(^PSDRUG(ZDA,PSSZNODE))&($DATA(^UTILITY(TAG,$JOB,ZDA,PSSZNODE)))
SET CHANGES(PSSZNODE)=^UTILITY(TAG,$JOB,ZDA,PSSZNODE)
+9 if $DATA(CHANGES(PSSZNODE))!('$DATA(^PSDRUG(ZDA,PSSZNODE)))!('$DATA(^UTILITY(TAG,$JOB,ZDA,PSSZNODE)))
QUIT
+10 if ^UTILITY(TAG,$JOB,ZDA,PSSZNODE)=^PSDRUG(ZDA,PSSZNODE)
QUIT
+11 SET CHANGES(PSSZNODE)=""
+12 FOR ZZJ=1:1:10
SET FLAG=0
SET ANS=""
if $PIECE(^PSDRUG(ZDA,PSSZNODE),"^",ZZJ)'=$PIECE(^UTILITY(TAG,$JOB,ZDA,PSSZNODE),"^",ZZJ)
SET ANS=$PIECE(^UTILITY(TAG,$JOB,ZDA,PSSZNODE),"^",ZZJ)
SET FLAG=1
if FLAG=1&(ANS="")
SET ANS="NULL"
SET CHANGES(PSSZNODE)=CHANGES(PSSZNODE)_ANS_"^"
End DoDot:1
+13 IF '$DATA(CHANGES)
SET PSSZNOC=1
SET PSSZMES(4)=" *** No Audited Changes Made ***"
QUIT
+14 SET FLAG=0
+15 FOR PSSZNODE=0,2,3,8.5,660,660.1,"EPH","I","ND"
SET LABEL="SUB"_PSSZNODE
IF $DATA(CHANGES(PSSZNODE))
FOR ZZJ=1:1:11
if "^^^^^^^^^^^^^^^^^"[$PIECE(CHANGES(PSSZNODE),"^",ZZJ,11)
QUIT
if $PIECE(CHANGES(PSSZNODE),"^",ZZJ,11)=""
QUIT
if '$DATA(^UTILITY(TAG,$JOB,ZDA))
DO SETLB
if FLAG
QUIT
Begin DoDot:1
+16 SET OLDVAL=$PIECE(CHANGES(PSSZNODE),"^",ZZJ)
if OLDVAL=""
QUIT
SET OLDVAL=OLDVAL_$$OLDEXT(OLDVAL,PSSZNODE,ZZJ)
+17 if $DATA(^PSDRUG(ZDA,PSSZNODE))
SET NEWVAL=$PIECE(^PSDRUG(ZDA,PSSZNODE),"^",ZZJ)_$$NEWEXT(ZDA,PSSZNODE,ZZJ)
+18 DO STOR
End DoDot:1
+19 QUIT
OLDEXT(OLDVAL,PSSZNODE,PIECE) ;COMPUTE EXTERNAL 'OLD' VALUE WHERE NECESSARY
+1 NEW FIELDNUM,FIELDTYP,PTRFILE
+2 SET FIELDNUM=$ORDER(^DD(50,"GL",PSSZNODE,PIECE,0))
+3 if '+FIELDNUM
QUIT ""
+4 SET FIELDTYP=$PIECE(^DD(50,FIELDNUM,0),U,2)
+5 IF $EXTRACT(FIELDTYP)'="P"
QUIT ""
+6 SET PTRFILE=+$EXTRACT(FIELDTYP,2,99)
+7 QUIT " ("_$$GET1^DIQ(PTRFILE,OLDVAL,.01)_")"
NEWEXT(ZDA,PSSZNODE,PIECE) ;COMPUTE EXTERNAL 'NEW' VALUE WHERE NECESSARY
+1 NEW FIELDNUM,INTERNAL,EXTERNAL
+2 SET FIELDNUM=$ORDER(^DD(50,"GL",PSSZNODE,PIECE,0))
+3 if '+FIELDNUM
QUIT ""
+4 SET EXTERNAL=$$GET1^DIQ(50,ZDA,FIELDNUM)
+5 SET INTERNAL=$$GET1^DIQ(50,ZDA,FIELDNUM,"I")
+6 if (INTERNAL=EXTERNAL)
QUIT ""
+7 QUIT " ("_EXTERNAL_")"
SEND ;
+1 ; ZEXCEPT: ZDA,ZDAN,PSSZNOC
+2 NEW XMDUZ,XMSUB,XMTEXT,XMY
+3 SET XMSUB=$SELECT(PSSZNOC:"DRUG ENTER/EDIT ACCESS (",1:"DRUG ENTER/EDIT AUDIT (")_$GET(ZDA)_":"_$GET(ZDAN)_")"
SET XMDUZ=$SELECT($GET(DUZ):DUZ,1:.5)
+4 SET XMTEXT="PSSZMES("
+5 SET XMY("G.PSS DEE AUDIT")=""
SET XMY(DUZ)=""
+6 DO ^XMD
+7 QUIT
STOR ;STORES VALUES INTO MAILMAN VARIABLES
+1 ; ZEXCEPT: PSSZMES,COUNT,FIELD,LABEL,NEWVAL,OLDVAL,SPACES
+2 if LABEL["660.1"
SET LABEL="SUB6601"
+3 if LABEL["8.5"
SET LABEL="SUB85"
+4 SET FIELD=$PIECE($TEXT(@(LABEL)+ZZJ),";",3)
+5 ;S PSSZMES(COUNT)=FIELD_$E(SPACES,1,30-$L(FIELD))_OLDVAL_$E(SPACES,1,30-$L(OLDVAL))_$G(NEWVAL),COUNT=COUNT+1
+6 SET PSSZMES(COUNT)=FIELD
SET COUNT=COUNT+1
+7 SET PSSZMES(COUNT)=$EXTRACT(SPACES,1,5)_"OLD: "_OLDVAL
SET COUNT=COUNT+1
+8 SET PSSZMES(COUNT)=$EXTRACT(SPACES,1,5)_"NEW: "_$GET(NEWVAL)
SET COUNT=COUNT+1
+9 SET PSSZMES(COUNT)=" "
SET COUNT=COUNT+1
+10 QUIT
SETLB ;SETS $TEXT LABEL
+1 ; ZEXCEPT: LABEL,PSSZNODE
+2 SET LABEL=$SELECT(PSSZNODE=0:"SUB0",PSSZNODE=2:"SUB2",PSSZNODE=3:"SUB3",PSSZNODE=8.5:"SUB85",PSSZNODE=660:"SUB660",PSSZNODE=660.1:"SUB6601",PSSZNODE="EPH":"SUBEPH",PSSZNODE="ND":"SUBND",1:"SUBI")
+3 QUIT
SUB0 ;FIELDS FOR ^PSDRUG(ZDA,0)
+1 ;;GENERIC NAME
+2 ;;VA CLASSIFICATION
+3 ;;DEA, SPECIAL HDLG
+4 ;;MAXIMUM DOSE PER DAY
+5 ;;STANDARD SIG
+6 ;;FSN
+7 ;;DRUG GROUP/INTERACTION
+8 ;;WARNING LABEL
+9 ;;NON-FORMULARY
+10 ;;MESSAGE
SUB2 ;FIELDS FOR ^PSDRUG(ZDA,2)
+1 ;;PHARMACY ORDERABLE ITEM
+2 ;;RESTRICTION
+3 ;;APPLICATION PACKAGES' USE
+4 ;;NDC
+5 ;;
+6 ;;*PRIMARY DRUG
SUB3 ;FIELDS FOR ^PSDRUG(ZDA,3)
+1 ;;CMOP DISPENSE
SUB85 ;
+1 ;;*ATC CANISTER
+2 ;;ATC MNEMONIC
SUB660 ;FIELDS FOR ^PSDRUG(ZDA,660)
+1 ;;REORDER LEVEL
+2 ;;ORDER UNIT
+3 ;;PRICE PER ORDER UNIT
+4 ;;NORMAL AMOUNT TO ORDER
+5 ;;DISPENSE UNITS PER ORDER UNIT
+6 ;;PRICE PER DISPENSE UNIT
+7 ;;SOURCE OF SUPPLY
+8 ;;DISPENSE UNIT
SUB6601 ;FIELDS FOR ^PSDRUG(ZDA,660.1)
+1 ;;CURRENT INVENTORY
SUBEPH ;FIELDS FOR ^PSDRUG(ZDA,"EPH")
+1 ;;DAW CODE
+2 ;;NCPDP DISPENSE UNIT
+3 ;;NCPDP QUANTITY MULTIPLIER
+4 ;;EPHARMACY BILLABLE
+5 ;;EPHARMACY BILLABLE (TRICARE)
+6 ;;EPHARMACY BILLABLE (CHAMPVA)
+7 ;;SENSITIVE DIAGNOSIS DRUG
SUBI ;FIELDS FOR ^PSDRUG(ZDA,"I")
+1 ;;INACTIVE DATE
SUBND ;FIELDS FOR ^PSDRUG(ZDA,"ND")
+1 ;;NATIONAL DRUG FILE ENTRY
+2 ;;VA PRODUCT NAME
+3 ;;PSNDF VA PRODUCT NAME ENTRY
+4 ;;PACKAGE SIZE
+5 ;;PACKAGE TYPE
+6 ;;NATIONAL DRUG CLASS
+7 ;;
+8 ;;
+9 ;;
+10 ;;CMOP ID
+11 ;;NATIONAL FORMULARY INDICATOR