$TXT Created by FLEGEL,CHRIS at     (KIDS) on Thursday, 12/01/16 at 14:24
=============================================================================
Run Date: DEC 01, 2016                     Designation: PSS*1*201
Package : PSS - PHARMACY DATA MANAGEMENT      Priority: Mandatory
Version : 1                                     Status: Under Development
=============================================================================

Associated patches: (v)PSS*1*119   <<= must be installed BEFORE `PSS*1*201'
                    (v)PSS*1*173   <<= must be installed BEFORE `PSS*1*201'
                    (v)PSS*1*175   <<= must be installed BEFORE `PSS*1*201'
                    (v)PSS*1*184   <<= must be installed BEFORE `PSS*1*201'
                    (v)PSS*1*189   <<= must be installed BEFORE `PSS*1*201'

Subject: MOCHA 2.1 DOSING INFRASTRUCTURE

Category: 
  - Routine
  - Data Dictionary
  - Enhancement (Mandatory)
  - Input Template

Description:
============

 Pharmacy Data Management infrastructure to prepare for Daily Dose Check 
 implementation.
  
 MOCHA v2.1a will provide the following enhancements:
 ===================================================
  
 Add new fields to both the ADMINISTRATION SCHEDULE file (#51.1) and the 
 MEDICATION INSTRUCTION file (#51) to define a frequency for a schedule or 
 medication instruction used within a medication order for specific 
 dispense drug(s) or for all drugs in order to perform a Max Daily Dose 
 Order Check.
  
 Add new fields to both the ADMINISTRATION SCHEDULE file (#51.1) and the 
 MEDICATION INSTRUCTION file (#51) to be able to derive a frequency value 
 to perform a Max Daily Dose Order Check when the name of a schedule or 
 medication instruction has been changed.
  
 Modify Standard Schedule Edit [PSS SCHEDULE EDIT] option to allow editing 
 of the new frequency fields.
  
 Modify Administration Schedule File Report [PSS SCHEDULE REPORT] option 
 to display data entered in the frequency fields.
  
 Modify Medication Instruction File Add/Edit [PSSJU MI] option to allow 
 editing of the new frequency fields.
  
 Modify Medication Instruction File Report [PSS MED INSTRUCTION REPORT] 
 option to display data entered in the new frequency fields.
  
 Modify entries to the DOSE UNITS file (#51.24).
  
 Create a new file called DOSE UNIT CONVERSION (#51.25).
  
 Add new entries to the APSP INTERVENTION TYPE file (#9009032.3).
  
 Invoke CPRS Quick Order Notification when Pharmacy Orderable Item name is 
 edited so that corresponding changes can be made to the quick order name 
 to ensure that the Dosing Order Checks can be performed successfully.
  
 Enhance the interpretation of free text dosages when deriving a numeric 
 dose and dose unit for the Dosing Check when the free text dosage contains
 a dosing range.
  
 Enhance the interpretation of free text dosages when deriving a numeric 
 dose and dose unit for the Dosing Check when the free text dosage contains
 data within parenthesis.
   
 An enhancement has been made when a medication order is placed in
 Computerized Patient Record System (CPRS), when a free text dosage is
 entered, and there is a many to one match from Drug to Pharmacy Orderable
 Item. If the DRUG File (#50) entry selected to be used for the Dosing
 check is a multi-ingredient, and every ingredient has a Drug Unit, and
 that Drug Unit resolves to a non Dose-Form type of Unit in the DOSE UNITS
 File (#51.24), and a numeric dose and dose was derived from the free text
 dosage, and that derived dose unit resolves to the same unit as the
 ingredient drug units, then the Dosing check will be performed using that
 numeric dose and dose unit.
  
 Changes have been made to the VistA XML parsing code for the DOSING_INFO 
 and DRUG_INFO Web Services to properly interpret all attributes returned 
 with Mocha Server 3.0 and future server versions. These changes are 
 transparent to the end user.
  
  
 The following options have been changed:
 =======================================
  
 The Standard Schedule Edit [PSS SCHEDULE EDIT] option has been modified 
 to allow editing of the DOSING CHECK FREQUENCY field (#11), DRUG(S) FOR 
 DOSING CHK FREQ (#11.1), and OLD SCHEDULE NAME(S) field (#13) for a 
 schedule.
  
 The Administration Schedule File Report [PSS SCHEDULE REPORT] option has 
 been modified to allow display of the DOSING CHECK FREQUENCY field (#11), 
 DRUG(S) FOR DOSING CHK FREQ (#11.1), and OLD SCHEDULE NAME(S) field (#13) 
 from the ADMINISTRATION SCHEDULE file (#51.1) for a schedule.
  
 The Medication Instruction File Add/Edit [PSSJU MI] option has been 
 modified to allow editing of the DOSING CHECK FREQUENCY field (#32), 
 DRUG(S) FOR DOSING CHK FREQ field (#32.1), and OLD MED INSTRUCTION 
 NAME(S) field (#33) for a medication instruction. 
  
 The Medication Instruction File Report [PSS MED INSTRUCTION REPORT] 
 option has been modified to allow display of the DOSING CHECK FREQUENCY 
 field (#32), DRUG(S) FOR DOSING CHK FREQ (#32.1), and OLD MED INSTRUCTION 
 NAME(S) field (#33) from the MEDICATION INSTRUCTION file (#51) for a 
 medication instruction.
  
  
 The following file has been added:
 =================================
  
 A new DOSE UNIT CONVERSION file (#51.25) was created. Although this file 
 has not yet been standardized by STS, no local editing will be allowed. 
 The Read Access of the DOSE UNIT CONVERSION file (#51.25) has been set to 
 "Pp." The DOSE UNIT CONVERSION file will be used to convert one dose unit 
 to another using a conversion factor so that a comparison can be made 
 between two dose units when they are not equivalent.  The dose unit used 
 for the Dosing Order Check may not be the same dose unit First Data Bank 
 (FDB) returns with the Dosing Order Check results. The initial list of 
 Dose Unit Conversion entries is provided in Appendix XXXX of the Pharmacy 
 Data Management Version 1.0 User Guide.
  
  
 The following fields have been added to existing files:
 ======================================================
  
 The DOSING CHECK FREQUENCY field (#11) has been created in the 
 ADMINISTRATION SCHEDULE file (#51.1). This field allows a user to enter a 
 specific format pattern to represent the frequency such as 'X#D', where 
 '#' represents a 1-2 character numeric value.  The DOSING CHECK FREQUENCY 
 field takes priority over all other fields/values when determining 
 frequency for the Max Daily Dose Order Check.
  
 The DRUG(S) FOR DOSING CHK FREQ field (#11.1) has been created in 
 the ADMNISTRATION SCHEDULE file (#51.1). This multiple field allows for 
 dispense drugs from the DRUG file (#50) to be associated with the DOSING 
 CHECK FREQUENCY field (#11) value within the ADMINISTRATION SCHEDULE file 
 (#51.1).  
  
 The OLD SCHEDULE NAME(S) field (#13) has been created in the 
 ADMINISTRATION SCHEDULE file (#51.1). This multiple field stores the old 
 values of the schedule when the NAME field (#.01) is edited. Values can 
 also be added to this field directly.
  
 The DOSING CHECK FREQUENCY field (#32) has been created in the MEDICATION 
 INSTRUCTION file (#51). This field allows a user to enter a specific 
 format pattern to represent the frequency such as 'X#D', where '#' 
 represents a 1-2 character numeric value.  The DOSING CHECK FREQUENCY 
 field takes priority over all other fields/values when determining 
 frequency for the Max Daily Dose Order Check.
  
 The DRUG(S) FOR DOSING CHK FREQ field (#32.1) has been created in 
 the MEDICATION INSTRUCTION file (#51). This multiple field allows for 
 dispense drugs from the DRUG file (#50) to be associated with the DOSING 
 CHECK FREQUENCY field (#32) value within the MEDICATION INSTRUCTION file 
 (#51).  
  
 The OLD MED INSTRCUTION NAME(S) field (#33) has been created in the 
 MEDICATION INSTRUCTION file (#51). This multiple field stores the old 
 values of the medication instruction when the NAME field (#.01) is 
 edited. Values can also be added to this field directly.
  
  
 The following field cross references have been added/modified
 to invoke CPRS Quick Order Notification:
 =======================================
  
 A new "AD" index has been added to the NAME field (#.01) of the PHARMACY 
 ORDERABLE ITEM file (#50.7).
  
 New logic has been added to the "AE" cross-reference within the PHARMACY 
 ORDERABLE ITEM field (#2.1) of the DRUG file (#50).
  
  
 The following input templates have been modified:
 ================================================
  
 The PSSJ SCHEDULE EDIT Input template has been modified to allow editing 
 of DOSING CHECK FREQUENCY field (#11), DRUG(S) FOR DOSING CHK FREQ 
 (#11.1), and OLD SCHEDULE NAME(S) field (#13) in the ADMINISTRATION 
 SCHEDULE file (#51.1).
  
 Patch Components:
 ================
  
 Files & Fields Associated:
 -------------------------
 See descriptions above.
  
 Forms Associated:
 ----------------
 N/A
  
 Mail Groups Associated:
 ----------------------
 N/A
  
 Options Associated:
 ------------------
 See descriptions above.
  
 Protocols Associated:
 --------------------
 N/A
  
 Security Keys Associated:
 ------------------------
 N/A
  
  
 Associated New Service Request(s):
 =================================
 N/A
  
  
 Patient Safety Issues (PSI)s:
 ============================
 N/A
  
  
 Remedy Ticket(s) & Overview:
 ===========================
 N/A
  
  
 Blood Bank Clearance:
 ====================
 N/A
  
 Test Sites:
 =========================
 Heartland West VAMC
 West Palm VAMC
 Louisville VAMC
  
   
  
 Documentation Retrieval Instructions
 ====================================
 Updated documentation describing the new functionality introduced by this 
 patch are available.
  
 The preferred method is to retrieve files from download.vista.med.DNS   .
 This transmits the files from the first available server. Sites may 
 also elect to retrieve files directly from a specific server. 
  
 Sites may retrieve the documentation directly using Secure File Transfer 
 Protocol (SFTP) from the ANONYMOUS.SOFTWARE directory at the following OI
 Field Offices:
    
 Albany:                 DNS      .med.DNS   
 Hines:                  DNS     .med.DNS       
 Salt Lake City:         DNS   .med.DNS   
    
 Documentation can also be found on the VA Software Documentation Library 
 at:
 http://www.DNS   /vdl/
  
 Title                                        File Name        SFTP Mode
 -----------------------------------------------------------------------
  PSS_1_RN_R0517.PDF                 MOCHA Enhancements 2.1a
                                          Release Notes
  
  PSS_1_UM_R0517.PDF                Pharmacy Data Management 
                                         User Manual v1.0
  
  PSS_1_TM_ R0517.PDF               Pharmacy Data Management
                                     Technical Manual v 1.0
  
  
  
 Installation Instructions
 =========================
 Please refer to the MOCHA 2.1 Dosing Infrastructure Installation Guide 
 (Rollback Plan) for installation instructions.

Routine Information:
====================
The second line of each of these routines now looks like:
 ;;1.0;PHARMACY DATA MANAGEMENT;**[Patch List]**;9/30/97;Build 23

The checksums below are new checksums, and
 can be checked with CHECK1^XTSUMBLD.

Routine Name: PSS1P201
    Before:       n/a   After:  B9678651  **201**
Routine Name: PSSDDUT
    Before: B42845395   After:B106731878  **13,18,19,38,56,119,201**
Routine Name: PSSDSAPD
    Before:B181014294   After:B176555473  **117,160,173,201**
Routine Name: PSSDSAPL
    Before:B108677776   After:B108974964  **117,160,201**
Routine Name: PSSDSAPM
    Before:B245057882   After:B233971912  **117,168,160,173,201**
Routine Name: PSSDSUTL
    Before:       n/a   After:B100218791  **201**
Routine Name: PSSFDBDI
    Before:B130530909   After:B154007468  **160,175,201**
Routine Name: PSSFDBRT
    Before: B57759107   After: B38856842  **136,160,201**
Routine Name: PSSFILED
    Before: B18901288   After: B42867006  **38,47,172,201**
Routine Name: PSSJEEU
    Before: B13827744   After: B14084337  **24,47,160,184,201**
Routine Name: PSSJSV
    Before: B76380719   After:B180875230  **20,38,56,59,110,121,143,149,
                                           146,189,201**
Routine Name: PSSMIRPT
    Before: B30532574   After: B35619952  **129,201**
Routine Name: PSSPOID1
    Before:  B7179282   After:  B8199146  **38,201**
Routine Name: PSSREF
    Before:  B5718052   After:  B7784796  **201**
Routine Name: PSSSCHRP
    Before:B109340534   After:B121739246  **129,160,189,201**
 
Routine list of preceding patches: 119, 172, 173, 175, 184, 189

=============================================================================
User Information:
Entered By  : FLEGEL,CHRIS M                Date Entered  : AUG 31, 2016
Completed By:                               Date Completed: 
Released By :                               Date Released : 
=============================================================================


Packman Mail Message:
=====================

$END TXT
$KID PSS*1.0*201
**INSTALL NAME**
PSS*1.0*201
"BLD",9645,0)
PSS*1.0*201^PHARMACY DATA MANAGEMENT^0^3161201^y
"BLD",9645,1,0)
^^1^1^3160809^
"BLD",9645,1,1,0)
MOCHA 2.1 Dosing Enhancements.
"BLD",9645,4,0)
^9.64PA^51.25^5
"BLD",9645,4,50.7,0)
50.7
"BLD",9645,4,50.7,2,0)
^9.641^50.7^1
"BLD",9645,4,50.7,2,50.7,0)
PHARMACY ORDERABLE ITEM  (File-top level)
"BLD",9645,4,50.7,2,50.7,1,0)
^9.6411^.01^1
"BLD",9645,4,50.7,2,50.7,1,.01,0)
NAME
"BLD",9645,4,50.7,222)
y^y^p^^^^n^^n
"BLD",9645,4,50.7,224)

"BLD",9645,4,51,0)
51
"BLD",9645,4,51,2,0)
^9.641^51.33^3
"BLD",9645,4,51,2,51,0)
MEDICATION INSTRUCTION  (File-top level)
"BLD",9645,4,51,2,51,1,0)
^9.6411^.01^2
"BLD",9645,4,51,2,51,1,.01,0)
NAME
"BLD",9645,4,51,2,51,1,32,0)
DOSING CHECK FREQUENCY
"BLD",9645,4,51,2,51.321,0)
DRUG(S) FOR DOSING CHK FREQ  (sub-file)
"BLD",9645,4,51,2,51.321,1,0)
^9.6411^^
"BLD",9645,4,51,2,51.33,0)
OLD MED INSTRUCTION NAME(S)  (sub-file)
"BLD",9645,4,51,2,51.33,1,0)
^9.6411^^
"BLD",9645,4,51,222)
y^y^p^^^^n^^n
"BLD",9645,4,51,224)

"BLD",9645,4,51.1,0)
51.1
"BLD",9645,4,51.1,2,0)
^9.641^51.113^3
"BLD",9645,4,51.1,2,51.1,0)
ADMINISTRATION SCHEDULE  (File-top level)
"BLD",9645,4,51.1,2,51.1,1,0)
^9.6411^11^1
"BLD",9645,4,51.1,2,51.1,1,11,0)
DOSING CHECK FREQUENCY
"BLD",9645,4,51.1,2,51.111,0)
DRUG(S) FOR DOSING CHK FREQ  (sub-file)
"BLD",9645,4,51.1,2,51.111,1,0)
^9.6411^^
"BLD",9645,4,51.1,2,51.113,0)
OLD SCHEDULE NAME(S)  (sub-file)
"BLD",9645,4,51.1,2,51.113,1,0)
^9.6411^^
"BLD",9645,4,51.1,222)
y^y^p^^^^n^^n
"BLD",9645,4,51.1,224)

"BLD",9645,4,51.24,0)
51.24
"BLD",9645,4,51.24,222)
n^n^f^^y^^y^o^n
"BLD",9645,4,51.24,224)
I Y=1
"BLD",9645,4,51.25,0)
51.25
"BLD",9645,4,51.25,222)
y^y^f^^n^^y^o^n
"BLD",9645,4,"APDD",50.7,50.7)

"BLD",9645,4,"APDD",50.7,50.7,.01)

"BLD",9645,4,"APDD",51,51)

"BLD",9645,4,"APDD",51,51,.01)

"BLD",9645,4,"APDD",51,51,32)

"BLD",9645,4,"APDD",51,51.321)

"BLD",9645,4,"APDD",51,51.33)

"BLD",9645,4,"APDD",51.1,51.1)

"BLD",9645,4,"APDD",51.1,51.1,11)

"BLD",9645,4,"APDD",51.1,51.111)

"BLD",9645,4,"APDD",51.1,51.113)

"BLD",9645,4,"B",50.7,50.7)

"BLD",9645,4,"B",51,51)

"BLD",9645,4,"B",51.1,51.1)

"BLD",9645,4,"B",51.24,51.24)

"BLD",9645,4,"B",51.25,51.25)

"BLD",9645,6.3)
23
"BLD",9645,"ABPKG")
n
"BLD",9645,"INI")

"BLD",9645,"INID")
n^n^n
"BLD",9645,"INIT")
POST^PSS1P201
"BLD",9645,"KRN",0)
^9.67PA^779.2^20
"BLD",9645,"KRN",.4,0)
.4
"BLD",9645,"KRN",.401,0)
.401
"BLD",9645,"KRN",.402,0)
.402
"BLD",9645,"KRN",.402,"NM",0)
^9.68A^1^1
"BLD",9645,"KRN",.402,"NM",1,0)
PSSJ SCHEDULE EDIT    FILE #51.1^51.1^0
"BLD",9645,"KRN",.402,"NM","B","PSSJ SCHEDULE EDIT    FILE #51.1",1)

"BLD",9645,"KRN",.403,0)
.403
"BLD",9645,"KRN",.5,0)
.5
"BLD",9645,"KRN",.84,0)
.84
"BLD",9645,"KRN",3.6,0)
3.6
"BLD",9645,"KRN",3.8,0)
3.8
"BLD",9645,"KRN",9.2,0)
9.2
"BLD",9645,"KRN",9.8,0)
9.8
"BLD",9645,"KRN",9.8,"NM",0)
^9.68A^38^15
"BLD",9645,"KRN",9.8,"NM",12,0)
PSSFILED^^0^B42867006
"BLD",9645,"KRN",9.8,"NM",14,0)
PSSMIRPT^^0^B35619952
"BLD",9645,"KRN",9.8,"NM",26,0)
PSSSCHRP^^0^B121739246
"BLD",9645,"KRN",9.8,"NM",27,0)
PSSJSV^^0^B180875230
"BLD",9645,"KRN",9.8,"NM",28,0)
PSS1P201^^0^B9678651
"BLD",9645,"KRN",9.8,"NM",29,0)
PSSPOID1^^0^B8199146
"BLD",9645,"KRN",9.8,"NM",30,0)
PSSREF^^0^B7784796
"BLD",9645,"KRN",9.8,"NM",31,0)
PSSDSAPD^^0^B176555473
"BLD",9645,"KRN",9.8,"NM",32,0)
PSSDSAPM^^0^B233971912
"BLD",9645,"KRN",9.8,"NM",33,0)
PSSDSUTL^^0^B100218791
"BLD",9645,"KRN",9.8,"NM",34,0)
PSSJEEU^^0^B14084337
"BLD",9645,"KRN",9.8,"NM",35,0)
PSSFDBDI^^0^B154007468
"BLD",9645,"KRN",9.8,"NM",36,0)
PSSFDBRT^^0^B38856842
"BLD",9645,"KRN",9.8,"NM",37,0)
PSSDDUT^^0^B106731878
"BLD",9645,"KRN",9.8,"NM",38,0)
PSSDSAPL^^0^B108974964
"BLD",9645,"KRN",9.8,"NM","B","PSS1P201",28)

"BLD",9645,"KRN",9.8,"NM","B","PSSDDUT",37)

"BLD",9645,"KRN",9.8,"NM","B","PSSDSAPD",31)

"BLD",9645,"KRN",9.8,"NM","B","PSSDSAPL",38)

"BLD",9645,"KRN",9.8,"NM","B","PSSDSAPM",32)

"BLD",9645,"KRN",9.8,"NM","B","PSSDSUTL",33)

"BLD",9645,"KRN",9.8,"NM","B","PSSFDBDI",35)

"BLD",9645,"KRN",9.8,"NM","B","PSSFDBRT",36)

"BLD",9645,"KRN",9.8,"NM","B","PSSFILED",12)

"BLD",9645,"KRN",9.8,"NM","B","PSSJEEU",34)

"BLD",9645,"KRN",9.8,"NM","B","PSSJSV",27)

"BLD",9645,"KRN",9.8,"NM","B","PSSMIRPT",14)

"BLD",9645,"KRN",9.8,"NM","B","PSSPOID1",29)

"BLD",9645,"KRN",9.8,"NM","B","PSSREF",30)

"BLD",9645,"KRN",9.8,"NM","B","PSSSCHRP",26)

"BLD",9645,"KRN",19,0)
19
"BLD",9645,"KRN",19,"NM",0)
^9.68A^^
"BLD",9645,"KRN",19.1,0)
19.1
"BLD",9645,"KRN",19.1,"NM",0)
^9.68A^^
"BLD",9645,"KRN",101,0)
101
"BLD",9645,"KRN",101,"NM",0)
^9.68A^^
"BLD",9645,"KRN",409.61,0)
409.61
"BLD",9645,"KRN",409.61,"NM",0)
^9.68A^^
"BLD",9645,"KRN",771,0)
771
"BLD",9645,"KRN",771,"NM",0)
^9.68A^^
"BLD",9645,"KRN",779.2,0)
779.2
"BLD",9645,"KRN",870,0)
870
"BLD",9645,"KRN",8989.51,0)
8989.51
"BLD",9645,"KRN",8989.52,0)
8989.52
"BLD",9645,"KRN",8994,0)
8994
"BLD",9645,"KRN","B",.4,.4)

"BLD",9645,"KRN","B",.401,.401)

"BLD",9645,"KRN","B",.402,.402)

"BLD",9645,"KRN","B",.403,.403)

"BLD",9645,"KRN","B",.5,.5)

"BLD",9645,"KRN","B",.84,.84)

"BLD",9645,"KRN","B",3.6,3.6)

"BLD",9645,"KRN","B",3.8,3.8)

"BLD",9645,"KRN","B",9.2,9.2)

"BLD",9645,"KRN","B",9.8,9.8)

"BLD",9645,"KRN","B",19,19)

"BLD",9645,"KRN","B",19.1,19.1)

"BLD",9645,"KRN","B",101,101)

"BLD",9645,"KRN","B",409.61,409.61)

"BLD",9645,"KRN","B",771,771)

"BLD",9645,"KRN","B",779.2,779.2)

"BLD",9645,"KRN","B",870,870)

"BLD",9645,"KRN","B",8989.51,8989.51)

"BLD",9645,"KRN","B",8989.52,8989.52)

"BLD",9645,"KRN","B",8994,8994)

"BLD",9645,"PRE")
PSS1P201
"BLD",9645,"QUES",0)
^9.62^^
"BLD",9645,"REQB",0)
^9.611^7^5
"BLD",9645,"REQB",3,0)
PSS*1.0*189^2
"BLD",9645,"REQB",4,0)
PSS*1.0*173^2
"BLD",9645,"REQB",5,0)
PSS*1.0*119^2
"BLD",9645,"REQB",6,0)
PSS*1.0*175^2
"BLD",9645,"REQB",7,0)
PSS*1.0*184^2
"BLD",9645,"REQB","B","PSS*1.0*119",5)

"BLD",9645,"REQB","B","PSS*1.0*173",4)

"BLD",9645,"REQB","B","PSS*1.0*175",6)

"BLD",9645,"REQB","B","PSS*1.0*184",7)

"BLD",9645,"REQB","B","PSS*1.0*189",3)

"DATA",51.24,1,0)
APPLICATION(S)^APPLICATION(S)^1
"DATA",51.24,1,1,0)
^51.242^3^3
"DATA",51.24,1,1,1,0)
APPLICATION
"DATA",51.24,1,1,2,0)
APPLICATIONS
"DATA",51.24,1,1,3,0)
APPLIC
"DATA",51.25,1,0)
APPLIC
"DATA",51.25,1,1,0)
^51.251^1^1
"DATA",51.25,1,1,1,0)
APPLICATION(S)^1
"DATA",51.25,2,0)
APPLICATION(S)
"DATA",51.25,2,1,0)
^51.251^1^1
"DATA",51.25,2,1,1,0)
APPLIC^1
"DATA",51.25,3,0)
APPLICATORFUL/S
"DATA",51.25,3,1,0)
^51.251^1^1
"DATA",51.25,3,1,1,0)
APPFUL^1
"DATA",51.25,4,0)
BARS
"DATA",51.25,4,1,0)
^51.251^1^1
"DATA",51.25,4,1,1,0)
EACH^1
"DATA",51.25,5,0)
CAPLETS
"DATA",51.25,5,1,0)
^51.251^1^1
"DATA",51.25,5,1,1,0)
EACH^1
"DATA",51.25,6,0)
CAPSULE(S)
"DATA",51.25,6,1,0)
^51.251^1^1
"DATA",51.25,6,1,1,0)
EACH^1
"DATA",51.25,7,0)
CENTIMETERS
"DATA",51.25,7,1,0)
^51.251^1^1
"DATA",51.25,7,1,1,0)
INCH(ES)^.394
"DATA",51.25,8,0)
DROP(S)
"DATA",51.25,8,1,0)
^51.251^1^1
"DATA",51.25,8,1,1,0)
MILLILITERS^.05
"DATA",51.25,9,0)
EACH
"DATA",51.25,9,1,0)
^51.251^26^26
"DATA",51.25,9,1,1,0)
BARS^1
"DATA",51.25,9,1,2,0)
TAB-CAPS^1
"DATA",51.25,9,1,3,0)
CAPLETS^1
"DATA",51.25,9,1,4,0)
CAPSULE(S)^1
"DATA",51.25,9,1,5,0)
ENEMAS^1
"DATA",51.25,9,1,6,0)
FILMS^1
"DATA",51.25,9,1,7,0)
IMPLANTS^1
"DATA",51.25,9,1,8,0)
INSERTS^1
"DATA",51.25,9,1,9,0)
LOZENGES^1
"DATA",51.25,9,1,10,0)
OVULE(S)^1
"DATA",51.25,9,1,11,0)
PACKAGES^1
"DATA",51.25,9,1,12,0)
PADS^1
"DATA",51.25,9,1,13,0)
PELLETS^1
"DATA",51.25,9,1,14,0)
PIECE(S)^1
"DATA",51.25,9,1,15,0)
SACHETS^1
"DATA",51.25,9,1,16,0)
SCOOPFULS^1
"DATA",51.25,9,1,17,0)
STRIP(S)^1
"DATA",51.25,9,1,18,0)
SUPPOSITORY/IES^1
"DATA",51.25,9,1,19,0)
TABLET(S)^1
"DATA",51.25,9,1,20,0)
TROCHES^1
"DATA",51.25,9,1,21,0)
VAGINAL RING^1
"DATA",51.25,9,1,22,0)
VIALS^1
"DATA",51.25,9,1,23,0)
WAFERS^1
"DATA",51.25,9,1,24,0)
PACKETS^1
"DATA",51.25,9,1,25,0)
PATCHES^1
"DATA",51.25,9,1,26,0)
VAGINAL INSERT^1
"DATA",51.25,10,0)
ENEMAS
"DATA",51.25,10,1,0)
^51.251^1^1
"DATA",51.25,10,1,1,0)
EACH^1
"DATA",51.25,11,0)
FILMS
"DATA",51.25,11,1,0)
^51.251^1^1
"DATA",51.25,11,1,1,0)
EACH^1
"DATA",51.25,12,0)
GRAMS
"DATA",51.25,12,1,0)
^51.251^2^2
"DATA",51.25,12,1,1,0)
MILLIGRAMS^1000
"DATA",51.25,12,1,2,0)
MICROGRAM(S)^1000000
"DATA",51.25,13,0)
IMPLANTS
"DATA",51.25,13,1,0)
^51.251^1^1
"DATA",51.25,13,1,1,0)
EACH^1
"DATA",51.25,14,0)
INCH(ES)
"DATA",51.25,14,1,0)
^51.251^1^1
"DATA",51.25,14,1,1,0)
CENTIMETERS^2.54
"DATA",51.25,15,0)
INHALATIONS
"DATA",51.25,15,1,0)
^51.251^3^3
"DATA",51.25,15,1,1,0)
SPRAY(S)^1
"DATA",51.25,15,1,2,0)
PUFF(S)^1
"DATA",51.25,15,1,3,0)
SQUIRTS^1
"DATA",51.25,16,0)
INSERTS
"DATA",51.25,16,1,0)
^51.251^1^1
"DATA",51.25,16,1,1,0)
EACH^1
"DATA",51.25,17,0)
LITERS
"DATA",51.25,17,1,0)
^51.251^1^1
"DATA",51.25,17,1,1,0)
MILLILITERS^1000
"DATA",51.25,35,0)
LOZENGES
"DATA",51.25,35,1,0)
^51.251^1^1
"DATA",51.25,35,1,1,0)
EACH^1
"DATA",51.25,36,0)
MICRO UNITS
"DATA",51.25,36,1,0)
^51.251^20^2
"DATA",51.25,36,1,19,0)
MILLIONUNIT(S)^.001
"DATA",51.25,36,1,20,0)
UNIT(S)^.000001
"DATA",51.25,37,0)
MICROGRAM(S)
"DATA",51.25,37,1,0)
^51.251^3^3
"DATA",51.25,37,1,1,0)
GRAMS^.000001
"DATA",51.25,37,1,2,0)
MILLIGRAMS^.001
"DATA",51.25,37,1,3,0)
NANOGRAMS^1000
"DATA",51.25,38,0)
MILLIGRAMS
"DATA",51.25,38,1,0)
^51.251^3^3
"DATA",51.25,38,1,1,0)
GRAMS^.001
"DATA",51.25,38,1,2,0)
MICROGRAM(S)^1000
"DATA",51.25,38,1,3,0)
NANOGRAMS^1000000
"DATA",51.25,39,0)
MILLILITERS
"DATA",51.25,39,1,0)
^51.251^4^4
"DATA",51.25,39,1,1,0)
DROP(S)^20
"DATA",51.25,39,1,2,0)
LITERS^.001
"DATA",51.25,39,1,3,0)
TABLESPOONFULS^.066667
"DATA",51.25,39,1,4,0)
TEASPOONFULS^.2
"DATA",51.25,40,0)
MILLIONUNIT(S)
"DATA",51.25,40,1,0)
^51.251^3^3
"DATA",51.25,40,1,1,0)
MICRO UNITS^1000
"DATA",51.25,40,1,2,0)
TU^.001
"DATA",51.25,40,1,3,0)
UNIT(S)^1000000
"DATA",51.25,41,0)
NANOGRAMS
"DATA",51.25,41,1,0)
^51.251^2^2
"DATA",51.25,41,1,1,0)
MICROGRAM(S)^.001
"DATA",51.25,41,1,2,0)
MILLIGRAMS^.000001
"DATA",51.25,42,0)
OVULE(S)
"DATA",51.25,42,1,0)
^51.251^1^1
"DATA",51.25,42,1,1,0)
EACH^1
"DATA",51.25,43,0)
PACKAGES
"DATA",51.25,43,1,0)
^51.251^1^1
"DATA",51.25,43,1,1,0)
EACH^1
"DATA",51.25,44,0)
PACKETS
"DATA",51.25,44,1,0)
^51.251^1^1
"DATA",51.25,44,1,1,0)
EACH^1
"DATA",51.25,45,0)
PADS
"DATA",51.25,45,1,0)
^51.251^1^1
"DATA",51.25,45,1,1,0)
EACH^1
"DATA",51.25,46,0)
PATCHES
"DATA",51.25,46,1,0)
^51.251^1^1
"DATA",51.25,46,1,1,0)
EACH^1
"DATA",51.25,47,0)
PELLETS
"DATA",51.25,47,1,0)
^51.251^1^1
"DATA",51.25,47,1,1,0)
EACH^1
"DATA",51.25,48,0)
PIECE(S)
"DATA",51.25,48,1,0)
^51.251^1^1
"DATA",51.25,48,1,1,0)
EACH^1
"DATA",51.25,49,0)
PUFF(S)
"DATA",51.25,49,1,0)
^51.251^2^2
"DATA",51.25,49,1,1,0)
SPRAY(S)^1
"DATA",51.25,49,1,2,0)
INHALATIONS^1
"DATA",51.25,50,0)
SACHETS
"DATA",51.25,50,1,0)
^51.251^1^1
"DATA",51.25,50,1,1,0)
EACH^1
"DATA",51.25,51,0)
SCOOPFULS
"DATA",51.25,51,1,0)
^51.251^1^1
"DATA",51.25,51,1,1,0)
EACH^1
"DATA",51.25,52,0)
SPRAY(S)
"DATA",51.25,52,1,0)
^51.251^3^3
"DATA",51.25,52,1,1,0)
INHALATIONS^1
"DATA",51.25,52,1,2,0)
PUFF(S)^1
"DATA",51.25,52,1,3,0)
SQUIRTS^1
"DATA",51.25,53,0)
SQUIRTS
"DATA",51.25,53,1,0)
^51.251^2^2
"DATA",51.25,53,1,1,0)
SPRAY(S)^1
"DATA",51.25,53,1,2,0)
INHALATIONS^1
"DATA",51.25,54,0)
STRIP(S)
"DATA",51.25,54,1,0)
^51.251^1^1
"DATA",51.25,54,1,1,0)
EACH^1
"DATA",51.25,55,0)
SUPPOSITORY/IES
"DATA",51.25,55,1,0)
^51.251^1^1
"DATA",51.25,55,1,1,0)
EACH^1
"DATA",51.25,56,0)
TAB-CAPS
"DATA",51.25,56,1,0)
^51.251^1^1
"DATA",51.25,56,1,1,0)
EACH^1
"DATA",51.25,57,0)
TABLESPOONFULS
"DATA",51.25,57,1,0)
^51.251^1^1
"DATA",51.25,57,1,1,0)
MILLILITERS^15
"DATA",51.25,58,0)
TABLET(S)
"DATA",51.25,58,1,0)
^51.251^1^1
"DATA",51.25,58,1,1,0)
EACH^1
"DATA",51.25,59,0)
TEASPOONFULS
"DATA",51.25,59,1,0)
^51.251^1^1
"DATA",51.25,59,1,1,0)
MILLILITERS^5
"DATA",51.25,60,0)
TROCHES
"DATA",51.25,60,1,0)
^51.251^1^1
"DATA",51.25,60,1,1,0)
EACH^1
"DATA",51.25,61,0)
TU
"DATA",51.25,61,1,0)
^51.251^2^2
"DATA",51.25,61,1,1,0)
MILLIONUNIT(S)^1000
"DATA",51.25,61,1,2,0)
UNIT(S)^1000
"DATA",51.25,62,0)
UNIT(S)
"DATA",51.25,62,1,0)
^51.251^3^3
"DATA",51.25,62,1,1,0)
MICRO UNITS^1000000
"DATA",51.25,62,1,2,0)
TU^.001
"DATA",51.25,62,1,3,0)
MILLIONUNIT(S)^.000001
"DATA",51.25,63,0)
VAGINAL INSERT
"DATA",51.25,63,1,0)
^51.251^1^1
"DATA",51.25,63,1,1,0)
EACH^1
"DATA",51.25,64,0)
VAGINAL RING
"DATA",51.25,64,1,0)
^51.251^1^1
"DATA",51.25,64,1,1,0)
EACH^1
"DATA",51.25,65,0)
VIALS
"DATA",51.25,65,1,0)
^51.251^1^1
"DATA",51.25,65,1,1,0)
EACH^1
"DATA",51.25,66,0)
WAFERS
"DATA",51.25,66,1,0)
^51.251^1^1
"DATA",51.25,66,1,1,0)
EACH^1
"DATA",51.25,67,0)
APPFUL
"DATA",51.25,67,1,0)
^51.251^1^1
"DATA",51.25,67,1,1,0)
APPLICATORFUL/S^1
"FIA",50.7)
PHARMACY ORDERABLE ITEM
"FIA",50.7,0)
^PS(50.7,
"FIA",50.7,0,0)
50.7I
"FIA",50.7,0,1)
y^y^p^^^^n^^n
"FIA",50.7,0,10)

"FIA",50.7,0,11)

"FIA",50.7,0,"RLRO")

"FIA",50.7,0,"VR")
1.0^PSS
"FIA",50.7,50.7)
1
"FIA",50.7,50.7,.01)

"FIA",51)
MEDICATION INSTRUCTION
"FIA",51,0)
^PS(51,
"FIA",51,0,0)
51I
"FIA",51,0,1)
y^y^p^^^^n^^n
"FIA",51,0,10)

"FIA",51,0,11)

"FIA",51,0,"RLRO")

"FIA",51,0,"VR")
1.0^PSS
"FIA",51,51)
1
"FIA",51,51,.01)

"FIA",51,51,32)

"FIA",51,51,32.1)

"FIA",51,51,33)

"FIA",51,51.321)
0
"FIA",51,51.33)
0
"FIA",51.1)
ADMINISTRATION SCHEDULE
"FIA",51.1,0)
^PS(51.1,
"FIA",51.1,0,0)
51.1I
"FIA",51.1,0,1)
y^y^p^^^^n^^n
"FIA",51.1,0,10)

"FIA",51.1,0,11)

"FIA",51.1,0,"RLRO")

"FIA",51.1,0,"VR")
1.0^PSS
"FIA",51.1,51.1)
1
"FIA",51.1,51.1,11)

"FIA",51.1,51.1,11.1)

"FIA",51.1,51.1,13)

"FIA",51.1,51.111)
0
"FIA",51.1,51.113)
0
"FIA",51.24)
DOSE UNITS
"FIA",51.24,0)
^PS(51.24,
"FIA",51.24,0,0)
51.24
"FIA",51.24,0,1)
n^n^f^^y^^y^o^n
"FIA",51.24,0,10)

"FIA",51.24,0,11)
I Y=1
"FIA",51.24,0,"RLRO")

"FIA",51.24,0,"VR")
1.0^PSS
"FIA",51.24,51.24)
0
"FIA",51.24,51.242)
0
"FIA",51.24,51.2499)
0
"FIA",51.25)
DOSE UNIT CONVERSION
"FIA",51.25,0)
^PS(51.25,
"FIA",51.25,0,0)
51.25
"FIA",51.25,0,1)
y^y^f^^n^^y^o^n
"FIA",51.25,0,10)

"FIA",51.25,0,11)

"FIA",51.25,0,"RLRO")

"FIA",51.25,0,"VR")
1.0^PSS
"FIA",51.25,51.25)
0
"FIA",51.25,51.251)
0
"INIT")
POST^PSS1P201
"IX",50.7,50.7,"AD",0)
50.7^AD^OI Quick Order change notifier^MU^^F^IR^I^50.7^^^^^A
"IX",50.7,50.7,"AD",.1,0)
^^2^2^3141030^
"IX",50.7,50.7,"AD",.1,1,0)
This index sends a message to Quick Order authors if an OI is changed or 
"IX",50.7,50.7,"AD",.1,2,0)
deleted that is linked to a Quick Order.
"IX",50.7,50.7,"AD",1)
D QO^PSSREF
"IX",50.7,50.7,"AD",2)
D QO^PSSREF
"IX",50.7,50.7,"AD",11.1,0)
^.114IA^1^1
"IX",50.7,50.7,"AD",11.1,1,0)
1^F^50.7^.01^^^F
"IX",51,51,"AF",0)
51^AF^Updates the OLD MED INSTRUCTION NAME(S) multiple when NAME field is edited.^MU^^F^IR^I^51^^^^^A
"IX",51,51,"AF",1)
D ENOMIX^PSSFILED(X1,DA)
"IX",51,51,"AF",2)
Q
"IX",51,51,"AF",11.1,0)
^.114IA^1^1
"IX",51,51,"AF",11.1,1,0)
1^F^51^.01^^^F
"IX",51.24,51.24,"AMASTERVUID",0)
51.24^AMASTERVUID^This cross-reference identifies the Master entry for a VUID.^R^^R^IR^I^51.24^^^^^S
"IX",51.24,51.24,"AMASTERVUID",.1,0)
^^3^3^3080331^
"IX",51.24,51.24,"AMASTERVUID",.1,1,0)
If multiple entries have the same VUID in the file, this cross-reference 
"IX",51.24,51.24,"AMASTERVUID",.1,2,0)
can be used to identify the Master entry for a VUID associated with a 
"IX",51.24,51.24,"AMASTERVUID",.1,3,0)
Term/Concept.
"IX",51.24,51.24,"AMASTERVUID",1)
S ^PS(51.24,"AMASTERVUID",$E(X(1),1,30),X(2),DA)=""
"IX",51.24,51.24,"AMASTERVUID",2)
K ^PS(51.24,"AMASTERVUID",$E(X(1),1,30),X(2),DA)
"IX",51.24,51.24,"AMASTERVUID",2.5)
K ^PS(51.24,"AMASTERVUID")
"IX",51.24,51.24,"AMASTERVUID",11.1,0)
^.114IA^2^2
"IX",51.24,51.24,"AMASTERVUID",11.1,1,0)
1^F^51.24^99.99^30^1^F
"IX",51.24,51.24,"AMASTERVUID",11.1,2,0)
2^F^51.24^99.98^^2^F
"IX",51.24,51.24,"UPCASE",0)
51.24^UPCASE^Converts mixed case to uppercase for lookup^R^^F^IR^I^51.24^^^^^LS
"IX",51.24,51.24,"UPCASE",.1,0)
^^3^3^3110608^
"IX",51.24,51.24,"UPCASE",.1,1,0)
This cross-reference converts mixed case (TallMan lettering) to
"IX",51.24,51.24,"UPCASE",.1,2,0)
uppercase so that when a lookup is done, the list collates properly
"IX",51.24,51.24,"UPCASE",.1,3,0)
while still retaining TallMan lettering in the NAME field (#.01).
"IX",51.24,51.24,"UPCASE",1)
S ^PS(51.24,"UPCASE",$E(X,1,30),DA)=""
"IX",51.24,51.24,"UPCASE",2)
K ^PS(51.24,"UPCASE",$E(X,1,30),DA)
"IX",51.24,51.24,"UPCASE",2.5)
K ^PS(51.24,"UPCASE")
"IX",51.24,51.24,"UPCASE",11.1,0)
^.114IA^1^1
"IX",51.24,51.24,"UPCASE",11.1,1,0)
1^F^51.24^.01^30^1^F
"IX",51.24,51.24,"UPCASE",11.1,1,2)
S X=$$UP^XLFSTR(X)
"IX",51.24,51.24,"UPCASE",11.1,1,3)

"KRN",.402,2003,-1)
0^1
"KRN",.402,2003,0)
PSSJ SCHEDULE EDIT^3161024.1828^@^51.1^^@^3161201
"KRN",.402,2003,"DIAB",3,1,51.11,0)
WARD ADMINISTRATION TIMES;REQ
"KRN",.402,2003,"DIAB",8,0,51.1,6)
STANDARD ADMINISTRATION TIMES;REQ
"KRN",.402,2003,"DIAB",13,0,51.1,0)
TYPE OF SCHEDULE//CONTINUOUS;REQ
"KRN",.402,2003,"DR",1,51.1)
S PSSJSE=1;S ZPSJS=$$GET1^DIQ(51.1,DA,5,"I");.01;8;8.1;D OASDIC^PSSJSV I $D(DUOUT) K X S Y="@999" Q;12;S:'$D(PSJIVSEF) Y="@2";5////C//;S PSSSCT=X;S Y=1,PSJS="C";@2;5R~//CONTINUOUS;S PSSSCT=X;S XPSJS=0;
"KRN",.402,2003,"DR",1,51.1,1)
I ZPSJS'="",ZPSJS'=X,X'="C" S XPSJS=1;I PSSSCT="P" S XPSJS=1;I XPSJS=0 S Y="@3";2////@;1////@;D RMTIME^PSSJSV;W !,"The Type of Schedule has changed, the frequency will be removed",!;@3;I PSSSCT="O" D TEMSF^PSSJEEU;S (ZPSJS,PSJS)=X;
"KRN",.402,2003,"DR",1,51.1,2)
I PSSSCT'="O" D TEMSFX^PSSJEEU;9;I PSSSCT="O"!(PSSSCT="OC")!($G(X)=1) S Y="@12";10;I $G(X)=1 S Y="@12";11;11.1;@12;I PSSSCT'="O" D TEMSFRX^PSSJEEU;I PSSSCT="O" D TEMSFR^PSSJEEU S Y="";I PSSSCT="P" S Y="@999";
"KRN",.402,2003,"DR",1,51.1,3)
I ",O,D,"[(","_PSSSCT_",") S Y="@5" Q;@4;S ZZZ=$$GET1^DIQ(51.1,DA,2,"I");2//^D ENFQD^PSSJSV;S PSSFRQ=$G(X);I PSSSCT="OC" S Y="@60" Q;I X="" W " Must enter a frequency." K X S Y="@4" Q;I PSSSCT="P" S Y="@999";
"KRN",.402,2003,"DR",1,51.1,4)
I PSSFRQ=""!(PSSFRQ=ZZZ) S Y="@60";1////@;D RMTIME^PSSJSV;W !,"The Frequency has changed, the Admin Times will be removed",!;@60;S PSJS=$$NSO^PSGS0($G(PSSFRQ)),OFLG=0;I PSJS'="" W !?10,"The schedule entered equals ",PSJS,".",!;
"KRN",.402,2003,"DR",1,51.1,5)
I PSSFRQ>1439,PSSFRQ#1440 S OFLG=1;I PSSFRQ,PSSFRQ<1440,1440#PSSFRQ S OFLG=1;I PSSSCT="OC" S OFLG=1;I 'OFLG S Y="@5";W !?10,"This is an odd schedule that does not require administration times.",!;
"KRN",.402,2003,"DR",1,51.1,6)
W ?10,"BCMA will determine the administration times based off the",!;W ?10,"start date/time of the medication order.";1////@;D RMTIME^PSSJSV;S Y="@999";@5;I PSSSCT'="D",PSSSCT'="C",PSSSCT'="O" S Y="@6" Q;1R~;
"KRN",.402,2003,"DR",1,51.1,7)
I X="",PSSSCT="C" W "Must enter administration times. " K X S Y="@5" Q;S Y="@7";@6;1;@7;3;@999;K PSSSCT,PSSFRQ,PSSJSE,ZPSJS;
"KRN",.402,2003,"DR",2,51.11)
.01;I X="" S Y="@999" Q;1R~;
"KRN",.402,2003,"DR",2,51.111)
.01;
"MBREQ")
0
"ORD",7,.402)
.402;7;;;EDEOUT^DIFROMSO(.402,DA,"",XPDA);FPRE^DIFROMSI(.402,"",XPDA);EPRE^DIFROMSI(.402,DA,$E("N",$G(XPDNEW)),XPDA,"",OLDA);;EPOST^DIFROMSI(.402,DA,"",XPDA);DEL^DIFROMSK(.402,"",%)
"ORD",7,.402,0)
INPUT TEMPLATE
"PGL",51.24,"""VUID""",3,99.97)
REPLACED BY VHA STANDARD TERM^P51.24'^PS(51.24,^VUID;3^Q
"PKG",517,-1)
1^1
"PKG",517,0)
PHARMACY DATA MANAGEMENT^PSS^Maintenance of Pharmacy files.
"PKG",517,20,0)
^9.402P^^
"PKG",517,22,0)
^9.49I^1^1
"PKG",517,22,1,0)
1.0^2970930^2971014^11595
"PKG",517,22,1,"PAH",1,0)
201^3161201
"PKG",517,22,1,"PAH",1,1,0)
^^1^1^3161201
"PKG",517,22,1,"PAH",1,1,1,0)
MOCHA 2.1 Dosing Enhancements.
"PRE")
PSS1P201
"QUES","XPF1",0)
Y
"QUES","XPF1","??")
^D REP^XPDH
"QUES","XPF1","A")
Shall I write over your |FLAG| File
"QUES","XPF1","B")
YES
"QUES","XPF1","M")
D XPF1^XPDIQ
"QUES","XPF2",0)
Y
"QUES","XPF2","??")
^D DTA^XPDH
"QUES","XPF2","A")
Want my data |FLAG| yours
"QUES","XPF2","B")
YES
"QUES","XPF2","M")
D XPF2^XPDIQ
"QUES","XPI1",0)
YO
"QUES","XPI1","??")
^D INHIBIT^XPDH
"QUES","XPI1","A")
Want KIDS to INHIBIT LOGONs during the install
"QUES","XPI1","B")
NO
"QUES","XPI1","M")
D XPI1^XPDIQ
"QUES","XPM1",0)
PO^VA(200,:EM
"QUES","XPM1","??")
^D MG^XPDH
"QUES","XPM1","A")
Enter the Coordinator for Mail Group '|FLAG|'
"QUES","XPM1","B")

"QUES","XPM1","M")
D XPM1^XPDIQ
"QUES","XPO1",0)
Y
"QUES","XPO1","??")
^D MENU^XPDH
"QUES","XPO1","A")
Want KIDS to Rebuild Menu Trees Upon Completion of Install
"QUES","XPO1","B")
NO
"QUES","XPO1","M")
D XPO1^XPDIQ
"QUES","XPZ1",0)
Y
"QUES","XPZ1","??")
^D OPT^XPDH
"QUES","XPZ1","A")
Want to DISABLE Scheduled Options, Menu Options, and Protocols
"QUES","XPZ1","B")
NO
"QUES","XPZ1","M")
D XPZ1^XPDIQ
"QUES","XPZ2",0)
Y
"QUES","XPZ2","??")
^D RTN^XPDH
"QUES","XPZ2","A")
Want to MOVE routines to other CPUs
"QUES","XPZ2","B")
NO
"QUES","XPZ2","M")
D XPZ2^XPDIQ
"RTN")
15
"RTN","PSS1P201")
0^28^B9678651^n/a
"RTN","PSS1P201",1,0)
PSS1P201 ;BP/CMF - PATCH PSS*1*201 Pre/Post-Init Rtn ;09/13/2016
"RTN","PSS1P201",2,0)
 ;;1.0;PHARMACY DATA MANAGEMENT;**201**;9/30/97;Build 23
"RTN","PSS1P201",3,0)
 ;
"RTN","PSS1P201",4,0)
ENV ;environment check
"RTN","PSS1P201",5,0)
 S XPDABORT=""
"RTN","PSS1P201",6,0)
 ;D PRODCHK(.XPDABORT) I XPDABORT=2 Q  restriction removed after sprint 3
"RTN","PSS1P201",7,0)
 D PROGCHK(.XPDABORT)
"RTN","PSS1P201",8,0)
 I XPDABORT="" K XPDABORT
"RTN","PSS1P201",9,0)
 Q
"RTN","PSS1P201",10,0)
 ;
"RTN","PSS1P201",11,0)
PRODCHK(XPDABORT) ;checks for test/production account
"RTN","PSS1P201",12,0)
 ;
"RTN","PSS1P201",13,0)
 I $$PROD^XUPROD DO
"RTN","PSS1P201",14,0)
 . D BMES^XPDUTL("******")
"RTN","PSS1P201",15,0)
 . D MES^XPDUTL("PSS*1*201 is not yet ready for production accounts.")
"RTN","PSS1P201",16,0)
 . D MES^XPDUTL("Installation aborted.")
"RTN","PSS1P201",17,0)
 . D MES^XPDUTL("******")
"RTN","PSS1P201",18,0)
 . S XPDABORT=2
"RTN","PSS1P201",19,0)
 Q
"RTN","PSS1P201",20,0)
 ;
"RTN","PSS1P201",21,0)
PROGCHK(XPDABORT) ;checks for necessary programmer variables
"RTN","PSS1P201",22,0)
 ;
"RTN","PSS1P201",23,0)
 I '$G(DUZ)!($G(DUZ(0))'="@")!('$G(DT))!($G(U)'="^") DO
"RTN","PSS1P201",24,0)
 . D BMES^XPDUTL("******")
"RTN","PSS1P201",25,0)
 . D MES^XPDUTL("Your programming variables are not set up properly.")
"RTN","PSS1P201",26,0)
 . D MES^XPDUTL("Installation aborted.")
"RTN","PSS1P201",27,0)
 . D MES^XPDUTL("******")
"RTN","PSS1P201",28,0)
 . S XPDABORT=2
"RTN","PSS1P201",29,0)
 Q
"RTN","PSS1P201",30,0)
 ;
"RTN","PSS1P201",31,0)
POST ;;
"RTN","PSS1P201",32,0)
 D APSP  ; add entries to Intervention Type file
"RTN","PSS1P201",33,0)
 D DOSEUNIT  ; edit entry 40
"RTN","PSS1P201",34,0)
 Q
"RTN","PSS1P201",35,0)
 ;;
"RTN","PSS1P201",36,0)
APSP ;;
"RTN","PSS1P201",37,0)
 N FDA,FDERROR,LIST,LISTERR,I,IEN
"RTN","PSS1P201",38,0)
 D BMES^XPDUTL("Adding entries to APSP Intervention Type file")
"RTN","PSS1P201",39,0)
 D FIND^DIC(9009032.3,"","","X","MAX DAILY DOSE","","","","","LIST","LISTERR")
"RTN","PSS1P201",40,0)
 D:$P(LIST("DILIST",0),U,1)=0 
"RTN","PSS1P201",41,0)
 .S FDA(1,9009032.3,"+1,",.01)="MAX DAILY DOSE"
"RTN","PSS1P201",42,0)
 .D UPDATE^DIE("E","FDA(1)","","FDERROR")
"RTN","PSS1P201",43,0)
 .I '$D(FDERROR) D MES^XPDUTL("MAX DAILY DOSE added.")
"RTN","PSS1P201",44,0)
 .Q
"RTN","PSS1P201",45,0)
 D:$P(LIST("DILIST",0),U,1)>1 
"RTN","PSS1P201",46,0)
 .S I=1
"RTN","PSS1P201",47,0)
 .F  S I=$O(LIST("DILIST",2,I)) Q:I=""  D 
"RTN","PSS1P201",48,0)
 ..S IEN=LIST("DILIST",2,I)
"RTN","PSS1P201",49,0)
 ..D KILLAPSP(IEN)
"RTN","PSS1P201",50,0)
 ..Q
"RTN","PSS1P201",51,0)
 K FDA,FDERROR,LIST,LISTERR,I,IEN
"RTN","PSS1P201",52,0)
 D FIND^DIC(9009032.3,"","","X","MAX SINGLE DOSE & MAX DAILY DOSE","","","","","LIST","LISTERR")
"RTN","PSS1P201",53,0)
 D:$P(LIST("DILIST",0),U,1)=0 
"RTN","PSS1P201",54,0)
 .S FDA(1,9009032.3,"+1,",.01)="MAX SINGLE DOSE & MAX DAILY DOSE"
"RTN","PSS1P201",55,0)
 .D UPDATE^DIE("E","FDA(1)","","FDERROR")
"RTN","PSS1P201",56,0)
 .I '$D(FDERROR) D MES^XPDUTL("MAX SINGLE DOSE & MAX DAILY DOSE added.")
"RTN","PSS1P201",57,0)
 .Q
"RTN","PSS1P201",58,0)
 D:$P(LIST("DILIST",0),U,1)>1 
"RTN","PSS1P201",59,0)
 .S I=1
"RTN","PSS1P201",60,0)
 .F  S I=$O(LIST("DILIST",2,I)) Q:I=""  D 
"RTN","PSS1P201",61,0)
 ..S IEN=LIST("DILIST",2,I)
"RTN","PSS1P201",62,0)
 ..D KILLAPSP(IEN)
"RTN","PSS1P201",63,0)
 ..Q
"RTN","PSS1P201",64,0)
 K FDA,FDERROR,LIST,LISTERR,I,IEN
"RTN","PSS1P201",65,0)
 Q
"RTN","PSS1P201",66,0)
 ;;
"RTN","PSS1P201",67,0)
KILLAPSP(IEN) ;; remove duplicates
"RTN","PSS1P201",68,0)
 N DIK,DA
"RTN","PSS1P201",69,0)
 S DIK="^APSPQA(32.3,",DA=IEN D ^DIK
"RTN","PSS1P201",70,0)
 Q
"RTN","PSS1P201",71,0)
 ;;
"RTN","PSS1P201",72,0)
DOSEUNIT ;; change file 51.24 entry 40 .01 value, so KIDS can update the correct entry
"RTN","PSS1P201",73,0)
 N XUMF,DA,DIE,DR
"RTN","PSS1P201",74,0)
 Q:$$FIND1^DIC(51.24,"","MX","SUPPOSITORY(IES)")>0
"RTN","PSS1P201",75,0)
 S DA=+$$FIND1^DIC(51.24,"","MX","SUPPOSITOR(IES)")
"RTN","PSS1P201",76,0)
 Q:DA<1
"RTN","PSS1P201",77,0)
 S XUMF=1,DR=".01////SUPPOSITORY(IES)",DIE=51.24 D ^DIE
"RTN","PSS1P201",78,0)
 D:$$FIND1^DIC(51.24,"","MX","SUPPOSITORY(IES)")>0 BMES^XPDUTL("Dose Unit Entry Modified")
"RTN","PSS1P201",79,0)
 Q
"RTN","PSS1P201",80,0)
 ;;
"RTN","PSSDDUT")
0^37^B106731878^B42845395
"RTN","PSSDDUT",1,0)
PSSDDUT ;BIR/LDT-Pharmacy Data Management DD Utility ;09/15/97
"RTN","PSSDDUT",2,0)
 ;;1.0;PHARMACY DATA MANAGEMENT;**13,18,19,38,56,119,201**;9/30/97;Build 23
"RTN","PSSDDUT",3,0)
 ;
"RTN","PSSDDUT",4,0)
SCH ;Called from DRUG file (50), Unit Dose Schedule field 62.04
"RTN","PSSDDUT",5,0)
 ;(Replaces EN^PSGS0)
"RTN","PSSDDUT",6,0)
 ;*119 Allow multi-word schedules
"RTN","PSSDDUT",7,0)
 I X[""""!($A(X)=45)!(X?.E1C.E)!($L(X," ")>$S(X["PRN":4,1:3))!($L(X)>70)!($L(X)<1)!(X["P RN")!(X["PR N") K X Q
"RTN","PSSDDUT",8,0)
 I X?.E1L.E S X=$$ENLU^PSSGMI(X) I '$D(PSGOES) D EN^DDIOL("  ("_X_")","","?0")
"RTN","PSSDDUT",9,0)
 I X["Q0" K X Q
"RTN","PSSDDUT",10,0)
 ;
"RTN","PSSDDUT",11,0)
ENOS ; order set entry
"RTN","PSSDDUT",12,0)
 S (PSGS0XT,PSGS0Y,XT,Y)="" I X["PRN"!(X="ON CALL")!(X="ONCALL")!(X="ON-CALL") G Q
"RTN","PSSDDUT",13,0)
 S X0=X I X,X'["X",(X?2.4N1"-".E!(X?2.4N)) D ENCHK^PSSGS0 S:$D(X) Y=X G Q
"RTN","PSSDDUT",14,0)
 I $S($D(^PS(51.1,"AC","PSJ",X)):1,1:$E($O(^(X)),1,$L(X))=X) D DIC^PSSGS0 I $G(XT)]"" G Q
"RTN","PSSDDUT",15,0)
 I X["@" D DW^PSSGS0 S:$D(X) Y=$P(X,"@",2) G Q
"RTN","PSSDDUT",16,0)
 I Y'>0,$S(X="NOW":1,X="ONCE":1,X="STAT":1,X="ONE TIME":1,X="ONETIME":1,X="1TIME":1,X="1 TIME":1,X="1-TIME":1,1:X="ONE-TIME") D:'$D(PSGOES) EN^DDIOL("  (ONCE ONLY)","","?0") S Y="",XT="O" G Q
"RTN","PSSDDUT",17,0)
 I $G(PSGSCH)=X S PSGS0Y=$G(PSGAT) Q
"RTN","PSSDDUT",18,0)
 ;
"RTN","PSSDDUT",19,0)
NS I Y'>0 D:'$D(PSGOES) EN^DDIOL("  (Nonstandard schedule)","","?0") S X=X0,Y=""
"RTN","PSSDDUT",20,0)
 I $E(X,1,2)="AD" K X G Q
"RTN","PSSDDUT",21,0)
 I $E(X,1,3)="BID"!($E(X,1,3)="TID")!($E(X,1,3)="QID") S XT=1440/$F("BTQ",$E(X)) G Q
"RTN","PSSDDUT",22,0)
 S:$E(X)="Q" X=$E(X,2,99) S:'X X="1"_X S X1=+X,X=$P(X,+X,2),X2=0 S:X1<0 X1=-X1 S:$E(X)="X" X2=1,X=$E(X,2,99)
"RTN","PSSDDUT",23,0)
 S XT=$S(X["'":1,(X["D"&(X'["AD"))!(X["AM")!(X["PM")!(X["HS"&(X'["THS")):1440,X["H"&(X'["TH"):60,X["AC"!(X["PC"):480,X["W":10080,X["M":40320,1:-1) I XT<0,Y'>0 K X G Q
"RTN","PSSDDUT",24,0)
 S X=X0 I XT S:X2 XT=XT\X1 I 'X2 S:$E(X,1,2)="QO" XT=XT*2 S XT=XT*X1
"RTN","PSSDDUT",25,0)
 ;
"RTN","PSSDDUT",26,0)
Q ;
"RTN","PSSDDUT",27,0)
 S PSGS0XT=$S(XT]"":XT,1:""),PSGS0Y=$S(Y:Y,1:"") K QX,SDW,SWD,X0,XT,Z Q
"RTN","PSSDDUT",28,0)
 ;
"RTN","PSSDDUT",29,0)
ENSH5 ; from ^DD(55.06,26,4)
"RTN","PSSDDUT",30,0)
 S:'$D(PSGST) PSGST=$P($G(^PS(55,DA(1),5,DA,0)),"^",7),PSGDDFLG=1 G ENSH
"RTN","PSSDDUT",31,0)
 ;
"RTN","PSSDDUT",32,0)
ENSH ;Called from MEDICATION INSTRUCTION file (51), field 5 Executable Help
"RTN","PSSDDUT",33,0)
 ;(Replaces ENSH^PSSGSH)
"RTN","PSSDDUT",34,0)
 N D,DA,DIC,DIE,DZ,Y
"RTN","PSSDDUT",35,0)
 D EN^DDIOL("'STAT', 'ONCE', 'NOW', and 'DAILY' are acceptable schedules.","","?0") I X?1"???".E F Q=1:1 Q:$P($T(HT+Q),";",3)=""  S PSSHLP(Q)=$P($T(HT+Q),";",3)
"RTN","PSSDDUT",36,0)
 I X?1"???".E D EN^DDIOL(.PSSHLP) K PSSHLP
"RTN","PSSDDUT",37,0)
 I X?1"???".E R !,"(Press RETURN to continue.) ",Q:DTIME D:'$T EN^DDIOL("","","$C(7)") S:'$T Q="^" I Q="^" K:$D(PSGDDFLG) PSGDDFLG,PSGST Q
"RTN","PSSDDUT",38,0)
 K DIC S DIC="^PS(51.1,",DIC(0)="E",D="APPSJ",DIC("W")="W ""  ""," I $D(PSJPWD),PSJPWD S DIC("W")=DIC("W")_"$S($D(^PS(51.1,+Y,1,PSJPWD,0)):$P(^(0),""^"",2),1:$P(^PS(51.1,+Y,0),""^"",2))"
"RTN","PSSDDUT",39,0)
 E  S DIC("W")=DIC("W")_"$P(^(0),""^"",2)"
"RTN","PSSDDUT",40,0)
 I $D(PSGST) S DIC("S")="I $P(^(0),""^"",5)"_$E("'",PSGST'="O")_"=""O"""
"RTN","PSSDDUT",41,0)
 D IX^DIC K DIC K:$D(PSGDDFLG) PSGDDFLG,PSGST Q
"RTN","PSSDDUT",42,0)
 ;
"RTN","PSSDDUT",43,0)
HT ;
"RTN","PSSDDUT",44,0)
 ;;  This is the frequency (ONLY) with which the doses are to be
"RTN","PSSDDUT",45,0)
 ;;administered.  Several forms of entry are acceptable, such as
"RTN","PSSDDUT",46,0)
 ;;Q6H, 09-12-15, STAT, QOD, and MO-WE-FR@AD (where MO-WE-FR are
"RTN","PSSDDUT",47,0)
 ;;days of the week, and AD is the admin times).  The schedule
"RTN","PSSDDUT",48,0)
 ;;will show on the MAR, labels, etc.  No more than ONE space
"RTN","PSSDDUT",49,0)
 ;;(Q3H 4 or Q4H PRN) in the schedule is acceptable.  If the
"RTN","PSSDDUT",50,0)
 ;;letters PRN ;;are found as part of the schedule, no admin
"RTN","PSSDDUT",51,0)
 ;;times will print on the MAR or labels, and the PICK LIST will
"RTN","PSSDDUT",52,0)
 ;;always show a count of zero (0).
"RTN","PSSDDUT",53,0)
 ;;Avoid using notation such as W/F (with food) or WM (with meals)
"RTN","PSSDDUT",54,0)
 ;;in the schedule as it may cause erroneous calculations.  That
"RTN","PSSDDUT",55,0)
 ;;information should be entered into the SPECIAL INSTRUCTIONS.
"RTN","PSSDDUT",56,0)
 ;;  When using the MO-WE-FR@AD schedule, please remember that
"RTN","PSSDDUT",57,0)
 ;;this type of schedule will not work properly without the "@"
"RTN","PSSDDUT",58,0)
 ;;character and at least one admin time, and that at least the
"RTN","PSSDDUT",59,0)
 ;;first two letters of each weekday entered is needed.
"RTN","PSSDDUT",60,0)
 ;
"RTN","PSSDDUT",61,0)
 ;
"RTN","PSSDDUT",62,0)
ENDLP ;Called from Pharmacy System file (59.7), field 60.1 BAXTER ATC
"RTN","PSSDDUT",63,0)
 ;212 DEVICE (Replaces ENDLP^PSGSET)
"RTN","PSSDDUT",64,0)
 S PSGION=$S($D(ION):ION,1:"HOME") K %ZIS S %ZIS="QN",IOP=X D ^%ZIS I POP S IOP=PSGION D ^%ZIS K %ZIS,IOP,PSGION S X="" Q
"RTN","PSSDDUT",65,0)
 D EN^DDIOL($S(X=$E(ION,1,$L(X)):$E(ION,$L(X)+1,$L(ION)),1:"  "_ION),"","?0") S X=ION D ^%ZISC K %ZIS,PSGION,IOP Q
"RTN","PSSDDUT",66,0)
 ;
"RTN","PSSDDUT",67,0)
ENSTH ;Executable help for type of schedule. (Replaces ENSTH^PSJSV0)
"RTN","PSSDDUT",68,0)
 N PSSX S PSSX=1
"RTN","PSSDDUT",69,0)
 S PSSHLP(PSSX)="The TYPE OF SCHEDULE determines how the schedule will be processed."
"RTN","PSSDDUT",70,0)
 S PSSHLP(PSSX,"F")="!!?2",PSSX=PSSX+1
"RTN","PSSDDUT",71,0)
 S PSSHLP(PSSX)="A CONTINUOUS schedule is one in which an action is to take place on a"
"RTN","PSSDDUT",72,0)
 S PSSHLP(PSSX,"F")="!!?2",PSSX=PSSX+1
"RTN","PSSDDUT",73,0)
 S PSSHLP(PSSX)="regular basis, such as 'three times a day' or 'once every two days'."
"RTN","PSSDDUT",74,0)
 S PSSHLP(PSSX,"F")="!",PSSX=PSSX+1
"RTN","PSSDDUT",75,0)
 S PSSHLP(PSSX)="A DAY OF THE WEEK schedule is one in which the action is to take"
"RTN","PSSDDUT",76,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",77,0)
 S PSSHLP(PSSX)="place only on specific days of the week.  This type of schedule"
"RTN","PSSDDUT",78,0)
 S PSSHLP(PSSX,"F")="!",PSSX=PSSX+1
"RTN","PSSDDUT",79,0)
 S PSSHLP(PSSX)="should have admin times entered with it.  If not, the start time of"
"RTN","PSSDDUT",80,0)
 S PSSHLP(PSSX,"F")="!",PSSX=PSSX+1
"RTN","PSSDDUT",81,0)
 S PSSHLP(PSSX)="the order is used as the admin time.  Whenever this type is chosen,"
"RTN","PSSDDUT",82,0)
 S PSSHLP(PSSX,"F")="!",PSSX=PSSX+1
"RTN","PSSDDUT",83,0)
 S PSSHLP(PSSX)="the name of the schedule must be in the form of 'MO-WE-FR'."
"RTN","PSSDDUT",84,0)
 S PSSHLP(PSSX,"F")="!",PSSX=PSSX+1
"RTN","PSSDDUT",85,0)
 G:$S('$D(PSJPP):1,PSJPP="":1,1:PSJPP="PSJ") HOT
"RTN","PSSDDUT",86,0)
 S PSSHLP(PSSX)="A DAY OF THE WEEK-RANGE schedule is one in which the action to take"
"RTN","PSSDDUT",87,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",88,0)
 S PSSHLP(PSSX)="place only on specific days of the week, but at no specific time of"
"RTN","PSSDDUT",89,0)
 S PSSHLP(PSSX,"F")="!",PSSX=PSSX+1
"RTN","PSSDDUT",90,0)
 S PSSHLP(PSSX)="day (no admin times).  Whenever this type is chosen, the name of the"
"RTN","PSSDDUT",91,0)
 S PSSHLP(PSSX,"F")="!",PSSX=PSSX+1
"RTN","PSSDDUT",92,0)
 S PSSHLP(PSSX)="schedule must be in the form of 'MO-WE-FR'."
"RTN","PSSDDUT",93,0)
 S PSSHLP(PSSX,"F")="!",PSSX=PSSX+1
"RTN","PSSDDUT",94,0)
HOT S PSSHLP(PSSX)="A ONE-TIME schedule is one in which the action is to take place once"
"RTN","PSSDDUT",95,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",96,0)
 S PSSHLP(PSSX)="only at a specific date and time."
"RTN","PSSDDUT",97,0)
 S PSSHLP(PSSX,"F")="!",PSSX=PSSX+1
"RTN","PSSDDUT",98,0)
 I $S('$D(PSJPP):1,PSJPP="":1,1:PSJPP="PSJ") D WRITE Q
"RTN","PSSDDUT",99,0)
 S PSSHLP(PSSX)="A RANGE schedule is one in which the action will take place within a"
"RTN","PSSDDUT",100,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",101,0)
 S PSSHLP(PSSX)="given date range."
"RTN","PSSDDUT",102,0)
 S PSSHLP(PSSX,"F")="!",PSSX=PSSX+1
"RTN","PSSDDUT",103,0)
 S PSSHLP(PSSX)="A SHIFT schedule is one in which the action will take place within a"
"RTN","PSSDDUT",104,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",105,0)
 S PSSHLP(PSSX)="given range of times of day."
"RTN","PSSDDUT",106,0)
 S PSSHLP(PSSX,"F")="!",PSSX=PSSX+1
"RTN","PSSDDUT",107,0)
 D WRITE
"RTN","PSSDDUT",108,0)
 Q
"RTN","PSSDDUT",109,0)
WRITE ;Calls EN^DDIOL to write text
"RTN","PSSDDUT",110,0)
 D EN^DDIOL(.PSSHLP) K PSSHLP
"RTN","PSSDDUT",111,0)
 Q
"RTN","PSSDDUT",112,0)
PSS13 ;Screen for CLINIC field - PDM patch PSS*1*13
"RTN","PSSDDUT",113,0)
 N X,PSSDT
"RTN","PSSDDUT",114,0)
 S X1=DT,X2=-7 D C^%DTC S PSSDT=X
"RTN","PSSDDUT",115,0)
 I $P($G(^(0)),U,3)="C",$S('$P($G(^("I")),U):1,($P($G(^("I")),U)>PSSDT):1,(($P($G(^("I")),U)<PSSDT)&($P($G(^("I")),U,2)]"")&(DT>$P($G(^("I")),U,2))):1,1:0)
"RTN","PSSDDUT",116,0)
 Q
"RTN","PSSDDUT",117,0)
PSS19 ;Delete DRUG GROUP/INTERACTION field #7 - PDM patch PSS*1*19
"RTN","PSSDDUT",118,0)
 S DIK="^DD(50,",DA=7,DA(1)=50 D ^DIK
"RTN","PSSDDUT",119,0)
 ;
"RTN","PSSDDUT",120,0)
 ;In File #50, delete "I" node if it is null.
"RTN","PSSDDUT",121,0)
 N PSSIEN
"RTN","PSSDDUT",122,0)
 F PSSIEN=0:0 S PSSIEN=$O(^PSDRUG(PSSIEN)) Q:'PSSIEN  I $D(^PSDRUG(PSSIEN,"I")),$P(^PSDRUG(PSSIEN,"I"),"^")="" K ^PSDRUG(PSSIEN,"I")
"RTN","PSSDDUT",123,0)
 Q
"RTN","PSSDDUT",124,0)
 ;
"RTN","PSSDDUT",125,0)
ENMEDI  ; entry point from file 51, field 32.1 exectuable help PSS*1.0*201
"RTN","PSSDDUT",126,0)
 Q:$G(X)'="??"
"RTN","PSSDDUT",127,0)
 W ! K DIR S DIR(0)="E",DIR("A")="Press Return to continue or ""^"" to skip extended help text" D ^DIR Q:$D(DIRUT)
"RTN","PSSDDUT",128,0)
 W @IOF
"RTN","PSSDDUT",129,0)
 ;
"RTN","PSSDDUT",130,0)
 N PSSX,PSSHLP
"RTN","PSSDDUT",131,0)
 S PSSX=1
"RTN","PSSDDUT",132,0)
 ;
"RTN","PSSDDUT",133,0)
 S PSSHLP(PSSX)="This field allows a dispense drug from the DRUG (#50) file to be"
"RTN","PSSDDUT",134,0)
 S PSSHLP(PSSX,"F")="!!?2",PSSX=PSSX+1
"RTN","PSSDDUT",135,0)
 S PSSHLP(PSSX)="associated with the DOSING CHECK FREQUENCY (#32) field value within the"
"RTN","PSSDDUT",136,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",137,0)
 S PSSHLP(PSSX)="MEDICATION INSTRUCTION (#51) file."
"RTN","PSSDDUT",138,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",139,0)
 ;
"RTN","PSSDDUT",140,0)
 S PSSHLP(PSSX)="When a value is entered for ""DOSING CHECK FREQUENCY:"" and NO drug(s) is"
"RTN","PSSDDUT",141,0)
 S PSSHLP(PSSX,"F")="!!?2",PSSX=PSSX+1
"RTN","PSSDDUT",142,0)
 S PSSHLP(PSSX)="entered for ""Select DRUG(S) FOR DOSING CHK FREQ:"", the dosing check will"
"RTN","PSSDDUT",143,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",144,0)
 S PSSHLP(PSSX)="use the value for ""DOSING CHECK FREQUENCY:"" to derive a frequency for"
"RTN","PSSDDUT",145,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",146,0)
 S PSSHLP(PSSX)="all orders that have that medication instruction."
"RTN","PSSDDUT",147,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",148,0)
 ;
"RTN","PSSDDUT",149,0)
 S PSSHLP(PSSX)="When a value is entered for ""DOSING CHECK FREQUENCY:"" and a drug(s) is"
"RTN","PSSDDUT",150,0)
 S PSSHLP(PSSX,"F")="!!?2",PSSX=PSSX+1
"RTN","PSSDDUT",151,0)
 S PSSHLP(PSSX)="entered for ""Select DRUG(S) FOR DOSING CHK FREQ:"", the Daily Dose Order"
"RTN","PSSDDUT",152,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",153,0)
 S PSSHLP(PSSX)="Check will ONLY use the value in ""DOSING CHECK FREQUENCY:"" to derive a"
"RTN","PSSDDUT",154,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",155,0)
 S PSSHLP(PSSX)="frequency if the order that has that medication instruction also matches"
"RTN","PSSDDUT",156,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",157,0)
 S PSSHLP(PSSX)="one of the drug(s) entered. If the drug found in the order does not"
"RTN","PSSDDUT",158,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",159,0)
 S PSSHLP(PSSX)="match a drug listed in the DRUG(S) FOR DOSING CHK FREQ field, then the"
"RTN","PSSDDUT",160,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",161,0)
 S PSSHLP(PSSX)="value of the DOSING CHECK FREQUENCY will not be used for the Daily Dose"
"RTN","PSSDDUT",162,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",163,0)
 S PSSHLP(PSSX)="Order Check."
"RTN","PSSDDUT",164,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",165,0)
 ;
"RTN","PSSDDUT",166,0)
 D WRITE
"RTN","PSSDDUT",167,0)
 W ! K DIR S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR
"RTN","PSSDDUT",168,0)
 W @IOF
"RTN","PSSDDUT",169,0)
 Q
"RTN","PSSDDUT",170,0)
 ;
"RTN","PSSDDUT",171,0)
ENADMSCH  ; entry point from file 51.1, field 11.1 exectuable help PSS*1.0*201
"RTN","PSSDDUT",172,0)
 Q:$G(X)'="??"
"RTN","PSSDDUT",173,0)
 W ! K DIR S DIR(0)="E",DIR("A")="Press Return to continue or ""^"" to skip extended help text" D ^DIR Q:$D(DIRUT)
"RTN","PSSDDUT",174,0)
 W @IOF
"RTN","PSSDDUT",175,0)
 ;
"RTN","PSSDDUT",176,0)
 N PSSX,PSSHLP
"RTN","PSSDDUT",177,0)
 S PSSX=1
"RTN","PSSDDUT",178,0)
 ;
"RTN","PSSDDUT",179,0)
 S PSSHLP(PSSX)="This field allows a dispense drug from the DRUG (#50) file to be"
"RTN","PSSDDUT",180,0)
 S PSSHLP(PSSX,"F")="!!?2",PSSX=PSSX+1
"RTN","PSSDDUT",181,0)
 S PSSHLP(PSSX)="associated with the DOSING CHECK FREQUENCY (#11) field value within the"
"RTN","PSSDDUT",182,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",183,0)
 S PSSHLP(PSSX)="ADMINISTRATION SCHEDULE (#51.1) file."
"RTN","PSSDDUT",184,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",185,0)
 ;
"RTN","PSSDDUT",186,0)
 S PSSHLP(PSSX)="When a value is entered for ""DOSING CHECK FREQUENCY:"" and NO drug(s) is"
"RTN","PSSDDUT",187,0)
 S PSSHLP(PSSX,"F")="!!?2",PSSX=PSSX+1
"RTN","PSSDDUT",188,0)
 S PSSHLP(PSSX)="entered for ""Select DRUG(S) FOR DOSING CHK FREQ:"", the dosing check will"
"RTN","PSSDDUT",189,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",190,0)
 S PSSHLP(PSSX)="use the value for ""DOSING CHECK FREQUENCY:"" to derive a frequency for"
"RTN","PSSDDUT",191,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",192,0)
 S PSSHLP(PSSX)="all orders that have that schedule."
"RTN","PSSDDUT",193,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",194,0)
 ;
"RTN","PSSDDUT",195,0)
 S PSSHLP(PSSX)="When a value is entered for ""DOSING CHECK FREQUENCY:"" and a drug(s) is"
"RTN","PSSDDUT",196,0)
 S PSSHLP(PSSX,"F")="!!?2",PSSX=PSSX+1
"RTN","PSSDDUT",197,0)
 S PSSHLP(PSSX)="entered for ""Select DRUG(S) FOR DOSING CHK FREQ:"", the Daily Dose Order"
"RTN","PSSDDUT",198,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",199,0)
 S PSSHLP(PSSX)="Check will ONLY use the value in ""DOSING CHECK FREQUENCY:"" to derive a"
"RTN","PSSDDUT",200,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",201,0)
 S PSSHLP(PSSX)="frequency if the order that has that medication instruction also matches"
"RTN","PSSDDUT",202,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",203,0)
 S PSSHLP(PSSX)="one of the drug(s) entered. If the drug found in the order does not"
"RTN","PSSDDUT",204,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",205,0)
 S PSSHLP(PSSX)="match a drug listed in the DRUG(S) FOR DOSING CHK FREQ field, then the"
"RTN","PSSDDUT",206,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",207,0)
 S PSSHLP(PSSX)="value of the DOSING CHECK FREQUENCY will not be used for the Daily Dose"
"RTN","PSSDDUT",208,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",209,0)
 S PSSHLP(PSSX)="Order Check."
"RTN","PSSDDUT",210,0)
 S PSSHLP(PSSX,"F")="!?2",PSSX=PSSX+1
"RTN","PSSDDUT",211,0)
 ;
"RTN","PSSDDUT",212,0)
 D WRITE
"RTN","PSSDDUT",213,0)
 W ! K DIR S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR
"RTN","PSSDDUT",214,0)
 W @IOF
"RTN","PSSDDUT",215,0)
 Q
"RTN","PSSDDUT",216,0)
 ;
"RTN","PSSDSAPD")
0^31^B176555473^B181014294
"RTN","PSSDSAPD",1,0)
PSSDSAPD ;BIR/RTR-Main Dose Check API ;09/16/08
"RTN","PSSDSAPD",2,0)
 ;;1.0;PHARMACY DATA MANAGEMENT;**117,160,173,201**;9/30/97;Build 23
"RTN","PSSDSAPD",3,0)
 ;
"RTN","PSSDSAPD",4,0)
 ; Reference to $$PROD0^PSNAPIS is supported by DBIA 2531
"RTN","PSSDSAPD",5,0)
 ; Reference ^XTID is supported by DBIA 4631
"RTN","PSSDSAPD",6,0)
 ;
"RTN","PSSDSAPD",7,0)
 ;Input
"RTN","PSSDSAPD",8,0)
 ;PSSDBASE = Name of subscript
"RTN","PSSDSAPD",9,0)
 ;PSSDBDFN = Patient Internal Entry Number
"RTN","PSSDSAPD",10,0)
 ;PSSDBDS  = Data to use to build actual Input data, for pieces not sent in PSSDBFDB array
"RTN","PSSDSAPD",11,0)
 ;PSSDBFDB = Array where if the node exists, just set that data (even if null) directly into the corresponding API piece
"RTN","PSSDSAPD",12,0)
 ;
"RTN","PSSDSAPD",13,0)
DOSE(PSSDBASX,PSSDBDFN,PSSDBDS,PSSDBFDB) ;
"RTN","PSSDSAPD",14,0)
 I $G(PSSDBASX(1))="" Q
"RTN","PSSDSAPD",15,0)
 N PSSDBASE,PSSDBASF,PSSDBASG,PSSDBASA,PSSDBASB S PSSDBASE=PSSDBASX(1),PSSDBASF=$G(PSSDBASX(2)),PSSDBASG=$G(PSSDBASX(3)) K ^TMP($J,PSSDBASE) K ^TMP($J,"PSSDOSGL") K ^TMP($J,"PSSCNX")
"RTN","PSSDSAPD",16,0)
 S PSSDBASA=0 I $G(PSSDBASF)'="" K ^TMP($J,PSSDBASF) S PSSDBASA=1
"RTN","PSSDSAPD",17,0)
 S PSSDBASB=0 I $G(PSSDBASG)'="" K ^TMP($J,PSSDBASG) S PSSDBASB=1
"RTN","PSSDSAPD",18,0)
 S ^TMP($J,PSSDBASE,"IN","PING")="" D IN^PSSHRQ2(PSSDBASE)
"RTN","PSSDSAPD",19,0)
 I $P($G(^TMP($J,PSSDBASE,"OUT",0)),"^")=-1 D DOWN^PSSDSAPK Q
"RTN","PSSDSAPD",20,0)
 K ^TMP($J,PSSDBASE)
"RTN","PSSDSAPD",21,0)
 N PSSDBLP,PSSDBND1,PSSDBND3,PSSDBAR,PSSDBFST,PSSDBFLG,PSSDBCOT,PSSDBCAR,PSSDBFRC,PSSDBFRB,PSSDBIFL,PSSDBIFG,PSSDBCAX,PSSDBCAZ,PSSDBFTX,PSSDBADJ,PSSDBCDP,PSSDSDPL,PSSDSWHE,PSSENHK,PSSENHKZ,PSSDSIVF,PSSENO
"RTN","PSSDSAPD",22,0)
 I +$G(PSSDBDFN)'>0 Q
"RTN","PSSDSAPD",23,0)
 S PSSDBFLG=0 S PSSDSWHE=$S($E($G(PSSDBASE),1,2)="OR":1,1:0)
"RTN","PSSDSAPD",24,0)
 F PSSDBLP=0:0 S PSSDBLP=$O(PSSDBFDB(PSSDBLP)) Q:'PSSDBLP  D
"RTN","PSSDSAPD",25,0)
 .K PSSDBAR,PSSDBND1,PSSDBND3 S (PSSDBIFL,PSSDBIFG,PSSDSIVF,PSSENO)=0
"RTN","PSSDSAPD",26,0)
 .I $G(PSSDBFDB(PSSDBLP,"RX_NUM"))="" Q
"RTN","PSSDSAPD",27,0)
 .I $G(PSSDBFDB(PSSDBLP,"DRUG_NM"))="" Q
"RTN","PSSDSAPD",28,0)
 .S PSSDBFDB("OI")=$S($G(PSSDBFDB(PSSDBLP,"OI")):$G(PSSDBFDB(PSSDBLP,"OI")),1:$G(PSSDBFDB("OI"))) I $G(PSSDBFDB(PSSDBLP,"DRUG_IEN"))'>0,$G(PSSDBFDB("OI"))'>0 Q
"RTN","PSSDSAPD",29,0)
 .I $G(PSSDBFDB(PSSDBLP,"DRUG_IEN"))>0,$$EXMT^PSSDSAPI($G(PSSDBFDB(PSSDBLP,"DRUG_IEN"))) Q
"RTN","PSSDSAPD",30,0)
 .D INERR^PSSDSAPM Q:PSSENO  I $G(PSSDBFDB(PSSDBLP,"DRUG_IEN"))'>0 D FDRUG^PSSDSAPM I PSSDBIFG D ONT^PSSDSAPA
"RTN","PSSDSAPD",31,0)
 .I PSSDBIFL,'PSSDBIFG D NXDRUG^PSSDSAPM Q
"RTN","PSSDSAPD",32,0)
 .D NDINFO
"RTN","PSSDSAPD",33,0)
 .I $G(PSSDBND1),$G(PSSDBND3) D
"RTN","PSSDSAPD",34,0)
 ..S PSSDBAR("GCN")=$P($$PROD0^PSNAPIS(PSSDBND1,PSSDBND3),"^",7)
"RTN","PSSDSAPD",35,0)
 ..S PSSDBAR("VUID")=$$GETVUID^XTID(50.68,,+PSSDBND3_",")
"RTN","PSSDSAPD",36,0)
 .S PSSDBAR("NAME")=$G(PSSDBFDB(PSSDBLP,"DRUG_NM"))
"RTN","PSSDSAPD",37,0)
 .D AMT I $G(PSSDBAR("AMN"))'="",$L(PSSDBAR("AMN"))>1,$E(PSSDBAR("AMN"),1)="0" S PSSDBAR("AMN")=$E(PSSDBAR("AMN"),2,$L(PSSDBAR("AMN")))
"RTN","PSSDSAPD",38,0)
 .D DTYPE
"RTN","PSSDSAPD",39,0)
 .S PSSDBAR("DSE")=$S($D(PSSDBFDB(PSSDBLP,"DOSE_RATE")):$G(PSSDBFDB(PSSDBLP,"DOSE_RATE")),1:"DAY")
"RTN","PSSDSAPD",40,0)
 .D RTE
"RTN","PSSDSAPD",41,0)
 .D SCHD
"RTN","PSSDSAPD",42,0)
 .D DURR^PSSDSUTL
"RTN","PSSDSAPD",43,0)
 .D DURRAT^PSSDSUTL
"RTN","PSSDSAPD",44,0)
 .S PSSDBAR("SPFC")="" S:$G(PSSDBFDB(PSSDBLP,"ENH")) PSSENHK(PSSDBFDB(PSSDBLP,"RX_NUM"))=1
"RTN","PSSDSAPD",45,0)
 .S PSSDBFST=$G(PSSDBAR("GCN"))_"^"_$S($P($G(PSSDBAR("VUID")),"^")'=0:$G(PSSDBAR("VUID")),1:"")_"^"_$S('PSSDBIFL:PSSDBFDB(PSSDBLP,"DRUG_IEN"),PSSDBIFL&(PSSDBIFG):PSSDBIFG,1:"")_"^"_PSSDBAR("NAME")
"RTN","PSSDSAPD",46,0)
 .S PSSDBFLG=1
"RTN","PSSDSAPD",47,0)
 .S ^TMP($J,PSSDBASE,"IN","PROSPECTIVE",PSSDBFDB(PSSDBLP,"RX_NUM"))=PSSDBFST
"RTN","PSSDSAPD",48,0)
 .S ^TMP($J,PSSDBASE,"IN","DOSE",PSSDBFDB(PSSDBLP,"RX_NUM"))=PSSDBFST_"^"_$G(PSSDBAR("AMN"))_"^"_$G(PSSDBAR("UNIT"))_"^"_PSSDBAR("DSE")_"^"_PSSDBAR("FREQ")_"^"_PSSDBAR("DUR")_"^"_PSSDBAR("DRR")_"^"_PSSDBAR("RT")_"^"_PSSDBAR("TYPE")
"RTN","PSSDSAPD",49,0)
 .S ^TMP($J,PSSDBASE,"IN","DOSE",PSSDBFDB(PSSDBLP,"RX_NUM"))=^TMP($J,PSSDBASE,"IN","DOSE",PSSDBFDB(PSSDBLP,"RX_NUM"))_"^"_PSSDBAR("SPFC")_"^"_$$DFM^PSSDSEXC
"RTN","PSSDSAPD",50,0)
 .S PSSDBFRC(PSSDBFDB(PSSDBLP,"RX_NUM"),"CONJ")=$G(PSSDBDS(PSSDBLP,"CONJ")) S PSSDBFRC(PSSDBFDB(PSSDBLP,"RX_NUM"),"SCHEDULE")=$G(PSSDBDS(PSSDBLP,"SCHEDULE"))
"RTN","PSSDSAPD",51,0)
 .I $G(PSSDBDS(PSSDBLP,"DRATE"))'="" I PSSDBDS(PSSDBLP,"DRATE")?.N!(PSSDBDS(PSSDBLP,"DRATE")?.N1".".N) S PSSDBDS(PSSDBLP,"DRATE")=PSSDBDS(PSSDBLP,"DRATE")_"D"
"RTN","PSSDSAPD",52,0)
 .S PSSDBFRB(PSSDBFDB(PSSDBLP,"RX_NUM"),"DRATE")=$G(PSSDBDS(PSSDBLP,"DRATE")) D ADJU^PSSDSEXC
"RTN","PSSDSAPD",53,0)
 .D INFUE^PSSDSAPM
"RTN","PSSDSAPD",54,0)
 .D FRQE^PSSDSAPM
"RTN","PSSDSAPD",55,0)
 .S ^TMP($J,"PSSCNX","IN","DOSE",PSSDBLP,PSSDBFDB(PSSDBLP,"RX_NUM"))=^TMP($J,PSSDBASE,"IN","DOSE",PSSDBFDB(PSSDBLP,"RX_NUM"))
"RTN","PSSDSAPD",56,0)
 ;
"RTN","PSSDSAPD",57,0)
 ;
"RTN","PSSDSAPD",58,0)
 ;I 'PSSDBFLG Q
"RTN","PSSDSAPD",59,0)
 D COMP ;Set up complex Doses
"RTN","PSSDSAPD",60,0)
 S ^TMP($J,PSSDBASE,"IN","IEN")=PSSDBDFN
"RTN","PSSDSAPD",61,0)
 S ^TMP($J,PSSDBASE,"IN","DOSE")=""
"RTN","PSSDSAPD",62,0)
 D PAT^PSSDSAPM K ^TMP($J,"PSSCNX")
"RTN","PSSDSAPD",63,0)
 N PSSDBDGO ; Only go to interface if you have at least one Dose Sequence that needs to go
"RTN","PSSDSAPD",64,0)
 S PSSDBDGO=0 I $D(^TMP($J,PSSDBASE,"IN","EXCEPTIONS")) S PSSDBDGO=1
"RTN","PSSDSAPD",65,0)
 D ERR ;Set up PSSDBCAX error array and default data
"RTN","PSSDSAPD",66,0)
 I PSSDBDGO D:$D(PSSDBFTX) FTX^PSSDSAPK D IN^PSSHRQ2(PSSDBASE) D:$D(PSSDBFTX) FTXRS^PSSDSAPK
"RTN","PSSDSAPD",67,0)
 I PSSDBASA!(PSSDBASB) D FMT^PSSDSEXC I $P($G(^TMP($J,PSSDBASE,"OUT",0)),"^")'=-1 D ADDCT^PSSDSAPM,REM^PSSDSAPA
"RTN","PSSDSAPD",68,0)
 Q
"RTN","PSSDSAPD",69,0)
 ;
"RTN","PSSDSAPD",70,0)
 ;
"RTN","PSSDSAPD",71,0)
AMT ;Set Dose Amount and Dose Unit
"RTN","PSSDSAPD",72,0)
 D DPL^PSSDSAPK
"RTN","PSSDSAPD",73,0)
 I $D(PSSDBCAZ(PSSDBFDB(PSSDBLP,"RX_NUM"),"NO_DRUG")) D MLTS^PSSDSAPM Q
"RTN","PSSDSAPD",74,0)
 N PSSDBUNT,PSSDBFAL,PSSDBXP,PSSDBNOD,PSSDBNT,PSSDSXTD,PSSDBUNA,PSSDBLPD,PSSDSLCL,PSSDSLC1,PSSDSLCT
"RTN","PSSDSAPD",75,0)
 S (PSSDBFAL,PSSDBLPD,PSSDSLCT)=0
"RTN","PSSDSAPD",76,0)
 I 'PSSDBIFL,$D(PSSDBFDB(PSSDBLP,"DOSE_AMT")),$D(PSSDBFDB(PSSDBLP,"DOSE_UNIT")) S PSSDBAR("AMN")=PSSDBFDB(PSSDBLP,"DOSE_AMT"),PSSDBAR("UNIT")=PSSDBFDB(PSSDBLP,"DOSE_UNIT") D LDZ Q
"RTN","PSSDSAPD",77,0)
 I 'PSSDBIFL,$G(PSSDBDS(PSSDBLP,"DRG_AMT")),$G(PSSDBDS(PSSDBLP,"DRG_UNIT"))'="" D
"RTN","PSSDSAPD",78,0)
 .;For Drug Units like MG/ML, take first piece of"/"
"RTN","PSSDSAPD",79,0)
 .S PSSDBUNT=$S(PSSDBDS(PSSDBLP,"DRG_UNIT")["/":$P(PSSDBDS(PSSDBLP,"DRG_UNIT"),"/"),1:PSSDBDS(PSSDBLP,"DRG_UNIT"))
"RTN","PSSDSAPD",80,0)
 .S PSSDBUNT=$$UP^XLFSTR(PSSDBUNT)
"RTN","PSSDSAPD",81,0)
 .S PSSDBUNA=$$UNIT^PSSDSAPI(PSSDBUNT)
"RTN","PSSDSAPD",82,0)
 .I PSSDBUNA'="" S PSSDBAR("AMN")=PSSDBDS(PSSDBLP,"DRG_AMT"),PSSDBAR("UNIT")=PSSDBUNA,PSSDBFAL=1 D LDZ
"RTN","PSSDSAPD",83,0)
 I PSSDBFAL Q
"RTN","PSSDSAPD",84,0)
 ;"DOSE" Node should only come from CPRS, for selected Local Possible Dosage
"RTN","PSSDSAPD",85,0)
 S PSSDSLCL=$S($G(PSSDBDS(PSSDBLP,"DOSE"))'="":$P($G(PSSDBDS(PSSDBLP,"DOSE")),"&",5),1:$G(PSSDBDS(PSSDBLP,"DO")))
"RTN","PSSDSAPD",86,0)
 I PSSDSLCL["(" D PTH^PSSDSUTL
"RTN","PSSDSAPD",87,0)
 I PSSDBIFL D MLT^PSSDSAPM Q
"RTN","PSSDSAPD",88,0)
AMTRT ;Retry for Local Dosages with parenthesis
"RTN","PSSDSAPD",89,0)
 I PSSDSLCL'="" D
"RTN","PSSDSAPD",90,0)
 .F PSSDBXP=0:0 S PSSDBXP=$O(^PSDRUG(PSSDBFDB(PSSDBLP,"DRUG_IEN"),"DOS2",PSSDBXP)) Q:'PSSDBXP!(PSSDBFAL)  D
"RTN","PSSDSAPD",91,0)
 ..S PSSDBNOD=$G(^PSDRUG(PSSDBFDB(PSSDBLP,"DRUG_IEN"),"DOS2",PSSDBXP,0))
"RTN","PSSDSAPD",92,0)
 ..;ignore package of the Local Possible Dose
"RTN","PSSDSAPD",93,0)
 ..I $$MTCH^PSSDSAPK S PSSDBLPD=1 I $P(PSSDBNOD,"^",5),$P(PSSDBNOD,"^",6)'="" D
"RTN","PSSDSAPD",94,0)
 ...;XTID Screening out Inactive Dose Units
"RTN","PSSDSAPD",95,0)
 ...S PSSDSXTD=+$P(PSSDBNOD,"^",5) I PSSDSXTD,$$SCREEN^XTID(51.24,.01,PSSDSXTD_",") Q
"RTN","PSSDSAPD",96,0)
 ...S PSSDBNT=$P($G(^PS(51.24,+$P(PSSDBNOD,"^",5),0)),"^",2)
"RTN","PSSDSAPD",97,0)
 ...I PSSDBNT'="" S PSSDBAR("AMN")=$P(PSSDBNOD,"^",6),PSSDBAR("UNIT")=PSSDBNT,PSSDBFAL=1
"RTN","PSSDSAPD",98,0)
 .;Only do auto-population logic if Local Possible Dosage was not found at all in File 50
"RTN","PSSDSAPD",99,0)
 .I PSSDBFAL Q
"RTN","PSSDSAPD",100,0)
 .I PSSDBLPD D DPOP^PSSDSAPK I PSSDBFAL Q
"RTN","PSSDSAPD",101,0)
 .D ITEM^PSSDSAPK D:'PSSDBFAL NUM^PSSDSAPL D:'PSSDBFAL RANGE^PSSDSUTL
"RTN","PSSDSAPD",102,0)
 I 'PSSDBFAL,PSSDSLCT S PSSDSLCL=PSSDSLC1(PSSDSLCT),PSSDSLCT=PSSDSLCT-1,PSSDBLPD=0 G AMTRT
"RTN","PSSDSAPD",103,0)
 Q
"RTN","PSSDSAPD",104,0)
 ;
"RTN","PSSDSAPD",105,0)
 ;
"RTN","PSSDSAPD",106,0)
LDZ ;
"RTN","PSSDSAPD",107,0)
 I $E(PSSDBAR("AMN"))=0,$L(PSSDBAR("AMN"))>1 S PSSDBAR("AMN")=$E(PSSDBAR("AMN"),2,$L(PSSDBAR("AMN")))
"RTN","PSSDSAPD",108,0)
 Q
"RTN","PSSDSAPD",109,0)
 ;
"RTN","PSSDSAPD",110,0)
 ;
"RTN","PSSDSAPD",111,0)
RTE ;Get First DataBank Med Route
"RTN","PSSDSAPD",112,0)
 N PSSDBMRT
"RTN","PSSDSAPD",113,0)
 K PSSDBMRT
"RTN","PSSDSAPD",114,0)
 I $D(PSSDBFDB(PSSDBLP,"ROUTE")) S PSSDBAR("RT")=PSSDBFDB(PSSDBLP,"ROUTE") Q
"RTN","PSSDSAPD",115,0)
 I $G(PSSDBDS(PSSDBLP,"MR_IEN")) S PSSDBMRT=$$MRT^PSSDSAPI(PSSDBDS(PSSDBLP,"MR_IEN")) I $P(PSSDBMRT,"^",2)'="" S PSSDBAR("RT")=$P(PSSDBMRT,"^",2) Q
"RTN","PSSDSAPD",116,0)
 S PSSDBAR("RT")=""
"RTN","PSSDSAPD",117,0)
 Q
"RTN","PSSDSAPD",118,0)
 ;
"RTN","PSSDSAPD",119,0)
 ;
"RTN","PSSDSAPD",120,0)
SCHD ;
"RTN","PSSDSAPD",121,0)
 N PSSDBSCD,PSSDBSCP,PSSDBSCF,PSSDBSCG,PSSDBSCH
"RTN","PSSDSAPD",122,0)
 S PSSDBAR("FREQ")=""
"RTN","PSSDSAPD",123,0)
 ;I $D(PSSDBFDB(PSSDBLP,"FREQ")) S PSSDBAR("FREQ")=PSSDBFDB(PSSDBLP,"FREQ") Q
"RTN","PSSDSAPD",124,0)
 I PSSDBAR("TYPE")="SINGLE DOSE" S PSSDBAR("FREQ")="" Q
"RTN","PSSDSAPD",125,0)
 ;I $G(PSSDBDS(PSSDBLP,"DRATE"))'="",$$DRT(PSSDBDS(PSSDBLP,"DRATE"))<1440 S PSSDBSDR=1
"RTN","PSSDSAPD",126,0)
 S PSSDBSCD=$G(PSSDBDS(PSSDBLP,"SCHEDULE"))
"RTN","PSSDSAPD",127,0)
 I PSSDBSCD="",'$D(PSSDBFDB(PSSDBLP,"FREQ")) S PSSDBCAZ(PSSDBFDB(PSSDBLP,"RX_NUM"),"FRQ_ERROR")="" Q
"RTN","PSSDSAPD",128,0)
 S (PSSDBSCF,PSSDBSCH)="" S PSSDBSCP=$P(PSSDBFDB(PSSDBLP,"RX_NUM"),";")
"RTN","PSSDSAPD",129,0)
 I $G(PSSDBSCD)'="" F PSSDBSCG=0:0 S PSSDBSCG=$O(^PS(51.1,"APPSJ",PSSDBSCD,PSSDBSCG)) Q:'PSSDBSCG!(PSSDBSCH)  D
"RTN","PSSDSAPD",130,0)
 .I $P($G(^PS(51.1,PSSDBSCG,0)),"^",5)="D" S PSSDBSCF="D"
"RTN","PSSDSAPD",131,0)
 .I $P($G(^PS(51.1,PSSDBSCG,0)),"^",5)="O"!($P($G(^PS(51.1,PSSDBSCG,0)),"^",5)="OC") S PSSDBSCH=1
"RTN","PSSDSAPD",132,0)
 I PSSDBSCH,'$D(PSSDBFDB(PSSDBLP,"FREQ")) S PSSDBAR("FREQ")=1 Q
"RTN","PSSDSAPD",133,0)
 I $G(PSSDBSCD)["@" S PSSDBSCF="D"
"RTN","PSSDSAPD",134,0)
 I $G(PSSDBSCD)'="" S PSSDBSCP=$S(PSSDBSCP="I":"I",1:"O") S PSSDBAR("FREQZZ")=$$FRQ^PSSDSAPI(PSSDBSCD,PSSDBSCF,PSSDBSCP,$G(PSSDBDS(PSSDBLP,"DRATE"))),PSSDBAR("FREQ")=$P(PSSDBAR("FREQZZ"),"^")
"RTN","PSSDSAPD",135,0)
 I $D(PSSDBFDB(PSSDBLP,"FREQ")) S PSSDBAR("FREQ")=PSSDBFDB(PSSDBLP,"FREQ") Q
"RTN","PSSDSAPD",136,0)
 S:PSSDBAR("FREQ")="" PSSDBCAZ(PSSDBFDB(PSSDBLP,"RX_NUM"),"FRQ_ERROR")=""
"RTN","PSSDSAPD",137,0)
 Q
"RTN","PSSDSAPD",138,0)
 ;
"RTN","PSSDSAPD",139,0)
 ;
"RTN","PSSDSAPD",140,0)
DTYPE ;Find Dose Type
"RTN","PSSDSAPD",141,0)
 N PSSDBST1,PSSDBST2,PSSDBST3,PSSDBST4
"RTN","PSSDSAPD",142,0)
 I $D(PSSDBFDB(PSSDBLP,"DOSE_TYPE")) S PSSDBAR("TYPE")=PSSDBFDB(PSSDBLP,"DOSE_TYPE") Q
"RTN","PSSDSAPD",143,0)
 S PSSDBST1=$G(PSSDBDS(PSSDBLP,"SCHEDULE"))
"RTN","PSSDSAPD",144,0)
 I PSSDBST1="" S PSSDBAR("TYPE")="MAINTENANCE" Q
"RTN","PSSDSAPD",145,0)
 S PSSDBST3=0
"RTN","PSSDSAPD",146,0)
 F PSSDBST2=0:0 S PSSDBST2=$O(^PS(51.1,"APPSJ",PSSDBST1,PSSDBST2)) Q:'PSSDBST2!(PSSDBST3)  D
"RTN","PSSDSAPD",147,0)
 .S PSSDBST4=$P($G(^PS(51.1,PSSDBST2,0)),"^",5)
"RTN","PSSDSAPD",148,0)
 .I PSSDBST4="O"!(PSSDBST4="OC") S PSSDBAR("TYPE")="SINGLE DOSE",PSSDBST3=1
"RTN","PSSDSAPD",149,0)
 I 'PSSDBST3 S PSSDBAR("TYPE")="MAINTENANCE"
"RTN","PSSDSAPD",150,0)
 Q
"RTN","PSSDSAPD",151,0)
 ;
"RTN","PSSDSAPD",152,0)
 ;
"RTN","PSSDSAPD",153,0)
COMP ;Handle complex order, set PSSDBCAR array, see routine PSSDSEXC for PSSBDCAR piece details
"RTN","PSSDSAPD",154,0)
 ;if you have to add new create input entry, just add a piece 5 = 1 to the Pharmacy Order Number
"RTN","PSSDSAPD",155,0)
 N PSSDBKLP,PSSDBKUN,PSSDBKMR,PSSDBKND,PSSDBKRF,PSSDBKNW,PSSDBKFL,PSSDBKTM,PSSDBKFQ,PSSDBKGG,PSSCNX1,PSSDBCDA,PSSDCLX
"RTN","PSSDSAPD",156,0)
 S PSSDBKTM="PSSTTMP"
"RTN","PSSDSAPD",157,0)
 K ^TMP($J,PSSDBKTM)
"RTN","PSSDSAPD",158,0)
 S PSSDBKFL=0
"RTN","PSSDSAPD",159,0)
 F PSSCNX1=0:0 S PSSCNX1=$O(^TMP($J,"PSSCNX","IN","DOSE",PSSCNX1)) Q:'PSSCNX1  S PSSDBKLP=$O(^TMP($J,"PSSCNX","IN","DOSE",PSSCNX1,"")) I PSSDBKLP'=""  D
"RTN","PSSDSAPD",160,0)
 .S PSSDBKND=$G(^TMP($J,PSSDBASE,"IN","DOSE",PSSDBKLP)) S PSSDBKFQ=$S($D(PSSDBCAZ(PSSDBKLP,"FRQ_ERROR")):0,1:1) S PSSDBKGG=$S($P(PSSDBKND,"^",12)="SINGLE DOSE":1,1:0)
"RTN","PSSDSAPD",161,0)
 .S PSSDBCDA($S($P(PSSDBKND,"^",3)="":"NULL",1:$P(PSSDBKND,"^",3)),$S($P(PSSDBKND,"^",11)="":"NULL",1:$P(PSSDBKND,"^",11)))=PSSDBKLP I $G(PSSDCLX)="",PSSDSWHE S PSSDCLX=PSSDBKLP
"RTN","PSSDSAPD",162,0)
 .S PSSDBCAR(PSSDBKLP)="B"_"^"_$P(PSSDBKND,"^",4)_"^"_$P(PSSDBKND,"^",3)_"^"_PSSDBKFQ_"^"_$S($P(PSSDBKND,"^",12)="SINGLE DOSE":0,1:1) S:$G(PSSDBFRC(PSSDBKLP,"CONJ"))="A" $P(PSSDBCAR(PSSDBKLP),"^",7)=1
"RTN","PSSDSAPD",163,0)
 .S $P(PSSDBCAR(PSSDBKLP),"^",9)=$P(PSSDBKND,"^",11) D MLTNO^PSSDSAPM,SXCL^PSSDSAPA I PSSDSWHE S:$G(PSSDBFRC(PSSDBKLP,"CONJ"))'=""!($G(PSSDBFRC(PSSDCLX,"CONJ"))'="") $P(PSSDBCAR(PSSDBKLP),"^",16)=1 S PSSDCLX=PSSDBKLP
"RTN","PSSDSAPD",164,0)
 .I $G(PSSDBFRC(PSSDBKLP,"CONJ"))'="A"!($O(^TMP($J,"PSSCNX","IN","DOSE",PSSCNX1))="") S PSSDBKNW($P(PSSDBKLP,";",4),PSSDBKLP)="" D CRT K PSSDBKNW,PSSDBCDA S PSSDBKFL=0 Q
"RTN","PSSDSAPD",165,0)
 .S PSSDBKFL=PSSDBKFL+1
"RTN","PSSDSAPD",166,0)
 .S PSSDBKNW($P(PSSDBKLP,";",4),PSSDBKLP)=""
"RTN","PSSDSAPD",167,0)
 .S $P(PSSDBCAR(PSSDBKLP),"^")="S",$P(PSSDBCAR(PSSDBKLP),"^",12)=1
"RTN","PSSDSAPD",168,0)
 I $D(^TMP($J,PSSDBKTM)) M ^TMP($J,PSSDBASE)=^TMP($J,PSSDBKTM)
"RTN","PSSDSAPD",169,0)
 K ^TMP($J,PSSDBKTM)
"RTN","PSSDSAPD",170,0)
 Q
"RTN","PSSDSAPD",171,0)
 ;
"RTN","PSSDSAPD",172,0)
 ;
"RTN","PSSDSAPD",173,0)
DRT(PSSDBJV) ;Return number of minutes based on duration, API also called from Inpatient Medications
"RTN","PSSDSAPD",174,0)
 ;If only a numeric is passed in, the API will assume Days
"RTN","PSSDSAPD",175,0)
 I $G(PSSDBJV)="" Q -1
"RTN","PSSDSAPD",176,0)
 I PSSDBJV?.N1".".N1"D"!(PSSDBJV?.N1"D") Q (1440*+PSSDBJV)
"RTN","PSSDSAPD",177,0)
 I PSSDBJV?.N1".".N!(PSSDBJV?.N) Q (1440*+PSSDBJV)
"RTN","PSSDSAPD",178,0)
 I PSSDBJV?.N1".".N1"H"!(PSSDBJV?.N1"H") Q (60*+PSSDBJV)
"RTN","PSSDSAPD",179,0)
 I PSSDBJV?.N1".".N1"M"!(PSSDBJV?.N1"M") Q (+PSSDBJV)
"RTN","PSSDSAPD",180,0)
 I PSSDBJV?.N1".".N1"W"!(PSSDBJV?.N1"W") Q (10080*+PSSDBJV)
"RTN","PSSDSAPD",181,0)
 I PSSDBJV?.N1".".N1"L"!(PSSDBJV?.N1"L") Q (43200*+PSSDBJV)
"RTN","PSSDSAPD",182,0)
 Q -1
"RTN","PSSDSAPD",183,0)
 ;
"RTN","PSSDSAPD",184,0)
 ;
"RTN","PSSDSAPD",185,0)
CRT ;Possibly create new Input Dose Node just for Daily Dose purposes
"RTN","PSSDSAPD",186,0)
 I 'PSSDBKFL!($G(PSSDBFRC(PSSDBKLP,"CONJ"))="A") S $P(PSSDBCAR(PSSDBKLP),"^")=$S($G(PSSDBFRC(PSSDBKLP,"CONJ"))="A":"S",$G(PSSDBKGG):"S",$G(PSSDBFRB(PSSDBKLP,"DRATE"))="":"B",1:"B") D S12 Q
"RTN","PSSDSAPD",187,0)
 N PSSDBR1,PSSDBR2,PSSDBR3,PSSDBR4,PSSDBR5,PSSDBR6,PSSDBR7,PSSDBRCT,PSSDBRNO,PSSDBRLS,PSSDBR9,PSSDBR91,PSSDBEQ2,PSSDBEQ3,PSSDBEQ4,PSSDBR8,PSSDBXAX,PSSDBRLP,PSSDBRLA
"RTN","PSSDSAPD",188,0)
 S (PSSDBRNO,PSSDBRCT,PSSDBR5)=0
"RTN","PSSDSAPD",189,0)
 ;Then or Except Conjunction, or last Dosing Sequence in the series, with previous dosages to add up for Daily Dose
"RTN","PSSDSAPD",190,0)
 ;PSSDBKNW array holds all previous dosing sequences and current one
"RTN","PSSDSAPD",191,0)
 S PSSDBRLP="" F  S PSSDBRLP=$O(PSSDBKNW(PSSDBRLP)) Q:PSSDBRLP=""  S PSSDBR1=$O(PSSDBKNW(PSSDBRLP,"")) I PSSDBR1'=""  D
"RTN","PSSDSAPD",192,0)
 .S PSSDBR2=$G(^TMP($J,PSSDBASE,"IN","DOSE",PSSDBR1))
"RTN","PSSDSAPD",193,0)
 .I $O(PSSDBKNW(PSSDBRLP))="" S $P(PSSDBCAR(PSSDBKLP),"^")="S",$P(PSSDBCAR(PSSDBKLP),"^",12)=1
"RTN","PSSDSAPD",194,0)
 .I $P(PSSDBR2,"^",12)'="MAINTENANCE" D NX(4)
"RTN","PSSDSAPD",195,0)
 .S PSSDBRCT=PSSDBRCT+1
"RTN","PSSDSAPD",196,0)
 .I $G(PSSDBFRC(PSSDBR1,"SCHEDULE"))["@" D NX(10)
"RTN","PSSDSAPD",197,0)
 .I '$D(PSSDBEQ2(10)),$G(PSSDBFRC(PSSDBR1,"SCHEDULE"))'="" F PSSDBEQ4=0:0 S PSSDBEQ4=$O(^PS(51.1,"APPSJ",$G(PSSDBFRC(PSSDBR1,"SCHEDULE")),PSSDBEQ4)) Q:'PSSDBEQ4!($D(PSSDBEQ2(10)))  D
"RTN","PSSDSAPD",198,0)
 ..I $P($G(^PS(51.1,PSSDBEQ4,0)),"^",5)="D" D NX(10)
"RTN","PSSDSAPD",199,0)
 .I PSSDBRCT=1 D  Q
"RTN","PSSDSAPD",200,0)
 ..I '$P(PSSDBR2,"^",5) D NX(11)
"RTN","PSSDSAPD",201,0)
 ..S PSSDBR91=$G(PSSDBFRB(PSSDBR1,"DRATE"))
"RTN","PSSDSAPD",202,0)
 ..S PSSDBR3=$P(PSSDBR2,"^",6),PSSDBR4=$P(PSSDBR2,"^",11) I PSSDBR3=""!(PSSDBR4="") S PSSDBRNO=1 D:PSSDBR3="" NX(5) D:PSSDBR4="" NX(6)
"RTN","PSSDSAPD",203,0)
 ..S PSSDBR5=$P(PSSDBR2,"^",8)
"RTN","PSSDSAPD",204,0)
 ..I $D(PSSDBCAZ(PSSDBR1,"FRQ_ERROR")) D NX(7)
"RTN","PSSDSAPD",205,0)
 ..I 'PSSDBRNO S PSSDBR8=$$FRCON^PSSDSAPK(PSSDBR5) S:PSSDBR8'<1 PSSDBR6=$P(PSSDBR2,"^",5)*PSSDBR8 I PSSDBR8<1 D NX(7)
"RTN","PSSDSAPD",206,0)
 ..I $G(PSSDBFRB(PSSDBR1,"DRATE"))'="" S PSSDBR7=$$DRT(PSSDBFRB(PSSDBR1,"DRATE")) I PSSDBR7<1440 D NX(9)
"RTN","PSSDSAPD",207,0)
 ..I '$O(PSSDBKNW(PSSDBRLP)) S PSSDBRLS=PSSDBR1 ; Get Last entry
"RTN","PSSDSAPD",208,0)
 .I '$P(PSSDBR2,"^",5) D NX(11)
"RTN","PSSDSAPD",209,0)
 .I PSSDBR3'=$P(PSSDBR2,"^",6) D NX(5)
"RTN","PSSDSAPD",210,0)
 .I PSSDBR4'=$P(PSSDBR2,"^",11) D NX(6)
"RTN","PSSDSAPD",211,0)
 .I $G(PSSDBFRB(PSSDBR1,"DRATE"))'=PSSDBR91 D NX(8)
"RTN","PSSDSAPD",212,0)
 .S PSSDBR5=$P(PSSDBR2,"^",8) I $D(PSSDBCAZ(PSSDBR1,"FRQ_ERROR")) D NX(7)
"RTN","PSSDSAPD",213,0)
 .I 'PSSDBRNO S PSSDBR8=$$FRCON^PSSDSAPK(PSSDBR5) S:PSSDBR8'<1 PSSDBR6=PSSDBR6+($P(PSSDBR2,"^",5)*PSSDBR8) I PSSDBR8<1 D NX(7)
"RTN","PSSDSAPD",214,0)
 .I $G(PSSDBFRB(PSSDBR1,"DRATE"))'="" S PSSDBR7=$$DRT(PSSDBFRB(PSSDBR1,"DRATE")) I PSSDBR7<1440 D NX(9)
"RTN","PSSDSAPD",215,0)
 .I '$O(PSSDBKNW(PSSDBRLP)) S PSSDBRLS=PSSDBR1 ; Get Last entry
"RTN","PSSDSAPD",216,0)
 I PSSDBRNO D  S $P(PSSDBCAR(PSSDBRLS),"^",8)=1,$P(PSSDBCAR(PSSDBRLS),"^",7)="" D MLTNP^PSSDSAPM D RESET^PSSDSAPA Q
"RTN","PSSDSAPD",217,0)
 .S PSSDBRLA="" F  S PSSDBRLA=$O(PSSDBKNW(PSSDBRLA)) Q:PSSDBRLA=""  S PSSDBR9=$O(PSSDBKNW(PSSDBRLA,"")) I PSSDBR9'=""  S $P(PSSDBCAR(PSSDBR9),"^")="S",$P(PSSDBCAR(PSSDBR9),"^",12)=1
"RTN","PSSDSAPD",218,0)
 .;Set error message only for last entry where Daily Dose should have been done
"RTN","PSSDSAPD",219,0)
 .D ERST^PSSDSAPM
"RTN","PSSDSAPD",220,0)
 S ^TMP($J,PSSDBKTM,"IN","DOSE",PSSDBRLS_";1")=^TMP($J,PSSDBASE,"IN","DOSE",PSSDBRLS)
"RTN","PSSDSAPD",221,0)
 S ^TMP($J,PSSDBKTM,"IN","PROSPECTIVE",PSSDBRLS_";1")=$P(^TMP($J,PSSDBASE,"IN","DOSE",PSSDBRLS),"^",1,4)
"RTN","PSSDSAPD",222,0)
 S $P(^TMP($J,PSSDBKTM,"IN","DOSE",PSSDBRLS_";1"),"^",8)=1
"RTN","PSSDSAPD",223,0)
 S $P(^TMP($J,PSSDBKTM,"IN","DOSE",PSSDBRLS_";1"),"^",5)=PSSDBR6
"RTN","PSSDSAPD",224,0)
 S PSSDBCAR(PSSDBRLS_";1")="D"_"^"_$P(PSSDBKND,"^",4)_"^"_$P(PSSDBKND,"^",3)_"^"_PSSDBKFQ S $P(PSSDBCAR(PSSDBRLS),"^",11)=1
"RTN","PSSDSAPD",225,0)
 Q
"RTN","PSSDSAPD",226,0)
 ;
"RTN","PSSDSAPD",227,0)
 ;
"RTN","PSSDSAPD",228,0)
NDINFO ;Set National Drug File information
"RTN","PSSDSAPD",229,0)
 I 'PSSDBIFL,$G(PSSDBFDB(PSSDBLP,"DRUG_IEN")) S PSSDBND1=$P($G(^PSDRUG(PSSDBFDB(PSSDBLP,"DRUG_IEN"),"ND")),"^"),PSSDBND3=$P($G(^PSDRUG(PSSDBFDB(PSSDBLP,"DRUG_IEN"),"ND")),"^",3) Q
"RTN","PSSDSAPD",230,0)
 I $G(PSSDBIFG) S PSSDBND1=$P($G(^PSDRUG(PSSDBIFG,"ND")),"^"),PSSDBND3=$P($G(^PSDRUG(PSSDBIFG,"ND")),"^",3)
"RTN","PSSDSAPD",231,0)
 Q
"RTN","PSSDSAPD",232,0)
 ;
"RTN","PSSDSAPD",233,0)
 ;
"RTN","PSSDSAPD",234,0)
ERR ;Loop through PSSDBCAR, set PSSDBCAX error array
"RTN","PSSDSAPD",235,0)
 N PSSDBEB1,PSSDBEB2,PSSDBEB3
"RTN","PSSDSAPD",236,0)
 S PSSDBEB3=$S($G(^TMP($J,PSSDBASE,"IN","DOSE","AGE")):1,1:0)
"RTN","PSSDSAPD",237,0)
 ;Skip AGE, WT and BSA and newly created Dosages for complex additions
"RTN","PSSDSAPD",238,0)
 ;Rx_NUM MUST contain a ";", or you will not set PSSDBDGO
"RTN","PSSDSAPD",239,0)
 S PSSDBEB1="" F  S PSSDBEB1=$O(^TMP($J,PSSDBASE,"IN","DOSE",PSSDBEB1)) Q:PSSDBEB1=""  S:'PSSDBEB3&(PSSDBEB1[";") $P(PSSDBCAR(PSSDBEB1),"^",13)=1 D:'$P(PSSDBEB1,";",5)&(PSSDBEB1[";")
"RTN","PSSDSAPD",240,0)
 .S PSSDBEB2=$G(^TMP($J,PSSDBASE,"IN","DOSE",PSSDBEB1))
"RTN","PSSDSAPD",241,0)
 .I $D(PSSDBCAZ(PSSDBEB1,"INF_ERROR")) D INRATE S PSSDBDGO=1 S $P(PSSDBCAR(PSSDBEB1),"^",13)=1 Q
"RTN","PSSDSAPD",242,0)
 .I $P(PSSDBEB2,"^",5)=""!($P(PSSDBEB2,"^",6)="") D BDOSE^PSSDSAPK S $P(PSSDBCAR(PSSDBEB1),"^",13)=1 Q
"RTN","PSSDSAPD",243,0)
 .I $D(PSSDBCAZ(PSSDBEB1,"FRQ_ERROR")) D INFRQ S PSSDBDGO=1 Q
"RTN","PSSDSAPD",244,0)
 .I '$P(PSSDBCAR(PSSDBEB1),"^",5) D SING^PSSDSAPK S PSSDBDGO=1 Q
"RTN","PSSDSAPD",245,0)
 .S PSSDBDGO=1
"RTN","PSSDSAPD",246,0)
 Q
"RTN","PSSDSAPD",247,0)
 ;
"RTN","PSSDSAPD",248,0)
 ;
"RTN","PSSDSAPD",249,0)
EXCPS(PSSDBEQ1) ;Set errors
"RTN","PSSDSAPD",250,0)
 I PSSDBEQ1=2,$D(PSSDBCAZ(PSSDBEB1,"FRQD_ERROR")) S PSSDBCAX(PSSDBEB1,15)="" Q
"RTN","PSSDSAPD",251,0)
 S PSSDBCAX(PSSDBEB1,PSSDBEQ1)=""
"RTN","PSSDSAPD",252,0)
 Q
"RTN","PSSDSAPD",253,0)
 ;
"RTN","PSSDSAPD",254,0)
 ;
"RTN","PSSDSAPD",255,0)
INRATE ;Infusion Rate error, default data already set in Inpatient
"RTN","PSSDSAPD",256,0)
 ;N PSSDBEC1
"RTN","PSSDSAPD",257,0)
 I 'PSSDBEB3 Q
"RTN","PSSDSAPD",258,0)
 I $P(PSSDBEB2,"^",5)=""!($P(PSSDBEB2,"^",6)="") D EXCPS(1)
"RTN","PSSDSAPD",259,0)
 ;S PSSDBEC1=$P(PSSDBEB2,"^",11) S PSSDBEC1=$$UP^XLFSTR(PSSDBEC1) I $E(PSSDBEC1,1,4)'="CONT" Q
"RTN","PSSDSAPD",260,0)
 S $P(PSSDBCAR(PSSDBEB1),"^",21)=1
"RTN","PSSDSAPD",261,0)
 D EXCPS(3) D INFERRS^PSSDSAPK
"RTN","PSSDSAPD",262,0)
 I $D(PSSDBCAZ(PSSDBEB1,"FRQ_ERROR")) D EXCPS(2)
"RTN","PSSDSAPD",263,0)
 I $P(PSSDBCAR(PSSDBEB1),"^",5) S $P(PSSDBCAR(PSSDBEB1),"^",6)=1 S $P(PSSDBCAR(PSSDBEB1),"^",10)=1 Q  ;Maintenance Dose
"RTN","PSSDSAPD",264,0)
 ;Single Dose, code should never be invoked, because we don't send Continuous infusions
"RTN","PSSDSAPD",265,0)
 S $P(PSSDBCAR(PSSDBEB1),"^")="S"
"RTN","PSSDSAPD",266,0)
 S $P(PSSDBCAR(PSSDBEB1),"^",7)=1
"RTN","PSSDSAPD",267,0)
 Q
"RTN","PSSDSAPD",268,0)
 ;
"RTN","PSSDSAPD",269,0)
 ;
"RTN","PSSDSAPD",270,0)
INFRQ ;Frequency error
"RTN","PSSDSAPD",271,0)
 I 'PSSDBEB3 Q
"RTN","PSSDSAPD",272,0)
 I $P(PSSDBEB2,"^",11)="" Q
"RTN","PSSDSAPD",273,0)
 ;I '$P(PSSDBCAR(PSSDBEB1),"^",5) Q
"RTN","PSSDSAPD",274,0)
 D EXCPS(2)
"RTN","PSSDSAPD",275,0)
 S $P(PSSDBCAR(PSSDBEB1),"^")="S"
"RTN","PSSDSAPD",276,0)
 I $P(PSSDBCAR(PSSDBEB1),"^",5) S $P(PSSDBCAR(PSSDBEB1),"^",8)=1 S $P(PSSDBCAR(PSSDBEB1),"^",10)=1
"RTN","PSSDSAPD",277,0)
 ;Inpatient may already be setting next 3, because this applies to Outpatient and IV
"RTN","PSSDSAPD",278,0)
 S $P(^TMP($J,PSSDBASE,"IN","DOSE",PSSDBEB1),"^",8)=1,$P(^TMP($J,PSSDBASE,"IN","DOSE",PSSDBEB1),"^",9)=1
"RTN","PSSDSAPD",279,0)
 ;S $P(^TMP($J,PSSDBASE,"IN","DOSE",PSSDBEB1),"^",9)=1
"RTN","PSSDSAPD",280,0)
 S $P(^TMP($J,PSSDBASE,"IN","DOSE",PSSDBEB1),"^",10)=$P(^TMP($J,PSSDBASE,"IN","DOSE",PSSDBEB1),"^",7)
"RTN","PSSDSAPD",281,0)
 Q
"RTN","PSSDSAPD",282,0)
 ;
"RTN","PSSDSAPD",283,0)
 ;
"RTN","PSSDSAPD",284,0)
S12 ;
"RTN","PSSDSAPD",285,0)
 S:$P(PSSDBCAR(PSSDBKLP),"^")="S" $P(PSSDBCAR(PSSDBKLP),"^",12)=1
"RTN","PSSDSAPD",286,0)
 Q
"RTN","PSSDSAPD",287,0)
 ;
"RTN","PSSDSAPD",288,0)
 ;
"RTN","PSSDSAPD",289,0)
NX(PSSNX) ;
"RTN","PSSDSAPD",290,0)
 S PSSDBRNO=1
"RTN","PSSDSAPD",291,0)
 S PSSDBEQ2(PSSNX)=""
"RTN","PSSDSAPD",292,0)
 S PSSDBXAX(PSSNX,PSSDBR1)=""
"RTN","PSSDSAPD",293,0)
 Q
"RTN","PSSDSAPL")
0^38^B108974964^B108677776
"RTN","PSSDSAPL",1,0)
PSSDSAPL ;BIR/RTR-Free Text Dosage Logic ;06/21/10
"RTN","PSSDSAPL",2,0)
 ;;1.0;PHARMACY DATA MANAGEMENT;**117,160,201**;9/30/97;Build 23
"RTN","PSSDSAPL",3,0)
 ;
"RTN","PSSDSAPL",4,0)
 ;
"RTN","PSSDSAPL",5,0)
NUM ;Determine Dose Amount and Dose Unit from Free Text Dose
"RTN","PSSDSAPL",6,0)
 ;
"RTN","PSSDSAPL",7,0)
 ;PSSDBV9 = Free Text Dosage
"RTN","PSSDSAPL",8,0)
 ;
"RTN","PSSDSAPL",9,0)
 N PSSDBV9
"RTN","PSSDSAPL",10,0)
 S PSSDBV9=$G(PSSDSLCL)
"RTN","PSSDSAPL",11,0)
 I $L(PSSDBV9)'>0 Q
"RTN","PSSDSAPL",12,0)
 S PSSDBV9=$$UP^XLFSTR(PSSDBV9)
"RTN","PSSDSAPL",13,0)
 ;
"RTN","PSSDSAPL",14,0)
 ;
"RTN","PSSDSAPL",15,0)
 N PSSDBV1,PSSDBV2,PSSDBV3,PSSDBV7,PSSDBV8
"RTN","PSSDSAPL",16,0)
 S PSSDBV3=""
"RTN","PSSDSAPL",17,0)
 S PSSDBV8=$$NUMF I PSSDBV8 S PSSDBAR("AMN")=PSSDBV8,PSSDBAR("UNIT")=PSSDBV3,PSSDBFAL=1 Q
"RTN","PSSDSAPL",18,0)
 ;
"RTN","PSSDSAPL",19,0)
 ;
"RTN","PSSDSAPL",20,0)
 I $E(PSSDBV9)="." S PSSDBV9="0"_PSSDBV9 S PSSDBV8=$$NUMF I PSSDBV8 S PSSDBAR("AMN")=PSSDBV8,PSSDBAR("UNIT")=PSSDBV3,PSSDBFAL=1 Q
"RTN","PSSDSAPL",21,0)
 I $E(PSSDBV9)=0 S PSSDBV9=$E(PSSDBV9,2,$L(PSSDBV9)) S PSSDBV8=$$NUMF I PSSDBV8 S PSSDBAR("AMN")=PSSDBV8,PSSDBAR("UNIT")=PSSDBV3,PSSDBFAL=1
"RTN","PSSDSAPL",22,0)
 Q
"RTN","PSSDSAPL",23,0)
 ;
"RTN","PSSDSAPL",24,0)
 ;
"RTN","PSSDSAPL",25,0)
NUMF() ;
"RTN","PSSDSAPL",26,0)
 S PSSDBV1=$E(PSSDBV9,1,11) I PSSDBV1="ONE FOURTH " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,12,$L(PSSDBV9)) Q $S($$8:.25,1:0)
"RTN","PSSDSAPL",27,0)
 S PSSDBV1=$E(PSSDBV9,1,11) I PSSDBV1="ONE-FOURTH " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,12,$L(PSSDBV9)) Q $S($$8:.25,1:0)
"RTN","PSSDSAPL",28,0)
 S PSSDBV1=$E(PSSDBV9,1,4) I PSSDBV1="1/4 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,5,$L(PSSDBV9)) Q $S($$8:.25,1:0)
"RTN","PSSDSAPL",29,0)
 S PSSDBV1=$E(PSSDBV9,1,5) I PSSDBV1="0.25 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,6,$L(PSSDBV9)) Q $S($$8:.25,1:0)
"RTN","PSSDSAPL",30,0)
 ;
"RTN","PSSDSAPL",31,0)
 S PSSDBV1=$E(PSSDBV9,1,10) I PSSDBV1="ONE THIRD " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,11,$L(PSSDBV9)) Q $S($$8:.33,1:0)
"RTN","PSSDSAPL",32,0)
 S PSSDBV1=$E(PSSDBV9,1,10) I PSSDBV1="ONE-THIRD " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,11,$L(PSSDBV9)) Q $S($$8:.33,1:0)
"RTN","PSSDSAPL",33,0)
 S PSSDBV1=$E(PSSDBV9,1,4) I PSSDBV1="1/3 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,5,$L(PSSDBV9)) Q $S($$8:.33,1:0)
"RTN","PSSDSAPL",34,0)
 S PSSDBV1=$E(PSSDBV9,1,5) I PSSDBV1="0.33 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,6,$L(PSSDBV9)) Q $S($$8:.33,1:0)
"RTN","PSSDSAPL",35,0)
 ;
"RTN","PSSDSAPL",36,0)
 S PSSDBV1=$E(PSSDBV9,1,9) I PSSDBV1="ONE HALF ",$$7 S PSSDBV2=$E(PSSDBV9,10,$L(PSSDBV9)) I $$8 Q .5
"RTN","PSSDSAPL",37,0)
 S PSSDBV1=$E(PSSDBV9,1,9) I PSSDBV1="ONE-HALF ",$$7 S PSSDBV2=$E(PSSDBV9,10,$L(PSSDBV9)) I $$8 Q .5
"RTN","PSSDSAPL",38,0)
 S PSSDBV1=$E(PSSDBV9,1,4) I PSSDBV1="1/2 ",$$7 S PSSDBV2=$E(PSSDBV9,5,$L(PSSDBV9)) I $$8 Q .5
"RTN","PSSDSAPL",39,0)
 S PSSDBV1=$E(PSSDBV9,1,4) I PSSDBV1="0.5 ",$$7 S PSSDBV2=$E(PSSDBV9,5,$L(PSSDBV9)) I $$8 Q .5
"RTN","PSSDSAPL",40,0)
 ;
"RTN","PSSDSAPL",41,0)
 S PSSDBV1=$E(PSSDBV9,1,6) I PSSDBV1="0.5-1 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,7,$L(PSSDBV9)) Q $S($$8:1,1:0)
"RTN","PSSDSAPL",42,0)
 S PSSDBV1=$E(PSSDBV9,1,8) I PSSDBV1="0.5 - 1 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,9,$L(PSSDBV9)) Q $S($$8:1,1:0)
"RTN","PSSDSAPL",43,0)
 S PSSDBV1=$E(PSSDBV9,1,9) I PSSDBV1="0.5 TO 1 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,10,$L(PSSDBV9)) Q $S($$8:1,1:0)
"RTN","PSSDSAPL",44,0)
 S PSSDBV1=$E(PSSDBV9,1,9) I PSSDBV1="0.5 OR 1 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,10,$L(PSSDBV9)) Q $S($$8:1,1:0)
"RTN","PSSDSAPL",45,0)
 S PSSDBV1=$E(PSSDBV9,1,6) I PSSDBV1="1/2-1 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,7,$L(PSSDBV9)) Q $S($$8:1,1:0)
"RTN","PSSDSAPL",46,0)
 S PSSDBV1=$E(PSSDBV9,1,8) I PSSDBV1="1/2 - 1 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,9,$L(PSSDBV9)) Q $S($$8:1,1:0)
"RTN","PSSDSAPL",47,0)
 S PSSDBV1=$E(PSSDBV9,1,9) I PSSDBV1="1/2 TO 1 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,10,$L(PSSDBV9)) Q $S($$8:1,1:0)
"RTN","PSSDSAPL",48,0)
 S PSSDBV1=$E(PSSDBV9,1,9) I PSSDBV1="1/2 OR 1 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,10,$L(PSSDBV9)) Q $S($$8:1,1:0)
"RTN","PSSDSAPL",49,0)
 S PSSDBV1=$E(PSSDBV9,1,16) I PSSDBV1="ONE-HALF TO ONE " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,17,$L(PSSDBV9)) Q $S($$8:1,1:0)
"RTN","PSSDSAPL",50,0)
 S PSSDBV1=$E(PSSDBV9,1,18) I PSSDBV1="ONE - HALF TO ONE " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,19,$L(PSSDBV9)) Q $S($$8:1,1:0)
"RTN","PSSDSAPL",51,0)
 S PSSDBV1=$E(PSSDBV9,1,16) I PSSDBV1="ONE HALF TO ONE " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,17,$L(PSSDBV9)) Q $S($$8:1,1:0)
"RTN","PSSDSAPL",52,0)
 S PSSDBV1=$E(PSSDBV9,1,16) I PSSDBV1="ONE-HALF OR ONE " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,17,$L(PSSDBV9)) Q $S($$8:1,1:0)
"RTN","PSSDSAPL",53,0)
 S PSSDBV1=$E(PSSDBV9,1,18) I PSSDBV1="ONE - HALF OR ONE " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,19,$L(PSSDBV9)) Q $S($$8:1,1:0)
"RTN","PSSDSAPL",54,0)
 S PSSDBV1=$E(PSSDBV9,1,16) I PSSDBV1="ONE HALF OR ONE " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,17,$L(PSSDBV9)) Q $S($$8:1,1:0)
"RTN","PSSDSAPL",55,0)
 ;
"RTN","PSSDSAPL",56,0)
 S PSSDBV1=$E(PSSDBV9,1,2) I PSSDBV1="1 ",$$7 S PSSDBV2=$E(PSSDBV9,3,$L(PSSDBV9)) I $$8 Q 1
"RTN","PSSDSAPL",57,0)
 S PSSDBV1=$E(PSSDBV9,1,4) I PSSDBV1="ONE ",$$7 S PSSDBV2=$E(PSSDBV9,5,$L(PSSDBV9)) I $$8 Q 1
"RTN","PSSDSAPL",58,0)
 ;
"RTN","PSSDSAPL",59,0)
 S PSSDBV1=$E(PSSDBV9,1,10) I PSSDBV1="1 AND 1/4 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,11,$L(PSSDBV9)) Q $S($$8:1.25,1:0)
"RTN","PSSDSAPL",60,0)
 S PSSDBV1=$E(PSSDBV9,1,19) I PSSDBV1="ONE AND ONE FOURTH " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,20,$L(PSSDBV9)) Q $S($$8:1.25,1:0)
"RTN","PSSDSAPL",61,0)
 S PSSDBV1=$E(PSSDBV9,1,19) I PSSDBV1="ONE AND ONE-FOURTH " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,20,$L(PSSDBV9)) Q $S($$8:1.25,1:0)
"RTN","PSSDSAPL",62,0)
 S PSSDBV1=$E(PSSDBV9,1,17) I PSSDBV1="1 AND ONE FOURTH " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,18,$L(PSSDBV9)) Q $S($$8:1.25,1:0)
"RTN","PSSDSAPL",63,0)
 S PSSDBV1=$E(PSSDBV9,1,17) I PSSDBV1="1 AND ONE-FOURTH " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,18,$L(PSSDBV9)) Q $S($$8:1.25,1:0)
"RTN","PSSDSAPL",64,0)
 S PSSDBV1=$E(PSSDBV9,1,12) I PSSDBV1="ONE AND 1/4 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,13,$L(PSSDBV9)) Q $S($$8:1.25,1:0)
"RTN","PSSDSAPL",65,0)
 ;
"RTN","PSSDSAPL",66,0)
 S PSSDBV1=$E(PSSDBV9,1,10) I PSSDBV1="1 AND 1/3 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,11,$L(PSSDBV9)) Q $S($$8:1.33,1:0)
"RTN","PSSDSAPL",67,0)
 S PSSDBV1=$E(PSSDBV9,1,18) I PSSDBV1="ONE AND ONE THIRD " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,19,$L(PSSDBV9)) Q $S($$8:1.33,1:0)
"RTN","PSSDSAPL",68,0)
 S PSSDBV1=$E(PSSDBV9,1,18) I PSSDBV1="ONE AND ONE-THIRD " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,19,$L(PSSDBV9)) Q $S($$8:1.33,1:0)
"RTN","PSSDSAPL",69,0)
 S PSSDBV1=$E(PSSDBV9,1,16) I PSSDBV1="1 AND ONE THIRD " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,17,$L(PSSDBV9)) Q $S($$8:1.33,1:0)
"RTN","PSSDSAPL",70,0)
 S PSSDBV1=$E(PSSDBV9,1,16) I PSSDBV1="1 AND ONE-THIRD " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,17,$L(PSSDBV9)) Q $S($$8:1.33,1:0)
"RTN","PSSDSAPL",71,0)
 S PSSDBV1=$E(PSSDBV9,1,12) I PSSDBV1="ONE AND 1/3 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,13,$L(PSSDBV9)) Q $S($$8:1.33,1:0)
"RTN","PSSDSAPL",72,0)
 ;
"RTN","PSSDSAPL",73,0)
 S PSSDBV1=$E(PSSDBV9,1,10) I PSSDBV1="1 AND 1/2 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,11,$L(PSSDBV9)) Q $S($$8:1.5,1:0)
"RTN","PSSDSAPL",74,0)
 S PSSDBV1=$E(PSSDBV9,1,17) I PSSDBV1="ONE AND ONE HALF " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,18,$L(PSSDBV9)) Q $S($$8:1.5,1:0)
"RTN","PSSDSAPL",75,0)
 S PSSDBV1=$E(PSSDBV9,1,17) I PSSDBV1="ONE AND ONE-HALF " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,18,$L(PSSDBV9)) Q $S($$8:1.5,1:0)
"RTN","PSSDSAPL",76,0)
 S PSSDBV1=$E(PSSDBV9,1,15) I PSSDBV1="1 AND ONE HALF " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,16,$L(PSSDBV9)) Q $S($$8:1.5,1:0)
"RTN","PSSDSAPL",77,0)
 S PSSDBV1=$E(PSSDBV9,1,15) I PSSDBV1="1 AND ONE-HALF " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,16,$L(PSSDBV9)) Q $S($$8:1.5,1:0)
"RTN","PSSDSAPL",78,0)
 S PSSDBV1=$E(PSSDBV9,1,12) I PSSDBV1="ONE AND 1/2 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,13,$L(PSSDBV9)) Q $S($$8:1.5,1:0)
"RTN","PSSDSAPL",79,0)
 ;
"RTN","PSSDSAPL",80,0)
 S PSSDBV1=$E(PSSDBV9,1,4) I PSSDBV1="1-2 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,5,$L(PSSDBV9)) Q $S($$8:2,1:0)
"RTN","PSSDSAPL",81,0)
 S PSSDBV1=$E(PSSDBV9,1,6) I PSSDBV1="1 - 2 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,7,$L(PSSDBV9)) Q $S($$8:2,1:0)
"RTN","PSSDSAPL",82,0)
 S PSSDBV1=$E(PSSDBV9,1,7) I PSSDBV1="1 TO 2 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,8,$L(PSSDBV9)) Q $S($$8:2,1:0)
"RTN","PSSDSAPL",83,0)
 S PSSDBV1=$E(PSSDBV9,1,7) I PSSDBV1="1 OR 2 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,8,$L(PSSDBV9)) Q $S($$8:2,1:0)
"RTN","PSSDSAPL",84,0)
 S PSSDBV1=$E(PSSDBV9,1,11) I PSSDBV1="ONE TO TWO " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,12,$L(PSSDBV9)) Q $S($$8:2,1:0)
"RTN","PSSDSAPL",85,0)
 S PSSDBV1=$E(PSSDBV9,1,11) I PSSDBV1="ONE OR TWO " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,12,$L(PSSDBV9)) Q $S($$8:2,1:0)
"RTN","PSSDSAPL",86,0)
 S PSSDBV1=$E(PSSDBV9,1,8) I PSSDBV1="ONE-TWO " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,9,$L(PSSDBV9)) Q $S($$8:2,1:0)
"RTN","PSSDSAPL",87,0)
 S PSSDBV1=$E(PSSDBV9,1,10) I PSSDBV1="ONE - TWO " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,11,$L(PSSDBV9)) Q $S($$8:2,1:0)
"RTN","PSSDSAPL",88,0)
 ;
"RTN","PSSDSAPL",89,0)
 S PSSDBV1=$E(PSSDBV9,1,2) I PSSDBV1="2 ",$$7 S PSSDBV2=$E(PSSDBV9,3,$L(PSSDBV9)) I $$8 Q 2
"RTN","PSSDSAPL",90,0)
 S PSSDBV1=$E(PSSDBV9,1,4) I PSSDBV1="TWO ",$$7 S PSSDBV2=$E(PSSDBV9,5,$L(PSSDBV9)) I $$8 Q 2
"RTN","PSSDSAPL",91,0)
 ;
"RTN","PSSDSAPL",92,0)
 S PSSDBV1=$E(PSSDBV9,1,10) I PSSDBV1="2 AND 1/4 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,11,$L(PSSDBV9)) Q $S($$8:2.25,1:0)
"RTN","PSSDSAPL",93,0)
 S PSSDBV1=$E(PSSDBV9,1,19) I PSSDBV1="TWO AND ONE FOURTH " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,20,$L(PSSDBV9)) Q $S($$8:2.25,1:0)
"RTN","PSSDSAPL",94,0)
 S PSSDBV1=$E(PSSDBV9,1,19) I PSSDBV1="TWO AND ONE-FOURTH " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,20,$L(PSSDBV9)) Q $S($$8:2.25,1:0)
"RTN","PSSDSAPL",95,0)
 S PSSDBV1=$E(PSSDBV9,1,17) I PSSDBV1="2 AND ONE FOURTH " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,18,$L(PSSDBV9)) Q $S($$8:2.25,1:0)
"RTN","PSSDSAPL",96,0)
 S PSSDBV1=$E(PSSDBV9,1,17) I PSSDBV1="2 AND ONE-FOURTH " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,18,$L(PSSDBV9)) Q $S($$8:2.25,1:0)
"RTN","PSSDSAPL",97,0)
 S PSSDBV1=$E(PSSDBV9,1,12) I PSSDBV1="TWO AND 1/4 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,13,$L(PSSDBV9)) Q $S($$8:2.25,1:0)
"RTN","PSSDSAPL",98,0)
 ;
"RTN","PSSDSAPL",99,0)
 S PSSDBV1=$E(PSSDBV9,1,10) I PSSDBV1="2 AND 1/3 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,11,$L(PSSDBV9)) Q $S($$8:2.33,1:0)
"RTN","PSSDSAPL",100,0)
 S PSSDBV1=$E(PSSDBV9,1,18) I PSSDBV1="TWO AND ONE THIRD " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,19,$L(PSSDBV9)) Q $S($$8:2.33,1:0)
"RTN","PSSDSAPL",101,0)
 S PSSDBV1=$E(PSSDBV9,1,18) I PSSDBV1="TWO AND ONE-THIRD " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,19,$L(PSSDBV9)) Q $S($$8:2.33,1:0)
"RTN","PSSDSAPL",102,0)
 S PSSDBV1=$E(PSSDBV9,1,16) I PSSDBV1="2 AND ONE THIRD " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,17,$L(PSSDBV9)) Q $S($$8:2.33,1:0)
"RTN","PSSDSAPL",103,0)
 S PSSDBV1=$E(PSSDBV9,1,16) I PSSDBV1="2 AND ONE-THIRD " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,17,$L(PSSDBV9)) Q $S($$8:2.33,1:0)
"RTN","PSSDSAPL",104,0)
 S PSSDBV1=$E(PSSDBV9,1,12) I PSSDBV1="TWO AND 1/3 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,13,$L(PSSDBV9)) Q $S($$8:2.33,1:0)
"RTN","PSSDSAPL",105,0)
 ;
"RTN","PSSDSAPL",106,0)
 S PSSDBV1=$E(PSSDBV9,1,10) I PSSDBV1="2 AND 1/2 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,11,$L(PSSDBV9)) Q $S($$8:2.5,1:0)
"RTN","PSSDSAPL",107,0)
 S PSSDBV1=$E(PSSDBV9,1,17) I PSSDBV1="TWO AND ONE HALF " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,18,$L(PSSDBV9)) Q $S($$8:2.5,1:0)
"RTN","PSSDSAPL",108,0)
 S PSSDBV1=$E(PSSDBV9,1,17) I PSSDBV1="TWO AND ONE-HALF " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,18,$L(PSSDBV9)) Q $S($$8:2.5,1:0)
"RTN","PSSDSAPL",109,0)
 S PSSDBV1=$E(PSSDBV9,1,15) I PSSDBV1="2 AND ONE HALF " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,16,$L(PSSDBV9)) Q $S($$8:2.5,1:0)
"RTN","PSSDSAPL",110,0)
 S PSSDBV1=$E(PSSDBV9,1,15) I PSSDBV1="2 AND ONE-HALF " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,16,$L(PSSDBV9)) Q $S($$8:2.5,1:0)
"RTN","PSSDSAPL",111,0)
 S PSSDBV1=$E(PSSDBV9,1,12) I PSSDBV1="TWO AND 1/2 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,13,$L(PSSDBV9)) Q $S($$8:2.5,1:0)
"RTN","PSSDSAPL",112,0)
 ;
"RTN","PSSDSAPL",113,0)
 S PSSDBV1=$E(PSSDBV9,1,4) I PSSDBV1="2-3 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,5,$L(PSSDBV9)) Q $S($$8:3,1:0)
"RTN","PSSDSAPL",114,0)
 S PSSDBV1=$E(PSSDBV9,1,6) I PSSDBV1="2 - 3 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,7,$L(PSSDBV9)) Q $S($$8:3,1:0)
"RTN","PSSDSAPL",115,0)
 S PSSDBV1=$E(PSSDBV9,1,7) I PSSDBV1="2 TO 3 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,8,$L(PSSDBV9)) Q $S($$8:3,1:0)
"RTN","PSSDSAPL",116,0)
 S PSSDBV1=$E(PSSDBV9,1,7) I PSSDBV1="2 OR 3 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,8,$L(PSSDBV9)) Q $S($$8:3,1:0)
"RTN","PSSDSAPL",117,0)
 S PSSDBV1=$E(PSSDBV9,1,13) I PSSDBV1="TWO TO THREE " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,14,$L(PSSDBV9)) Q $S($$8:3,1:0)
"RTN","PSSDSAPL",118,0)
 S PSSDBV1=$E(PSSDBV9,1,13) I PSSDBV1="TWO OR THREE " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,14,$L(PSSDBV9)) Q $S($$8:3,1:0)
"RTN","PSSDSAPL",119,0)
 S PSSDBV1=$E(PSSDBV9,1,10) I PSSDBV1="TWO-THREE " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,11,$L(PSSDBV9)) Q $S($$8:3,1:0)
"RTN","PSSDSAPL",120,0)
 S PSSDBV1=$E(PSSDBV9,1,12) I PSSDBV1="TWO - THREE " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,13,$L(PSSDBV9)) Q $S($$8:3,1:0)
"RTN","PSSDSAPL",121,0)
 ;
"RTN","PSSDSAPL",122,0)
 S PSSDBV1=$E(PSSDBV9,1,2) I PSSDBV1="3 ",$$7 S PSSDBV2=$E(PSSDBV9,3,$L(PSSDBV9)) I $$8 Q 3
"RTN","PSSDSAPL",123,0)
 S PSSDBV1=$E(PSSDBV9,1,6) I PSSDBV1="THREE ",$$7 S PSSDBV2=$E(PSSDBV9,7,$L(PSSDBV9)) I $$8 Q 3
"RTN","PSSDSAPL",124,0)
 ;
"RTN","PSSDSAPL",125,0)
 S PSSDBV1=$E(PSSDBV9,1,10) I PSSDBV1="3 AND 1/4 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,11,$L(PSSDBV9)) Q $S($$8:3.25,1:0)
"RTN","PSSDSAPL",126,0)
 S PSSDBV1=$E(PSSDBV9,1,21) I PSSDBV1="THREE AND ONE FOURTH " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,22,$L(PSSDBV9)) Q $S($$8:3.25,1:0)
"RTN","PSSDSAPL",127,0)
 S PSSDBV1=$E(PSSDBV9,1,21) I PSSDBV1="THREE AND ONE-FOURTH " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,22,$L(PSSDBV9)) Q $S($$8:3.25,1:0)
"RTN","PSSDSAPL",128,0)
 S PSSDBV1=$E(PSSDBV9,1,17) I PSSDBV1="3 AND ONE FOURTH " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,18,$L(PSSDBV9)) Q $S($$8:3.25,1:0)
"RTN","PSSDSAPL",129,0)
 S PSSDBV1=$E(PSSDBV9,1,17) I PSSDBV1="3 AND ONE-FOURTH " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,18,$L(PSSDBV9)) Q $S($$8:3.25,1:0)
"RTN","PSSDSAPL",130,0)
 S PSSDBV1=$E(PSSDBV9,1,14) I PSSDBV1="THREE AND 1/4 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,15,$L(PSSDBV9)) Q $S($$8:3.25,1:0)
"RTN","PSSDSAPL",131,0)
 ;
"RTN","PSSDSAPL",132,0)
 S PSSDBV1=$E(PSSDBV9,1,10) I PSSDBV1="3 AND 1/3 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,11,$L(PSSDBV9)) Q $S($$8:3.33,1:0)
"RTN","PSSDSAPL",133,0)
 S PSSDBV1=$E(PSSDBV9,1,20) I PSSDBV1="THREE AND ONE THIRD " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,21,$L(PSSDBV9)) Q $S($$8:3.33,1:0)
"RTN","PSSDSAPL",134,0)
 S PSSDBV1=$E(PSSDBV9,1,20) I PSSDBV1="THREE AND ONE-THIRD " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,21,$L(PSSDBV9)) Q $S($$8:3.33,1:0)
"RTN","PSSDSAPL",135,0)
 S PSSDBV1=$E(PSSDBV9,1,16) I PSSDBV1="3 AND ONE THIRD " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,17,$L(PSSDBV9)) Q $S($$8:3.33,1:0)
"RTN","PSSDSAPL",136,0)
 S PSSDBV1=$E(PSSDBV9,1,16) I PSSDBV1="3 AND ONE-THIRD " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,17,$L(PSSDBV9)) Q $S($$8:3.33,1:0)
"RTN","PSSDSAPL",137,0)
 S PSSDBV1=$E(PSSDBV9,1,14) I PSSDBV1="THREE AND 1/3 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,15,$L(PSSDBV9)) Q $S($$8:3.33,1:0)
"RTN","PSSDSAPL",138,0)
 ;
"RTN","PSSDSAPL",139,0)
 S PSSDBV1=$E(PSSDBV9,1,10) I PSSDBV1="3 AND 1/2 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,11,$L(PSSDBV9)) Q $S($$8:3.5,1:0)
"RTN","PSSDSAPL",140,0)
 S PSSDBV1=$E(PSSDBV9,1,19) I PSSDBV1="THREE AND ONE HALF " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,20,$L(PSSDBV9)) Q $S($$8:3.5,1:0)
"RTN","PSSDSAPL",141,0)
 S PSSDBV1=$E(PSSDBV9,1,19) I PSSDBV1="THREE AND ONE-HALF " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,20,$L(PSSDBV9)) Q $S($$8:3.5,1:0)
"RTN","PSSDSAPL",142,0)
 S PSSDBV1=$E(PSSDBV9,1,15) I PSSDBV1="3 AND ONE HALF " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,16,$L(PSSDBV9)) Q $S($$8:3.5,1:0)
"RTN","PSSDSAPL",143,0)
 S PSSDBV1=$E(PSSDBV9,1,15) I PSSDBV1="3 AND ONE-HALF " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,16,$L(PSSDBV9)) Q $S($$8:3.5,1:0)
"RTN","PSSDSAPL",144,0)
 S PSSDBV1=$E(PSSDBV9,1,14) I PSSDBV1="THREE AND 1/2 " Q:'$$7 0  S PSSDBV2=$E(PSSDBV9,15,$L(PSSDBV9)) Q $S($$8:3.5,1:0)
"RTN","PSSDSAPL",145,0)
 ;
"RTN","PSSDSAPL",146,0)
 ;
"RTN","PSSDSAPL",147,0)
 S PSSDBV7=$$NUMC^PSSDSBPB Q:PSSDBV7'="" PSSDBV7
"RTN","PSSDSAPL",148,0)
 S PSSDBV7=$$NUMC^PSSDSBPC Q:PSSDBV7'="" PSSDBV7
"RTN","PSSDSAPL",149,0)
 S PSSDBV7=$$NUMC^PSSDSBPD Q PSSDBV7
"RTN","PSSDSAPL",150,0)
 ;
"RTN","PSSDSAPL",151,0)
 ;
"RTN","PSSDSAPL",152,0)
8() ;Look for Unit - PSSDBIFL set in PSSSAPD, indicates if Order has a Dispense Drug, or just an Orderable Item
"RTN","PSSDSAPL",153,0)
 S PSSDBV3="" D
"RTN","PSSDSAPL",154,0)
 .I PSSDBIFL S PSSDBV3=$$UNITD^PSSDSAPI(PSSDBV2) Q
"RTN","PSSDSAPL",155,0)
 .S PSSDBV3=$$UNIT^PSSDSAPI(PSSDBV2)
"RTN","PSSDSAPL",156,0)
 Q $S(PSSDBV3="":0,1:1)
"RTN","PSSDSAPL",157,0)
 ;
"RTN","PSSDSAPL",158,0)
 ;
"RTN","PSSDSAPL",159,0)
7() ;Validate text follow the numeric part of the text
"RTN","PSSDSAPL",160,0)
 I $L(PSSDBV9)'>$L(PSSDBV1) Q 0
"RTN","PSSDSAPL",161,0)
 Q 1
"RTN","PSSDSAPL",162,0)
 ;
"RTN","PSSDSAPL",163,0)
TEST ;used for testing numeric dose multiplier from Local Possible Dosage
"RTN","PSSDSAPL",164,0)
 N X,Y,PSSDBV1,PSSDBV2,PSSDBV3,PSSDBV7,PSSDBV8,DIR,DIRUT,DTOUT,PSSDBIFL
"RTN","PSSDSAPL",165,0)
 S (PSSDSLCL,PSSDBV3,PSSDBIFL)=""
"RTN","PSSDSAPL",166,0)
TEST1 ;
"RTN","PSSDSAPL",167,0)
 K DIR S DIR("A")="Possible Dosage",DIR(0)="FO^1:40"     ;,DIR("?")="Enter a possible dosage for testing numeric dose multiplier."
"RTN","PSSDSAPL",168,0)
 D ^DIR G TESTE:$G(DIRUT)!($G(DTOUT))!(X="")
"RTN","PSSDSAPL",169,0)
 K DIR S (PSSDBV9,PSSDSLCL)=Y W !!,$$NUMF^PSSDSAPL,!!
"RTN","PSSDSAPL",170,0)
 G TEST1
"RTN","PSSDSAPL",171,0)
TESTE ;
"RTN","PSSDSAPL",172,0)
 Q
"RTN","PSSDSAPM")
0^32^B233971912^B245057882
"RTN","PSSDSAPM",1,0)
PSSDSAPM ;BIR/RTR-Dose Check utilities routine ;09/13/10
"RTN","PSSDSAPM",2,0)
 ;;1.0;PHARMACY DATA MANAGEMENT;**117,168,160,173,201**;9/30/97;Build 23
"RTN","PSSDSAPM",3,0)
 ;
"RTN","PSSDSAPM",4,0)
 ; Reference to ^PSNAPIS is supported by DBIA #2574
"RTN","PSSDSAPM",5,0)
 ; Reference to ^VADPT is supported by DBIA #3744
"RTN","PSSDSAPM",6,0)
 ; Reference ^XTID is supported by DBIA #4631
"RTN","PSSDSAPM",7,0)
 ;
"RTN","PSSDSAPM",8,0)
 ;DRG - returns best Dispense Drug to use for Order Checks when only the Orderable Item is available
"RTN","PSSDSAPM",9,0)
 ;Input:
"RTN","PSSDSAPM",10,0)
 ;   PSSNBOI - Pharmacy orderable Item from #50.7
"RTN","PSSDSAPM",11,0)
 ;   PSSNBPK - package Use,  I for Inpatient, O for Outpatient, X for Non-VA Meds
"RTN","PSSDSAPM",12,0)
 ;   PSSNBOR - defined only if being called from CPRS, 1 for Enhanced Order Checks, 2 for Dosing
"RTN","PSSDSAPM",13,0)
 ;Output:
"RTN","PSSDSAPM",14,0)
 ;   nnn;nnn;nnnn - First piece is File 50 Internal Number, Second piece is VA Generic Internal number, Third piece
"RTN","PSSDSAPM",15,0)
 ;   will be the GCNSEQNO number. Piece 1 ';' is 0 if no drug found.                              
"RTN","PSSDSAPM",16,0)
 ;   Piece 2 will be null if drug not matched to National Drug File
"RTN","PSSDSAPM",17,0)
 ;   Piece 3 will be the GCNSEQNO number, if the NDF match has a GCNSEQNO number
"RTN","PSSDSAPM",18,0)
 ;   Piece 4 is returned as 1 if the call is from CPRS for enhanced order checks, and it indicates no drug was returned
"RTN","PSSDSAPM",19,0)
 ;   or a drug was returned, but there is an active supply tied to the Orderable Item, indicating CPRS should also do
"RTN","PSSDSAPM",20,0)
 ;   the duplicate supply check
"RTN","PSSDSAPM",21,0)
 ;   Piece 5 is returned as 1 if CPRS is getting a drug for the Enhanced Order Checks call, and they should
"RTN","PSSDSAPM",22,0)
 ;   display the error message for all order checks and not do the Dosing call
"RTN","PSSDSAPM",23,0)
 ;
"RTN","PSSDSAPM",24,0)
 ;
"RTN","PSSDSAPM",25,0)
 ;hierarchy: (Drug must be active)
"RTN","PSSDSAPM",26,0)
 ;1 - Exact Package Match, matched to NDF with GCNSEQNO
"RTN","PSSDSAPM",27,0)
 ;2 - No package match, but second choice package exists, matched to NDF with GCNSEQNO
"RTN","PSSDSAPM",28,0)
 ;3 - No package match, but third choice package exists, matched to NDF with GCNSEQNO
"RTN","PSSDSAPM",29,0)
 ;4 - No package match, but fourth choice package exists, matched to NDF with GCNSEQNO
"RTN","PSSDSAPM",30,0)
 ;5 - No package match, matched to NDF with GCNSEQNO
"RTN","PSSDSAPM",31,0)
 ;6 - Exact Package Match, matched to NDF with no GCNSEQNO
"RTN","PSSDSAPM",32,0)
 ;7 - No package match, but second choice package exists, matched to NDF with no GCNSEQNO
"RTN","PSSDSAPM",33,0)
 ;8 - No package match, but third choice package exists, matched to NDF with no GCNSEQNO
"RTN","PSSDSAPM",34,0)
 ;9 - No package match, but fourth choice package exists, matched to NDF with no GCNSEQNO
"RTN","PSSDSAPM",35,0)
 ;10 - No package match, matched to NDF with no GCNSEQNO
"RTN","PSSDSAPM",36,0)
 ;11 - Exact Package Match, not matched to NDF
"RTN","PSSDSAPM",37,0)
 ;12 - No package match, but second choice package exists, not matched to NDF
"RTN","PSSDSAPM",38,0)
 ;13 - No package match, but third choice package exists, not matched to NDF
"RTN","PSSDSAPM",39,0)
 ;14 - No package match, but fourth choice package exists, not matched to NDF
"RTN","PSSDSAPM",40,0)
 ;15 - No package match, package is null or some other package that is not one of the 4 primary packages (O, I U, X), matched to NDF
"RTN","PSSDSAPM",41,0)
 ;16 - No package match, not matched to NDF, package is null or some other package that is not one of the 4 primary packages (O, I U, X)
"RTN","PSSDSAPM",42,0)
 ;
"RTN","PSSDSAPM",43,0)
 ;** CPRS and Inpatient always passes in "I" for PSSNBPK variable, so drugs with "I" and "U" application packages are 
"RTN","PSSDSAPM",44,0)
 ;         evaluated as either or in the APP subroutine.  In the hierarchy above 1 or 2,  6 or 7 and 11 or 12 are 
"RTN","PSSDSAPM",45,0)
 ;         considered to be exact matches.  Outpatient evaluates "I" and "U" separately.  
"RTN","PSSDSAPM",46,0)
 ;
"RTN","PSSDSAPM",47,0)
 ;Second/Third Choice packages:
"RTN","PSSDSAPM",48,0)
 ;Outpatient - U for Unit dose, I for IV, then X for Non-VA med
"RTN","PSSDSAPM",49,0)
 ;Inpatient - O for outpatient then X
"RTN","PSSDSAPM",50,0)
 ;Non-VA Meds - O, U then I
"RTN","PSSDSAPM",51,0)
 ;
"RTN","PSSDSAPM",52,0)
 ;PSNBLOW holds current number in array, only reset array entry if lower number is found
"RTN","PSSDSAPM",53,0)
 ;PSSNBSTP stops the loop because you found the best possible drug, no need to set PSSNBLOW in this case
"RTN","PSSDSAPM",54,0)
 ;
"RTN","PSSDSAPM",55,0)
 ;
"RTN","PSSDSAPM",56,0)
DRG(PSSNBOI,PSSNBPK,PSSNBOR) ;
"RTN","PSSDSAPM",57,0)
 I '$G(PSSNBOI) Q "0;;"_$S($G(PSSNBOR)=1&($G(PSSNBPK)="I"!($G(PSSNBPK)="U")):";1;1",$G(PSSNBOR)=1:";1",1:"")
"RTN","PSSDSAPM",58,0)
 I $G(PSSNBPK)'="O",$G(PSSNBPK)'="I",$G(PSSNBPK)'="U",$G(PSSNBPK)'="X" Q "0;;"_$S($G(PSSNBOR)=1:";1;1",1:"")
"RTN","PSSDSAPM",59,0)
 N PSSNB1,PSSNBRS,PSSNBSTP,PSSNBIN,PSSNBAPP,PSSNBLOW,PSSNBARR,PSSNBAP1,PSSNBARX,PSSNONE,PSSNS1,PSSNS2,PSSNS3,PSSNS4,PSSNBOF,PSSNBOD,PSSNBOL,PSSNBOA,PSSNBO3
"RTN","PSSDSAPM",60,0)
 S PSSNBSTP=0,PSSNBLOW=16
"RTN","PSSDSAPM",61,0)
 S PSSNBRS="0;;"
"RTN","PSSDSAPM",62,0)
 ;package preference sequence defined
"RTN","PSSDSAPM",63,0)
 I PSSNBPK["O" S PSSNS1="O",PSSNS2="U",PSSNS3="I",PSSNS4="X"
"RTN","PSSDSAPM",64,0)
 I PSSNBPK["I" S PSSNS1="I",PSSNS2="U",PSSNS3="O",PSSNS4="X"
"RTN","PSSDSAPM",65,0)
 I PSSNBPK["U" S PSSNS1="U",PSSNS2="I",PSSNS3="O",PSSNS4="X"
"RTN","PSSDSAPM",66,0)
 I PSSNBPK["X" S PSSNS1="X",PSSNS2="O",PSSNS3="U",PSSNS4="I"
"RTN","PSSDSAPM",67,0)
 F PSSNB1=0:0 S PSSNB1=$O(^PSDRUG("ASP",PSSNBOI,PSSNB1)) Q:'PSSNB1!(PSSNBSTP)  D:'$$DREX
"RTN","PSSDSAPM",68,0)
 .S PSSNBIN=$P($G(^PSDRUG(PSSNB1,"I")),"^") I PSSNBIN,PSSNBIN'>DT Q
"RTN","PSSDSAPM",69,0)
 .S PSSNBAPP=$P($G(^PSDRUG(PSSNB1,2)),"^",3)
"RTN","PSSDSAPM",70,0)
 .S PSSNBAP1=$$GCN
"RTN","PSSDSAPM",71,0)
 .D APP
"RTN","PSSDSAPM",72,0)
 S PSSNBARX=$O(PSSNBARR(0))
"RTN","PSSDSAPM",73,0)
 I PSSNBARX S PSSNBRS=$G(PSSNBARR(PSSNBARX))
"RTN","PSSDSAPM",74,0)
 I $G(PSSNBOR)=1 D
"RTN","PSSDSAPM",75,0)
 .I '$P(PSSNBRS,";") S $P(PSSNBRS,";",4)=1 Q
"RTN","PSSDSAPM",76,0)
 .S PSSNBOF=0 F PSSNBOL=0:0 S PSSNBOL=$O(^PSDRUG("ASP",PSSNBOI,PSSNBOL)) Q:'PSSNBOL!(PSSNBOF)  D
"RTN","PSSDSAPM",77,0)
 ..I '$$SUP^PSSDSAPI(PSSNBOL) Q
"RTN","PSSDSAPM",78,0)
 ..S PSSNBO3=$P($G(^PSDRUG(PSSNBOL,2)),"^",3),PSSNBOA=$S(PSSNBPK["I"!(PSSNBPK["U"):1,1:0)
"RTN","PSSDSAPM",79,0)
 ..I PSSNBOA,PSSNBO3'["I",PSSNBO3'["O" Q
"RTN","PSSDSAPM",80,0)
 ..I 'PSSNBOA,PSSNBO3'["O",PSSNBO3'["X" Q
"RTN","PSSDSAPM",81,0)
 ..S PSSNBOD=$P($G(^PSDRUG(PSSNBOL,"I")),"^") I PSSNBOD,PSSNBOD'>DT Q
"RTN","PSSDSAPM",82,0)
 ..S $P(PSSNBRS,";",4)=1,PSSNBOF=1 Q
"RTN","PSSDSAPM",83,0)
 I $G(PSSNBOR)=1,'$P(PSSNBRS,";") I $$EMSY^PSSDSAPI S $P(PSSNBRS,";",5)=$$EMS I '$P(PSSNBRS,";",5) S $P(PSSNBRS,";",5)=$$EMSX
"RTN","PSSDSAPM",84,0)
 Q PSSNBRS
"RTN","PSSDSAPM",85,0)
 ;
"RTN","PSSDSAPM",86,0)
DREX() ;Quit if drug is exempt from order check
"RTN","PSSDSAPM",87,0)
 I $G(PSSINCFO)!($G(PSSNBOR)=2) Q $$EXMT^PSSDSAPI(PSSNB1)
"RTN","PSSDSAPM",88,0)
 Q $$SUP^PSSDSAPI(PSSNB1)
"RTN","PSSDSAPM",89,0)
 ;
"RTN","PSSDSAPM",90,0)
EMS() ;Sets piece 5 of output to 1 if CPRS needs to show error message and not do Dose check
"RTN","PSSDSAPM",91,0)
 I PSSNBPK'="U",PSSNBPK'="I" Q 0
"RTN","PSSDSAPM",92,0)
 I $$PRE^PSSDSAPK(PSSNBOI,"U")=1 Q 1
"RTN","PSSDSAPM",93,0)
 Q 0
"RTN","PSSDSAPM",94,0)
 ;
"RTN","PSSDSAPM",95,0)
EMSX() ;Sets piece 5 of output to 1 if no active drugs are tied to the orderable Item
"RTN","PSSDSAPM",96,0)
 N PSSKRC1,PSSKRC2,PSSKRC3,PSSKRC4,PSSKRC9
"RTN","PSSDSAPM",97,0)
 S (PSSKRC3,PSSKRC9,PSSKRC4)=0
"RTN","PSSDSAPM",98,0)
 F PSSKRC1=0:0 S PSSKRC1=$O(^PSDRUG("ASP",PSSNBOI,PSSKRC1)) Q:'PSSKRC1!(PSSKRC9)  D
"RTN","PSSDSAPM",99,0)
 .S PSSKRC2=$P($G(^PSDRUG(PSSKRC1,"I")),"^") I PSSKRC2,PSSKRC2'>DT D:'PSSKRC4  Q
"RTN","PSSDSAPM",100,0)
 ..I '$$SUP^PSSDSAPI(PSSKRC1) S PSSKRC4=1
"RTN","PSSDSAPM",101,0)
 .S PSSKRC3=1
"RTN","PSSDSAPM",102,0)
 .I '$$SUP^PSSDSAPI(PSSKRC1) S PSSKRC9=1
"RTN","PSSDSAPM",103,0)
 I 'PSSKRC3,PSSKRC4 S PSSKRC9=1
"RTN","PSSDSAPM",104,0)
 Q PSSKRC9
"RTN","PSSDSAPM",105,0)
 ;
"RTN","PSSDSAPM",106,0)
APP ;
"RTN","PSSDSAPM",107,0)
 I PSSNBAPP[PSSNS1,$P(PSSNBAP1,";",3) S PSSNBARR(1)=PSSNBAP1,PSSNBSTP=1 Q
"RTN","PSSDSAPM",108,0)
 Q:PSSNBLOW<2
"RTN","PSSDSAPM",109,0)
 I PSSNBAPP[PSSNS2,$P(PSSNBAP1,";",3) S PSSNBARR(2)=PSSNBAP1,PSSNBLOW=2 Q
"RTN","PSSDSAPM",110,0)
 I PSSNBAPP[PSSNS1!(PSSNBAPP[PSSNS2),$P(PSSNBAP1,";",3) S PSSNBARR(1)=PSSNBAP1,PSSNBSTP=1 Q
"RTN","PSSDSAPM",111,0)
 Q:PSSNBLOW<3
"RTN","PSSDSAPM",112,0)
 I PSSNBAPP[PSSNS3,$P(PSSNBAP1,";",3) S PSSNBARR(3)=PSSNBAP1,PSSNBLOW=3 Q
"RTN","PSSDSAPM",113,0)
 Q:PSSNBLOW<4
"RTN","PSSDSAPM",114,0)
 I PSSNBAPP[PSSNS4,$P(PSSNBAP1,";",3) S PSSNBARR(4)=PSSNBAP1,PSSNBLOW=4 Q
"RTN","PSSDSAPM",115,0)
 Q:PSSNBLOW<5
"RTN","PSSDSAPM",116,0)
 I $P(PSSNBAP1,";",3) S PSSNBARR(5)=PSSNBAP1,PSSNBLOW=5 Q
"RTN","PSSDSAPM",117,0)
 Q:PSSNBLOW<6
"RTN","PSSDSAPM",118,0)
 I PSSNBAPP[PSSNS1,PSSNBAP1 S PSSNBARR(6)=PSSNBAP1,PSSNBLOW=6 Q
"RTN","PSSDSAPM",119,0)
 Q:PSSNBLOW<7
"RTN","PSSDSAPM",120,0)
 I PSSNBAPP[PSSNS2,PSSNBAP1 S PSSNBARR(7)=PSSNBAP1,PSSNBLOW=7 Q
"RTN","PSSDSAPM",121,0)
 I PSSNBAPP[PSSNS1!(PSSNBAPP[PSSNS2),PSSNBAP1 S PSSNBARR(6)=PSSNBAP1,PSSNBLOW=6,PSSNBSTP=1 Q
"RTN","PSSDSAPM",122,0)
 Q:PSSNBLOW<8
"RTN","PSSDSAPM",123,0)
 I PSSNBAPP[PSSNS3,PSSNBAP1 S PSSNBARR(8)=PSSNBAP1,PSSNBLOW=8 Q
"RTN","PSSDSAPM",124,0)
 Q:PSSNBLOW<9
"RTN","PSSDSAPM",125,0)
 I PSSNBAPP[PSSNS4,PSSNBAP1 S PSSNBARR(9)=PSSNBAP1,PSSNBLOW=9 Q
"RTN","PSSDSAPM",126,0)
 Q:PSSNBLOW<10
"RTN","PSSDSAPM",127,0)
 I $P(PSSNBAP1,";",2) S PSSNBARR(10)=PSSNBAP1,PSSNBLOW=10 Q
"RTN","PSSDSAPM",128,0)
 Q:PSSNBLOW<11
"RTN","PSSDSAPM",129,0)
 I PSSNBAPP[PSSNS1 S PSSNBARR(11)=PSSNB1_";;",PSSNBLOW=11 Q
"RTN","PSSDSAPM",130,0)
 Q:PSSNBLOW<12
"RTN","PSSDSAPM",131,0)
 I PSSNBAPP[PSSNS2 S PSSNBARR(12)=PSSNB1_";;",PSSNBLOW=12 Q
"RTN","PSSDSAPM",132,0)
 I PSSNBAPP[PSSNS1!(PSSNBAPP[PSSNS2) S PSSNBARR(11)=PSSNB1_";;",PSSNBLOW=11,PSSNBSTP=1 Q
"RTN","PSSDSAPM",133,0)
 Q:PSSNBLOW<13
"RTN","PSSDSAPM",134,0)
 I PSSNBAPP[PSSNS3 S PSSNBARR(13)=PSSNB1_";;",PSSNBLOW=13 Q
"RTN","PSSDSAPM",135,0)
 Q:PSSNBLOW<14
"RTN","PSSDSAPM",136,0)
 I PSSNBAPP[PSSNS4 S PSSNBARR(14)=PSSNB1_";;",PSSNBLOW=14 Q
"RTN","PSSDSAPM",137,0)
 Q:PSSNBLOW<15
"RTN","PSSDSAPM",138,0)
 I PSSNBAP1 S PSSNBARR(15)=PSSNBAP1,PSSNBLOW=15 Q
"RTN","PSSDSAPM",139,0)
 Q:PSSNBLOW<16
"RTN","PSSDSAPM",140,0)
 S PSSNBARR(16)=PSSNB1_";;",PSSNBLOW=16
"RTN","PSSDSAPM",141,0)
 Q
"RTN","PSSDSAPM",142,0)
 ;
"RTN","PSSDSAPM",143,0)
GCN() ;Returns drug matching information
"RTN","PSSDSAPM",144,0)
 N PSSNBGC1,PSSNBGC3,PSSNBGRS
"RTN","PSSDSAPM",145,0)
 S PSSNBGC1=$P($G(^PSDRUG(PSSNB1,"ND")),"^"),PSSNBGC3=$P($G(^PSDRUG(PSSNB1,"ND")),"^",3)
"RTN","PSSDSAPM",146,0)
 I 'PSSNBGC1!('PSSNBGC3) Q 0
"RTN","PSSDSAPM",147,0)
 S PSSNBGRS=$$PROD0^PSNAPIS(PSSNBGC1,PSSNBGC3)
"RTN","PSSDSAPM",148,0)
 I $P(PSSNBGRS,"^",7) Q PSSNB1_";"_PSSNBGC1_";"_$P(PSSNBGRS,"^",7)
"RTN","PSSDSAPM",149,0)
 Q PSSNB1_";"_PSSNBGC1
"RTN","PSSDSAPM",150,0)
 ;
"RTN","PSSDSAPM",151,0)
 ;
"RTN","PSSDSAPM",152,0)
MLT ;Multi Ingredient check called from PSSDSAPD
"RTN","PSSDSAPM",153,0)
 D ITEM^PSSDSAPK D:'PSSDBFAL NUM^PSSDSAPL D:'PSSDBFAL RANGE^PSSDSUTL
"RTN","PSSDSAPM",154,0)
 I 'PSSDBFAL,PSSDSLCT S PSSDSLCL=PSSDSLC1(PSSDSLCT),PSSDSLCT=PSSDSLCT-1 G MLT
"RTN","PSSDSAPM",155,0)
 I '$G(PSSDBIFG) Q
"RTN","PSSDSAPM",156,0)
 N PSSMLT1,PSSMLT2,PSSMLT3,DA
"RTN","PSSDSAPM",157,0)
 S PSSMLT1=$P($G(^PSDRUG(PSSDBIFG,"ND")),"^"),PSSMLT3=$P($G(^PSDRUG(PSSDBIFG,"ND")),"^",3)
"RTN","PSSDSAPM",158,0)
 I 'PSSMLT1!('PSSMLT3) D MLTS Q
"RTN","PSSDSAPM",159,0)
 I $G(PSSDBAR("UNIT"))'="",$G(PSSDBAR("AMN"))'="",'$$MLTOK^PSSDSUTL(PSSMLT1,PSSMLT3) Q
"RTN","PSSDSAPM",160,0)
 S PSSMLT2=$$TLS^PSSDSAPA(PSSMLT1,PSSMLT3) I PSSMLT2 D MLTS Q
"RTN","PSSDSAPM",161,0)
 I $$MLTSU D MLTS Q
"RTN","PSSDSAPM",162,0)
 Q
"RTN","PSSDSAPM",163,0)
 ;
"RTN","PSSDSAPM",164,0)
 ;
"RTN","PSSDSAPM",165,0)
MLTS ;
"RTN","PSSDSAPM",166,0)
 K PSSDBAR("AMN"),PSSDBAR("UNIT")
"RTN","PSSDSAPM",167,0)
 S PSSDBCAZ(PSSDBFDB(PSSDBLP,"RX_NUM"),"MUING")=""
"RTN","PSSDSAPM",168,0)
 Q
"RTN","PSSDSAPM",169,0)
 ;
"RTN","PSSDSAPM",170,0)
 ;
"RTN","PSSDSAPM",171,0)
MLTSU() ;
"RTN","PSSDSAPM",172,0)
 N X,Y,PSSMKT2,PSSMKT5,PSSMKT6,PSSMKT7
"RTN","PSSDSAPM",173,0)
 S PSSMKT2=$$DFSU^PSNAPIS(PSSMLT1,PSSMLT3)
"RTN","PSSDSAPM",174,0)
 S PSSMKT5=$P(PSSMKT2,"^",6) I PSSMKT5="" Q 1
"RTN","PSSDSAPM",175,0)
 S PSSMKT6=$$UNITD^PSSDSAPI(PSSMKT5) I PSSMKT6="" Q 1
"RTN","PSSDSAPM",176,0)
 Q 0
"RTN","PSSDSAPM",177,0)
 ;
"RTN","PSSDSAPM",178,0)
 ;
"RTN","PSSDSAPM",179,0)
MLTNO ;
"RTN","PSSDSAPM",180,0)
 I $D(PSSDBCAZ(PSSDBKLP,"MUING")) S $P(PSSDBCAR(PSSDBKLP),"^",7)=1
"RTN","PSSDSAPM",181,0)
 Q
"RTN","PSSDSAPM",182,0)
 ;
"RTN","PSSDSAPM",183,0)
 ;
"RTN","PSSDSAPM",184,0)
MLTNP ;
"RTN","PSSDSAPM",185,0)
 I $D(PSSDBCAZ(PSSDBRLS,"MUING")) S $P(PSSDBCAR(PSSDBRLS),"^",7)=1
"RTN","PSSDSAPM",186,0)
 Q
"RTN","PSSDSAPM",187,0)
 ;
"RTN","PSSDSAPM",188,0)
 ;
"RTN","PSSDSAPM",189,0)
FDRUG ; Find drug, called from PSSDSAPD
"RTN","PSSDSAPM",190,0)
 N PSSINCFO S PSSINCFO=1
"RTN","PSSDSAPM",191,0)
 S PSSDBIFL=1,PSSDBIFG=$$DRG^PSSDSAPK(PSSDBFDB("OI"),$G(PSSDBFDB("PACKAGE")),$G(PSSDBDS(PSSDBLP,"MR_IEN")),$G(PSSDBFDB("OI_USAGE")))
"RTN","PSSDSAPM",192,0)
 I 'PSSDBIFG S PSSDBIFG=$$DRG(PSSDBFDB("OI"),$G(PSSDBFDB("PACKAGE"))) S PSSDBCAZ(PSSDBFDB(PSSDBLP,"RX_NUM"),"NO_DRUG")="" S PSSDBIFG=$P(PSSDBIFG,";")
"RTN","PSSDSAPM",193,0)
 Q
"RTN","PSSDSAPM",194,0)
 ;
"RTN","PSSDSAPM",195,0)
 ;
"RTN","PSSDSAPM",196,0)
INERR ;Set OI error
"RTN","PSSDSAPM",197,0)
 N PSSNOOIX
"RTN","PSSDSAPM",198,0)
 S PSSNOOIX=$G(PSSDBFDB(PSSDBLP,"OI_ERROR",PSSDBFDB(PSSDBLP,"DRUG_NM")))
"RTN","PSSDSAPM",199,0)
 I PSSNOOIX'="" S ^TMP($J,PSSDBASE,"IN","EXCEPTIONS","OI",PSSDBFDB(PSSDBLP,"DRUG_NM"))=$P(PSSNOOIX,"^")_"^"_$P(PSSNOOIX,"^",2),PSSENO=1 D STDB
"RTN","PSSDSAPM",200,0)
 Q
"RTN","PSSDSAPM",201,0)
 ;
"RTN","PSSDSAPM",202,0)
 ;
"RTN","PSSDSAPM",203,0)
FRQE ;Set Frequency error called from PSSDSAPD
"RTN","PSSDSAPM",204,0)
 D INFERR^PSSDSAPK,FRDR^PSSDSAPK I $D(PSSDBFDB(PSSDBLP,"FRQ_ERROR")) S PSSDBCAZ(PSSDBFDB(PSSDBLP,"RX_NUM"),"FRQ_ERROR")=""
"RTN","PSSDSAPM",205,0)
 Q
"RTN","PSSDSAPM",206,0)
 ;
"RTN","PSSDSAPM",207,0)
 ;
"RTN","PSSDSAPM",208,0)
INFUE ;Set Infusion rate error from PSSDSAPD
"RTN","PSSDSAPM",209,0)
 I $D(PSSDBFDB(PSSDBLP,"INF_ERROR")) S PSSDBCAZ(PSSDBFDB(PSSDBLP,"RX_NUM"),"INF_ERROR")=""
"RTN","PSSDSAPM",210,0)
 Q
"RTN","PSSDSAPM",211,0)
 ;
"RTN","PSSDSAPM",212,0)
 ;
"RTN","PSSDSAPM",213,0)
ERST ;Set Dosing Sequences into error summary list
"RTN","PSSDSAPM",214,0)
 N PSSWSB1,PSSWSB2
"RTN","PSSDSAPM",215,0)
 F PSSDBEQ3=0:0 S PSSDBEQ3=$O(PSSDBEQ2(PSSDBEQ3)) Q:'PSSDBEQ3  S PSSDBCAX(PSSDBRLS,PSSDBEQ3)="" I $O(PSSDBXAX(PSSDBEQ3,""))'="",$E(PSSDBASE,1,3)'="PSJ" D
"RTN","PSSDSAPM",216,0)
 .S PSSWSB1="",PSSWSB2=0 F  S PSSWSB1=$O(PSSDBXAX(PSSDBEQ3,PSSWSB1)) Q:PSSWSB1=""!($G(PSSDBCAX(PSSDBRLS,PSSDBEQ3))["All")  S PSSWSB2=PSSWSB2+1 D
"RTN","PSSDSAPM",217,0)
 ..I PSSDBEQ3=5!(PSSDBEQ3=6)!(PSSDBEQ3=8) S PSSDBCAX(PSSDBRLS,PSSDBEQ3)=" (All" Q
"RTN","PSSDSAPM",218,0)
 ..I PSSWSB2=1 S PSSDBCAX(PSSDBRLS,PSSDBEQ3)=" (DOSE SEQ "_$P(PSSWSB1,";",4) Q
"RTN","PSSDSAPM",219,0)
 ..S PSSDBCAX(PSSDBRLS,PSSDBEQ3)=PSSDBCAX(PSSDBRLS,PSSDBEQ3)_", "_$P(PSSWSB1,";",4)
"RTN","PSSDSAPM",220,0)
 .S PSSDBCAX(PSSDBRLS,PSSDBEQ3)=PSSDBCAX(PSSDBRLS,PSSDBEQ3)_")"
"RTN","PSSDSAPM",221,0)
 Q
"RTN","PSSDSAPM",222,0)
 ;
"RTN","PSSDSAPM",223,0)
 ;
"RTN","PSSDSAPM",224,0)
PAT ;
"RTN","PSSDSAPM",225,0)
 N DFN,VADM,VAPTYP,VAHOW,VAROOT,VAERR,VA,X1,X2,X,%Y,PSSDBWT,PSSDBWTX,PSSDBHT,PSSDBHTX,GMRVSTR,PSSDBBSA,PSSDBATX
"RTN","PSSDSAPM",226,0)
 S DFN=PSSDBDFN,PSSDBATX=0
"RTN","PSSDSAPM",227,0)
 D DEM^VADPT
"RTN","PSSDSAPM",228,0)
 K X S X2=$P(VADM(3),"^"),X1=DT I X1,X2 D ^%DTC S PSSDBATX=X
"RTN","PSSDSAPM",229,0)
 S ^TMP($J,PSSDBASE,"IN","DOSE","AGE")=PSSDBATX
"RTN","PSSDSAPM",230,0)
 S DFN=PSSDBDFN
"RTN","PSSDSAPM",231,0)
 S (PSSDBWTX,PSSDBHTX,PSSDBBSA)=0
"RTN","PSSDSAPM",232,0)
 S GMRVSTR="WT" K X D EN6^GMRVUTL
"RTN","PSSDSAPM",233,0)
 S PSSDBWT=$P(X,"^",8) I PSSDBWT S PSSDBWTX=PSSDBWT/2.2
"RTN","PSSDSAPM",234,0)
 S ^TMP($J,PSSDBASE,"IN","DOSE","WT")=$G(PSSDBWTX)
"RTN","PSSDSAPM",235,0)
 S DFN=PSSDBDFN
"RTN","PSSDSAPM",236,0)
 S GMRVSTR="HT" K X D EN6^GMRVUTL
"RTN","PSSDSAPM",237,0)
 S PSSDBHT=$P(X,"^",8) I PSSDBHT S PSSDBHTX=.0254*PSSDBHT
"RTN","PSSDSAPM",238,0)
 ;Using DuBios formula for BSA calculation, and sending in 2 decimal places
"RTN","PSSDSAPM",239,0)
 I $G(PSSDBWTX),$G(PSSDBHTX) S PSSDBBSA=.20247*(PSSDBHTX**.725)*(PSSDBWTX**.425)
"RTN","PSSDSAPM",240,0)
 ;I $G(PSSDBWTX),$G(PSSDBHTX) S PSSDBBSA=$J((((PSSDBWTX*PSSDBHTX)/3600)**.5),0,2)    Mosteller BSA Formula
"RTN","PSSDSAPM",241,0)
 S ^TMP($J,PSSDBASE,"IN","DOSE","BSA")=$G(PSSDBBSA)
"RTN","PSSDSAPM",242,0)
 Q
"RTN","PSSDSAPM",243,0)
 ;
"RTN","PSSDSAPM",244,0)
 ;
"RTN","PSSDSAPM",245,0)
ADDCT ;Add counter to output globals so data appears in correct order for more than 9 Dosing Sequences
"RTN","PSSDSAPM",246,0)
 ;I PSSDBASA D ADDCTA  ;Remove comment when CPRS is ready to convert to new output, to show messages in Sequence order
"RTN","PSSDSAPM",247,0)
 I PSSDBASB D ADDCTB
"RTN","PSSDSAPM",248,0)
 Q
"RTN","PSSDSAPM",249,0)
 ;
"RTN","PSSDSAPM",250,0)
 ;
"RTN","PSSDSAPM",251,0)
ADDCTA ;Add counter to CPRS global
"RTN","PSSDSAPM",252,0)
 I '$D(^TMP($J,PSSDBASF)) Q 
"RTN","PSSDSAPM",253,0)
 N PSSJW1,PSSJW2,PSSJW3,PSSJW4,PSSJW5,PSSJW6
"RTN","PSSDSAPM",254,0)
 K ^TMP($J,"PSSJWTM1") M ^TMP($J,"PSSJWTM1")=^TMP($J,PSSDBASF) K ^TMP($J,PSSDBASF)
"RTN","PSSDSAPM",255,0)
 ;
"RTN","PSSDSAPM",256,0)
 S PSSJW1="" F  S PSSJW1=$O(^TMP($J,"PSSJWTM1","OUT","DOSE","ERROR",PSSJW1)) Q:PSSJW1=""  D
"RTN","PSSDSAPM",257,0)
 .S PSSJW2="" F  S PSSJW2=$O(^TMP($J,"PSSJWTM1","OUT","DOSE","ERROR",PSSJW1,PSSJW2)) Q:PSSJW2=""  D
"RTN","PSSDSAPM",258,0)
 ..S PSSJW3=$P(PSSJW1,";",4)
"RTN","PSSDSAPM",259,0)
 ..S PSSJW4=$G(^TMP($J,"PSSJWTM1","OUT","DOSE","ERROR",PSSJW1,PSSJW2,"MSG"))
"RTN","PSSDSAPM",260,0)
 ..S PSSJW5=$G(^TMP($J,"PSSJWTM1","OUT","DOSE","ERROR",PSSJW1,PSSJW2,"TEXT"))
"RTN","PSSDSAPM",261,0)
 ..I $D(^TMP($J,"PSSJWTM1","OUT","DOSE","ERROR",PSSJW1,PSSJW2,"MSG")) S ^TMP($J,PSSDBASF,"OUT","DOSE","ERROR",PSSJW3,PSSJW1,PSSJW2,"MSG")=PSSJW4
"RTN","PSSDSAPM",262,0)
 ..I $D(^TMP($J,"PSSJWTM1","OUT","DOSE","ERROR",PSSJW1,PSSJW2,"TEXT")) S ^TMP($J,PSSDBASF,"OUT","DOSE","ERROR",PSSJW3,PSSJW1,PSSJW2,"TEXT")=PSSJW5
"RTN","PSSDSAPM",263,0)
 ;
"RTN","PSSDSAPM",264,0)
 S PSSJW1="" F  S PSSJW1=$O(^TMP($J,"PSSJWTM1","OUT","EXCEPTIONS","DOSE",PSSJW1)) Q:PSSJW1=""  D
"RTN","PSSDSAPM",265,0)
 .S PSSJW2="" F  S PSSJW2=$O(^TMP($J,"PSSJWTM1","OUT","EXCEPTIONS","DOSE",PSSJW1,PSSJW2)) Q:PSSJW2=""  D
"RTN","PSSDSAPM",266,0)
 ..S PSSJW3=$P(PSSJW1,";",4)
"RTN","PSSDSAPM",267,0)
 ..S PSSJW4=$G(^TMP($J,"PSSJWTM1","OUT","EXCEPTIONS","DOSE",PSSJW1,PSSJW2))
"RTN","PSSDSAPM",268,0)
 ..S ^TMP($J,PSSDBASF,"OUT","EXCEPTIONS","DOSE",PSSJW3,PSSJW1,PSSJW2)=PSSJW4
"RTN","PSSDSAPM",269,0)
 ;
"RTN","PSSDSAPM",270,0)
 S PSSJW1="" F  S PSSJW1=$O(^TMP($J,"PSSJWTM1","OUT","DOSE",PSSJW1)) Q:PSSJW1=""  I PSSJW1'="ERROR" D
"RTN","PSSDSAPM",271,0)
 .S PSSJW2="" F  S PSSJW2=$O(^TMP($J,"PSSJWTM1","OUT","DOSE",PSSJW1,PSSJW2)) Q:PSSJW2=""  D
"RTN","PSSDSAPM",272,0)
 ..S PSSJW3="" F  S PSSJW3=$O(^TMP($J,"PSSJWTM1","OUT","DOSE",PSSJW1,PSSJW2,PSSJW3)) Q:PSSJW3=""  D
"RTN","PSSDSAPM",273,0)
 ...S PSSJW4="" F  S PSSJW4=$O(^TMP($J,"PSSJWTM1","OUT","DOSE",PSSJW1,PSSJW2,PSSJW3,"MESSAGE",PSSJW4)) Q:PSSJW4=""  D
"RTN","PSSDSAPM",274,0)
 ....S PSSJW5=$P(PSSJW1,";",4)
"RTN","PSSDSAPM",275,0)
 ....S PSSJW6=$G(^TMP($J,"PSSJWTM1","OUT","DOSE",PSSJW1,PSSJW2,PSSJW3,"MESSAGE",PSSJW4))
"RTN","PSSDSAPM",276,0)
 ....S ^TMP($J,PSSDBASF,"OUT","DOSE",PSSJW5,PSSJW1,PSSJW2,PSSJW3,"MESSAGE",PSSJW4)=PSSJW6
"RTN","PSSDSAPM",277,0)
 ;
"RTN","PSSDSAPM",278,0)
 K ^TMP($J,"PSSJWTM1")
"RTN","PSSDSAPM",279,0)
 Q
"RTN","PSSDSAPM",280,0)
 ;
"RTN","PSSDSAPM",281,0)
 ;
"RTN","PSSDSAPM",282,0)
ADDCTB ;Add counter to Pharmacy global
"RTN","PSSDSAPM",283,0)
 I '$D(^TMP($J,PSSDBASG)) Q 
"RTN","PSSDSAPM",284,0)
 N PSSJW7,PSSJW8,PSSJW9,PSSJWNUM,PSSJWVAL,PSSJW56,PSSJW57
"RTN","PSSDSAPM",285,0)
 K ^TMP($J,"PSSJWTM2") M ^TMP($J,"PSSJWTM2")=^TMP($J,PSSDBASG) K ^TMP($J,PSSDBASG)
"RTN","PSSDSAPM",286,0)
 ;
"RTN","PSSDSAPM",287,0)
 S PSSJW7="" F  S PSSJW7=$O(^TMP($J,"PSSJWTM2","OUT",PSSJW7)) Q:PSSJW7=""  D
"RTN","PSSDSAPM",288,0)
 .S PSSJWNUM=$P(PSSJW7,";",4)
"RTN","PSSDSAPM",289,0)
 .S PSSJW8="" F  S PSSJW8=$O(^TMP($J,"PSSJWTM2","OUT",PSSJW7,"ERROR",PSSJW8)) Q:PSSJW8=""  D
"RTN","PSSDSAPM",290,0)
 ..I $D(^TMP($J,"PSSJWTM2","OUT",PSSJW7,"ERROR",PSSJW8,"MSG")) S ^TMP($J,PSSDBASG,"OUT",PSSJWNUM,PSSJW7,"ERROR",PSSJW8,"MSG")=$G(^TMP($J,"PSSJWTM2","OUT",PSSJW7,"ERROR",PSSJW8,"MSG"))
"RTN","PSSDSAPM",291,0)
 ..I $D(^TMP($J,"PSSJWTM2","OUT",PSSJW7,"ERROR",PSSJW8,"TEXT")) S ^TMP($J,PSSDBASG,"OUT",PSSJWNUM,PSSJW7,"ERROR",PSSJW8,"TEXT")=$G(^TMP($J,"PSSJWTM2","OUT",PSSJW7,"ERROR",PSSJW8,"TEXT"))
"RTN","PSSDSAPM",292,0)
 ..I $G(^TMP($J,"PSSJWTM2","OUT",PSSJW7,"ERROR",PSSJW8,"WARN"))="Warning" S ^TMP($J,PSSDBASG,"OUT",PSSJWNUM,PSSJW7,"ERROR",PSSJW8,"WARN")="Warning"
"RTN","PSSDSAPM",293,0)
 .;
"RTN","PSSDSAPM",294,0)
 .S PSSJW8="" F  S PSSJW8=$O(^TMP($J,"PSSJWTM2","OUT",PSSJW7,"EXCEPTIONS",PSSJW8)) Q:PSSJW8=""  D
"RTN","PSSDSAPM",295,0)
 ..S PSSJW9=$G(^TMP($J,"PSSJWTM2","OUT",PSSJW7,"EXCEPTIONS",PSSJW8))
"RTN","PSSDSAPM",296,0)
 ..S ^TMP($J,PSSDBASG,"OUT",PSSJWNUM,PSSJW7,"EXCEPTIONS",PSSJW8)=PSSJW9
"RTN","PSSDSAPM",297,0)
 .;
"RTN","PSSDSAPM",298,0)
 .S PSSJW8="" F  S PSSJW8=$O(^TMP($J,"PSSJWTM2","OUT",PSSJW7,"MESSAGE",PSSJW8)) Q:PSSJW8=""  D
"RTN","PSSDSAPM",299,0)
 ..S PSSJW9="" F  S PSSJW9=$O(^TMP($J,"PSSJWTM2","OUT",PSSJW7,"MESSAGE",PSSJW8,PSSJW9)) Q:PSSJW9=""  D
"RTN","PSSDSAPM",300,0)
 ...I +PSSJW8=3 D  Q
"RTN","PSSDSAPM",301,0)
 ....S PSSJW56="" F  S PSSJW56=$O(^TMP($J,"PSSJWTM2","OUT",PSSJW7,"MESSAGE",PSSJW8,PSSJW9,PSSJW56)) Q:PSSJW56=""  D
"RTN","PSSDSAPM",302,0)
 .....S PSSJW57=$G(^TMP($J,"PSSJWTM2","OUT",PSSJW7,"MESSAGE",PSSJW8,PSSJW9,PSSJW56))
"RTN","PSSDSAPM",303,0)
 .....S ^TMP($J,PSSDBASG,"OUT",PSSJWNUM,PSSJW7,"MESSAGE",PSSJW8,PSSJW9,PSSJW56)=PSSJW57
"RTN","PSSDSAPM",304,0)
 ...S PSSJWVAL=$G(^TMP($J,"PSSJWTM2","OUT",PSSJW7,"MESSAGE",PSSJW8,PSSJW9))
"RTN","PSSDSAPM",305,0)
 ...S ^TMP($J,PSSDBASG,"OUT",PSSJWNUM,PSSJW7,"MESSAGE",PSSJW8,PSSJW9)=PSSJWVAL
"RTN","PSSDSAPM",306,0)
 ; 
"RTN","PSSDSAPM",307,0)
 K ^TMP($J,"PSSJWTM2")
"RTN","PSSDSAPM",308,0)
 Q
"RTN","PSSDSAPM",309,0)
 ;
"RTN","PSSDSAPM",310,0)
 ;
"RTN","PSSDSAPM",311,0)
DSP(PSSDBDS,PSSDBFDB) ;Return Dose and Dose Unit to Inpatient for complex order display
"RTN","PSSDSAPM",312,0)
 ;Return value set into parameter 1 as "DRG_DISP" 
"RTN","PSSDSAPM",313,0)
 N PSSDBAR,PSSINDSP,PSSIND1,PSSIND2,PSSIND3,PSSDSLCL,PSSDBNOD,PSSDBXP,PSSDBLPD,PSSDSXTD,PSSDBNT,PSSDBFAL,PSSDBLP,PSSDBIFL,PSSDSLCT,PSSDSLC1
"RTN","PSSDSAPM",314,0)
 S PSSDBLP="" F  S PSSDBLP=$O(PSSDBDS(PSSDBLP)) Q:PSSDBLP=""  D
"RTN","PSSDSAPM",315,0)
 .S PSSINDSP="",(PSSDBLPD,PSSDBFAL,PSSDBIFL,PSSDSLCT)=0 K PSSDBAR
"RTN","PSSDSAPM",316,0)
 .I $D(PSSDBFDB(PSSDBLP,"DOSE_AMT")),$D(PSSDBFDB(PSSDBLP,"DOSE_UNIT")) S PSSINDSP=PSSDBFDB(PSSDBLP,"DOSE_AMT")_"^"_PSSDBFDB(PSSDBLP,"DOSE_UNIT") D DSPL Q
"RTN","PSSDSAPM",317,0)
 .I $G(PSSDBDS(PSSDBLP,"DRG_AMT")),$G(PSSDBDS(PSSDBLP,"DRG_UNIT"))'="" D
"RTN","PSSDSAPM",318,0)
 ..S PSSIND1=$S(PSSDBDS(PSSDBLP,"DRG_UNIT")["/":$P(PSSDBDS(PSSDBLP,"DRG_UNIT"),"/"),1:PSSDBDS(PSSDBLP,"DRG_UNIT"))
"RTN","PSSDSAPM",319,0)
 ..S PSSIND1=$$UP^XLFSTR(PSSIND1)
"RTN","PSSDSAPM",320,0)
 ..S PSSIND2=$$UNIT^PSSDSAPI(PSSIND1)
"RTN","PSSDSAPM",321,0)
 ..I PSSIND2'="" S PSSINDSP=PSSDBDS(PSSDBLP,"DRG_AMT")_"^"_PSSIND2 D DSPL S PSSDBFAL=1
"RTN","PSSDSAPM",322,0)
 .I PSSDBFAL Q
"RTN","PSSDSAPM",323,0)
 .I '$G(PSSDBFDB(PSSDBLP,"DRUG_IEN")) S PSSDBDS(PSSDBLP,"DRG_DISP")="" Q
"RTN","PSSDSAPM",324,0)
 .;"DOSE" Node should only come from CPRS, for selected Local Possible Dosage
"RTN","PSSDSAPM",325,0)
 .S PSSDSLCL=$S($G(PSSDBDS(PSSDBLP,"DOSE"))'="":$P($G(PSSDBDS(PSSDBLP,"DOSE")),"&",5),1:$G(PSSDBDS(PSSDBLP,"DO")))
"RTN","PSSDSAPM",326,0)
 .I PSSDSLCL="" S PSSDBDS(PSSDBLP,"DRG_DISP")="" Q
"RTN","PSSDSAPM",327,0)
 .I PSSDSLCL["(" D PTH^PSSDSUTL
"RTN","PSSDSAPM",328,0)
 .D DSPRT
"RTN","PSSDSAPM",329,0)
 Q
"RTN","PSSDSAPM",330,0)
 ;
"RTN","PSSDSAPM",331,0)
DSPRT ;Line Tag added for retry if Free Text Dosage contains parenthesis
"RTN","PSSDSAPM",332,0)
 S PSSIND3=0
"RTN","PSSDSAPM",333,0)
 F PSSDBXP=0:0 S PSSDBXP=$O(^PSDRUG(PSSDBFDB(PSSDBLP,"DRUG_IEN"),"DOS2",PSSDBXP)) Q:'PSSDBXP!(PSSIND3)  D
"RTN","PSSDSAPM",334,0)
 .S PSSDBNOD=$G(^PSDRUG(PSSDBFDB(PSSDBLP,"DRUG_IEN"),"DOS2",PSSDBXP,0))
"RTN","PSSDSAPM",335,0)
 .I $$MTCH^PSSDSAPK S PSSDBLPD=1 I $P(PSSDBNOD,"^",5),$P(PSSDBNOD,"^",6)'="" D
"RTN","PSSDSAPM",336,0)
 ..S PSSDSXTD=+$P(PSSDBNOD,"^",5) I PSSDSXTD,$$SCREEN^XTID(51.24,.01,PSSDSXTD_",") Q
"RTN","PSSDSAPM",337,0)
 ..S PSSDBNT=$P($G(^PS(51.24,+$P(PSSDBNOD,"^",5),0)),"^",2)
"RTN","PSSDSAPM",338,0)
 ..I PSSDBNT'="" S PSSINDSP=$P(PSSDBNOD,"^",6)_"^"_PSSDBNT,(PSSIND3,PSSDBFAL)=1
"RTN","PSSDSAPM",339,0)
 I PSSDBFAL D DSPL Q
"RTN","PSSDSAPM",340,0)
 I PSSDBLPD D DPOP^PSSDSAPK I PSSDBFAL S PSSINDSP=PSSDBAR("AMN")_"^"_PSSDBAR("UNIT") D DSPL Q
"RTN","PSSDSAPM",341,0)
 D ITEM^PSSDSAPK I PSSDBFAL S PSSINDSP=PSSDBAR("AMN")_"^"_PSSDBAR("UNIT") D DSPL Q
"RTN","PSSDSAPM",342,0)
 D NUM^PSSDSAPL I PSSDBFAL S PSSINDSP=PSSDBAR("AMN")_"^"_PSSDBAR("UNIT") D DSPL Q
"RTN","PSSDSAPM",343,0)
 D RANGE^PSSDSUTL I PSSDBFAL S PSSINDSP=PSSDBAR("AMN")_"^"_PSSDBAR("UNIT") D DSPL Q
"RTN","PSSDSAPM",344,0)
 I 'PSSDBFAL,PSSDSLCT S PSSDSLCL=PSSDSLC1(PSSDSLCT),PSSDSLCT=PSSDSLCT-1,PSSDBLPD=0 G DSPRT
"RTN","PSSDSAPM",345,0)
 S PSSDBDS(PSSDBLP,"DRG_DISP")=""
"RTN","PSSDSAPM",346,0)
 Q
"RTN","PSSDSAPM",347,0)
 ;
"RTN","PSSDSAPM",348,0)
 ;
"RTN","PSSDSAPM",349,0)
DSPL ;Add leading zero
"RTN","PSSDSAPM",350,0)
 I $E(PSSINDSP)="." S PSSINDSP="0"_PSSINDSP
"RTN","PSSDSAPM",351,0)
 S PSSDBDS(PSSDBLP,"DRG_DISP")=PSSINDSP
"RTN","PSSDSAPM",352,0)
 Q
"RTN","PSSDSAPM",353,0)
 ;
"RTN","PSSDSAPM",354,0)
 ;
"RTN","PSSDSAPM",355,0)
NXDRUG ;No Drug found
"RTN","PSSDSAPM",356,0)
 I $G(PSSDBFDB("PACKAGE"))="X",$$DLTM^PSSDSAPI(PSSDBFDB("OI")) K ^TMP($J,PSSDBASE,"IN","EXCEPTIONS","OI",PSSDBFDB(PSSDBLP,"DRUG_NM")),PSSDBCAZ(PSSDBFDB(PSSDBLP,"RX_NUM"),"NO_DRUG") Q
"RTN","PSSDSAPM",357,0)
 I $D(^TMP($J,PSSDBASE,"IN","EXCEPTIONS","OI",PSSDBFDB(PSSDBLP,"DRUG_NM"))) D DPL^PSSDSAPK Q
"RTN","PSSDSAPM",358,0)
 I PSSDSIVF S ^TMP($J,PSSDBASE,"IN","EXCEPTIONS","OI",PSSDBFDB(PSSDBLP,"DRUG_NM"))="4^"_PSSDBFDB(PSSDBLP,"RX_NUM") D STDB Q
"RTN","PSSDSAPM",359,0)
 S ^TMP($J,PSSDBASE,"IN","EXCEPTIONS","DOSE",PSSDBFDB(PSSDBLP,"RX_NUM"))="1^"_PSSDBFDB(PSSDBLP,"DRUG_NM") D STDB
"RTN","PSSDSAPM",360,0)
 Q
"RTN","PSSDSAPM",361,0)
 ;
"RTN","PSSDSAPM",362,0)
 ;
"RTN","PSSDSAPM",363,0)
STDB ;Set PSSDBCAR array for Input Exceptions
"RTN","PSSDSAPM",364,0)
 S PSSDBCAR(PSSDBFDB(PSSDBLP,"RX_NUM"))="B^"_PSSDBFDB(PSSDBLP,"DRUG_NM")
"RTN","PSSDSAPM",365,0)
 S $P(PSSDBCAR(PSSDBFDB(PSSDBLP,"RX_NUM")),"^",18)=1,$P(PSSDBCAR(PSSDBFDB(PSSDBLP,"RX_NUM")),"^",13)=1
"RTN","PSSDSAPM",366,0)
 ;S PSSENHKZ(PSSDBFDB(PSSDBLP,"RX_NUM"))=1
"RTN","PSSDSAPM",367,0)
 D DPL^PSSDSAPK
"RTN","PSSDSAPM",368,0)
 Q
"RTN","PSSDSUTL")
0^33^B100218791^n/a
"RTN","PSSDSUTL",1,0)
PSSDSUTL ;BIR/MV-Dose Check utility routine (continued) ;27 Oct 2009  12:22 PM
"RTN","PSSDSUTL",2,0)
 ;;1.0;PHARMACY DATA MANAGEMENT;**201**;9/30/97;Build 23
"RTN","PSSDSUTL",3,0)
 ;
"RTN","PSSDSUTL",4,0)
 ; Reference to ^PSNAPIS is supported by DBIA #2574
"RTN","PSSDSUTL",5,0)
 ;
"RTN","PSSDSUTL",6,0)
RANGE ;Evaluate free text dosages for range patterns
"RTN","PSSDSUTL",7,0)
 N PSSRG1,PSSRG2,PSSRG3,PSSRG4,PSSRG5,PSSRG6,PSSRGAR,PSSRGDOS,PSSRGLT,PSSRGNM1,PSSRGNM2,PSSRGUN1,PSSRGUN2
"RTN","PSSDSUTL",8,0)
 S PSSRG2=0,PSSRGDOS=$G(PSSDSLCL)
"RTN","PSSDSUTL",9,0)
 S PSSRGDOS=$$UP^XLFSTR(PSSRGDOS)
"RTN","PSSDSUTL",10,0)
 S PSSRGLT=$L(PSSRGDOS) I PSSRGLT'>3!(PSSRGDOS["  ") Q
"RTN","PSSDSUTL",11,0)
 F PSSRG1=1:1:PSSRGLT Q:PSSRG2>4  I $E(PSSRGDOS,PSSRG1)=" " S PSSRG2=PSSRG2+1
"RTN","PSSDSUTL",12,0)
 I PSSRG2>4 Q
"RTN","PSSDSUTL",13,0)
 S PSSRGDOS=$TR(PSSRGDOS," ","") Q:$L(PSSRGDOS)'>0  ;Remove all spaces
"RTN","PSSDSUTL",14,0)
 ;Derive leading numeric value
"RTN","PSSDSUTL",15,0)
 I $E(PSSRGDOS)'?1N,$E(PSSRGDOS)'?1"." Q
"RTN","PSSDSUTL",16,0)
 I $E(PSSRGDOS)?1".",$E(PSSRGDOS,2)'?1N Q
"RTN","PSSDSUTL",17,0)
 S PSSRG2=0 F PSSRG3=1:1:$L(PSSRGDOS) Q:PSSRG2  S PSSRG4=$E(PSSRGDOS,PSSRG3) I PSSRG4'?1N,PSSRG4'?1".",PSSRG4'?1"," S PSSRG2=PSSRG3
"RTN","PSSDSUTL",18,0)
 Q:'PSSRG2  ;only a numeric passed in
"RTN","PSSDSUTL",19,0)
 S PSSRGNM1=$E(PSSRGDOS,1,(PSSRG2-1)),PSSRGDOS=$E(PSSRGDOS,PSSRG2,$L(PSSRGDOS)) Q:$L(PSSRGDOS)'>2
"RTN","PSSDSUTL",20,0)
 S PSSRGAR=$E(PSSRGNM1,$L(PSSRGNM1)) I PSSRGAR="."!(PSSRGAR=",") Q
"RTN","PSSDSUTL",21,0)
 S PSSRG2=0 F PSSRG3=1:1:$L(PSSRGNM1) Q:PSSRG2>1  S PSSRG5=$E(PSSRGNM1,PSSRG3) S:PSSRG5="." PSSRG2=PSSRG2+1
"RTN","PSSDSUTL",22,0)
 Q:PSSRG2>1
"RTN","PSSDSUTL",23,0)
 S PSSRGNM1=$TR(PSSRGNM1,",","") ;PSSRGNM1 Set to first numeric
"RTN","PSSDSUTL",24,0)
 S (PSSRG2,PSSRG4,PSSRG5)=0 F PSSRG3=1:1:$L(PSSRGDOS) Q:PSSRG2  S PSSRG4=$E(PSSRGDOS,PSSRG3) D:'PSSRG5  I PSSRG5,PSSRG4'?1N,PSSRG4'?1",",PSSRG4'?1"." S PSSRG2=PSSRG3
"RTN","PSSDSUTL",25,0)
 .I PSSRG4?1N!(PSSRG4?1".") S (PSSRG5,PSSRG6)=PSSRG3
"RTN","PSSDSUTL",26,0)
 I 'PSSRG5 Q
"RTN","PSSDSUTL",27,0)
 I PSSRG2 S PSSRGUN2=$E(PSSRGDOS,PSSRG2,$L(PSSRGDOS)),PSSRGNM2=$E(PSSRGDOS,PSSRG5,(PSSRG2-1)) ;PSSRGUN2 set to second Unit if there is one
"RTN","PSSDSUTL",28,0)
 I 'PSSRG2 S PSSRGNM2=$E(PSSRGDOS,PSSRG5,$L(PSSRGDOS))
"RTN","PSSDSUTL",29,0)
 I $E(PSSRGNM2)'?1N,$E(PSSRGNM2)'?1"." Q
"RTN","PSSDSUTL",30,0)
 I $E(PSSRGNM2)?1".",$E(PSSRGNM2,2)'?1N Q
"RTN","PSSDSUTL",31,0)
 S PSSRGAR=$E(PSSRGNM2,$L(PSSRGNM2)) I PSSRGAR="."!(PSSRGAR=",") Q
"RTN","PSSDSUTL",32,0)
 S PSSRG2=0 F PSSRG3=1:1:$L(PSSRGNM2) Q:PSSRG2>1  S PSSRG5=$E(PSSRGNM2,PSSRG3) S:PSSRG5="." PSSRG2=PSSRG2+1
"RTN","PSSDSUTL",33,0)
 Q:PSSRG2>1
"RTN","PSSDSUTL",34,0)
 S PSSRGNM2=$TR(PSSRGNM2,",","") ;PSSRGNM2 Set to second numeric
"RTN","PSSDSUTL",35,0)
 S PSSRGDOS=$E(PSSRGDOS,1,(PSSRG6-1))
"RTN","PSSDSUTL",36,0)
 S PSSRG6=$L(PSSRGDOS) Q:PSSRG6'>0
"RTN","PSSDSUTL",37,0)
 S PSSRG1=$E(PSSRGDOS,PSSRG6)
"RTN","PSSDSUTL",38,0)
 I PSSRG1="-" S:PSSRG6>1 PSSRGUN1=$E(PSSRGDOS,1,(PSSRG6-1)) D RANGEOK Q
"RTN","PSSDSUTL",39,0)
 S PSSRG2=$E(PSSRGDOS,(PSSRG6-1),PSSRG6) I PSSRG2="TO"!(PSSRG2="OR") S:PSSRG6>2 PSSRGUN1=$E(PSSRGDOS,1,(PSSRG6-2)) D RANGEOK
"RTN","PSSDSUTL",40,0)
 Q
"RTN","PSSDSUTL",41,0)
 ;
"RTN","PSSDSUTL",42,0)
 ;
"RTN","PSSDSUTL",43,0)
RANGEOK ;Retrieved all needed Dosing
"RTN","PSSDSUTL",44,0)
 N PSSRGUNA,PSSRGUNB
"RTN","PSSDSUTL",45,0)
 I PSSRGNM2'>PSSRGNM1 Q
"RTN","PSSDSUTL",46,0)
 I PSSDBIFL D  Q
"RTN","PSSDSUTL",47,0)
 .I $G(PSSRGUN1)'="" S PSSRGUNA=$$UNITD^PSSDSAPI(PSSRGUN1)
"RTN","PSSDSUTL",48,0)
 .I $G(PSSRGUN2)'="" S PSSRGUNB=$$UNITD^PSSDSAPI(PSSRGUN2)
"RTN","PSSDSUTL",49,0)
 .I $G(PSSRGUN1)'="",$G(PSSRGUN2)'="" D  Q
"RTN","PSSDSUTL",50,0)
 ..I $G(PSSRGUNA)'="",PSSRGUNA=$G(PSSRGUNB) S PSSDBAR("AMN")=PSSRGNM2,PSSDBAR("UNIT")=PSSRGUNA,PSSDBFAL=1
"RTN","PSSDSUTL",51,0)
 .I $G(PSSRGUN1)="" D
"RTN","PSSDSUTL",52,0)
 ..I $G(PSSRGUNB)'="" S PSSDBAR("AMN")=PSSRGNM2,PSSDBAR("UNIT")=PSSRGUNB,PSSDBFAL=1
"RTN","PSSDSUTL",53,0)
 .I $G(PSSRGUN2)="" D
"RTN","PSSDSUTL",54,0)
 ..I $G(PSSRGUNA)'="" S PSSDBAR("AMN")=PSSRGNM2,PSSDBAR("UNIT")=PSSRGUNA,PSSDBFAL=1
"RTN","PSSDSUTL",55,0)
 I $G(PSSRGUN1)'="" S PSSRGUNA=$$UNIT^PSSDSAPI(PSSRGUN1)
"RTN","PSSDSUTL",56,0)
 I $G(PSSRGUN2)'="" S PSSRGUNB=$$UNIT^PSSDSAPI(PSSRGUN2)
"RTN","PSSDSUTL",57,0)
 I $G(PSSRGUN1)'="",$G(PSSRGUN2)'="" D  Q
"RTN","PSSDSUTL",58,0)
 .I $G(PSSRGUNA)'="",PSSRGUNA=$G(PSSRGUNB) S PSSDBAR("AMN")=PSSRGNM2,PSSDBAR("UNIT")=PSSRGUNA,PSSDBFAL=1
"RTN","PSSDSUTL",59,0)
 I $G(PSSRGUN1)="" D
"RTN","PSSDSUTL",60,0)
 .I $G(PSSRGUNB)'="" S PSSDBAR("AMN")=PSSRGNM2,PSSDBAR("UNIT")=PSSRGUNB,PSSDBFAL=1
"RTN","PSSDSUTL",61,0)
 I $G(PSSRGUN2)="" D
"RTN","PSSDSUTL",62,0)
 .I $G(PSSRGUNA)'="" S PSSDBAR("AMN")=PSSRGNM2,PSSDBAR("UNIT")=PSSRGUNA,PSSDBFAL=1
"RTN","PSSDSUTL",63,0)
 Q
"RTN","PSSDSUTL",64,0)
 ;
"RTN","PSSDSUTL",65,0)
 ;
"RTN","PSSDSUTL",66,0)
MLTOK(PSSUTM1,PSSUTM3) ;If multi ingredient, and all ingredients in VA Product have a Unit and it matches the unit from the order
"RTN","PSSDSUTL",67,0)
 N DA,PSSUTMCT,PSSUTMLP,PSSUTMUX,PSSUTMAR,PSSUTMQT,PSSUTMUZ
"RTN","PSSDSUTL",68,0)
 S PSSUTMQT=0
"RTN","PSSDSUTL",69,0)
 S PSSUTMCT=$$PSJING^PSNAPIS(PSSUTM1,PSSUTM3,.PSSUTMAR) I $G(PSSUTMCT)'>1 Q 1
"RTN","PSSDSUTL",70,0)
 F PSSUTMLP=0:0 S PSSUTMLP=$O(PSSUTMAR(PSSUTMLP)) Q:'PSSUTMLP!(PSSUTMQT)  D
"RTN","PSSDSUTL",71,0)
 .S PSSUTMUX=$P(PSSUTMAR(PSSUTMLP),"^",4) I PSSUTMUX="" S PSSUTMQT=1 Q
"RTN","PSSDSUTL",72,0)
 .S PSSUTMUZ=$$UNITD^PSSDSAPI(PSSUTMUX) I PSSUTMUZ="" S PSSUTMQT=1 Q
"RTN","PSSDSUTL",73,0)
 .I PSSUTMUZ'=PSSDBAR("UNIT") S PSSUTMQT=1
"RTN","PSSDSUTL",74,0)
 Q PSSUTMQT
"RTN","PSSDSUTL",75,0)
 ;
"RTN","PSSDSUTL",76,0)
 ;
"RTN","PSSDSUTL",77,0)
UPCPRS ;Update CPRS global
"RTN","PSSDSUTL",78,0)
 I '$D(^TMP($J,PSSDBASF)) Q
"RTN","PSSDSUTL",79,0)
 N PSSCPC5,PSSCPC6,PSSCPC7,PSSCPC8,PSSCPC9,PSSCPCNM,PSSCPGL,PSSCPCND,PSSCPCNN,PSSCPCAR,PSSCPCNX,PSSCPCO1,PSSCPCO2,PSSCPCO3,PSSCPCG1,PSSCPCGN,PSSCPCCS,PSSCPCWA,PSSCPC29
"RTN","PSSDSUTL",80,0)
 K ^TMP($J,"PSSCPNEW") M ^TMP($J,"PSSCPNEW")=^TMP($J,PSSDBASF) K ^TMP($J,PSSDBASF)
"RTN","PSSDSUTL",81,0)
 S PSSCPCGL="PSSCPNEW"
"RTN","PSSDSUTL",82,0)
 ;
"RTN","PSSDSUTL",83,0)
 ;Errors - remove Dose subscript, and piece 27 check to to see any error should be kept
"RTN","PSSDSUTL",84,0)
 S PSSCPC5="" F  S PSSCPC5=$O(PSSDBCAR(PSSCPC5)) Q:PSSCPC5=""  S (PSSCPCCS,PSSCPCWA,PSSCPC29)=0 D:'$P(PSSDBCAR(PSSCPC5),"^",14)
"RTN","PSSDSUTL",85,0)
 .S PSSCPC6="" F  S PSSCPC6=$O(^TMP($J,PSSCPCGL,"OUT","DOSE","ERROR",PSSCPC5,PSSCPC6)) Q:PSSCPC6=""  S PSSCPCNM=$P(PSSCPC5,";",4) D
"RTN","PSSDSUTL",86,0)
 ..I $G(^TMP($J,PSSCPCGL,"OUT","DOSE","ERROR",PSSCPC5,PSSCPC6,"WARN"))="Warning",'$P(PSSCPC5,";",5) S $P(PSSDBCAR(PSSCPC5),"^",13)="",PSSCPCWA=1 D  Q
"RTN","PSSDSUTL",87,0)
 ...S ^TMP($J,PSSDBASF,"OUT","ERROR",PSSCPCNM,PSSCPC5,PSSCPC6,"MSG")=^TMP($J,PSSCPCGL,"OUT","DOSE","ERROR",PSSCPC5,PSSCPC6,"MSG")
"RTN","PSSDSUTL",88,0)
 ...S ^TMP($J,PSSDBASF,"OUT","ERROR",PSSCPCNM,PSSCPC5,PSSCPC6,"TEXT")=^TMP($J,PSSCPCGL,"OUT","DOSE","ERROR",PSSCPC5,PSSCPC6,"TEXT")
"RTN","PSSDSUTL",89,0)
 ..I '$P(PSSDBCAR(PSSCPC5),"^",27) Q
"RTN","PSSDSUTL",90,0)
 ..S ^TMP($J,PSSDBASF,"OUT","ERROR",PSSCPCNM,PSSCPC5,PSSCPC6,"MSG")=^TMP($J,PSSCPCGL,"OUT","DOSE","ERROR",PSSCPC5,PSSCPC6,"MSG")
"RTN","PSSDSUTL",91,0)
 ..S ^TMP($J,PSSDBASF,"OUT","ERROR",PSSCPCNM,PSSCPC5,PSSCPC6,"TEXT")=^TMP($J,PSSCPCGL,"OUT","DOSE","ERROR",PSSCPC5,PSSCPC6,"TEXT") S PSSCPCCS=PSSCPC6+1
"RTN","PSSDSUTL",92,0)
 .;
"RTN","PSSDSUTL",93,0)
 .Q:PSSCPCWA  ;Quit if warning
"RTN","PSSDSUTL",94,0)
 .S PSSCPCAR(PSSCPC5)=1 S PSSCPCNM=$P(PSSCPC5,";",4) I $P(PSSDBCAR(PSSCPC5),"^",27) D
"RTN","PSSDSUTL",95,0)
 ..S PSSCPC6="" F  S PSSCPC6=$O(^TMP($J,PSSCPCGL,"OUT","EXCEPTIONS","DOSE",PSSCPC5,PSSCPC6)) Q:PSSCPC6=""  D
"RTN","PSSDSUTL",96,0)
 ...S PSSCPCND=$G(^TMP($J,PSSCPCGL,"OUT","EXCEPTIONS","DOSE",PSSCPC5,PSSCPC6)) Q:PSSCPCND=""
"RTN","PSSDSUTL",97,0)
 ...S ^TMP($J,PSSDBASF,"OUT","CHECK",PSSCPCNM,PSSCPC5,PSSCPCAR(PSSCPC5),"ATYPE")="DOSE^EXCEPTION"
"RTN","PSSDSUTL",98,0)
 ...S ^TMP($J,PSSDBASF,"OUT","CHECK",PSSCPCNM,PSSCPC5,PSSCPCAR(PSSCPC5),"MSG",1)=PSSCPCND,PSSCPCAR(PSSCPC5)=PSSCPCAR(PSSCPC5)+1
"RTN","PSSDSUTL",99,0)
 .;Set generic exception if needed
"RTN","PSSDSUTL",100,0)
 .I '$P(PSSDBCAR(PSSCPC5),"^",27),('$G(PSSENHK(PSSCPC5))!('$G(PSSENHKZ(PSSCPC5)))) D
"RTN","PSSDSUTL",101,0)
 ..;I $P(PSSDBCAR(PSSCPC5),"^",29) S $P(PSSDBCAR(PSSCPC5),"^",4)=0 ;need this to show Daily Dose error
"RTN","PSSDSUTL",102,0)
 ..I '$D(PSSDSDPL(PSSCPC5))!($P(PSSDBCAR(PSSCPC5),"^",4)&('$P(PSSDBCAR(PSSCPC5),"^",13))) Q
"RTN","PSSDSUTL",103,0)
 ..S PSSCPCG1="" I '$P(PSSDBCAR(PSSCPC5),"^",13),'$P(PSSDBCAR(PSSCPC5),"^",4) S PSSCPCG1="Max Daily Dose Check"
"RTN","PSSDSUTL",104,0)
 ..I '$P(PSSDBCAR(PSSCPC5),"^",13),PSSCPCG1="" Q
"RTN","PSSDSUTL",105,0)
 ..I PSSCPCG1'="",$P(PSSDBCAR(PSSCPC5),"^",15)!($P(PSSDBCAR(PSSCPC5),"^",16))!($P(PSSCPC5,";",5)) K PSSCPCG1 Q
"RTN","PSSDSUTL",106,0)
 ..I PSSCPCG1="" S PSSCPCG1=$S('$P(PSSDBCAR(PSSCPC5),"^",15)&('$P(PSSDBCAR(PSSCPC5),"^",16)):"Dosing Checks",1:"Maximum Single Dose Check")
"RTN","PSSDSUTL",107,0)
 ..S PSSCPCGN=PSSCPCG1_" could not be performed for Drug: "_$P(PSSDBCAR(PSSCPC5),"^",2)_$S($P(PSSDBCAR(PSSCPC5),"^",16):" (Dose="_$G(PSSDSDPL(PSSCPC5))_")",1:"")
"RTN","PSSDSUTL",108,0)
 ..S PSSCPCGN=PSSCPCGN_", please complete a manual check for appropriate Dosing."
"RTN","PSSDSUTL",109,0)
 ..S ^TMP($J,PSSDBASF,"OUT","CHECK",PSSCPCNM,PSSCPC5,PSSCPCAR(PSSCPC5),"ATYPE")="DOSE^EXCEPTION"
"RTN","PSSDSUTL",110,0)
 ..S ^TMP($J,PSSDBASF,"OUT","CHECK",PSSCPCNM,PSSCPC5,PSSCPCAR(PSSCPC5),"MSG",1)=PSSCPCGN,PSSCPCAR(PSSCPC5)=PSSCPCAR(PSSCPC5)+1
"RTN","PSSDSUTL",111,0)
 .;
"RTN","PSSDSUTL",112,0)
 .S PSSCPCO2="",PSSCPCO3=0 S PSSCPC6="" F  S PSSCPC6=$O(^TMP($J,PSSCPCGL,"OUT","DOSE",PSSCPC5,PSSCPC6)) Q:PSSCPC6=""  D
"RTN","PSSDSUTL",113,0)
 ..D PEROR S PSSCPCNM=$P(PSSCPC5,";",4) S PSSCPC7="" F  S PSSCPC7=$O(^TMP($J,PSSCPCGL,"OUT","DOSE",PSSCPC5,PSSCPC6,PSSCPC7)) Q:PSSCPC7=""  D
"RTN","PSSDSUTL",114,0)
 ...I +PSSCPC7=2,$P(PSSDBCAR(PSSCPC5),"^",15)!($P(PSSDBCAR(PSSCPC5),"^",16))!($P(PSSCPC5,";",5)) Q  ;2.1 added the conditions
"RTN","PSSDSUTL",115,0)
 ...S PSSCPC8="" F  S PSSCPC8=$O(^TMP($J,PSSCPCGL,"OUT","DOSE",PSSCPC5,PSSCPC6,PSSCPC7,"MESSAGE",PSSCPC8)) Q:PSSCPC8=""  D
"RTN","PSSDSUTL",116,0)
 ....I PSSCPCO2'="" D
"RTN","PSSDSUTL",117,0)
 .....S ^TMP($J,PSSDBASF,"OUT","CHECK",PSSCPCNM,PSSCPC5,PSSCPCAR(PSSCPC5),"ATYPE")="DOSE^"_$S(+PSSCPC7=1:"SINGLE",+PSSCPC7=2:"DAILY",1:"GENERAL")
"RTN","PSSDSUTL",118,0)
 .....S ^TMP($J,PSSDBASF,"OUT","CHECK",PSSCPCNM,PSSCPC5,PSSCPCAR(PSSCPC5),"MSG",1)=PSSCPCO2
"RTN","PSSDSUTL",119,0)
 ....I +PSSCPC7'=3 S PSSCPCNN=$S(PSSCPCO3:2,1:1) D  Q
"RTN","PSSDSUTL",120,0)
 .....S PSSCPCND=^TMP($J,PSSCPCGL,"OUT","DOSE",PSSCPC5,PSSCPC6,PSSCPC7,"MESSAGE",PSSCPC8)
"RTN","PSSDSUTL",121,0)
 .....I PSSCPCNN=1 S ^TMP($J,PSSDBASF,"OUT","CHECK",PSSCPCNM,PSSCPC5,PSSCPCAR(PSSCPC5),"ATYPE")="DOSE^"_$S(+PSSCPC7=1:"SINGLE",1:"DAILY")
"RTN","PSSDSUTL",122,0)
 .....S ^TMP($J,PSSDBASF,"OUT","CHECK",PSSCPCNM,PSSCPC5,PSSCPCAR(PSSCPC5),"MSG",PSSCPCNN)=PSSCPCND,PSSCPCAR(PSSCPC5)=PSSCPCAR(PSSCPC5)+1
"RTN","PSSDSUTL",123,0)
 ....S PSSCPCNN=$S(PSSCPCO3:1,1:0),PSSCPCAA=$S(PSSCPCNN:2,1:1)
"RTN","PSSDSUTL",124,0)
 ....D:$P(PSSDBCAR(PSSCPC5),"^",29) CFREQ S PSSCPC9="" F  S PSSCPC9=$O(^TMP($J,PSSCPCGL,"OUT","DOSE",PSSCPC5,PSSCPC6,PSSCPC7,"MESSAGE",PSSCPC8,PSSCPC9)) Q:PSSCPC9=""  D
"RTN","PSSDSUTL",125,0)
 .....I 'PSSCPCNN S ^TMP($J,PSSDBASF,"OUT","CHECK",PSSCPCNM,PSSCPC5,PSSCPCAR(PSSCPC5),"ATYPE")="DOSE^GENERAL"
"RTN","PSSDSUTL",126,0)
 .....S PSSCPCND=^TMP($J,PSSCPCGL,"OUT","DOSE",PSSCPC5,PSSCPC6,PSSCPC7,"MESSAGE",PSSCPC8,PSSCPC9)
"RTN","PSSDSUTL",127,0)
 .....S ^TMP($J,PSSDBASF,"OUT","CHECK",PSSCPCNM,PSSCPC5,PSSCPCAR(PSSCPC5),"MSG",PSSCPCAA)=PSSCPCND,PSSCPCAA=PSSCPCAA+1,PSSCPCAR(PSSCPC5)=PSSCPCAR(PSSCPC5)+1
"RTN","PSSDSUTL",128,0)
 .I $P(PSSDBCAR(PSSCPC5),"^",29),'PSSCPC29 D CFREQ
"RTN","PSSDSUTL",129,0)
 K ^TMP($J,PSSCPCGL)
"RTN","PSSDSUTL",130,0)
 Q
"RTN","PSSDSUTL",131,0)
 ;
"RTN","PSSDSUTL",132,0)
 ;
"RTN","PSSDSUTL",133,0)
CFREQ ;Add customized Frequency
"RTN","PSSDSUTL",134,0)
 I $P(PSSDBCAR(PSSCPC5),"^",15)!($P(PSSDBCAR(PSSCPC5),"^",16))!($P(PSSCPC5,";",5)) Q
"RTN","PSSDSUTL",135,0)
 S PSSCPC29=1
"RTN","PSSDSUTL",136,0)
 S PSSCPCAR(PSSCPC5)=$S(PSSCPCAR(PSSCPC5)>1:PSSCPCAR(PSSCPC5),PSSCPCCS:PSSCPCCS,1:1)
"RTN","PSSDSUTL",137,0)
 S ^TMP($J,PSSDBASF,"OUT","CHECK",PSSCPCNM,PSSCPC5,PSSCPCAR(PSSCPC5),"ATYPE")="DOSE^INFORMATIONAL"
"RTN","PSSDSUTL",138,0)
 S ^TMP($J,PSSDBASF,"OUT","CHECK",PSSCPCNM,PSSCPC5,PSSCPCAR(PSSCPC5),"MSG",1)=$G(^TMP($J,PSSDBASE,"OUT","DOSE",PSSCPC5,$P(PSSDBCAR(PSSCPC5),"^",2),"FREQ","FREQUENCYCUSTOMMESSAGE",$P(PSSDBCAR(PSSCPC5),"^",3)))
"RTN","PSSDSUTL",139,0)
 S PSSCPCAR(PSSCPC5)=PSSCPCAR(PSSCPC5)+1
"RTN","PSSDSUTL",140,0)
 Q
"RTN","PSSDSUTL",141,0)
 ;
"RTN","PSSDSUTL",142,0)
 ;
"RTN","PSSDSUTL",143,0)
PEROR ;Per Orifice check
"RTN","PSSDSUTL",144,0)
 N PSSCPCO9
"RTN","PSSDSUTL",145,0)
 S PSSCPCO9=$P(PSSDBCAR(PSSCPC5),"^",9) I PSSCPCO9="OTIC"!(PSSCPCO9="OPHTHALMIC")!(PSSCPCO9="INTRANASAL") D
"RTN","PSSDSUTL",146,0)
 .S PSSCPCO2="Dosing Information provided is PER "_$S(PSSCPCO9="OTIC":"EAR:",PSSCPCO9="OPHTHALMIC":"EYE:",1:"NOSTRIL:"),PSSCPCO3=1
"RTN","PSSDSUTL",147,0)
 Q
"RTN","PSSDSUTL",148,0)
 ;
"RTN","PSSDSUTL",149,0)
 ;
"RTN","PSSDSUTL",150,0)
PTH ;Local Dosage with parenthesis, extract data from before and within
"RTN","PSSDSUTL",151,0)
 N PSSPTH1,PSSPTH2,PSSPTH3,PSSPTH4,PSSPTHL,PSSPTHA,PSSPTHC,PSSPTHF,PSSPTHD,PSSPTHS1,PSSPTHS2,PSSPTHS3,PSSPTHS4
"RTN","PSSDSUTL",152,0)
 K PSSDSLC1 S (PSSPTH1,PSSPTH2,PSSPTH3,PSSPTH4,PSSPTHF)=0,PSSPTHD=PSSDSLCL
"RTN","PSSDSUTL",153,0)
 S PSSPTHL=$L(PSSPTHD)
"RTN","PSSDSUTL",154,0)
 F PSSPTHA=1:1:PSSPTHL Q:PSSPTHF  S PSSPTHC=$E(PSSPTHD,PSSPTHA) D
"RTN","PSSDSUTL",155,0)
 .I PSSPTHC'="(",PSSPTHC'=")" Q
"RTN","PSSDSUTL",156,0)
 .I PSSPTHC="(" S PSSPTH1=PSSPTHA,PSSPTH3=PSSPTH3+1 S:PSSPTH3>1 PSSPTHF=1 Q
"RTN","PSSDSUTL",157,0)
 .S PSSPTH2=PSSPTHA,PSSPTH4=PSSPTH4+1 S:PSSPTH4>1 PSSPTHF=1 Q
"RTN","PSSDSUTL",158,0)
 Q:PSSPTHF  ;Quit if more than 1 of either parenthesis
"RTN","PSSDSUTL",159,0)
 Q:'PSSPTH3!('PSSPTH4)  ;Quit if either parenthesis is missing
"RTN","PSSDSUTL",160,0)
 Q:PSSPTH1'<PSSPTH2  ;Quit if left paren is not before right paren
"RTN","PSSDSUTL",161,0)
 I PSSPTH1>1 S PSSPTHS1="" D  I PSSPTHS1'="" S PSSDSLC1(2)=PSSPTHS1,PSSDSLCT=2
"RTN","PSSDSUTL",162,0)
 .S PSSPTHS1=$E(PSSPTHD,1,(PSSPTH1-1)),PSSPTHS2=$L(PSSPTHS1),PSSPTHS4=0
"RTN","PSSDSUTL",163,0)
 .F PSSPTHS3=PSSPTHS2:-1:1 I $E(PSSPTHS1,PSSPTHS3)'=" " S PSSPTHS4=PSSPTHS3 Q
"RTN","PSSDSUTL",164,0)
 .Q:PSSPTHS4=PSSPTHS2
"RTN","PSSDSUTL",165,0)
 .I 'PSSPTHS4 S PSSPTHS1="" Q
"RTN","PSSDSUTL",166,0)
 .S PSSPTHS1=$E(PSSPTHS1,1,PSSPTHS4)
"RTN","PSSDSUTL",167,0)
 I (PSSPTH1+1)'<PSSPTH2 D:PSSDSLCT  Q
"RTN","PSSDSUTL",168,0)
 .S PSSDSLC1(1)=PSSDSLC1(2),PSSDSLCT=1 K PSSDSLC1(2)
"RTN","PSSDSUTL",169,0)
 S PSSDSLC1(1)=$E(PSSPTHD,(PSSPTH1+1),(PSSPTH2-1)) I 'PSSDSLCT S PSSDSLCT=1
"RTN","PSSDSUTL",170,0)
 Q
"RTN","PSSDSUTL",171,0)
 ;
"RTN","PSSDSUTL",172,0)
 ;
"RTN","PSSDSUTL",173,0)
DURR ;Set Duration
"RTN","PSSDSUTL",174,0)
 I $D(PSSDBFDB(PSSDBLP,"DURATION")) S PSSDBAR("DUR")=PSSDBFDB(PSSDBLP,"DURATION") Q
"RTN","PSSDSUTL",175,0)
 S PSSDBAR("DUR")=$S($G(PSSDBAR("TYPE"))="SINGLE DOSE":"",1:1)
"RTN","PSSDSUTL",176,0)
 Q
"RTN","PSSDSUTL",177,0)
 ;
"RTN","PSSDSUTL",178,0)
 ;
"RTN","PSSDSUTL",179,0)
DURRAT ;Set Duration Rate
"RTN","PSSDSUTL",180,0)
 I $D(PSSDBFDB(PSSDBLP,"DURATION_RT")) S PSSDBAR("DRR")=PSSDBFDB(PSSDBLP,"DURATION_RT") Q
"RTN","PSSDSUTL",181,0)
 S PSSDBAR("DRR")=$S($G(PSSDBAR("TYPE"))="SINGLE DOSE":"",1:"DAY")
"RTN","PSSDSUTL",182,0)
 Q
"RTN","PSSFDBDI")
0^35^B154007468^B130530909
"RTN","PSSFDBDI",1,0)
PSSFDBDI ;BIR/LE - Sends XML Request to PEPS via HWSC for Dose Information ;01/23/12
"RTN","PSSFDBDI",2,0)
 ;;1.0;PHARMACY DATA MANAGEMENT;**160,175,201**;9/30/97;Build 23
"RTN","PSSFDBDI",3,0)
 ;
"RTN","PSSFDBDI",4,0)
 ; Reference to ^PSNDF(50.68 is supported by DBIA #3735
"RTN","PSSFDBDI",5,0)
 ; Reference to ^MXMLDOM is supported by DBIA #3561
"RTN","PSSFDBDI",6,0)
 ;
"RTN","PSSFDBDI",7,0)
 ; this routine is responsible for performing dosing information queries against a drug database to retrieve dose information.
"RTN","PSSFDBDI",8,0)
 ; the architecture parses the XML stream into tokens and is stored in a ^TMP($J,"PSSFDBDI")
"RTN","PSSFDBDI",9,0)
 ;
"RTN","PSSFDBDI",10,0)
 ;NEW file structure:
"RTN","PSSFDBDI",11,0)
 ;^TMP($J,"PSSFDBDI",0)=file description^^total # sequences^total # sequences
"RTN","PSSFDBDI",12,0)
 ;^TMP($J,"PSSFDBDI",PSSGCN,0)=GCNSEQNO evaluated^passed in GCNSEQNO^dispensableDrugName^dispensableDrugDescription^fdbdx
"RTN","PSSFDBDI",13,0)
 ;^TMP($J,"PSSFDBDI",PSSGCN,doseRanges",SEQ,1,0)=custom^category^dosetypeid^dosetypedescription^doserouteid^doseroutedescription^agelowindays^agehigh indays
"RTN","PSSFDBDI",14,0)
 ;^TMP($J,"PSSFDBDI",PSSGCN,doseRanges",SEQ,2,0)=hitIndicationID^hitindication description^indicationid^indicationdescription^^indicationidtype^resulttype^warningcode
"RTN","PSSFDBDI",15,0)
 ;^TMP($J,"PSSFDBDI",PSSGCN,doseRanges",SEQ,3,0)=bsarequired^weightrequired^hepaticimpairement^renal impairement^loweliminationhalflife^higheliminationhalflife^halflifeunit^crclthreshold^crclthresholdunit
"RTN","PSSFDBDI",16,0)
 ;^TMP($J,"PSSFDBDI",PSSGCN,doseRanges",SEQ,4,0)=durationlow^durationhigh^maxduration^frequencylow^frequencyhigh
"RTN","PSSFDBDI",17,0)
 ;^TMP($J,"PSSFDBDI",PSSGCN,doseRanges",SEQ,5,0)=doselow^doselowunit^dosehigh^dosehighunit^doseformlow^doseformlowunit^doseformhigh^doseformhighunit
"RTN","PSSFDBDI",18,0)
 ;^TMP($J,"PSSFDBDI",PSSGCN,doseRanges",SEQ,6,0)=maxsingledose^maxsingledoseunit^maxsingledoseform^maxsingledoseformunit^maxdailydose^maxdailydoseunit^maxdailydoseform^maxdailydoseformunit
"RTN","PSSFDBDI",19,0)
 ;^TMP($J,"PSSFDBDI",PSSGCN,doseRanges",SEQ,7,0)maxlidfetimedose^maxlifetimedoseunit^maxlifetimedoseform^maxlifetimedoseformunit
"RTN","PSSFDBDI",20,0)
 ;no longer built;^TMP($J,"PSSFDBDI",PSSGCN,"minMax",ageLowInDays,ageHighInDays,1)=doseLow^doseLowUnit^doseHigh^doseHighUnit^doseFormLow^doseFormLowUnit^doseFormHigh^doseFormHighUnit
"RTN","PSSFDBDI",21,0)
 ;no longer built^TMP($J,"PSSFDBDI",PSSGCN,"minMax",ageLowInDays,ageHighInDays,2)=maxDailyDose^maxDailyDoseUnit^maxDailyDoseForm^maxDailyDoseFormUnit^resultType^warningCode^bsaRequired^weightRequired
"RTN","PSSFDBDI",22,0)
 ;
"RTN","PSSFDBDI",23,0)
 ; Cross References "doseRanges" nodes:
"RTN","PSSFDBDI",24,0)
 ;^TMP($J,"PSSFDBDI","A",doseTypeId,ageLowInDays,ageHighInDays,SEQ)=custom
"RTN","PSSFDBDI",25,0)
 ;^TMP($J,"PSSFDBDI","B",gcnSeqNo)=dispensableDrugName
"RTN","PSSFDBDI",26,0)
 ;^TMP($J,"PSSFDBDI","C",ageLowInDays,ageHighInDays,doseTypeId,SEQ)=custom
"RTN","PSSFDBDI",27,0)
 ;
"RTN","PSSFDBDI",28,0)
 Q
"RTN","PSSFDBDI",29,0)
EN(PSSGCN,PSSOUT) ;get dosing information based on GCNSEQNO
"RTN","PSSFDBDI",30,0)
 ; input: PSSGCN  - GCCNSEQNO from file 50.68
"RTN","PSSFDBDI",31,0)
 ;
"RTN","PSSFDBDI",32,0)
 ; output: builds TMP file for dosing information
"RTN","PSSFDBDI",33,0)
 ;             e.g.  ^TMP($J,"PSSFDBDI"
"RTN","PSSFDBDI",34,0)
 ;                     PSSOUT(0) = 1 for successful
"RTN","PSSFDBDI",35,0)
 ;                                           -1^error message  (when an error occurs:  example  "-1^ERROR #6059: Unable to open TCP/IP socket to server nn.n.nnn.nn:nnnn"
"RTN","PSSFDBDI",36,0)
 ;
"RTN","PSSFDBDI",37,0)
 K ^TMP($J,"PSSFDBDI")
"RTN","PSSFDBDI",38,0)
 I PSSGCN=""!(PSSGCN=0) S PSSOUT="",PSSOUT(0)="-1^GCN sequence number is not defined." Q
"RTN","PSSFDBDI",39,0)
 N PSSXML,PSSFDBDX,GCNSEQ,BASE,PSSRETR2,PSSFDBDN
"RTN","PSSFDBDI",40,0)
 S PSSFDBDN=$$CHKSTAT^PSSDSFDB() I PSSFDBDN S PSSOUT(0)=PSSFDBDN Q
"RTN","PSSFDBDI",41,0)
 S GCNSEQ=PSSGCN,BASE=$T(+0)_" DOSEINFO"
"RTN","PSSFDBDI",42,0)
 S PSSXML=$$BLDXML(GCNSEQ)   ; build the xml request
"RTN","PSSFDBDI",43,0)
RETRY ;Retry line tag
"RTN","PSSFDBDI",44,0)
 D POST(PSSXML,PSSGCN,.PSSOUT)    ; post the request and process the results
"RTN","PSSFDBDI",45,0)
 I $P($G(PSSOUT(0)),"^")=-1,'$G(PSSRETR2) K PSSOUT S PSSRETR2=1 H 3 G RETRY
"RTN","PSSFDBDI",46,0)
 Q
"RTN","PSSFDBDI",47,0)
 ;
"RTN","PSSFDBDI",48,0)
BLDXML(GCNSEQ) ; build and return the XML request with drug information for given GCN sequence number
"RTN","PSSFDBDI",49,0)
 ;  input: drug IEN from drug file (#50)
"RTN","PSSFDBDI",50,0)
 ; output: returns the XML request for given GCN sequence number
"RTN","PSSFDBDI",51,0)
 ;             Example:  where 22211 is the GCN Sequence number passed by reference at line tag EN above.
"RTN","PSSFDBDI",52,0)
 ;                                PSSXML="<?xml version=""1.0"" encoding=""utf-8"" ?><dosingInfoRequest  xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" 
"RTN","PSSFDBDI",53,0)
 ;                                         xsi:schemaLocation=""gov/va/med/pharmacy/peps/external/common/preencapsulation/vo/dosing/info/request dosingInfoSchemaInput.xsd"" 
"RTN","PSSFDBDI",54,0)
 ;                                         xmlns=""gov/va/med/pharmacy/peps/external/common/preencapsulation/vo/dosing/info/request"">
"RTN","PSSFDBDI",55,0)
 ;                                         <dosingInfo gcnSeqNo=""22211"" fdbdx=""999"" />
"RTN","PSSFDBDI",56,0)
 ;                                         </dosingInfoRequest>"
"RTN","PSSFDBDI",57,0)
 ;
"RTN","PSSFDBDI",58,0)
 N DRUGTAG,ENDTAG,FDBDX,SPACE,TAG,SUBXML,SCHEMA,XMLNS,SPACE,DOSETAG
"RTN","PSSFDBDI",59,0)
 S PSSXML="",SPACE=$C(32)
"RTN","PSSFDBDI",60,0)
 ;
"RTN","PSSFDBDI",61,0)
 ;xml header info - <?xml version="1.0" encoding="utf-8" ?>
"RTN","PSSFDBDI",62,0)
 S PSSXML=PSSXML_$$XMLHDR^MXMLUTL
"RTN","PSSFDBDI",63,0)
 ;
"RTN","PSSFDBDI",64,0)
 S SPACE=$C(32)
"RTN","PSSFDBDI",65,0)
 S SCHEMA="gov/va/med/pharmacy/peps/external/common/preencapsulation/vo/dosing/info/request dosingInfoSchemaInput.xsd"
"RTN","PSSFDBDI",66,0)
 S XMLNS="gov/va/med/pharmacy/peps/external/common/preencapsulation/vo/dosing/info/request"
"RTN","PSSFDBDI",67,0)
 S TAG="dosingInfoRequest"
"RTN","PSSFDBDI",68,0)
 S SUBXML="<"_TAG_SPACE
"RTN","PSSFDBDI",69,0)
 S SUBXML=SUBXML_$$ATRIBUTE^PSSHRCOM(SPACE_"xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance")
"RTN","PSSFDBDI",70,0)
 S SUBXML=SUBXML_$$ATRIBUTE^PSSHRCOM(SPACE_"xsi:schemaLocation",SCHEMA)
"RTN","PSSFDBDI",71,0)
 S SUBXML=SUBXML_$$ATRIBUTE^PSSHRCOM(SPACE_"xmlns",XMLNS)
"RTN","PSSFDBDI",72,0)
 S PSSXML=PSSXML_SUBXML_">"
"RTN","PSSFDBDI",73,0)
 S DOSETAG="<dosingInfo",ENDTAG="/>",FDBDX=999
"RTN","PSSFDBDI",74,0)
 S PSSXML=PSSXML_DOSETAG_SPACE_$$ATRIBUTE^PSSHRCOM("gcnSeqNo",GCNSEQ)_SPACE_$$ATRIBUTE^PSSHRCOM("fdbdx",FDBDX)_SPACE_ENDTAG
"RTN","PSSFDBDI",75,0)
 S PSSXML=PSSXML_"</"_TAG_">"
"RTN","PSSFDBDI",76,0)
 Q PSSXML
"RTN","PSSFDBDI",77,0)
 ;
"RTN","PSSFDBDI",78,0)
POST(XML,PSSGCN,PSSOUT) ; post the XML request to PEPS server and return the routes
"RTN","PSSFDBDI",79,0)
 ;  input: XML request
"RTN","PSSFDBDI",80,0)
 ; output: PSSOUT - array containing the list of route names for the given drug.
"RTN","PSSFDBDI",81,0)
 ;
"RTN","PSSFDBDI",82,0)
 N PSS,PSSERR,PSSFDBDI S PSSFDBDI=1
"RTN","PSSFDBDI",83,0)
 N $ETRAP,$ESTACK
"RTN","PSSFDBDI",84,0)
 ; Set error trap
"RTN","PSSFDBDI",85,0)
 SET $ETRAP="DO ERROR^PSSHTTP"
"RTN","PSSFDBDI",86,0)
 K ^TMP($J,"OUT")    ; if exists from previous runs, posting would not execute.
"RTN","PSSFDBDI",87,0)
 ;
"RTN","PSSFDBDI",88,0)
 S PSS("server")="PEPS"
"RTN","PSSFDBDI",89,0)
 S PSS("webserviceName")="DOSING_INFO"
"RTN","PSSFDBDI",90,0)
 S PSS("path")="dosinginfo"
"RTN","PSSFDBDI",91,0)
 S PSS("parameterName")="xmlRequest"
"RTN","PSSFDBDI",92,0)
 S PSS("parameterValue")=XML
"RTN","PSSFDBDI",93,0)
 ;
"RTN","PSSFDBDI",94,0)
 ; get instance of client REST request object
"RTN","PSSFDBDI",95,0)
 SET PSS("restObject")=$$GETREST^XOBWLIB(PSS("webserviceName"),PSS("server"))
"RTN","PSSFDBDI",96,0)
 IF $DATA(^TMP($JOB,"OUT","EXCEPTION"))>0 S PSSOUT(0)="-1^"_^TMP($JOB,"OUT","EXCEPTION") K ^TMP($JOB,"OUT","EXCEPTION") Q PSSOUT
"RTN","PSSFDBDI",97,0)
 ;
"RTN","PSSFDBDI",98,0)
 ; insert XML as parameter
"RTN","PSSFDBDI",99,0)
 DO PSS("restObject").InsertFormData(PSS("parameterName"),PSS("parameterValue"))
"RTN","PSSFDBDI",100,0)
 IF $DATA(^TMP($JOB,"OUT","EXCEPTION"))>0 S PSSOUT(0)="-1^"_^TMP($JOB,"OUT","EXCEPTION") K ^TMP($JOB,"OUT","EXCEPTION") QUIT PSSOUT
"RTN","PSSFDBDI",101,0)
 ;
"RTN","PSSFDBDI",102,0)
 ; execute HTTP Post method
"RTN","PSSFDBDI",103,0)
 SET PSS("postResult")=$$POST^XOBWLIB(PSS("restObject"),PSS("path"),.PSSERR)
"RTN","PSSFDBDI",104,0)
 IF $DATA(^TMP($JOB,"OUT","EXCEPTION"))>0 S PSSOUT(0)="-1^"_^TMP($JOB,"OUT","EXCEPTION") K ^TMP($JOB,"OUT","EXCEPTION") QUIT PSSOUT
"RTN","PSSFDBDI",105,0)
 ;
"RTN","PSSFDBDI",106,0)
 ; error handling
"RTN","PSSFDBDI",107,0)
 DO:'PSS("postResult")
"RTN","PSSFDBDI",108,0)
 . SET PSSOUT(0)=-1_U_"Unable to make http request."
"RTN","PSSFDBDI",109,0)
 . SET PSS("result")=0
"RTN","PSSFDBDI",110,0)
 . QUIT
"RTN","PSSFDBDI",111,0)
 ;
"RTN","PSSFDBDI",112,0)
 ; if every thing is ok parse the returned xml result
"RTN","PSSFDBDI",113,0)
 D:PSS("postResult")
"RTN","PSSFDBDI",114,0)
 .S PSS("result")=##class(gov.va.med.pre.ws.XMLHandler).getHandleToXmlDoc(PSS("restObject").HttpResponse.Data, .DOCHAND) 
"RTN","PSSFDBDI",115,0)
 .S PSSOUT(0)=0 ; this will be set to 1 if non-null route text value(s) are found in line tag PARSRTE
"RTN","PSSFDBDI",116,0)
 .D PARSXML(DOCHAND,PSSGCN,.PSSOUT)
"RTN","PSSFDBDI",117,0)
 .Q
"RTN","PSSFDBDI",118,0)
 S PSSOUT(0)=1
"RTN","PSSFDBDI",119,0)
 I $D(^TMP($J,"OUT","EXCEPTION")) S PSSOUT(0)="-1^"_^TMP($J,"OUT","EXCEPTION") K ^TMP($J,"OUT","EXCEPTION"),^TMP($J,"PSSFDBDI")
"RTN","PSSFDBDI",120,0)
 ; Clean up after using the handle
"RTN","PSSFDBDI",121,0)
 D DELETE^MXMLDOM(DOCHAND)
"RTN","PSSFDBDI",122,0)
 K ^TMP($J,"OUT XML")
"RTN","PSSFDBDI",123,0)
 Q PSS("result")
"RTN","PSSFDBDI",124,0)
 ;
"RTN","PSSFDBDI",125,0)
PARSXML(DOCHAND,PSSGCN,PSSOUT) ; read result
"RTN","PSSFDBDI",126,0)
 ; @DOCHAND = Handle to XML Document
"RTN","PSSFDBDI",127,0)
 ; @PSSOUT  = output array
"RTN","PSSFDBDI",128,0)
 S PSS("rootName")=$$NAME^MXMLDOM(DOCHAND,1)
"RTN","PSSFDBDI",129,0)
 S PSS("child")=0
"RTN","PSSFDBDI",130,0)
 F  S PSS("child")=$$CHILD^MXMLDOM(DOCHAND,1,PSS("child")) Q:PSS("child")=0  D 
"RTN","PSSFDBDI",131,0)
 .S PSS("childName")=$$NAME^MXMLDOM(DOCHAND,PSS("child"))
"RTN","PSSFDBDI",132,0)
 .D:PSS("childName")="dosingInfo" PARSDOIN(DOCHAND,+PSSGCN,PSS("child"),.PSSOUT)
"RTN","PSSFDBDI",133,0)
 Q
"RTN","PSSFDBDI",134,0)
 ;
"RTN","PSSFDBDI",135,0)
PARSDOIN(DOCHAND,PSSGCN,NODE,PSSOUT) ; parse dosingInfo element
"RTN","PSSFDBDI",136,0)
 ; @DOCHAND = Handle to XML Document
"RTN","PSSFDBDI",137,0)
 ; @NODE    = Document node
"RTN","PSSFDBDI",138,0)
 ; @PSSOUT  = output array
"RTN","PSSFDBDI",139,0)
 N PSS,PSSDR,PSSMM,PSSOUT2
"RTN","PSSFDBDI",140,0)
 D GETFILE(.PSSDR,.PSSMM)
"RTN","PSSFDBDI",141,0)
 D READDOIN(DOCHAND,PSSGCN,NODE,.PSSOUT,.PSSOUT2)
"RTN","PSSFDBDI",142,0)
 S PSS("child")=0
"RTN","PSSFDBDI",143,0)
 F  S PSS("child")=$$CHILD^MXMLDOM(DOCHAND,NODE,PSS("child")) Q:PSS("child")=0  D 
"RTN","PSSFDBDI",144,0)
 .S PSS("childName")=$$NAME^MXMLDOM(DOCHAND,PSS("child"))
"RTN","PSSFDBDI",145,0)
 .D:PSS("childName")="doseRanges" PARSDORG(DOCHAND,PSSGCN,PSS("child"),.PSSOUT,.PSSOUT2,.PSSDR)
"RTN","PSSFDBDI",146,0)
 .;D:PSS("childName")="minMaxResults" PARSDOMM(DOCHAND,PSSGCN,PSS("child"),.PSSOUT,.PSSOUT2,.PSSMM)
"RTN","PSSFDBDI",147,0)
 .;D:PSS("childName")="neonatalDoseRanges" PARSDONN(DOCHAND,PSSGCN,PSS("child"),.PSSOUT)
"RTN","PSSFDBDI",148,0)
 .D:PSS("childName")="dispensableDrugName" READDODN(DOCHAND,PSSGCN,PSS("child"),.PSSOUT,.PSSOUT2)
"RTN","PSSFDBDI",149,0)
 .D:PSS("childName")="dispensableDrugDescription" READDODD(DOCHAND,PSSGCN,PSS("child"),.PSSOUT,.PSSOUT2)
"RTN","PSSFDBDI",150,0)
 D SETXREFS(.PSSOUT2)
"RTN","PSSFDBDI",151,0)
 M ^TMP($J,"PSSFDBDI")=PSSOUT2
"RTN","PSSFDBDI",152,0)
 Q
"RTN","PSSFDBDI",153,0)
 ;
"RTN","PSSFDBDI",154,0)
READDOIN(DOCHAND,PSSGCN,NODE,PSSOUT,PSSOUT2) ; read dosingInfo attributes
"RTN","PSSFDBDI",155,0)
 ; @DOCHAND = Handle to XML Document
"RTN","PSSFDBDI",156,0)
 ; @NODE    = Document node
"RTN","PSSFDBDI",157,0)
 ; @PSSOUT  = output array
"RTN","PSSFDBDI",158,0)
 ; @PSSOUT2 = output array for building ^tmp
"RTN","PSSFDBDI",159,0)
 N PSS
"RTN","PSSFDBDI",160,0)
 S PSS("attr")=""
"RTN","PSSFDBDI",161,0)
 F  S PSS("attr")=$$ATTRIB^MXMLDOM(DOCHAND,NODE,PSS("attr")) Q:PSS("attr")=""  D 
"RTN","PSSFDBDI",162,0)
 .I (PSS("attr"))="fdbdx" D  Q
"RTN","PSSFDBDI",163,0)
 ..S PSS("fdbdx")=$$VALUE^MXMLDOM(DOCHAND,NODE,PSS("attr"))
"RTN","PSSFDBDI",164,0)
 ..S $P(PSSOUT2(PSSGCN,0),U,5)=PSS("fdbdx")
"RTN","PSSFDBDI",165,0)
 .I (PSS("attr"))="gcnSeqNo" D  Q
"RTN","PSSFDBDI",166,0)
 ..S PSS("gcnSeqNo")=$$VALUE^MXMLDOM(DOCHAND,NODE,PSS("attr"))
"RTN","PSSFDBDI",167,0)
 ..S $P(PSSOUT2(PSSGCN,0),U)=PSS("gcnSeqNo")
"RTN","PSSFDBDI",168,0)
 S $P(PSSOUT2(PSSGCN,0),U,2)=PSSGCN
"RTN","PSSFDBDI",169,0)
 Q
"RTN","PSSFDBDI",170,0)
 ;
"RTN","PSSFDBDI",171,0)
PARSDORG(DOCHAND,PSSGCN,NODE,PSSOUT,PSSOUT2,PSSDR) ; parse doseRange element
"RTN","PSSFDBDI",172,0)
 ; @DOCHAND = Handle to XML Document
"RTN","PSSFDBDI",173,0)
 ; @PSSGCN  = GCN passed in to API
"RTN","PSSFDBDI",174,0)
 ; @NODE    = Document node
"RTN","PSSFDBDI",175,0)
 ; @PSSOUT  = output array
"RTN","PSSFDBDI",176,0)
 ; @PSSOUT2 = output array for building ^tmp
"RTN","PSSFDBDI",177,0)
 ; @PSSDR   = array used for finding element with ^tmp node locations
"RTN","PSSFDBDI",178,0)
 N PSS
"RTN","PSSFDBDI",179,0)
 S PSS("child")=0
"RTN","PSSFDBDI",180,0)
 F  S PSS("child")=$$CHILD^MXMLDOM(DOCHAND,NODE,PSS("child")) Q:PSS("child")=0  D 
"RTN","PSSFDBDI",181,0)
 .S PSS("childName")=$$NAME^MXMLDOM(DOCHAND,PSS("child"))
"RTN","PSSFDBDI",182,0)
 .S PSSDR(0)=PSSDR(0)+1
"RTN","PSSFDBDI",183,0)
 .D:PSS("childName")="doseRange" 
"RTN","PSSFDBDI",184,0)
 ..D READDORG(DOCHAND,PSSGCN,PSS("child"),.PSSOUT,.PSSOUT2,.PSSDR)
"RTN","PSSFDBDI",185,0)
 ..D PARSDORC(DOCHAND,PSSGCN,PSS("child"),.PSSOUT,.PSSOUT2,.PSSDR)
"RTN","PSSFDBDI",186,0)
 Q
"RTN","PSSFDBDI",187,0)
 ;
"RTN","PSSFDBDI",188,0)
READDORG(DOCHAND,PSSGCN,NODE,PSSOUT,PSSOUT2,PSSDR) ; read doseRange attributes
"RTN","PSSFDBDI",189,0)
 ; @DOCHAND = Handle to XML Document
"RTN","PSSFDBDI",190,0)
 ; @PSSGCN  = GCN passed in to API
"RTN","PSSFDBDI",191,0)
 ; @NODE    = Document node
"RTN","PSSFDBDI",192,0)
 ; @PSSOUT  = output array
"RTN","PSSFDBDI",193,0)
 ; @PSSOUT2 = output array for building ^tmp
"RTN","PSSFDBDI",194,0)
 ; @PSSDR   = array used for finding element with ^tmp node locations
"RTN","PSSFDBDI",195,0)
 N PSS
"RTN","PSSFDBDI",196,0)
 S PSS("attr")=""
"RTN","PSSFDBDI",197,0)
 F  S PSS("attr")=$$ATTRIB^MXMLDOM(DOCHAND,NODE,PSS("attr")) Q:PSS("attr")=""  D:$D(PSSDR(PSS("attr"))) 
"RTN","PSSFDBDI",198,0)
 .N ANODE,APIECE
"RTN","PSSFDBDI",199,0)
 .S ANODE=$P(PSSDR(PSS("attr")),U,1)
"RTN","PSSFDBDI",200,0)
 .Q:ANODE=""
"RTN","PSSFDBDI",201,0)
 .S APIECE=$P(PSSDR(PSS("attr")),U,2)
"RTN","PSSFDBDI",202,0)
 .Q:APIECE=""
"RTN","PSSFDBDI",203,0)
 .S $P(PSSOUT2(PSSGCN,"doseRanges",PSSDR(0),ANODE,0),U,APIECE)=$$VALUE^MXMLDOM(DOCHAND,NODE,PSS("attr"))
"RTN","PSSFDBDI",204,0)
 Q
"RTN","PSSFDBDI",205,0)
 ;
"RTN","PSSFDBDI",206,0)
PARSDORC(DOCHAND,PSSGCN,NODE,PSSOUT,PSSOUT2,PSSDR) ; parse doseRange child element
"RTN","PSSFDBDI",207,0)
 ; @DOCHAND = Handle to XML Document
"RTN","PSSFDBDI",208,0)
 ; @PSSGCN  = GCN passed in to API
"RTN","PSSFDBDI",209,0)
 ; @NODE    = Document node
"RTN","PSSFDBDI",210,0)
 ; @PSSOUT  = output array
"RTN","PSSFDBDI",211,0)
 ; @PSSOUT2 = output array for building ^tmp
"RTN","PSSFDBDI",212,0)
 ; @PSSDR   = array used for finding element with ^tmp node locations
"RTN","PSSFDBDI",213,0)
 N PSS
"RTN","PSSFDBDI",214,0)
 S PSS("child")=0
"RTN","PSSFDBDI",215,0)
 F  S PSS("child")=$$CHILD^MXMLDOM(DOCHAND,NODE,PSS("child")) Q:PSS("child")=0  D 
"RTN","PSSFDBDI",216,0)
 .S PSS("childName")=$$NAME^MXMLDOM(DOCHAND,PSS("child"))
"RTN","PSSFDBDI",217,0)
 .D:$D(PSSDR(PSS("childName")))
"RTN","PSSFDBDI",218,0)
 ..N ANODE,APIECE
"RTN","PSSFDBDI",219,0)
 ..S ANODE=$P(PSSDR(PSS("childName")),U,1)
"RTN","PSSFDBDI",220,0)
 ..Q:ANODE=""
"RTN","PSSFDBDI",221,0)
 ..S APIECE=$P(PSSDR(PSS("childName")),U,2)
"RTN","PSSFDBDI",222,0)
 ..Q:APIECE=""
"RTN","PSSFDBDI",223,0)
 ..S $P(PSSOUT2(PSSGCN,"doseRanges",PSSDR(0),ANODE,0),U,APIECE)=$$GETTEXT^PSSHRCOM(DOCHAND,PSS("child"))
"RTN","PSSFDBDI",224,0)
 Q
"RTN","PSSFDBDI",225,0)
 ;
"RTN","PSSFDBDI",226,0)
PARSDOMM(DOCHAND,PSSGCN,NODE,PSSOUT,PSSOUT2,PSSMM) ; parse minMaxResults element ; not implemented as of PSS*1*201
"RTN","PSSFDBDI",227,0)
 ; @DOCHAND = Handle to XML Document
"RTN","PSSFDBDI",228,0)
 ; @PSSGCN  = GCN passed in to API
"RTN","PSSFDBDI",229,0)
 ; @NODE    = Document node
"RTN","PSSFDBDI",230,0)
 ; @PSSOUT  = output array
"RTN","PSSFDBDI",231,0)
 ; @PSSOUT2 = output array for building ^tmp
"RTN","PSSFDBDI",232,0)
 ; @PSSMM   = array used for finding element with ^tmp node locations
"RTN","PSSFDBDI",233,0)
 Q
"RTN","PSSFDBDI",234,0)
 N PSS
"RTN","PSSFDBDI",235,0)
 S PSS("child")=0
"RTN","PSSFDBDI",236,0)
 F  S PSS("child")=$$CHILD^MXMLDOM(DOCHAND,NODE,PSS("child")) Q:PSS("child")=0  D 
"RTN","PSSFDBDI",237,0)
 .S PSS("childName")=$$NAME^MXMLDOM(DOCHAND,PSS("child"))
"RTN","PSSFDBDI",238,0)
 .;W !?6,PSS("child")_" : "_PSS("childName")
"RTN","PSSFDBDI",239,0)
 Q
"RTN","PSSFDBDI",240,0)
 ;
"RTN","PSSFDBDI",241,0)
PARSDONN(DOCHAND,PSSGCN,NODE,PSSOUT) ; parse neonatalDoseRanges element ; not implemented as of PSS*1*201
"RTN","PSSFDBDI",242,0)
 ; @DOCHAND = Handle to XML Document
"RTN","PSSFDBDI",243,0)
 ; @PSSGCN  = GCN passed in to API
"RTN","PSSFDBDI",244,0)
 ; @NODE    = Document node
"RTN","PSSFDBDI",245,0)
 ; @PSSOUT  = output array
"RTN","PSSFDBDI",246,0)
 Q
"RTN","PSSFDBDI",247,0)
 N PSS
"RTN","PSSFDBDI",248,0)
 S PSS("child")=0
"RTN","PSSFDBDI",249,0)
 F  S PSS("child")=$$CHILD^MXMLDOM(DOCHAND,NODE,PSS("child")) Q:PSS("child")=0  D 
"RTN","PSSFDBDI",250,0)
 .S PSS("childName")=$$NAME^MXMLDOM(DOCHAND,PSS("child"))
"RTN","PSSFDBDI",251,0)
 .;W !?6,PSS("child")_" : "_PSS("childName")
"RTN","PSSFDBDI",252,0)
 Q
"RTN","PSSFDBDI",253,0)
 ;
"RTN","PSSFDBDI",254,0)
READDODN(DOCHAND,PSSGCN,NODE,PSSOUT,PSSOUT2) ; read dispensableDrugName element
"RTN","PSSFDBDI",255,0)
 ; @DOCHAND = Handle to XML Document
"RTN","PSSFDBDI",256,0)
 ; @PSSGCN  = GCN passed in to API
"RTN","PSSFDBDI",257,0)
 ; @NODE    = Document node
"RTN","PSSFDBDI",258,0)
 ; @PSSOUT  = output array
"RTN","PSSFDBDI",259,0)
 ; @PSSOUT2 = output array for building ^tmp
"RTN","PSSFDBDI",260,0)
 N PSS
"RTN","PSSFDBDI",261,0)
 S PSS("childText")=$$GETTEXT^PSSHRCOM(DOCHAND,NODE)
"RTN","PSSFDBDI",262,0)
 D:PSS("childText")'="" 
"RTN","PSSFDBDI",263,0)
 .S $P(PSSOUT2(PSSGCN,0),U,3)=PSS("childText")
"RTN","PSSFDBDI",264,0)
 Q
"RTN","PSSFDBDI",265,0)
 ;
"RTN","PSSFDBDI",266,0)
READDODD(DOCHAND,PSSGCN,NODE,PSSOUT,PSSOUT2) ; read dispensableDrugDescription element
"RTN","PSSFDBDI",267,0)
 ; @DOCHAND = Handle to XML Document
"RTN","PSSFDBDI",268,0)
 ; @PSSGCN  = GCN passed in to API
"RTN","PSSFDBDI",269,0)
 ; @NODE    = Document node
"RTN","PSSFDBDI",270,0)
 ; @PSSOUT  = output array
"RTN","PSSFDBDI",271,0)
 ; @PSSOUT2 = output array for building ^tmp
"RTN","PSSFDBDI",272,0)
 N PSS
"RTN","PSSFDBDI",273,0)
 S PSS("childText")=$$GETTEXT^PSSHRCOM(DOCHAND,NODE)
"RTN","PSSFDBDI",274,0)
 D:PSS("childText")'="" 
"RTN","PSSFDBDI",275,0)
 .S $P(PSSOUT2(PSSGCN,0),U,4)=PSS("childText")
"RTN","PSSFDBDI",276,0)
 Q
"RTN","PSSFDBDI",277,0)
 ;
"RTN","PSSFDBDI",278,0)
SETXREFS(PSSOUT2) ; set "A","B","C", zero node cross references & values
"RTN","PSSFDBDI",279,0)
 N FIRST,FLD2,FLD8,FLD7,FLD3,PSSSORT
"RTN","PSSFDBDI",280,0)
 S (FIRST,GCNSEQ,SEQ,SEQ2,SEQ3,SEQ4,FTYPE,TYP2,TYP3)="",FTYPE=0
"RTN","PSSFDBDI",281,0)
 M PSSSORT=PSSOUT2
"RTN","PSSFDBDI",282,0)
 F  S GCNSEQ=$O(PSSOUT2(GCNSEQ)) Q:GCNSEQ=""  D
"RTN","PSSFDBDI",283,0)
 .I '$G(FIRST),$D(PSSOUT2(GCNSEQ)) D 
"RTN","PSSFDBDI",284,0)
 ..S PSSSORT("B",GCNSEQ)=$P(PSSOUT2(GCNSEQ,0),"^",3)
"RTN","PSSFDBDI",285,0)
 ..S FIRST=1
"RTN","PSSFDBDI",286,0)
 ..F  S FTYPE=$O(PSSOUT2(GCNSEQ,FTYPE)) Q:FTYPE=""!(FTYPE="A")  D 
"RTN","PSSFDBDI",287,0)
 ...F  S SEQ=$O(PSSOUT2(GCNSEQ,FTYPE,SEQ)) Q:SEQ=""  D 
"RTN","PSSFDBDI",288,0)
 ....F  S SEQ2=$O(PSSOUT2(GCNSEQ,FTYPE,SEQ,SEQ2)) Q:SEQ2=""  D
"RTN","PSSFDBDI",289,0)
 .....F  S SEQ3=$O(PSSOUT2(GCNSEQ,FTYPE,SEQ,SEQ2,SEQ3)) Q:SEQ3=""  D
"RTN","PSSFDBDI",290,0)
 ......I SEQ2=1,FTYPE="doseRanges" D 
"RTN","PSSFDBDI",291,0)
 .......N FLDS,FLD1
"RTN","PSSFDBDI",292,0)
 .......S (FLDS,FLD3,FLD7,FLD8,FLD1)=""
"RTN","PSSFDBDI",293,0)
 .......S FLDS=PSSOUT2(GCNSEQ,FTYPE,SEQ,SEQ2,SEQ3)
"RTN","PSSFDBDI",294,0)
 .......F I=1,3,7,8 S @("FLD"_I)=$P(FLDS,"^",I)
"RTN","PSSFDBDI",295,0)
 .......S PSSSORT("A",FLD3,FLD7,FLD8,SEQ)=FLD1
"RTN","PSSFDBDI",296,0)
 .......S PSSSORT("C",FLD7,FLD8,FLD3,SEQ)=FLD1
"RTN","PSSFDBDI",297,0)
 S PSSSORT(0)="DOSING INFORMATION FOR A SPECIFIC DRUG^^1^1"
"RTN","PSSFDBDI",298,0)
 M PSSOUT2=PSSSORT
"RTN","PSSFDBDI",299,0)
 Q
"RTN","PSSFDBDI",300,0)
 ;
"RTN","PSSFDBDI",301,0)
GETFILE(PSSDR,PSSMM) ;
"RTN","PSSFDBDI",302,0)
 N I,PSSTYPE,PSSFILE,PSSFLD,PSSNODE,PSSPIECE
"RTN","PSSFDBDI",303,0)
 F I=1:1 S PSSFILE=$P($T(FILE+I),";;",2,99) Q:PSSFILE=""  D
"RTN","PSSFDBDI",304,0)
 .S PSSTYPE=$P(PSSFILE,";"),PSSFLD=$P(PSSFILE,";",2),PSSNODE=$P(PSSFILE,";",3),PSSPIECE=$P(PSSFILE,";",4)
"RTN","PSSFDBDI",305,0)
 .I PSSTYPE="" S PSSDR(PSSFLD)=PSSNODE_"^"_PSSPIECE
"RTN","PSSFDBDI",306,0)
 .I PSSTYPE="MM" S PSSMM(PSSFLD)=PSSNODE_"^"_PSSPIECE
"RTN","PSSFDBDI",307,0)
 Q
"RTN","PSSFDBDI",308,0)
 ;
"RTN","PSSFDBDI",309,0)
FILE ;file structure for the temp file for each data field imported from FDB
"RTN","PSSFDBDI",310,0)
 ;;;0
"RTN","PSSFDBDI",311,0)
 ;;;custom;1;1
"RTN","PSSFDBDI",312,0)
 ;;;category;1;2
"RTN","PSSFDBDI",313,0)
 ;;;doseTypeId;1;3
"RTN","PSSFDBDI",314,0)
 ;;;doseTypeDescription;1;4
"RTN","PSSFDBDI",315,0)
 ;;;doseRouteId;1;5
"RTN","PSSFDBDI",316,0)
 ;;;intlDoseRouteDescription;1;6
"RTN","PSSFDBDI",317,0)
 ;;;ageLowInDays;1;7
"RTN","PSSFDBDI",318,0)
 ;;;ageHighInDays;1;8
"RTN","PSSFDBDI",319,0)
 ;;;hitIndicationId;2;1
"RTN","PSSFDBDI",320,0)
 ;;;hitIndicationDescription;2;2
"RTN","PSSFDBDI",321,0)
 ;;;indicationId;2;3
"RTN","PSSFDBDI",322,0)
 ;;;indicationDescription;2;4
"RTN","PSSFDBDI",323,0)
 ;;;indicationIdType;2;5
"RTN","PSSFDBDI",324,0)
 ;;;resultType;2;6
"RTN","PSSFDBDI",325,0)
 ;;;warningCode;2;7
"RTN","PSSFDBDI",326,0)
 ;;;bsaRequired;3;1
"RTN","PSSFDBDI",327,0)
 ;;;weightRequired;3;2
"RTN","PSSFDBDI",328,0)
 ;;;hepaticImpairment;3;3
"RTN","PSSFDBDI",329,0)
 ;;;renalImpairment;3;4
"RTN","PSSFDBDI",330,0)
 ;;;lowEliminationHalfLife;3;5
"RTN","PSSFDBDI",331,0)
 ;;;highEliminationHalfLife;3;6
"RTN","PSSFDBDI",332,0)
 ;;;halfLifeUnit;3;7
"RTN","PSSFDBDI",333,0)
 ;;;crclThreshold;3;8
"RTN","PSSFDBDI",334,0)
 ;;;crclThresholdUnit;3;9
"RTN","PSSFDBDI",335,0)
 ;;;durationLow;4;1
"RTN","PSSFDBDI",336,0)
 ;;;durationHigh;4;2
"RTN","PSSFDBDI",337,0)
 ;;;maxDuration;4;3
"RTN","PSSFDBDI",338,0)
 ;;;frequencyLow;4;4
"RTN","PSSFDBDI",339,0)
 ;;;frequencyHigh;4;5
"RTN","PSSFDBDI",340,0)
 ;;;doseLow;5;1
"RTN","PSSFDBDI",341,0)
 ;;;doseLowUnit;5;2
"RTN","PSSFDBDI",342,0)
 ;;;doseHigh;5;3
"RTN","PSSFDBDI",343,0)
 ;;;doseHighUnit;5;4
"RTN","PSSFDBDI",344,0)
 ;;;doseFormLow;5;5
"RTN","PSSFDBDI",345,0)
 ;;;doseFormLowUnit;5;6
"RTN","PSSFDBDI",346,0)
 ;;;doseFormHigh;5;7
"RTN","PSSFDBDI",347,0)
 ;;;doseFormHighUnit;5;8
"RTN","PSSFDBDI",348,0)
 ;;;maxSingleDose;6;1
"RTN","PSSFDBDI",349,0)
 ;;;maxSingleDoseUnit;6;2
"RTN","PSSFDBDI",350,0)
 ;;;maxSingleDoseForm;6;3
"RTN","PSSFDBDI",351,0)
 ;;;maxSingleDoseFormUnit;6;4
"RTN","PSSFDBDI",352,0)
 ;;;maxDailyDose6;5
"RTN","PSSFDBDI",353,0)
 ;;;maxDailyDoseUnit;6;6
"RTN","PSSFDBDI",354,0)
 ;;;maxDailyDoseForm;6;7
"RTN","PSSFDBDI",355,0)
 ;;;maxDailyDoseFormUnit;6;8
"RTN","PSSFDBDI",356,0)
 ;;;maxLifetimeDose;7;1
"RTN","PSSFDBDI",357,0)
 ;;;maxLifetimeDoseUnit;7;2
"RTN","PSSFDBDI",358,0)
 ;;;maxLifetimeDoseForm;7;3
"RTN","PSSFDBDI",359,0)
 ;;;maxLifetimeDoseFormUnit;7;4
"RTN","PSSFDBDI",360,0)
 ;;MM;0
"RTN","PSSFDBDI",361,0)
 ;;MM;doseLow;1;1
"RTN","PSSFDBDI",362,0)
 ;;MM;doseLowUnit;1;2
"RTN","PSSFDBDI",363,0)
 ;;MM;doseHigh;1;3
"RTN","PSSFDBDI",364,0)
 ;;MM;doseHighUnit;1;4
"RTN","PSSFDBDI",365,0)
 ;;MM;doseFormLow;1;5
"RTN","PSSFDBDI",366,0)
 ;;MM;doseFormLowUnit;1;6
"RTN","PSSFDBDI",367,0)
 ;;MM;doseFormHigh;1;7
"RTN","PSSFDBDI",368,0)
 ;;MM;doseFormHighUnit;1;8
"RTN","PSSFDBDI",369,0)
 ;;MM;maxDailyDose;2;1
"RTN","PSSFDBDI",370,0)
 ;;MM;maxDailyDoseUnit;2;2
"RTN","PSSFDBDI",371,0)
 ;;MM;maxDailyDoseForm;2;3
"RTN","PSSFDBDI",372,0)
 ;;MM;maxDailyDoseFormUnit;2;4
"RTN","PSSFDBDI",373,0)
 ;;MM;resultType;2;5
"RTN","PSSFDBDI",374,0)
 ;;MM;warningCode;2;6
"RTN","PSSFDBDI",375,0)
 ;;MM;bsaRequired;2;7
"RTN","PSSFDBDI",376,0)
 ;;MM;weightRequired;2;8
"RTN","PSSFDBRT")
0^36^B38856842^B57759107
"RTN","PSSFDBRT",1,0)
PSSFDBRT ;WOIFO/PO - Sends XML Request to PEPS via HWSC ;09/20/07
"RTN","PSSFDBRT",2,0)
 ;;1.0;PHARMACY DATA MANAGEMENT;**136,160,201**;9/30/97;Build 23
"RTN","PSSFDBRT",3,0)
 ;
"RTN","PSSFDBRT",4,0)
 ; Reference to ^PSNDF(50.68 is supported by DBIA #3735
"RTN","PSSFDBRT",5,0)
 ; Reference to ^MXMLDOM is supported by DBIA #3561
"RTN","PSSFDBRT",6,0)
 ;
"RTN","PSSFDBRT",7,0)
 Q
"RTN","PSSFDBRT",8,0)
GROUTE(PSSIEN,PSSOUT) ; get the routes for given drug ien in drug file from PESPS via HWSC
"RTN","PSSFDBRT",9,0)
 ;  input: drug IEN from drug file (#50)
"RTN","PSSFDBRT",10,0)
 ; output: PSSOUT - array containing the list of route names for the given drug.
"RTN","PSSFDBRT",11,0)
 ;             e.g.  error/exception:  PSSOUT(0)= (-1 for database cannot be reached, 0 for exceptions or 1 for successfull call) ^ error or exception message 
"RTN","PSSFDBRT",12,0)
 ;
"RTN","PSSFDBRT",13,0)
 ;                    e.g. successfull:  PSSOUT(0)=1
"RTN","PSSFDBRT",14,0)
 ;                                                PSSOUT("CONTINUOUS INFUSION")=""
"RTN","PSSFDBRT",15,0)
 ;                                                PSSOUT("INTRAOSSEOUS")=""
"RTN","PSSFDBRT",16,0)
 ;  if for any reason can not get the route, it kills the PSSOUT
"RTN","PSSFDBRT",17,0)
 ;
"RTN","PSSFDBRT",18,0)
 N PSSXML,GCNSEQ,BASE,PSSRETR1
"RTN","PSSFDBRT",19,0)
 S BASE=$T(+0)_" GROUTE"
"RTN","PSSFDBRT",20,0)
 S GCNSEQ=$$DRUGGCN(PSSIEN)    ; get the GCN sequence number.
"RTN","PSSFDBRT",21,0)
 I GCNSEQ=0 S PSSOUT(0)="-1^GCN sequence number is not defined." Q  ; no GCN sequence number
"RTN","PSSFDBRT",22,0)
 S PSSXML=$$BLDXML(GCNSEQ)   ; build the xml request
"RTN","PSSFDBRT",23,0)
RETRY ;retry line tag
"RTN","PSSFDBRT",24,0)
 D POST(PSSXML,.PSSOUT)    ; post the request and process the results
"RTN","PSSFDBRT",25,0)
 I '$G(PSSRETR1),$P($G(PSSOUT(0)),"^")=-1 K PSSOUT S PSSRETR1=1 H 3 G RETRY
"RTN","PSSFDBRT",26,0)
 Q
"RTN","PSSFDBRT",27,0)
 ;
"RTN","PSSFDBRT",28,0)
DRUGGCN(DRGIEN) ; for given drug ien return the GCN sequence number.
"RTN","PSSFDBRT",29,0)
 ;  input: drug IEN from drug file (#50)
"RTN","PSSFDBRT",30,0)
 ; output: returns the GCN sequence number
"RTN","PSSFDBRT",31,0)
 ;
"RTN","PSSFDBRT",32,0)
 N GCN,VAPROD
"RTN","PSSFDBRT",33,0)
 S GCN=0  ; default
"RTN","PSSFDBRT",34,0)
 D
"RTN","PSSFDBRT",35,0)
 .S VAPROD=$P($G(^PSDRUG(+DRGIEN,"ND")),U,3) Q:'VAPROD
"RTN","PSSFDBRT",36,0)
 .S GCN=+$P($G(^PSNDF(50.68,+VAPROD,1)),U,5)
"RTN","PSSFDBRT",37,0)
 Q GCN
"RTN","PSSFDBRT",38,0)
 ;
"RTN","PSSFDBRT",39,0)
BLDXML(GCNSEQ) ; build and return the XML request with drug information for given GCN sequence number
"RTN","PSSFDBRT",40,0)
 ;  input: drug GCN from national drug file (#50.68)
"RTN","PSSFDBRT",41,0)
 ; output: returns the XML request for given GCN sequence number
"RTN","PSSFDBRT",42,0)
 ;
"RTN","PSSFDBRT",43,0)
 N PSSXML,DRUGIEN,DRUGTAG,ENDTAG
"RTN","PSSFDBRT",44,0)
 S PSSXML=""
"RTN","PSSFDBRT",45,0)
 D GETHEAD(.PSSXML)
"RTN","PSSFDBRT",46,0)
 D GETREQ(.PSSXML)
"RTN","PSSFDBRT",47,0)
 S DRUGTAG="<drug "
"RTN","PSSFDBRT",48,0)
 S ENDTAG="/>"
"RTN","PSSFDBRT",49,0)
 S PSSXML=PSSXML_DRUGTAG_$$ATRIBUTE^PSSHRCOM("gcnSeqNo",GCNSEQ)_ENDTAG
"RTN","PSSFDBRT",50,0)
 D ENDREQ(.PSSXML)
"RTN","PSSFDBRT",51,0)
 Q PSSXML
"RTN","PSSFDBRT",52,0)
 ;
"RTN","PSSFDBRT",53,0)
POST(XML,PSSOUT) ; post the XML request to PEPS server and return the routes
"RTN","PSSFDBRT",54,0)
 ;  input: XML request
"RTN","PSSFDBRT",55,0)
 ; output: PSSOUT - array containing the list of route names for the given drug.
"RTN","PSSFDBRT",56,0)
 ;
"RTN","PSSFDBRT",57,0)
 N PSS,PSSERR,PSSFDBRT S PSSFDBRT=1
"RTN","PSSFDBRT",58,0)
 N $ETRAP,$ESTACK
"RTN","PSSFDBRT",59,0)
 ; Set error trap
"RTN","PSSFDBRT",60,0)
 SET $ETRAP="DO ERROR^PSSHTTP"
"RTN","PSSFDBRT",61,0)
 K ^TMP($J,"OUT")    ; if exists from previous runs, posting would not execute.
"RTN","PSSFDBRT",62,0)
 ;
"RTN","PSSFDBRT",63,0)
 SET PSS("server")="PEPS"
"RTN","PSSFDBRT",64,0)
 SET PSS("webserviceName")="DRUG_INFO"
"RTN","PSSFDBRT",65,0)
 SET PSS("path")="druginfo"
"RTN","PSSFDBRT",66,0)
 SET PSS("parameterName")="xmlRequest"
"RTN","PSSFDBRT",67,0)
 SET PSS("parameterValue")=XML
"RTN","PSSFDBRT",68,0)
 ;
"RTN","PSSFDBRT",69,0)
 ; get instance of client REST request object
"RTN","PSSFDBRT",70,0)
 SET PSS("restObject")=$$GETREST^XOBWLIB(PSS("webserviceName"),PSS("server"))
"RTN","PSSFDBRT",71,0)
 IF $DATA(^TMP($JOB,"OUT","EXCEPTION"))>0 S PSSOUT(0)="-1^"_^TMP($JOB,"OUT","EXCEPTION") K ^TMP($JOB,"OUT","EXCEPTION") Q PSSOUT
"RTN","PSSFDBRT",72,0)
 ;
"RTN","PSSFDBRT",73,0)
 ; insert XML as parameter
"RTN","PSSFDBRT",74,0)
 DO PSS("restObject").InsertFormData(PSS("parameterName"),PSS("parameterValue"))
"RTN","PSSFDBRT",75,0)
 IF $DATA(^TMP($JOB,"OUT","EXCEPTION"))>0 S PSSOUT(0)="-1^"_^TMP($JOB,"OUT","EXCEPTION") K ^TMP($JOB,"OUT","EXCEPTION") QUIT PSSOUT
"RTN","PSSFDBRT",76,0)
 ;
"RTN","PSSFDBRT",77,0)
 ; execute HTTP Post method
"RTN","PSSFDBRT",78,0)
 SET PSS("postResult")=$$POST^XOBWLIB(PSS("restObject"),PSS("path"),.PSSERR)
"RTN","PSSFDBRT",79,0)
 IF $DATA(^TMP($JOB,"OUT","EXCEPTION"))>0 S PSSOUT(0)="-1^"_^TMP($JOB,"OUT","EXCEPTION") K ^TMP($JOB,"OUT","EXCEPTION") QUIT PSSOUT
"RTN","PSSFDBRT",80,0)
 ;
"RTN","PSSFDBRT",81,0)
 ; error handling
"RTN","PSSFDBRT",82,0)
 DO:'PSS("postResult")
"RTN","PSSFDBRT",83,0)
 . SET PSSOUT(0)=-1_U_"Unable to make http request."
"RTN","PSSFDBRT",84,0)
 . SET PSS("result")=0
"RTN","PSSFDBRT",85,0)
 . QUIT
"RTN","PSSFDBRT",86,0)
 ;
"RTN","PSSFDBRT",87,0)
 ; if every thing is ok parse the returned xml result
"RTN","PSSFDBRT",88,0)
 D:PSS("postResult")
"RTN","PSSFDBRT",89,0)
 .S PSS("result")=##class(gov.va.med.pre.ws.XMLHandler).getHandleToXmlDoc(PSS("restObject").HttpResponse.Data, .DOCHAND) 
"RTN","PSSFDBRT",90,0)
 .S PSSOUT(0)=0 ; this will be set to 1 if non-null route text value(s) are found in line tag PARSRTE
"RTN","PSSFDBRT",91,0)
 .D PARSXML(DOCHAND,.PSSOUT)
"RTN","PSSFDBRT",92,0)
 .Q
"RTN","PSSFDBRT",93,0)
 ; Clean up after using the handle
"RTN","PSSFDBRT",94,0)
 D DELETE^MXMLDOM(DOCHAND)
"RTN","PSSFDBRT",95,0)
 K ^TMP($J,"OUT XML")
"RTN","PSSFDBRT",96,0)
 Q PSS("result")
"RTN","PSSFDBRT",97,0)
 ;
"RTN","PSSFDBRT",98,0)
PARSXML(DOCHAND,PSSOUT) ; read result
"RTN","PSSFDBRT",99,0)
 ; @DOCHAND = Handle to XML Document
"RTN","PSSFDBRT",100,0)
 ; @PSSOUT  = output array
"RTN","PSSFDBRT",101,0)
 S PSS("rootName")=$$NAME^MXMLDOM(DOCHAND,1)
"RTN","PSSFDBRT",102,0)
 S PSS("child")=0
"RTN","PSSFDBRT",103,0)
 F  S PSS("child")=$$CHILD^MXMLDOM(DOCHAND,1,PSS("child")) Q:PSS("child")=0  D 
"RTN","PSSFDBRT",104,0)
 .S PSS("childName")=$$NAME^MXMLDOM(DOCHAND,PSS("child"))
"RTN","PSSFDBRT",105,0)
 .D:PSS("childName")="drug" PARSDRUG(DOCHAND,PSS("child"),.PSSOUT)
"RTN","PSSFDBRT",106,0)
 Q
"RTN","PSSFDBRT",107,0)
 ;
"RTN","PSSFDBRT",108,0)
PARSDRUG(DOCHAND,NODE,PSSOUT) ; read drug element
"RTN","PSSFDBRT",109,0)
 ; @DOCHAND = Handle to XML Document
"RTN","PSSFDBRT",110,0)
 ; @NODE    = Document node
"RTN","PSSFDBRT",111,0)
 ; @PSSOUT  = output array
"RTN","PSSFDBRT",112,0)
 N PSS
"RTN","PSSFDBRT",113,0)
 S PSS("child")=0
"RTN","PSSFDBRT",114,0)
 F  S PSS("child")=$$CHILD^MXMLDOM(DOCHAND,NODE,PSS("child")) Q:PSS("child")=0  D 
"RTN","PSSFDBRT",115,0)
 .S PSS("childName")=$$NAME^MXMLDOM(DOCHAND,PSS("child"))
"RTN","PSSFDBRT",116,0)
 .D:PSS("childName")="routes" PARSRTES(DOCHAND,PSS("child"),.PSSOUT)
"RTN","PSSFDBRT",117,0)
 Q
"RTN","PSSFDBRT",118,0)
 ;
"RTN","PSSFDBRT",119,0)
PARSRTES(DOCHAND,NODE,PSSOUT) ; read routes element
"RTN","PSSFDBRT",120,0)
 ; @DOCHAND = Handle to XML Document
"RTN","PSSFDBRT",121,0)
 ; @NODE    = Document node
"RTN","PSSFDBRT",122,0)
 ; @PSSOUT  = output array
"RTN","PSSFDBRT",123,0)
 N PSS
"RTN","PSSFDBRT",124,0)
 S PSS("child")=0
"RTN","PSSFDBRT",125,0)
 F  S PSS("child")=$$CHILD^MXMLDOM(DOCHAND,NODE,PSS("child")) Q:PSS("child")=0  D 
"RTN","PSSFDBRT",126,0)
 .S PSS("childName")=$$NAME^MXMLDOM(DOCHAND,PSS("child"))
"RTN","PSSFDBRT",127,0)
 .D:PSS("childName")="route" PARSRTE(DOCHAND,PSS("child"),.PSSOUT)
"RTN","PSSFDBRT",128,0)
 Q
"RTN","PSSFDBRT",129,0)
 ;
"RTN","PSSFDBRT",130,0)
PARSRTE(DOCHAND,NODE,PSSOUT) ; read route element, add to array if value
"RTN","PSSFDBRT",131,0)
 ; @DOCHAND = Handle to XML Document
"RTN","PSSFDBRT",132,0)
 ; @NODE    = Document node
"RTN","PSSFDBRT",133,0)
 ; @PSSOUT  = output array
"RTN","PSSFDBRT",134,0)
 N PSS
"RTN","PSSFDBRT",135,0)
 S PSS("child")=0
"RTN","PSSFDBRT",136,0)
 F  S PSS("child")=$$CHILD^MXMLDOM(DOCHAND,NODE,PSS("child")) Q:PSS("child")=0  D 
"RTN","PSSFDBRT",137,0)
 .S PSS("childName")=$$NAME^MXMLDOM(DOCHAND,PSS("child"))
"RTN","PSSFDBRT",138,0)
 .D:PSS("childName")="name" 
"RTN","PSSFDBRT",139,0)
 ..S PSS("childText")=$$GETTEXT^PSSHRCOM(DOCHAND,PSS("child"))
"RTN","PSSFDBRT",140,0)
 ..D:PSS("childText")'="" 
"RTN","PSSFDBRT",141,0)
 ...S PSSOUT(PSS("childText"))=""
"RTN","PSSFDBRT",142,0)
 ...S PSSOUT(0)=1
"RTN","PSSFDBRT",143,0)
 Q
"RTN","PSSFDBRT",144,0)
 ;
"RTN","PSSFDBRT",145,0)
GETHEAD(PSSXML) ;  return <?xml version="1.0" encoding="utf-8" ?>
"RTN","PSSFDBRT",146,0)
 ;  input: PSSXML string (by ref)
"RTN","PSSFDBRT",147,0)
 ; output: returns the XML header info string
"RTN","PSSFDBRT",148,0)
 ;
"RTN","PSSFDBRT",149,0)
 ;xml header info
"RTN","PSSFDBRT",150,0)
 S PSSXML=PSSXML_$$XMLHDR^MXMLUTL
"RTN","PSSFDBRT",151,0)
 Q
"RTN","PSSFDBRT",152,0)
 ;
"RTN","PSSFDBRT",153,0)
GETREQ(PSSXML) ; build and return the <drugInfoRequest... portion of XML request.
"RTN","PSSFDBRT",154,0)
 ;  input: PSSXML string (by ref)
"RTN","PSSFDBRT",155,0)
 ; output: returns the XML string. for example:
"RTN","PSSFDBRT",156,0)
 ;      <drugInfoRequest  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
"RTN","PSSFDBRT",157,0)
 ;       xsi:schemaLocation="gov/va/med/pharmacy/peps/external/common/preencapsulation/vo/drug/info/request
"RTN","PSSFDBRT",158,0)
 ;       drugInfoSchemaInput.xsd" xmlns="gov/va/med/pharmacy/peps/external/common/preencapsulation/vo/drug/info/request">
"RTN","PSSFDBRT",159,0)
 ;
"RTN","PSSFDBRT",160,0)
 N TAG,SUBXML,SCHEMA,XMLNS,SPACE
"RTN","PSSFDBRT",161,0)
 S SPACE=$C(32)
"RTN","PSSFDBRT",162,0)
 S SCHEMA="gov/va/med/pharmacy/peps/external/common/preencapsulation/vo/drug/info/request drugInfoSchemaInput.xsd"
"RTN","PSSFDBRT",163,0)
 S XMLNS="gov/va/med/pharmacy/peps/external/common/preencapsulation/vo/drug/info/request"
"RTN","PSSFDBRT",164,0)
 S TAG="<drugInfoRequest"_SPACE
"RTN","PSSFDBRT",165,0)
 S SUBXML=TAG
"RTN","PSSFDBRT",166,0)
 ;S SUBXML=SUBXML_$$ATRIBUTE^PSSHRCOM("xmlns",XMLNS
"RTN","PSSFDBRT",167,0)
 S SUBXML=SUBXML_$$ATRIBUTE^PSSHRCOM(SPACE_"xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance")
"RTN","PSSFDBRT",168,0)
 S SUBXML=SUBXML_$$ATRIBUTE^PSSHRCOM(SPACE_"xsi:schemaLocation",SCHEMA)
"RTN","PSSFDBRT",169,0)
 S SUBXML=SUBXML_$$ATRIBUTE^PSSHRCOM(SPACE_"xmlns",XMLNS)
"RTN","PSSFDBRT",170,0)
 S PSSXML=PSSXML_SUBXML_">"
"RTN","PSSFDBRT",171,0)
 Q
"RTN","PSSFDBRT",172,0)
 ;
"RTN","PSSFDBRT",173,0)
ENDREQ(PSSXML) ; return the end tag </drugInfoRequest> portion of XML request
"RTN","PSSFDBRT",174,0)
 ;  input: PSSXML string (by ref)
"RTN","PSSFDBRT",175,0)
 ; output: returns the XML string
"RTN","PSSFDBRT",176,0)
 S PSSXML=PSSXML_"</drugInfoRequest>"
"RTN","PSSFDBRT",177,0)
 Q
"RTN","PSSFDBRT",178,0)
 ;
"RTN","PSSFILED")
0^12^B42867006^B18901288
"RTN","PSSFILED",1,0)
PSSFILED ;BIR/CML3-VARIOUS FILED UPKEEP ;09/15/97
"RTN","PSSFILED",2,0)
 ;;1.0;PHARMACY DATA MANAGEMENT;**38,47,172,201**;9/30/97;Build 23
"RTN","PSSFILED",3,0)
 ;Reference to ^PSGGAO supported by DBIA #2148
"RTN","PSSFILED",4,0)
 ;Reference to ^PSGSET supported by DBIA #2152
"RTN","PSSFILED",5,0)
 ;Reference to ^PSGSETU supported by DBIA 2153
"RTN","PSSFILED",6,0)
 ;Reference to ^PS(57.7 supported by DBIA 2111
"RTN","PSSFILED",7,0)
 ;Reference to ^PS(59.6 supported by DBIA 2110
"RTN","PSSFILED",8,0)
 ;Reference to ^PS(57.5 supported by DBIA 2112
"RTN","PSSFILED",9,0)
 ;Reference to ^PS(53.2 supported by DBIA 2115
"RTN","PSSFILED",10,0)
 ;
"RTN","PSSFILED",11,0)
 ;This routine is no longer used, with the exception of the ENMI, ENII and
"RTN","PSSFILED",12,0)
 ;OMICHK linetags. Quits were inserted at each sub-routine in Patch PSS*1*38. 
"RTN","PSSFILED",13,0)
DONE ;S X="PSGSETU" X ^%ZOSF("TEST") I  D ENKV^PSGSETU K D0,D1,D2,PSGRBS Q
"RTN","PSSFILED",14,0)
 Q
"RTN","PSSFILED",15,0)
 ;
"RTN","PSSFILED",16,0)
GED ; generic edit
"RTN","PSSFILED",17,0)
 ;S DA=+Y,DR=".01;1" W ! D ^DIE Q
"RTN","PSSFILED",18,0)
 Q
"RTN","PSSFILED",19,0)
 ;
"RTN","PSSFILED",20,0)
ENAT ; team file
"RTN","PSSFILED",21,0)
 Q
"RTN","PSSFILED",22,0)
 ;F  S DIC="^PS(57.7,",DIC(0)="QEAMIL",DLAYGO=57.7,DIC("A")="Select WARD: " W ! D ^DIC K DIC,DLAYGO Q:Y'>0  S DA=+Y,DIE="^PS(57.7,",DR="[PSJUMATE]" D ^DIE
"RTN","PSSFILED",23,0)
 G DONE
"RTN","PSSFILED",24,0)
 ;
"RTN","PSSFILED",25,0)
ENAS ; schedules file - no longer used
"RTN","PSSFILED",26,0)
 ;F  S DIC="^PS(51.1,",DIC(0)="QEAMIL",DIC("W")="W ""   "",$P(^(0),""^"",2)",DLAYGO=51.1,DIC("DR")="4////PSJ" W ! D ^DIC K DIC,DLAYGO Q:+Y'>0  S DIE="^PS(51.1,",DR="[PSJUADE]",DA=+Y W ! D ^DIE
"RTN","PSSFILED",27,0)
 Q
"RTN","PSSFILED",28,0)
 ;
"RTN","PSSFILED",29,0)
ENMR ; med route file
"RTN","PSSFILED",30,0)
 Q
"RTN","PSSFILED",31,0)
 N MRNO,MR K DIE,DIC,DR,Y
"RTN","PSSFILED",32,0)
 S PSSOTH=$S($P($G(^PS(59.7,1,40.2)),"^"):1,1:0)
"RTN","PSSFILED",33,0)
 F  S DIC="^PS(51.2,",DIC(0)="QEAMIL",DLAYGO=51.2 W ! D
"RTN","PSSFILED",34,0)
 .D ^DIC K DIC,DLAYGO Q:+Y'>0  S MRNO=+Y,MR=$P(Y,U,2),DA=+Y,DIE="^PS(51.2,",DR=".01;1;3;4;S:'$G(PSSOTH) Y=""@1"";4.1;@1"
"RTN","PSSFILED",35,0)
 .D ^DIE D DF
"RTN","PSSFILED",36,0)
 K X,MRNO,MR,Y,DA,DR,PSSOTH,DIE
"RTN","PSSFILED",37,0)
 Q
"RTN","PSSFILED",38,0)
 ;
"RTN","PSSFILED",39,0)
ENWG ; ward group file
"RTN","PSSFILED",40,0)
 Q
"RTN","PSSFILED",41,0)
 ;F  S DIC="^PS(57.5,",DIC(0)="QEAMIL",DLAYGO=57.5 W ! D ^DIC K DA,DIC,DR Q:+Y'>0  S DA=+Y,DIE="^PS(57.5,",DR="[PSJU WG]" D ^DIE
"RTN","PSSFILED",42,0)
 G DONE
"RTN","PSSFILED",43,0)
 ;
"RTN","PSSFILED",44,0)
OMICHK ; check the 'D' cross reference to see if duplicates exist **pss_1_201**
"RTN","PSSFILED",45,0)
 N MSG S MSG=""
"RTN","PSSFILED",46,0)
 ;
"RTN","PSSFILED",47,0)
 IF $L(X)>9!($L(X)<1) D EN^DDIOL("Answer must be 1-9 characters in length.","","!") K X Q
"RTN","PSSFILED",48,0)
 ;
"RTN","PSSFILED",49,0)
 SET X=$$UP^XLFSTR(X)
"RTN","PSSFILED",50,0)
 NEW PSSRCHK,PSSRFL,MSG SET (PSSRCHK,PSSRFL)=""
"RTN","PSSFILED",51,0)
 FOR  SET PSSRCHK=$O(^PS(51,"D",PSSRCHK)) Q:PSSRCHK']""!($G(PSSRFL))  D
"RTN","PSSFILED",52,0)
 .IF PSSRCHK=X SET PSSRFL=1
"RTN","PSSFILED",53,0)
 IF $G(PSSRFL) K X D  Q
"RTN","PSSFILED",54,0)
 . S MSG(1)=""
"RTN","PSSFILED",55,0)
 . S MSG(2)=" Duplicate exists in Old Med Instruction Name multiple for an entry in the"
"RTN","PSSFILED",56,0)
 . S MSG(3)=" file. Please enter a new name."
"RTN","PSSFILED",57,0)
 . D EN^DDIOL(.MSG,"","!")
"RTN","PSSFILED",58,0)
 Q
"RTN","PSSFILED",59,0)
 ;
"RTN","PSSFILED",60,0)
ENMI ; medication instruction file **enhancements made in pss_1_201**
"RTN","PSSFILED",61,0)
 S PSSOTH=$S($P($G(^PS(59.7,1,40.2)),"^"):1,1:0)
"RTN","PSSFILED",62,0)
 F  S DIC="^PS(51,",DIC(0)="EAMILTV",DLAYGO=51 W ! D ^DIC K DIC Q:+Y'>0  D
"RTN","PSSFILED",63,0)
 .SET PSSOMI=$P(Y,U,2)
"RTN","PSSFILED",64,0)
 .S DIE="^PS(51,",DA=+Y,DR=".01;.5;1;S:'$G(PSSOTH) Y=""@1"";1.1;@1;9;30;32;32.1;31" D ^DIE D:$G(DA) ENOMI(PSSOMI,DA)
"RTN","PSSFILED",65,0)
 K DIC,DIE,DLAYGO,DA,DR,Y,PSSOTH
"RTN","PSSFILED",66,0)
 Q
"RTN","PSSFILED",67,0)
 ;
"RTN","PSSFILED",68,0)
ENOMI(PSSPMI,PSSDA) ; prompt to display interaction for OLD MED INSTRUCTION NAME(S) multiple **enhancements made in pss_1_201**
"RTN","PSSFILED",69,0)
 Q:$G(PSSPMI)']""!($G(PSSDA)'>0)
"RTN","PSSFILED",70,0)
 ;
"RTN","PSSFILED",71,0)
 NEW PSSMCHK,PSSRCHK,PSSMFL1,PSSMFL2,PSSMFL3
"RTN","PSSFILED",72,0)
 SET (PSSRCHK,PSSMCHK,PSSMFL1,PSSMFL2,PSSMFL3)=0
"RTN","PSSFILED",73,0)
 ;
"RTN","PSSFILED",74,0)
 FOR  SET PSSRN=$$OMILE(PSSDA),DA(1)=$G(PSSDA) Q:$D(Y)  SET DIC="^PS(51,"_DA(1)_",6,",DIC(0)="EAMILTV",DIC("A")="Select OLD MED INSTRUCTION NAME(S): "_$G(PSSRN) D ^DIC K DIC Q:+Y'>0  D
"RTN","PSSFILED",75,0)
 .SET DIE="^PS(51,"_DA(1)_",6,",DA=+Y,DR=".01" D ^DIE SET DA=PSSDA
"RTN","PSSFILED",76,0)
 SET (DIC,DIE)="^PS(51,"
"RTN","PSSFILED",77,0)
 IF $P(^PS(51,$G(PSSDA),0),U,1)=PSSPMI SET PSSMFL1=1
"RTN","PSSFILED",78,0)
 FOR  SET PSSMCHK=$O(^PS(51,$G(PSSDA),6,PSSMCHK)) Q:'+PSSMCHK!($G(PSSMFL2))  D
"RTN","PSSFILED",79,0)
 .IF ^PS(51,$G(PSSDA),6,PSSMCHK,0)=PSSPMI SET PSSMFL2=1
"RTN","PSSFILED",80,0)
 FOR  SET PSSRCHK=$O(^PS(51,"D",PSSRCHK)) Q:PSSRCHK']""!($G(PSSMFL3))  D
"RTN","PSSFILED",81,0)
 .IF PSSRCHK=PSSPMI SET PSSMFL3=1
"RTN","PSSFILED",82,0)
 IF '$G(PSSMFL1),'$G(PSSMFL2),'$G(PSSMFL3),$G(PSSDA) KILL DO SET X=PSSPMI,DA(1)=$G(PSSDA),DIC=DIC_DA(1)_",6,",DIC(0)="L" DO FILE^DICN SET DIC="^PS(51,",DA=PSSDA
"RTN","PSSFILED",83,0)
 Q
"RTN","PSSFILED",84,0)
 ;
"RTN","PSSFILED",85,0)
OMILE(PSSDA) ;
"RTN","PSSFILED",86,0)
 NEW PSSLR,PSSLE SET PSSLE=""
"RTN","PSSFILED",87,0)
 IF $G(^PS(51,$G(PSSDA),6,0))'="" SET PSSLR=999999 FOR  SET PSSLR=$O(^PS(51,$G(PSSDA),6,PSSLR),-1) S:$G(^PS(51,$G(PSSDA),6,PSSLR,0))'="" PSSLE=$G(^PS(51,$G(PSSDA),6,PSSLR,0))_"// " Q:PSSLR'=""
"RTN","PSSFILED",88,0)
 Q $G(PSSLE)
"RTN","PSSFILED",89,0)
 ;
"RTN","PSSFILED",90,0)
ENOMIX(PSSPMI,PSSDA) ; used by the 'AF' xref for adding an edited NAME (#.01) field's old value in the MEDICATION INSTRUCTION (#51) file to the OLD MED INSTRUCTION NAME(S) multiple **pss_1_201**
"RTN","PSSFILED",91,0)
 Q:$G(PSSPMI)']""!($G(PSSDA)'>0)
"RTN","PSSFILED",92,0)
 ;
"RTN","PSSFILED",93,0)
 NEW PSSMCHK,PSSRCHK,PSSMFL1,PSSMFL2,PSSMFL3
"RTN","PSSFILED",94,0)
 SET (PSSRCHK,PSSMCHK,PSSMFL1,PSSMFL2,PSSMFL3)=0
"RTN","PSSFILED",95,0)
 ;
"RTN","PSSFILED",96,0)
 IF $P(^PS(51,$G(PSSDA),0),U,1)=PSSPMI SET PSSMFL1=1
"RTN","PSSFILED",97,0)
 FOR  SET PSSMCHK=$O(^PS(51,$G(PSSDA),6,PSSMCHK)) Q:'+PSSMCHK!($G(PSSMFL2))  D
"RTN","PSSFILED",98,0)
 .IF ^PS(51,$G(PSSDA),6,PSSMCHK,0)=PSSPMI SET PSSMFL2=1
"RTN","PSSFILED",99,0)
 FOR  SET PSSRCHK=$O(^PS(51,"D",PSSRCHK)) Q:PSSRCHK']""!($G(PSSMFL3))  D
"RTN","PSSFILED",100,0)
 .IF PSSRCHK=PSSPMI SET PSSMFL3=1
"RTN","PSSFILED",101,0)
 IF '$G(PSSMFL1),'$G(PSSMFL2),'$G(PSSMFL3),$G(PSSDA) KILL DO SET X=PSSPMI,DA(1)=$G(PSSDA),DIC=DIC_DA(1)_",6,",DIC(0)="L" DO FILE^DICN SET DIC="^PS(51,",DA=PSSDA
"RTN","PSSFILED",102,0)
 Q
"RTN","PSSFILED",103,0)
 ;
"RTN","PSSFILED",104,0)
ENDRG ; standard drug fields
"RTN","PSSFILED",105,0)
 Q
"RTN","PSSFILED",106,0)
 D NOW^%DTC S PSGDT=% F  S DIC="^PSDRUG(",DIC(0)="AEIMOQ",DIC("A")="Select DISPENSE DRUG: " W ! D ^DIC K DIC Q:+Y'>0  D DE
"RTN","PSSFILED",107,0)
 K PSIUA,PSIUDA,PSIUX G DONE
"RTN","PSSFILED",108,0)
 ;
"RTN","PSSFILED",109,0)
DE ;
"RTN","PSSFILED",110,0)
 Q
"RTN","PSSFILED",111,0)
 I $D(^PSDRUG(+Y,"I")),^("I"),^("I")<PSGDT W $C(7),$C(7),!!?3,"*** WARNING, THIS DRUG IS INACTIVE. ***",!
"RTN","PSSFILED",112,0)
 ;W ! S DIE="^PSDRUG(",(DA,PSIUDA)=+Y,DR="[PSJ FILED]"
"RTN","PSSFILED",113,0)
 S PSIUX="U^UNIT DOSE PHARMACY^1" D ^PSSGIU,^DIE:PSIUA'["^" K DA,DIE,DR Q
"RTN","PSSFILED",114,0)
 ;
"RTN","PSSFILED",115,0)
ENOSE ; order set enter/edit
"RTN","PSSFILED",116,0)
 Q
"RTN","PSSFILED",117,0)
 ;K DIC F  S DLAYGO=53.2,DIC="^PS(53.2,",DIC(0)="QEAML",DIC("A")="Select ORDER SET: " W ! D ^DIC K DIC Q:Y'>0  S DA=+Y S DIE="^PS(53.2,",DR="[PSJUOSE]" D ^DIE K D0,D1,DA,DIE,DR,PSGNEDFD,PSGS0XT,PSGS0Y
"RTN","PSSFILED",118,0)
 G DONE
"RTN","PSSFILED",119,0)
 ;
"RTN","PSSFILED",120,0)
RBCHK ; used to validate room-bed
"RTN","PSSFILED",121,0)
 Q
"RTN","PSSFILED",122,0)
 ;F Z0=0:0 S Z0=$O(^PS(57.7,DA(2),1,Z0)) Q:'Z0  I Z0'=DA(1),$D(^(Z0,1,"B",X)) W !?19,X," is already under ",$S('$D(^PS(57.7,DA(2),1,Z0,0)):"another team ("_Z0_")!",$P(^(0),"^")]"":$P(^(0),"^")_"!",1:"another team ("_Z0_")!") Q
"RTN","PSSFILED",123,0)
 I 'Z0,$D(^DIC(42,DA(2),2,+$O(^DIC(42,DA(2),2,"B",$P(X,"-"),0)),1,"B",$P(X,"-",2))) K Z0 Q
"RTN","PSSFILED",124,0)
 K X,Z0 Q
"RTN","PSSFILED",125,0)
 ;
"RTN","PSSFILED",126,0)
RBQ ; show room-beds for a ward
"RTN","PSSFILED",127,0)
 Q
"RTN","PSSFILED",128,0)
 W !,"ANSWER WITH A ROOM-BED FROM THIS WARD ",$S('$D(^DIC(42,DA(1),0)):"",$P(^(0),"^")]"":" ("_$P(^(0),"^")_")",1:"") Q:'$D(^(0))  W !,"DO YOU WANT THE ENTIRE ROOM-BED LIST" S %=0 D YN^DICN Q:%'=1
"RTN","PSSFILED",129,0)
 W ! S (Z0,Z3)=0 F Z1=0:0 S Z1=$O(^DIC(42,DA(1),2,Z1)) Q:'Z1  I $D(^(Z1,0)) S Z4=$P(^(0),"^") I Z4]"" F Z2=0:0 S Z2=$O(^DIC(42,DA(1),2,Z1,1,Z2)) Q:'Z2  I $D(^(Z2,0)),$P(^(0),"^")]"" S Z0=Z0+1 D:'(Z0#11) RBNP Q:Z3["^"  W ?1,Z4,"-",$P(^(0),"^"),!
"RTN","PSSFILED",130,0)
 K Z0,Z1,Z2,Z3,Z4 Q
"RTN","PSSFILED",131,0)
 ;
"RTN","PSSFILED",132,0)
RBNP ;W """^"" TO STOP: " R Z3:DTIME W:'$T $C(7) S:'$T Z3="^" W *13,"            ",*13 Q
"RTN","PSSFILED",133,0)
 Q
"RTN","PSSFILED",134,0)
 ;
"RTN","PSSFILED",135,0)
ENPPD ; edit pharmacy patient data
"RTN","PSSFILED",136,0)
 Q
"RTN","PSSFILED",137,0)
 ; W !!?3,"...This option is still under development...",! Q
"RTN","PSSFILED",138,0)
 ;D ENCV^PSGSETU I $D(XQUIT) Q
"RTN","PSSFILED",139,0)
 ;S PSGRETF=1 F  D ENDPT^PSGP Q:PSGP'>0  D ENHEAD^PSGO S DA=PSGP,DR="[PSJUPDE]",DIE="^PS(55," W ! D ^DIE
"RTN","PSSFILED",140,0)
 ;K PSGRETF G DONE
"RTN","PSSFILED",141,0)
 ;
"RTN","PSSFILED",142,0)
ENCPDD ; edit patient's default stop date (wall)
"RTN","PSSFILED",143,0)
 Q
"RTN","PSSFILED",144,0)
 ;S X="PSGSETU" X ^%ZOSF("TEST") I  D ENCV^PSGSETU I $D(XQUIT) Q
"RTN","PSSFILED",145,0)
 ;S X="PSGGAO" X ^%ZOSF("TEST") I  F  D ENAO^PSGGAO Q:PSGP'>0  D
"RTN","PSSFILED",146,0)
 ;.S WDN=$P($G(^DPT(PSGP,.1)),"^") W:WDN="" !!?2,"The patient is not currently on a ward."
"RTN","PSSFILED",147,0)
 ;.I WDN]"" S WD=$O(^DIC(42,"B",WDN,0)),WD=$O(^PS(59.6,"B",+WD,0)) I $S('WD:1,1:'$P($G(^PS(59.6,WD,0)),"^",4)) S X="PLEASE NOTE: The 'SAME STOP DATE' parameter for the ward ("_WDN_") is not turned on.  Any date entered here will be ignored "
"RTN","PSSFILED",148,0)
 ;.I  S X=X_"until the parameter is turned on for this ward." W $C(7),!!?2 F Y=1:1:$L(X," ") S X(1)=$P(X," ",Y) W:$L(X(1))+$X>78 ! W X(1)," "
"RTN","PSSFILED",149,0)
 ;.S DA=PSGP,DR="62.01T",DIE="^PS(55," W !! D ^DIE
"RTN","PSSFILED",150,0)
 ;K WD,WDN G DONE
"RTN","PSSFILED",151,0)
 ;
"RTN","PSSFILED",152,0)
ENSYS ; edit system file
"RTN","PSSFILED",153,0)
 Q
"RTN","PSSFILED",154,0)
 S DIE="^PS(59.7,",DA=1,DR="21;26;26.2" W ! D ^DIE K DIE,DA,DR Q
"RTN","PSSFILED",155,0)
 ;
"RTN","PSSFILED",156,0)
ENPLSP ; edit pick list site parameters
"RTN","PSSFILED",157,0)
 Q
"RTN","PSSFILED",158,0)
 ;K DIC F Q=0:1 S DIC="^PS(59.4,",DIC(0)="QEAM" S:'Q DIC("B")=PSJSYSW W ! D ^DIC K DIC Q:Y'>0  S DA=+Y,DIE="^PS(59.4,",DR="[PSJUPLSP]" D ^DIE
"RTN","PSSFILED",159,0)
 ;G DONE
"RTN","PSSFILED",160,0)
 ;
"RTN","PSSFILED",161,0)
ENCS ; change current site & parameters
"RTN","PSSFILED",162,0)
 Q
"RTN","PSSFILED",163,0)
 I $D(PSJSYSW0)#2 W !!,"Current site: ",$P(PSJSYSW0,"^")
"RTN","PSSFILED",164,0)
 ;S PSGCSF=1 S X="PSGSET" X ^%ZOSF("TEST") I  D ^PSGSET,ENKV^PSGSETU W:$D(XQUIT) !!?5,"(The Inpatient site you are currently working under has not changed.)" K PSGCSF,PSGORSET,XQUIT Q
"RTN","PSSFILED",165,0)
 ;
"RTN","PSSFILED",166,0)
DF ; Add/edit Med route, instruction... to the Dosage form file.
"RTN","PSSFILED",167,0)
 Q
"RTN","PSSFILED",168,0)
 S DIR("A")="Would you like to update the Dosage Form file"
"RTN","PSSFILED",169,0)
 S DIR("?")="If your answer is Yes, you will be able to Add/edit the Med routes, Instructions, Verb, Noun and Preposition that associate with this Dosage form."
"RTN","PSSFILED",170,0)
 S DIR(0)="Y",DIR("B")="Y" D ^DIR Q:Y'=1
"RTN","PSSFILED",171,0)
 NEW Y,DFNO K DIE,DIC,DA,DR
"RTN","PSSFILED",172,0)
 F  S DIC="^PS(50.606,",DIC(0)="QEAMI" D ^DIC Q:+Y'>0  S DFNO=+Y D
"RTN","PSSFILED",173,0)
 . I $G(MR)]"",'$D(^PS(50.606,DFNO,"MR","B",MRNO)) S DIE="^PS(50.606,",DR="1",DA=DFNO D ^DIE
"RTN","PSSFILED",174,0)
 . K DIE,DIC,DR,MR S DIE="^PS(50.606,",DR="1;2;3;5;6",DA=DFNO D ^DIE
"RTN","PSSFILED",175,0)
 Q
"RTN","PSSFILED",176,0)
ENII ; infusion instruction file
"RTN","PSSFILED",177,0)
 F  S DIC="^PS(53.47,",DIC(0)="QEAMIL",DLAYGO=53.47 W ! D ^DIC K DIC Q:+Y'>0  D
"RTN","PSSFILED",178,0)
 .Q:($P(Y,"^",3))
"RTN","PSSFILED",179,0)
 .S DIE="^PS(53.47,",DA=+Y,DR=".01;1" D ^DIE
"RTN","PSSFILED",180,0)
 K DIC,DIE,DLAYGO,DA,DR,Y
"RTN","PSSFILED",181,0)
 Q
"RTN","PSSJEEU")
0^34^B14084337^B13827744
"RTN","PSSJEEU",1,0)
PSSJEEU ;BIR/CML3,WRT-EXTERNAL ENTRIES UTILITY ; 09/16/97 10:04
"RTN","PSSJEEU",2,0)
 ;;1.0;PHARMACY DATA MANAGEMENT;**24,47,160,184,201**;9/30/97;Build 23
"RTN","PSSJEEU",3,0)
 ;
"RTN","PSSJEEU",4,0)
 ;Reference to ^SC(IEN,0 supported by DBIA #10040
"RTN","PSSJEEU",5,0)
 ;
"RTN","PSSJEEU",6,0)
ENSV ; schedule validation
"RTN","PSSJEEU",7,0)
 N PSSPKG
"RTN","PSSJEEU",8,0)
 I $D(PSJPP) K PSSPKG S PSSPKG=$$FIND1^DIC(9.4,"","O",PSJPP,"C")
"RTN","PSSJEEU",9,0)
 K PSJAT,PSJM I $S('$D(PSJPP):1,PSJPP="":1,PSJPP?.E1C.E:1,1:'$G(PSSPKG)) Q
"RTN","PSSJEEU",10,0)
 Q:$D(PSJX)[0  I $D(PSJW),$S('PSJW:1,1:'$D(^SC(PSJW,0))) K PSJW
"RTN","PSSJEEU",11,0)
 N D,DIC,DIE,Q,QX,SDW,SWD,X,X0,X1,X2,XT,Y,Z D EN^PSSJSV Q
"RTN","PSSJEEU",12,0)
 ;
"RTN","PSSJEEU",13,0)
ENSVI ; standard schedule inquire
"RTN","PSSJEEU",14,0)
 N PSSPKG
"RTN","PSSJEEU",15,0)
 I $D(PSJPP) K PSSPKG S PSSPKG=$$FIND1^DIC(9.4,"","O","PSJPP","C")
"RTN","PSSJEEU",16,0)
 Q:$S('$D(PSJPP):1,PSJPP="":1,PSJPP?.E1C.E:1,1:'$G(PSSPKG))  D ENI^PSSJSV0
"RTN","PSSJEEU",17,0)
 Q
"RTN","PSSJEEU",18,0)
 ;
"RTN","PSSJEEU",19,0)
ENSPU ; schedule processor (count)
"RTN","PSSJEEU",20,0)
 K PSJC S PSJC=-1 I $S('$D(PSJAT):1,'$D(PSJM):1,'$D(PSJSCH):1,'$D(PSJSD):1,1:'$D(PSJFD)) Q
"RTN","PSSJEEU",21,0)
 S:'$D(PSJOSD) PSJOSD=PSJSD S:'$D(PSJOFD) PSJOFD=PSJFD N AM,CD,H,HCD,I,J,M,MID,OD,PDL,PLSD,ST,Q,QQ,WD,WDT,WS,WS1,X,X1,X2,XX D EN^PSSJSPU Q
"RTN","PSSJEEU",22,0)
 ;
"RTN","PSSJEEU",23,0)
ENPSJSE ; schedule edit for Inpatient Meds
"RTN","PSSJEEU",24,0)
 S PSJPP="PSJ" N PSSTSVZP,PSSTSVXP,PSSTSVXX,PSSTSVYY,PSSTSVZZ,PSSTSVZ1,PSSTSVX1,PSSTSVX2,PSSTSVY1,PSSTSVZ2
"RTN","PSSJEEU",25,0)
 ;
"RTN","PSSJEEU",26,0)
ENSE ; schedule edit
"RTN","PSSJEEU",27,0)
 N PSSPKG,PSSON SET PSSON=""
"RTN","PSSJEEU",28,0)
 I $D(PSJPP) K PSSPKG S PSSPKG=$$FIND1^DIC(9.4,"","O",PSJPP,"C")
"RTN","PSSJEEU",29,0)
 I $S('$D(PSJPP):1,PSJPP="":1,PSJPP?.E1C.E:1,1:'$G(PSSPKG)) Q
"RTN","PSSJEEU",30,0)
 I $D(PSJW),$S('PSJW:1,1:'$D(^SC(PSJW,0))) K PSJW
"RTN","PSSJEEU",31,0)
 F FQ=0:0 K DIC S DIC="^PS(51.1,",DIC(0)="EASL",DLAYGO=51.1,DIC("DR")="4////"_PSJPP,DIC("W")="D DICW^PSSJSV0",D="AP"_PSJPP W ! D IX^DIC K DIC Q:Y'>0   D
"RTN","PSSJEEU",32,0)
 .S PSSON=$$UP^XLFSTR($P($G(Y),U,2))
"RTN","PSSJEEU",33,0)
 .S DIE="^PS(51.1,",DA=+Y,DR="[PSSJ "_$S(PSJPP="PSJ":"",1:"EXT ")_"SCHEDULE EDIT]",DIE("NO^")="BACKOUTOK" D ^DIE K DA,DIE,DR,PSJS
"RTN","PSSJEEU",34,0)
 ;* I $D(PSJHLDA) S X=$O(^ORD(101,"B","PS EVSEND SCH",0))_";ORD(101," D:X EN1^XQOR
"RTN","PSSJEEU",35,0)
 I $D(PSJHLDA) D EN2^PSSHLSCH
"RTN","PSSJEEU",36,0)
 K:PSJPP="PSJ" PSJPP K D0,DI,DISYS,DQ,FQ,X,Y Q
"RTN","PSSJEEU",37,0)
 ;
"RTN","PSSJEEU",38,0)
ENDSD ; default start date
"RTN","PSSJEEU",39,0)
 I $S('$D(PSJSCH):1,'$D(PSJAT):1,1:'$D(PSJTS)) S PSJX="" Q
"RTN","PSSJEEU",40,0)
 D ENDSD^PSSJSPU0 Q
"RTN","PSSJEEU",41,0)
 ;
"RTN","PSSJEEU",42,0)
ENPSJSHE ; shift edit for Inpatient Meds
"RTN","PSSJEEU",43,0)
 S PSJPP="PSJ"
"RTN","PSSJEEU",44,0)
 ;
"RTN","PSSJEEU",45,0)
ENSHE ; shift edit
"RTN","PSSJEEU",46,0)
 N PSSPKG
"RTN","PSSJEEU",47,0)
 I $D(PSJPP) K PSSPKG S PSSPKG=$$FIND1^DIC(9.4,"","O",PSJPP,"C")
"RTN","PSSJEEU",48,0)
 I $S('$D(PSJPP):1,PSJPP="":1,PSJPP'?.ANP:1,1:'$G(PSSPKG)) Q
"RTN","PSSJEEU",49,0)
 I $D(PSJW),$S('PSJW:1,1:'$D(^SC(PSJW,0))) K PSJW
"RTN","PSSJEEU",50,0)
 F FQ=0:0 K DIC S DIC="^PS(51.15,",DIC(0)="AEQLS",DLAYGO=51.15,DIC("DR")="4////"_PSJPP,D="AP"_PSJPP W ! D IX^DIC K DIC Q:Y'>0  S DIE="^PS(51.15,",DA=+Y,DR="[PSJ SHIFT EDIT]" D ^DIE K DA,DIE,DR
"RTN","PSSJEEU",51,0)
 K FQ,PSSPKG,X,Y Q
"RTN","PSSJEEU",52,0)
 ;
"RTN","PSSJEEU",53,0)
ENATV ; validate admin times
"RTN","PSSJEEU",54,0)
 D ENCHK^PSSJSV Q
"RTN","PSSJEEU",55,0)
 ;
"RTN","PSSJEEU",56,0)
ENSHV ;
"RTN","PSSJEEU",57,0)
 D ENSHV^PSSJSV
"RTN","PSSJEEU",58,0)
 Q
"RTN","PSSJEEU",59,0)
OTHLAN ;entry point to add translations for another language
"RTN","PSSJEEU",60,0)
 K DIK,DIC,DIRUT,DIE,DA,DR
"RTN","PSSJEEU",61,0)
 S DIE="^PS(59.7,",DA=1,DR="40.2;S:'$G(X) Y=""@1"";40.21:40.45;@1"
"RTN","PSSJEEU",62,0)
 D ^DIE K DIE,DA,X,Y,DR,DIC,D,D0,DDER,DI,DQ,%
"RTN","PSSJEEU",63,0)
 Q
"RTN","PSSJEEU",64,0)
 ;
"RTN","PSSJEEU",65,0)
 ;
"RTN","PSSJEEU",66,0)
TEMSF ;Template saves, called form the PSSJ SCHEDULE EDIT template
"RTN","PSSJEEU",67,0)
 I $D(X) S PSSTSVXX=X
"RTN","PSSJEEU",68,0)
 I $D(Y) S PSSTSVYY=Y
"RTN","PSSJEEU",69,0)
 I $D(PSJS) S PSSTSVZZ=PSJS
"RTN","PSSJEEU",70,0)
 I $D(ZPSJS) S PSSTSVZP=ZPSJS
"RTN","PSSJEEU",71,0)
 I $D(XPSJS) S PSSTSVXP=XPSJS
"RTN","PSSJEEU",72,0)
 Q
"RTN","PSSJEEU",73,0)
 ;
"RTN","PSSJEEU",74,0)
TEMSFR ;Template restores called from the PSSJ SCHEDULE EDIT template
"RTN","PSSJEEU",75,0)
 K X,Y,PSJS,ZPSJS,XPSJS
"RTN","PSSJEEU",76,0)
 I $D(PSSTSVXX) S X=PSSTSVXX
"RTN","PSSJEEU",77,0)
 I $D(PSSTSVYY) S Y=PSSTSVYY
"RTN","PSSJEEU",78,0)
 I $D(PSSTSVZZ) S PSJS=PSSTSVZZ
"RTN","PSSJEEU",79,0)
 I $D(PSSTSVZP) S ZPSJS=PSSTSVZP
"RTN","PSSJEEU",80,0)
 I $D(PSSTSVXP) S XPSJS=PSSTSVXP
"RTN","PSSJEEU",81,0)
 Q
"RTN","PSSJEEU",82,0)
 ;
"RTN","PSSJEEU",83,0)
 ;
"RTN","PSSJEEU",84,0)
TEMSFX ;Template saves, called form the PSSJ SCHEDULE EDIT template
"RTN","PSSJEEU",85,0)
 I $D(X) S PSSTSVX1=X
"RTN","PSSJEEU",86,0)
 I $D(Y) S PSSTSVY1=Y
"RTN","PSSJEEU",87,0)
 I $D(PSJS) S PSSTSVZ1=PSJS
"RTN","PSSJEEU",88,0)
 I $D(ZPSJS) S PSSTSVZ2=ZPSJS
"RTN","PSSJEEU",89,0)
 I $D(XPSJS) S PSSTSVX2=XPSJS
"RTN","PSSJEEU",90,0)
 Q
"RTN","PSSJEEU",91,0)
 ;
"RTN","PSSJEEU",92,0)
TEMSFRX ;Template restores called from the PSSJ SCHEDULE EDIT template
"RTN","PSSJEEU",93,0)
 K X,Y,PSJS,ZPSJS,XPSJS
"RTN","PSSJEEU",94,0)
 I $D(PSSTSVX1) S X=PSSTSVX1
"RTN","PSSJEEU",95,0)
 I $D(PSSTSVY1) S Y=PSSTSVY1
"RTN","PSSJEEU",96,0)
 I $D(PSSTSVZ1) S PSJS=PSSTSVZ1
"RTN","PSSJEEU",97,0)
 I $D(PSSTSVZ2) S ZPSJS=PSSTSVZ2
"RTN","PSSJEEU",98,0)
 I $D(PSSTSVX2) S XPSJS=PSSTSVX2
"RTN","PSSJEEU",99,0)
 Q
"RTN","PSSJSV")
0^27^B180875230^B76380719
"RTN","PSSJSV",1,0)
PSSJSV ;BIR/CML3/WRT-SCHEDULE VALIDATION ;06/24/96
"RTN","PSSJSV",2,0)
 ;;1.0;PHARMACY DATA MANAGEMENT;**20,38,56,59,110,121,143,149,146,189,201**;9/30/97;Build 23
"RTN","PSSJSV",3,0)
 ;
"RTN","PSSJSV",4,0)
 ; Reference to ^PS(51.15 is supported by DBIA #2132
"RTN","PSSJSV",5,0)
 ; Reference to $$UP^XLFSTR(P1) is supported by DBIA #10104
"RTN","PSSJSV",6,0)
 ;
"RTN","PSSJSV",7,0)
EN ;
"RTN","PSSJSV",8,0)
 S X=PSJX,(PSJAT,PSJM,PSJTS,PSJY,PSJAX)="" I $S(X["""":1,$A(X)=45:1,X'?.ANP:1,$L(X," ")>2:1,$L(X)>70:1,$L(X)<1:1,X["P RN":1,1:X["PR N") K PSJX,X Q
"RTN","PSSJSV",9,0)
 I X["PRN"!(X="ON CALL")!(X="ONCALL")!(X="ON-CALL") G DONE
"RTN","PSSJSV",10,0)
 I X?1."?" D:'$D(PSJNE) ENSVH^PSSJSV0 Q
"RTN","PSSJSV",11,0)
 I X["@" D DW S:$D(X) PSJAT=$P(X,"@",2) G DONE
"RTN","PSSJSV",12,0)
 S X0=X,(XT,Y)="" I X,X'["X",(X?2.4N1"-".E!(X?2.4N)) D ENCHK S:$D(X) PSJAT=X G DONE
"RTN","PSSJSV",13,0)
 I $S($D(^PS(51.1,"AC",PSJPP,X)):1,1:$E($O(^(X)),1,$L(X))=X) D DIC G:$S(PSJY:PSJTS'="C",1:PSJM) DONE
"RTN","PSSJSV",14,0)
 I $S(X="NOW":1,X="ONCE":1,X="STAT":1,X="ONE TIME":1,X="ONETIME":1,X="1TIME":1,X="1-TIME":1,X="1 TIME":1,1:X="ONE-TIME") S PSJTS="O" W:'$D(PSJNE) "  (ONCE ONLY)" G DONE
"RTN","PSSJSV",15,0)
 S:PSJTS="" PSJTS="C" I PSJAT="" W:'$D(PSJNE) "  (Non standard schedule)" S X=PSJX
"RTN","PSSJSV",16,0)
 I $E(X,1,2)="AD" K X G DONE
"RTN","PSSJSV",17,0)
 I $E(X,1,3)="BID"!($E(X,1,3)="TID")!($E(X,1,3)="QID") S PSJM=1440\$F("BTQ",$E(X)) G DONE
"RTN","PSSJSV",18,0)
 S:$E(X)="Q" X=$E(X,2,99) S:'X X="1"_X S X1=+X,X=$P(X,+X,2),X2=0 S:X1<0 X1=-X1 S:$E(X)="X" X2=X1,X=$E(X,2,99) I 'X2,$E(X)="O" S X2=.5,X=$E(X,2,99)
"RTN","PSSJSV",19,0)
 S XT=$S(X["'":1,(X["D"&(X'["AD"))!(X["AM")!(X["PM")!(X["HS"&(X'["THS")):1440,X["H"&(X'["TH"):60,X["AC"!(X["PC"):480,X["W":10080,X["M":40320,1:-1) I XT<0,PSJAT="" K X G DONE
"RTN","PSSJSV",20,0)
 S X=PSJX I XT S:X2 XT=XT\X2 S:'X2 XT=XT*X1
"RTN","PSSJSV",21,0)
 S PSJM=XT
"RTN","PSSJSV",22,0)
 ;
"RTN","PSSJSV",23,0)
DONE ;
"RTN","PSSJSV",24,0)
 K:$D(X)[0 PSJX K D,DIC,Q,QX,SDW,SWD,X,X0,X1,X2,XT,Y,Z Q
"RTN","PSSJSV",25,0)
 ;
"RTN","PSSJSV",26,0)
ENCHK ; admin times
"RTN","PSSJSV",27,0)
 N SCHED
"RTN","PSSJSV",28,0)
 I $S($L($P(X,"-"))>4:1,$L(X)>119:1,$L(X)<2:1,X'>0:1,1:X'?.ANP) K X Q
"RTN","PSSJSV",29,0)
 S X(1)=$P(X,"-") I X(1)'?2N,X(1)'?4N K X Q
"RTN","PSSJSV",30,0)
 S X(1)=$L(X(1)) F X(2)=2:1:$L(X,"-") S X(3)=$P(X,"-",X(2)) I $S($L(X(3))'=X(1):1,X(3)>$S(X(1)=2:24,1:2400):1,1:X(3)'>$P(X,"-",X(2)-1)) K X Q
"RTN","PSSJSV",31,0)
 Q:'$D(X)
"RTN","PSSJSV",32,0)
 S X(1)=$L(X,"-")
"RTN","PSSJSV",33,0)
 S SCHED=$S($G(DA(1)):$$GET1^DIQ(52.61,+$G(DA)_","_DA(1),4),$G(DA):$$GET1^DIQ(52.6,+DA,4),1:"")
"RTN","PSSJSV",34,0)
 Q:(SCHED="")
"RTN","PSSJSV",35,0)
 S IENS=$O(^PS(51.1,"B",SCHED,0))
"RTN","PSSJSV",36,0)
 S X(4)=$S($G(PSSJSE)&($G(PSSSCT)]""):PSSSCT,1:$$GET1^DIQ(51.1,IENS,5,"I"))
"RTN","PSSJSV",37,0)
 I X(4)="D" D  Q  ;DOW schedules require at least one admin time
"RTN","PSSJSV",38,0)
 . I X(1)>0 K:$D(X) X(1),X(2),X(3) Q
"RTN","PSSJSV",39,0)
 . K X
"RTN","PSSJSV",40,0)
 I X(4)="O" D  Q
"RTN","PSSJSV",41,0)
 . I $L(X,"-")>1 K X Q  ;One Time schedules allow one admin time
"RTN","PSSJSV",42,0)
 . I X="" K X Q  ;One Time schedules require one admin time
"RTN","PSSJSV",43,0)
 S X(2)=$S($G(PSSJSE)&($G(PSSFRQ)):PSSFRQ,1:$$GET1^DIQ(51.1,IENS,2,"I"))
"RTN","PSSJSV",44,0)
 I X(2)="" K:$D(X) X(1),X(2),X(3) Q
"RTN","PSSJSV",45,0)
 I X(2)>0,X(2)<1440,(1440/X(2))'=X(1) K X Q  ;PSS*1*143 Admin times must match frequency
"RTN","PSSJSV",46,0)
 I X(2)>0,X(2)<1440,(1440#X(2))'=0,X(1)>0 K X Q  ;PSS*1*143 Odd schedules cannot have admin times
"RTN","PSSJSV",47,0)
 I X(2)>1440,(X(2)#1440)'=0,X(1)>1 K X Q  ;PSS*1*143 Odd schedules cannot have admin times
"RTN","PSSJSV",48,0)
 I X(2)>1439,$L(X,"-")'=1 K X Q  ;PSS*1*143 Schedules with frequency equal to or greater than 1 day can only have one admin time.
"RTN","PSSJSV",49,0)
 K:$D(X) X(1),X(2),X(3)
"RTN","PSSJSV",50,0)
 Q
"RTN","PSSJSV",51,0)
 ;
"RTN","PSSJSV",52,0)
DIC ; 51.1 look-up
"RTN","PSSJSV",53,0)
 S DIC="^PS(51.1,",DIC(0)=$E("E",'$D(PSJNE))_"ISZ",DIC("W")="I '$D(PSJNE) D DICW^PSSJSV0",D="AP"_PSJPP
"RTN","PSSJSV",54,0)
 D IX^DIC K DIC Q:Y'>0  S PSJY=+Y,(PSJX,X,X0)=Y(0,0),PSJM=$P(Y(0),"^",3),PSJTS=$P(Y(0),"^",5),PSJAX=$P(Y(0),U,7) S:PSJTS="" PSJTS="C" Q:PSJTS="O"!(PSJTS["R")  I $D(PSJW),$D(^PS(51.1,+Y,1,+PSJW,0)) S PSJAT=$P(^(0),"^",PSJTS="S"+2)
"RTN","PSSJSV",55,0)
 E  S PSJAT=$P(Y(0),"^",PSJTS="S"*4+2)
"RTN","PSSJSV",56,0)
 Q:PSJTS'="S"
"RTN","PSSJSV",57,0)
 F Y=1:1:$L(PSJAT,"-") S Y(1)=$P(PSJAT,"-",Y),PSJAT(Y(1))="",Y(2)=$O(^PS(51.15,"ACP",PSJPP,Y(1),0)) I Y(2),$D(^PS(51.15,Y(2),0)) S PSJAT(Y(1))=$P(^(0),"^",3) I $D(PSJW),$D(^(1,PSJW,0)),$P(^(0),"^",2)]"" S PSJAT(Y(1))=$P(^(0),"^",2)
"RTN","PSSJSV",58,0)
 Q
"RTN","PSSJSV",59,0)
 ;
"RTN","PSSJSV",60,0)
DW ;  week days
"RTN","PSSJSV",61,0)
 S SWD="SUNDAYS^MONDAYS^TUESDAYS^WEDNESDAYS^THURSDAYS^FRIDAYS^SATURDAYS",SDW=X,X=$P(X,"@",2) D ENCHK Q:'$D(X)
"RTN","PSSJSV",62,0)
 S X=$P(SDW,"@"),X(1)="-" I X?.E1P.E,X'["-" F QX=1:1:$L(X) I $E(X,QX)?1P S X(1)=$E(X,QX) Q
"RTN","PSSJSV",63,0)
 F Q=1:1:$L(X,X(1)) K:SWD="" X Q:SWD=""  S Z=$P(X,X(1),Q) D DWC Q:'$D(X)
"RTN","PSSJSV",64,0)
 K X(1) S:$D(X) X=SDW Q
"RTN","PSSJSV",65,0)
DWC I $L(Z)<2 K X Q
"RTN","PSSJSV",66,0)
 F QX=1:1:$L(SWD,"^") S Y=$P(SWD,"^",QX) I $P(Y,Z)="" S SWD=$P(SWD,Y,2) S:$L(SWD) SWD=$E(SWD,2,50) Q
"RTN","PSSJSV",67,0)
 E  K X
"RTN","PSSJSV",68,0)
 Q
"RTN","PSSJSV",69,0)
 ;
"RTN","PSSJSV",70,0)
ENSNV ; schedule name
"RTN","PSSJSV",71,0)
 I $S(X["""":1,$A(X)=45:1,X'?.ANP:1,$L(X)>20:1,$L(X)<2:1,1:X?1P.E) K X Q
"RTN","PSSJSV",72,0)
 I $S('$D(PSJPP):0,PSJPP="":1,PSJPP'?.ANP:1,1:'$$VERSION^XPDUTL(PSJPP)) K X
"RTN","PSSJSV",73,0)
 I $D(DA),$D(^PS(51.1,DA,0)),$P(^(0),"^",5)["D" S ZX=X D DNVX S:$D(X) X=ZX K Z1,Z2,Z3,Z4,ZX
"RTN","PSSJSV",74,0)
 Q
"RTN","PSSJSV",75,0)
 ;
"RTN","PSSJSV",76,0)
ENSHV ;  shift in 51.1
"RTN","PSSJSV",77,0)
 I $S($L(X)>11:1,$L(X)<1:1,'$D(PSJPP):1,PSJPP="":1,PSJPP'?.ANP:1,1:'$$VERSION^XPDUTL(PSJPP)) K X Q
"RTN","PSSJSV",78,0)
 F X(1)=1:1:$L(X,"-") S X(2)=$P(X,"-",X(1)) I $S(X(2)="":1,X(2)'?.ANP:1,1:'$D(^PS(51.15,"ACP",PSJPP,X(2)))) K X Q
"RTN","PSSJSV",79,0)
 K X(1),X(2) Q
"RTN","PSSJSV",80,0)
 ;
"RTN","PSSJSV",81,0)
ENVSST ;  shift start/stop times
"RTN","PSSJSV",82,0)
 I X'?2N1"-"2N,X'?4N1"-"4N K X Q
"RTN","PSSJSV",83,0)
 F X(1)=1,2 I $P(X,"-",X(1))>$S($L($P(X,"-",X(1)))<4:24,1:2400) K X Q
"RTN","PSSJSV",84,0)
 K X(1) Q
"RTN","PSSJSV",85,0)
 ;
"RTN","PSSJSV",86,0)
ENFQD ; frequency default
"RTN","PSSJSV",87,0)
 N X1,X2,Z S Z=$S($D(^PS(51.1,DA,0)):$P(^(0),"^"),1:""),X=""
"RTN","PSSJSV",88,0)
 S X=$P(Z,"^",3) I Z]"" Q
"RTN","PSSJSV",89,0)
 S Z=DA I $E(Z,1,2)="AD" Q
"RTN","PSSJSV",90,0)
 I $E(Z,1,3)="BID"!($E(Z,1,3)="TID")!($E(Z,1,3)="QID") S X=1440/$F("BTQ",$E(Z)) Q
"RTN","PSSJSV",91,0)
 E  S:$E(Z)="Q" Z=$E(Z,2,99) S:'Z Z="1"_Z S X1=+Z,Z=$P(Z,+Z,2),X2=0 S:$E(Z)="X" X2=X1,Z=$E(Z,2,99) I 'X2,$E(Z)="O" S X2=.5,Z=$E(Z,2,99)
"RTN","PSSJSV",92,0)
 S X=$S(Z["'":1,(Z["D"&(Z'["AD"))!(Z["AM")!(Z["PM")!(Z["HS"&(Z'["THS")):1440,Z["H"&(Z'["TH"):60,Z["AC"!(Z["PC"):480,Z["W":10080,Z["M":40320,1:"") Q:'X  S:X2 X=X\X2 S:'X2 X=X*X1 Q
"RTN","PSSJSV",93,0)
 ;
"RTN","PSSJSV",94,0)
ENFREQ ; validate frequency
"RTN","PSSJSV",95,0)
 K:+X'=X!(X>525600)!(X<1)!(X?.E1"."1N.N) X
"RTN","PSSJSV",96,0)
 Q
"RTN","PSSJSV",97,0)
 ;
"RTN","PSSJSV",98,0)
DFCHK ; validate dosing check frequency **pss_1_201**
"RTN","PSSJSV",99,0)
 NEW PSSX1,PSSX2 SET PSSX1="",X=$$UP^XLFSTR(X),PSSX2=$E(X,$L(X))
"RTN","PSSJSV",100,0)
 ;
"RTN","PSSJSV",101,0)
 IF $L(X)>4!($L(X)<3) K X Q
"RTN","PSSJSV",102,0)
 ;
"RTN","PSSJSV",103,0)
 IF '+($E(X,2)) K X Q
"RTN","PSSJSV",104,0)
 IF $L(X)=4 SET PSSX1=($E(X,2,3)) IF PSSX1'?.N K X Q
"RTN","PSSJSV",105,0)
 ;
"RTN","PSSJSV",106,0)
 IF $L(X)=3,$E(X,1)="Q",PSSX2="L",$E(X,2)'<7 K X Q
"RTN","PSSJSV",107,0)
 IF $G(PSSX1),$E(X,1)="Q",PSSX2="L",PSSX1'<7 K X Q
"RTN","PSSJSV",108,0)
 IF $G(PSSX1),$E(X,1)="Q",PSSX2="W",PSSX1'<29 K X Q
"RTN","PSSJSV",109,0)
 ;
"RTN","PSSJSV",110,0)
 IF $E(X,1)="Q"&(PSSX2="H"!(PSSX2="D")!(PSSX2="W")!(PSSX2="L")) Q
"RTN","PSSJSV",111,0)
 IF $E(X,1)="X"&(PSSX2="D"!(PSSX2="W")!(PSSX2="L")) Q
"RTN","PSSJSV",112,0)
 ELSE  K X Q
"RTN","PSSJSV",113,0)
 ;
"RTN","PSSJSV",114,0)
HPDCHK ; help prompt with specified formats for the dosing check frequency fields **pss_1_201**
"RTN","PSSJSV",115,0)
 NEW MSG,PSSHFLG SET (MSG,PSSHFLG)=""
"RTN","PSSJSV",116,0)
 ;
"RTN","PSSJSV",117,0)
 IF $G(X)="??" SET PSSHFLG=1
"RTN","PSSJSV",118,0)
 ;
"RTN","PSSJSV",119,0)
 IF 'PSSHFLG D  Q
"RTN","PSSJSV",120,0)
 .SET MSG(1)="     The numeric limit is 99, except for the following formats:"
"RTN","PSSJSV",121,0)
 .SET MSG(2)=""
"RTN","PSSJSV",122,0)
 .SET MSG(3)="     Q#W - Maximum 28 weeks allowed"
"RTN","PSSJSV",123,0)
 .SET MSG(4)="     Q#L - Maximum 6 months allowed"
"RTN","PSSJSV",124,0)
 .SET MSG(5)=""
"RTN","PSSJSV",125,0)
 .SET MSG(6)="     Enter '??' to view the available dosing check frequency formats"
"RTN","PSSJSV",126,0)
 .SET MSG(7)="     for this field."
"RTN","PSSJSV",127,0)
 .SET MSG(8)=""
"RTN","PSSJSV",128,0)
 .D EN^DDIOL(.MSG,"","!")
"RTN","PSSJSV",129,0)
 Q
"RTN","PSSJSV",130,0)
 ;
"RTN","PSSJSV",131,0)
OASCHK ; check the 'D' cross reference to see if duplicates exist **pss_1_201**
"RTN","PSSJSV",132,0)
 NEW MSG SET MSG=""
"RTN","PSSJSV",133,0)
 ;
"RTN","PSSJSV",134,0)
 IF $L($G(X))>20!($L($G(X))<2) D EN^DDIOL("Answer must be 2-20 characters in length.","","!") K X Q
"RTN","PSSJSV",135,0)
 ;
"RTN","PSSJSV",136,0)
 SET X=$$UP^XLFSTR($G(X))
"RTN","PSSJSV",137,0)
 NEW PSSRCHK,PSSRFL,MSG SET (PSSRCHK,PSSRFL)=""
"RTN","PSSJSV",138,0)
 FOR  SET PSSRCHK=$O(^PS(51.1,"D",PSSRCHK)) Q:PSSRCHK']""!($G(PSSRFL))  D
"RTN","PSSJSV",139,0)
 .IF PSSRCHK=$G(X) SET PSSRFL=1
"RTN","PSSJSV",140,0)
 IF $G(PSSRFL) K X D  Q
"RTN","PSSJSV",141,0)
 .SET MSG(1)=""
"RTN","PSSJSV",142,0)
 .SET MSG(2)="      Duplicate exists in Old Schedule Name multiple for an entry in the"
"RTN","PSSJSV",143,0)
 .SET MSG(3)="      file.  Please enter a new name."
"RTN","PSSJSV",144,0)
 .D EN^DDIOL(.MSG,"","!")
"RTN","PSSJSV",145,0)
 Q
"RTN","PSSJSV",146,0)
 ;
"RTN","PSSJSV",147,0)
OASDIC ; screening for the OLD SCHEDULE NAME(S) multiple **pss_1_201**
"RTN","PSSJSV",148,0)
 NEW PSSDA,PSSX,PSSY,PSSFCHK,PSSFCHK2,PSSFCHK3,PSSFL,PSSFL2,PSSFL3,PSSODA,PSSOX,PSSEX SET PSSDA=$G(DA),PSSX=$G(X),PSSY=$G(Y),(PSSFL,PSSFL2,PSSFL3)=0,(PSSODA,PSSOX,PSSEX)=""
"RTN","PSSJSV",149,0)
 NEW DA,D0,X,Y,DIC,DIE,DIEL,DI,DC,DR,DQ,DL,DM,DK,DP,PSSRN,MSG
"RTN","PSSJSV",150,0)
 SET DA=PSSDA,MSG=""
"RTN","PSSJSV",151,0)
 ;
"RTN","PSSJSV",152,0)
 FOR  SET PSSRN=$$OASLE(DA),DA(1)=$G(DA) Q:'$G(DA(1))  SET DIC="^PS(51.1,"_DA(1)_",5,",DIC(0)="AEMLTVZ",DIC("A")="Select OLD SCHEDULE NAME(S): "_$G(PSSRN) D ^DIC Q:+Y'>0  D
"RTN","PSSJSV",153,0)
 .SET PSSFCHK="" FOR  SET PSSFCHK=$O(^PS(51.1,"B",PSSFCHK)) Q:PSSFCHK']""!($G(PSSFL))  D
"RTN","PSSJSV",154,0)
 ..IF $G(PSSFCHK)=$G(X) SET PSSFL=1
"RTN","PSSJSV",155,0)
 .IF $G(PSSFL)=1 SET PSSFL=0 K X D  Q
"RTN","PSSJSV",156,0)
 ..SET DIE=DIC,DA=+Y,DR=".01////@" D ^DIE SET DA=PSSDA
"RTN","PSSJSV",157,0)
 ..SET MSG(1)=""
"RTN","PSSJSV",158,0)
 ..SET MSG(2)="      An OLD SCHEDULE NAME(S) entry cannot be the same as an existing NAME"
"RTN","PSSJSV",159,0)
 ..SET MSG(3)="      field."
"RTN","PSSJSV",160,0)
 ..SET MSG(4)=""
"RTN","PSSJSV",161,0)
 ..D EN^DDIOL(.MSG,"","!")
"RTN","PSSJSV",162,0)
 .SET PSSODA=+Y
"RTN","PSSJSV",163,0)
 .SET PSSOX=$P(Y,U,2)
"RTN","PSSJSV",164,0)
 .SET DIR(0)="FAO^2:20",DIR("A")="OLD SCHEDULE NAME(S): "_PSSOX_"// " D ^DIR
"RTN","PSSJSV",165,0)
 .IF $G(X)="^" SET DA=PSSDA K X,DIR Q
"RTN","PSSJSV",166,0)
 .IF $G(X)=PSSOX SET DA=PSSDA K X,DIR Q
"RTN","PSSJSV",167,0)
 .SET PSSFCHK2="" FOR  SET PSSFCHK2=$O(^PS(51.1,"B",PSSFCHK2)) Q:PSSFCHK2']""!($G(PSSFL2))  D
"RTN","PSSJSV",168,0)
 ..IF $G(PSSFCHK2)=$G(X) SET PSSFL2=1
"RTN","PSSJSV",169,0)
 .SET PSSFCHK3="" FOR  SET PSSFCHK3=$O(^PS(51.1,"D",PSSFCHK3)) Q:PSSFCHK3']""!($G(PSSFL3))  D
"RTN","PSSJSV",170,0)
 ..IF $G(PSSFCHK3)=$G(X) SET PSSFL3=1
"RTN","PSSJSV",171,0)
 .IF $G(PSSFL2)=1 SET PSSFL2=0 K X,DIR  D  Q
"RTN","PSSJSV",172,0)
 ..SET DA=PSSDA
"RTN","PSSJSV",173,0)
 ..SET MSG(1)=""
"RTN","PSSJSV",174,0)
 ..SET MSG(2)="      An OLD SCHEDULE NAME(S) entry cannot be the same as an existing NAME"
"RTN","PSSJSV",175,0)
 ..SET MSG(3)="      field."
"RTN","PSSJSV",176,0)
 ..SET MSG(4)=""
"RTN","PSSJSV",177,0)
 ..D EN^DDIOL(.MSG,"","!")
"RTN","PSSJSV",178,0)
 .IF $G(PSSFL3)=1 SET PSSFL3=0 K X,DIR D  Q
"RTN","PSSJSV",179,0)
 ..SET DA=PSSDA
"RTN","PSSJSV",180,0)
 ..SET MSG(1)=""
"RTN","PSSJSV",181,0)
 ..SET MSG(2)="      Duplicate exists in Old Schedule Name multiple for an entry in the"
"RTN","PSSJSV",182,0)
 ..SET MSG(3)="      file."
"RTN","PSSJSV",183,0)
 ..SET MSG(4)=""
"RTN","PSSJSV",184,0)
 ..D EN^DDIOL(.MSG,"","!")
"RTN","PSSJSV",185,0)
 .IF $G(X)'="",$G(X)'="@" SET PSSEX=X,DIE=DIC,DA=PSSODA,DR=".01///^S X=PSSEX" D ^DIE SET DA=PSSDA K DIR
"RTN","PSSJSV",186,0)
 .IF $G(X)="@" S DIR(0)="YAO",DIR("A")="SURE YOU WANT TO DELETE? " D ^DIR
"RTN","PSSJSV",187,0)
 .IF $G(Y)=1 SET DIE=DIC,DA=PSSODA,DR=".01///@" D ^DIE SET DA=PSSDA K DIR
"RTN","PSSJSV",188,0)
 .IF $G(Y)=0 SET DA=PSSDA K DIR
"RTN","PSSJSV",189,0)
 IF $G(X)="^" K DIC,DIE,DR,DA Q
"RTN","PSSJSV",190,0)
 IF $G(X)["^" D EN^DDIOL("      No field jumping allowed from this field.","","!") K X,DIC,DIE,DR,DA Q
"RTN","PSSJSV",191,0)
 SET X=PSSX,Y=PSSY K DIC,DIE,DR,DA,PSSDA,PSSX,PSSY Q
"RTN","PSSJSV",192,0)
 ;
"RTN","PSSJSV",193,0)
OASLE(PSSDA) ;
"RTN","PSSJSV",194,0)
 NEW PSSLR,PSSLE SET PSSLE=""
"RTN","PSSJSV",195,0)
 IF $G(^PS(51.1,$G(PSSDA),5,0))'="" SET PSSLR=999999 FOR  SET PSSLR=$O(^PS(51.1,$G(PSSDA),5,PSSLR),-1) S:$G(^PS(51.1,$G(PSSDA),5,PSSLR,0))'="" PSSLE=$G(^PS(51.1,$G(PSSDA),5,PSSLR,0))_"// " Q:PSSLR'=""
"RTN","PSSJSV",196,0)
 Q $G(PSSLE)
"RTN","PSSJSV",197,0)
 ;
"RTN","PSSJSV",198,0)
ENDNV ; day of the week name
"RTN","PSSJSV",199,0)
 N Z1,Z2,Z3,Z4 S X=$S($D(^PS(51.1,DA,0)):$P(^(0),"^"),1:"") I X="" K X Q
"RTN","PSSJSV",200,0)
 ;
"RTN","PSSJSV",201,0)
DNVX S Z2=1,Z4="-" I X'["-",X?.E1P.E F Z1=1:1:$L(X) I $E(X,Z1)?1P S Z4=$E(X,Z1) Q
"RTN","PSSJSV",202,0)
 F Z1=1:1:$L(X,Z4) Q:'Z2  S Z2=0 I $L($P(X,Z4,Z1))>1 F Z3="MONDAYS","TUESDAYS","WEDNESDAYS","THURSDAYS","FRIDAYS","SATURDAYS","SUNDAYS" I $P(Z3,$P(X,Z4,Z1))="" S Z2=1 Q
"RTN","PSSJSV",203,0)
 K:'Z2 X S:Z2 X="D" Q
"RTN","PSSJSV",204,0)
 ;
"RTN","PSSJSV",205,0)
ENPSJ ;validate schedule names for PSJ package **pss_1_201**
"RTN","PSSJSV",206,0)
 N A,B,I,PSSCNT
"RTN","PSSJSV",207,0)
 ;
"RTN","PSSJSV",208,0)
 IF $G(X)'="",+$G(Y) D OASCHK IF $G(X)="" Q
"RTN","PSSJSV",209,0)
 IF $G(PSSON)'="",$G(X)'=$G(PSSON) D ENOAS(PSSON)
"RTN","PSSJSV",210,0)
 ;
"RTN","PSSJSV",211,0)
 S X=$$UP^XLFSTR(X)
"RTN","PSSJSV",212,0)
 I $G(PSJPP)'="PSJ" Q
"RTN","PSSJSV",213,0)
 S A=$TR(X,".","") I A="OTHER" K X Q
"RTN","PSSJSV",214,0)
 F I=1:1:$L(A," ") S B=$P(A," ",I) I B="QD"!(B="QOD")!(B="HS")!(B="TIW") K X ;;>> *149 RJS
"RTN","PSSJSV",215,0)
 Q:'$D(X)
"RTN","PSSJSV",216,0)
 S DOW=0,ZX=X S X=$P(X,"@") D DNVX I $G(X)="" S X=ZX K ZX
"RTN","PSSJSV",217,0)
 I X="D" S X=ZX,DOW=1 D:X["@" CHKORD I $D(X),$G(PSSCNT)>1 D  S:'$D(X) X=ZX K Z1,Z2,Z3,Z4,ZX
"RTN","PSSJSV",218,0)
 .N MSG
"RTN","PSSJSV",219,0)
 .S MSG(1)="",MSG(2)="The day of the week schedule must be in the correct day of week order."
"RTN","PSSJSV",220,0)
 .S MSG(3)="The correct order is: SU-MO-TU-WE-TH-FR-SA"
"RTN","PSSJSV",221,0)
 .D EN^DDIOL(.MSG,"","!")
"RTN","PSSJSV",222,0)
 .Q
"RTN","PSSJSV",223,0)
 ;
"RTN","PSSJSV",224,0)
ENOAS(PSSOLD) ; entry for new OLD SCHEDULE NAME(S) into the multiple **pss_1_201**
"RTN","PSSJSV",225,0)
 NEW PSSMCHK,PSSRCHK,PSSMFL1,PSSMFL2,PSSNNM,PSSDA,MSG SET (PSSRCHK,MSG)="",(PSSMCHK,PSSMFL1,PSSMFL2)=0,PSSNNM=$$UP^XLFSTR($G(X)),PSSDA=$G(DA)
"RTN","PSSJSV",226,0)
 NEW PSSCHK1,PSSCHK2,PSSCHK3,PSSDFL SET PSSCHK1="",(PSSCHK2,PSSCHK3,PSSDFL)=0
"RTN","PSSJSV",227,0)
 ;
"RTN","PSSJSV",228,0)
 IF $G(DA) FOR  SET PSSMCHK=$O(^PS(51.1,$G(DA),5,PSSMCHK)) Q:'+PSSMCHK!($G(PSSMFL1))  D
"RTN","PSSJSV",229,0)
 .IF $G(^PS(51.1,$G(DA),5,PSSMCHK,0))=$G(PSSOLD) SET PSSMFL1=1
"RTN","PSSJSV",230,0)
 FOR  SET PSSRCHK=$O(^PS(51.1,"D",PSSRCHK)) Q:PSSRCHK']""!($G(PSSMFL2))  D
"RTN","PSSJSV",231,0)
 .IF $G(PSSRCHK)=$G(PSSOLD) SET PSSMFL2=1
"RTN","PSSJSV",232,0)
 IF '$G(PSSMFL1),'$G(PSSMFL2),$G(DA),$G(X)'="",$G(X)'?." " KILL DO SET X=$G(PSSON),DA(1)=$G(DA),DIC=DIC_DA(1)_",5,",DIC(0)="L" D FILE^DICN SET X=PSSNNM,DIC="^PS(51.1,"
"RTN","PSSJSV",233,0)
 ;
"RTN","PSSJSV",234,0)
 IF $G(X)'="" FOR  SET PSSCHK1=$O(^PS(51.1,"D",PSSCHK1)) Q:PSSCHK1=""!($G(PSSDFL))  D
"RTN","PSSJSV",235,0)
 .FOR  SET PSSCHK2=$O(^PS(51.1,"D",PSSCHK1,PSSCHK2)) Q:PSSCHK1=""!(PSSCHK2="")!($G(PSSDFL))  D
"RTN","PSSJSV",236,0)
 ..FOR  SET PSSCHK3=$O(^PS(51.1,"D",PSSCHK1,PSSCHK2,PSSCHK3)) Q:PSSCHK1=""!(PSSCHK2="")!(PSSCHK3="")!($G(PSSDFL))  D
"RTN","PSSJSV",237,0)
 ...IF $G(PSSCHK1)=$G(X) SET PSSDFL=1
"RTN","PSSJSV",238,0)
 ...IF $G(PSSDFL)=1 D  Q
"RTN","PSSJSV",239,0)
 ....NEW DR,DIK SET DA(1)=$G(PSSCHK2),DA=$G(PSSCHK3),DIK="^PS(51.1,"_DA(1)_",""5""," D ^DIK SET DA=PSSDA,X=PSSNNM,PSSDFL=0
"RTN","PSSJSV",240,0)
 ....SET MSG(1)=""
"RTN","PSSJSV",241,0)
 ....SET MSG(2)="A duplicate entry exists in the OLD SCHEDULE NAME(S) multiple. The NAME"
"RTN","PSSJSV",242,0)
 ....SET MSG(3)="field has been updated.  The OLD SCHEDULE NAME duplicate has been deleted."
"RTN","PSSJSV",243,0)
 ....SET MSG(4)=""
"RTN","PSSJSV",244,0)
 ....D EN^DDIOL(.MSG,"","!")
"RTN","PSSJSV",245,0)
 Q
"RTN","PSSJSV",246,0)
 ;
"RTN","PSSJSV",247,0)
SCRN ;LOGIC TO SCREEN OUT @ IF NOT DAILY
"RTN","PSSJSV",248,0)
 S (PSSFLG,PSSDFLG,PSSTFLG,PSSAFLG)=0
"RTN","PSSJSV",249,0)
 Q:X'["@"
"RTN","PSSJSV",250,0)
 I $G(PSSCNT) K PSSCNT,X Q
"RTN","PSSJSV",251,0)
 D DAYS,TIMECHK
"RTN","PSSJSV",252,0)
 I $L(X)<2!($L(X)>20) D MSG1
"RTN","PSSJSV",253,0)
 I $G(PSSAFLG) D MSG4
"RTN","PSSJSV",254,0)
 I $G(PSSTFLG) D MSG3
"RTN","PSSJSV",255,0)
 I $G(PSSDFLG) D MSG2
"RTN","PSSJSV",256,0)
 I $G(PSSFLG) S MSG(4)="",MSG(5)="  "_X D EN^DDIOL(.MSG,"","!") K MSG
"RTN","PSSJSV",257,0)
 K:$G(PSSFLG) X
"RTN","PSSJSV",258,0)
 K PSSFLG,PSSDFLG,PSSTFLG,PSSAFLG
"RTN","PSSJSV",259,0)
 Q
"RTN","PSSJSV",260,0)
 ;
"RTN","PSSJSV",261,0)
ENPSJT ; Validate schedule type (one-time PRN conflict)
"RTN","PSSJSV",262,0)
 N A,B
"RTN","PSSJSV",263,0)
 S A=$$GET1^DIQ(51.1,DA,.01),B=""
"RTN","PSSJSV",264,0)
 I A["PRN",X'="P" D
"RTN","PSSJSV",265,0)
 . S B="Conflict: Schedule Name contains PRN but selected Schedule Type is not PRN."
"RTN","PSSJSV",266,0)
 . K X
"RTN","PSSJSV",267,0)
 I A'["PRN",X="P" D
"RTN","PSSJSV",268,0)
 . S B="Conflict: Schedule Name does not contain PRN but selected Schedule Type is PRN."
"RTN","PSSJSV",269,0)
 . K X
"RTN","PSSJSV",270,0)
 I $L(B)>0 D EN^DDIOL(.B,"","!") Q
"RTN","PSSJSV",271,0)
 S A=$$GET1^DIQ(51.1,DA,2),B=""
"RTN","PSSJSV",272,0)
 Q
"RTN","PSSJSV",273,0)
 ;
"RTN","PSSJSV",274,0)
CHKORD ;Check order of days in DOW schedule name
"RTN","PSSJSV",275,0)
 N I,J,L,N,P,W
"RTN","PSSJSV",276,0)
 S N=$P(X,"@"),L=0,P=$L(N,"-"),W="SUNDAYS,MONDAYS,TUESDAYS,WEDNESDAYS,THURSDAYS,FRIDAYS,SATURDAYS",PSSCNT=0
"RTN","PSSJSV",277,0)
 F I=1:1:P F J=1:1:7 I $P(W,",",J)=$P(N,"-",I) K:J'>L X Q:'$D(X)  S:J>L L=J,PSSCNT=PSSCNT+1
"RTN","PSSJSV",278,0)
 Q
"RTN","PSSJSV",279,0)
 ;
"RTN","PSSJSV",280,0)
RMTIME ;Remove ward times when schedule becomes odd
"RTN","PSSJSV",281,0)
 N R
"RTN","PSSJSV",282,0)
 S R=0 F  S R=$O(^PS(51.1,D0,1,R)) Q:R=""  K ^PS(51.1,D0,1,R)
"RTN","PSSJSV",283,0)
 Q
"RTN","PSSJSV",284,0)
DAYS ; check days of week for correct order sequence
"RTN","PSSJSV",285,0)
 N PSSD2,PSSD3,PSSD4,PSSD1,PSSD5,PSSD6,PSSFND
"RTN","PSSJSV",286,0)
 S PSSD1=$P(X,"@"),PSSD4=0,PSSD5=$L(PSSD1,"-"),PSSD6="SU,MO,TU,WE,TH,FR,SA",PSSFND=0
"RTN","PSSJSV",287,0)
 F PSSD2=1:1:PSSD5 Q:'$D(PSSD1)  D
"RTN","PSSJSV",288,0)
 .F PSSD3=1:1:7 D  Q:'$D(PSSD1)
"RTN","PSSJSV",289,0)
 ..I $P(PSSD6,",",PSSD3)=$P(PSSD1,"-",PSSD2) K:PSSD3'>PSSD4 PSSD1 Q:'$D(PSSD1)  S PSSFND=PSSFND+1 S:PSSD3>PSSD4 PSSD4=PSSD3
"RTN","PSSJSV",290,0)
 ..I $L($P(PSSD1,"-",PSSD2))>2 K PSSD1
"RTN","PSSJSV",291,0)
 .K:PSSFND'=PSSD2 PSSD1
"RTN","PSSJSV",292,0)
 I ('$D(PSSD1)!('$D(PSSFND))) S PSSDFLG=1
"RTN","PSSJSV",293,0)
 Q
"RTN","PSSJSV",294,0)
MSG1 ; max length exceeded message
"RTN","PSSJSV",295,0)
 S MSG(1)="",MSG(2)="The Administration Schedule you entered has "_$L(X)_" characters."
"RTN","PSSJSV",296,0)
 S MSG(3)="Answer must be 2-20 characters in length."
"RTN","PSSJSV",297,0)
 D EN^DDIOL(.MSG,"","!")
"RTN","PSSJSV",298,0)
 S PSSFLG=1
"RTN","PSSJSV",299,0)
 K MSG
"RTN","PSSJSV",300,0)
 Q
"RTN","PSSJSV",301,0)
MSG2 ; day of week order squence message
"RTN","PSSJSV",302,0)
 S MSG(1)="",MSG(2)="The day of the week schedule must be in the correct day of week order."
"RTN","PSSJSV",303,0)
 S MSG(3)="The correct order is: SU-MO-TU-WE-TH-FR-SA"
"RTN","PSSJSV",304,0)
 D EN^DDIOL(.MSG,"","!")
"RTN","PSSJSV",305,0)
 S PSSFLG=1
"RTN","PSSJSV",306,0)
 K MSG
"RTN","PSSJSV",307,0)
 Q
"RTN","PSSJSV",308,0)
MSG3 ; time input message
"RTN","PSSJSV",309,0)
 S MSG(1)="",MSG(2)="The time must be between 0001 - 2400."
"RTN","PSSJSV",310,0)
 S MSG(3)="A correct time entry would be: 0800-1200-1600 etc."
"RTN","PSSJSV",311,0)
 D EN^DDIOL(.MSG,"","!")
"RTN","PSSJSV",312,0)
 S PSSFLG=1
"RTN","PSSJSV",313,0)
 K MSG
"RTN","PSSJSV",314,0)
 Q
"RTN","PSSJSV",315,0)
MSG4 ; time sequence message
"RTN","PSSJSV",316,0)
 S MSG(1)="",MSG(2)="The time must be entered in ascending order."
"RTN","PSSJSV",317,0)
 S MSG(3)="A correct time entry would be: 0800-1200-1600 etc."
"RTN","PSSJSV",318,0)
 D EN^DDIOL(.MSG,"","!")
"RTN","PSSJSV",319,0)
 S PSSFLG=1
"RTN","PSSJSV",320,0)
 K MSG
"RTN","PSSJSV",321,0)
 Q
"RTN","PSSJSV",322,0)
TIMECHK ; time validation
"RTN","PSSJSV",323,0)
 N PSSXTIME,PSSTLN,PSSLOOP,PSSTCHR,PSSDASH,PSSLEN,PSSTCHK,PSSTIMCT,PSSTIME
"RTN","PSSJSV",324,0)
 I $L(X,"@")>2 S (PSSDFLG,PSSTFLG)=1 Q
"RTN","PSSJSV",325,0)
 S PSSXTIME=$P(X,"@",2),PSSTLN=$L(PSSXTIME),PSSTFLG=0,PSSDASH=$L(PSSXTIME,"-")
"RTN","PSSJSV",326,0)
 I PSSXTIME=0 S PSSTFLG=1 Q
"RTN","PSSJSV",327,0)
 F PSSTIMCT=1:1:PSSDASH S PSSTIME=$P(PSSXTIME,"-",PSSTIMCT) D
"RTN","PSSJSV",328,0)
 .S PSSTCHK(PSSTIMCT)=PSSTIME,PSSLEN=$L(PSSTIME)
"RTN","PSSJSV",329,0)
 .I $L(PSSTCHK(PSSTIMCT))=2 S PSSTCHK(PSSTIMCT)=PSSTCHK(PSSTIMCT)_"00"
"RTN","PSSJSV",330,0)
 .F PSSLOOP=1:1:PSSLEN D
"RTN","PSSJSV",331,0)
 ..S PSSTCHR=$E(PSSTIME,PSSLOOP)
"RTN","PSSJSV",332,0)
 ..I $A(PSSTCHR)<48!($A(PSSTCHR)>57) S PSSTFLG=1
"RTN","PSSJSV",333,0)
 .I ((PSSTIME<1)!(PSSLEN=1)!(PSSLEN=3)!(PSSLEN>4)) S PSSTFLG=1
"RTN","PSSJSV",334,0)
 F PSSTIMCT=1:1:PSSDASH D
"RTN","PSSJSV",335,0)
 .I $G(PSSTCHK(PSSTIMCT+1)),PSSTCHK(PSSTIMCT)>PSSTCHK(PSSTIMCT+1) S PSSAFLG=1
"RTN","PSSJSV",336,0)
 .I $L(PSSTCHK(PSSTIMCT))=4 D
"RTN","PSSJSV",337,0)
 ..I $E(PSSTCHK(PSSTIMCT),1,4)>2400 S PSSTFLG=1
"RTN","PSSJSV",338,0)
 ..I $E(PSSTCHK(PSSTIMCT),1,2)<24 D
"RTN","PSSJSV",339,0)
 ...I $E(PSSTCHK(PSSTIMCT),3,4)>59 S PSSTFLG=1
"RTN","PSSJSV",340,0)
 Q
"RTN","PSSMIRPT")
0^14^B35619952^B30532574
"RTN","PSSMIRPT",1,0)
PSSMIRPT ;BIR/RTR-Medication Instruction Report ;07/03/07
"RTN","PSSMIRPT",2,0)
 ;;1.0;PHARMACY DATA MANAGEMENT;**129,201**;9/30/97;Build 23
"RTN","PSSMIRPT",3,0)
 ;
"RTN","PSSMIRPT",4,0)
 ;
"RTN","PSSMIRPT",5,0)
EN ;Prompts for Medication Instruction File Report
"RTN","PSSMIRPT",6,0)
 W !!,"This report displays entries from the MEDICATION INSTRUCTION (#51) File. It"
"RTN","PSSMIRPT",7,0)
 W !,"can be run for all Medication Instructions or only Medication Instructions"
"RTN","PSSMIRPT",8,0)
 W !,"without a FREQUENCY (IN MINUTES). If a FREQUENCY (IN MINUTES) cannot be"
"RTN","PSSMIRPT",9,0)
 W !,"determined for an order, the daily dosage check cannot occur for that order."
"RTN","PSSMIRPT",10,0)
 N DIR,PSSMXRP,PSSMXLNG,Y,X,DTOUT,DUOUT,DIRUT,DIROUT,IOP,%ZIS,POP,ZTRTN,ZTDESC,ZTSAVE,ZTSK
"RTN","PSSMIRPT",11,0)
 K DIR,Y S DIR(0)="SO^A:All Medication Instructions;O:Only Medication Instructions with a missing frequency",DIR("A",1)="Print All Medication Instructions, or Only Medication Instructions",DIR("A")="without a frequency",DIR("B")="A"
"RTN","PSSMIRPT",12,0)
 S DIR("?")=" ",DIR("?",1)=" ",DIR("?",2)="Enter 'A' to see all Medication Instructions, enter 'O' to see only",DIR("?",3)="those Medication Instructions without data in the FREQUENCY (IN MINUTES)"
"RTN","PSSMIRPT",13,0)
 S DIR("?",4)="(#31) Field. A FREQUENCY (IN MINUTES) must be derived from a Schedule",DIR("?",5)="for the daily dosage check to occur for an order."
"RTN","PSSMIRPT",14,0)
 W ! D ^DIR K DIR I $D(DUOUT)!($D(DTOUT)) D MESS K DIR,Y S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR Q
"RTN","PSSMIRPT",15,0)
 I Y'="A",Y'="O" D MESS K DIR,Y S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR Q
"RTN","PSSMIRPT",16,0)
 S PSSMXRP=Y
"RTN","PSSMIRPT",17,0)
 K DIR,Y S DIR(0)="SO^80:80 Column;132:132 Column",DIR("A")="Print report in 80 or 132 column format",DIR("B")="80"
"RTN","PSSMIRPT",18,0)
 S DIR("?")=" ",DIR("?",1)="Enter 80 to print the report in an 80 column format,",DIR("?",2)="Enter 132 to print the report in an 132 column format."
"RTN","PSSMIRPT",19,0)
 W ! D ^DIR K DIR I $D(DUOUT)!($D(DTOUT)) D MESS K DIR,Y S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR Q
"RTN","PSSMIRPT",20,0)
 I Y'="80",Y'="132" D MESS K DIR,Y S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR Q
"RTN","PSSMIRPT",21,0)
 S PSSMXLNG=Y W !
"RTN","PSSMIRPT",22,0)
 K IOP,%ZIS,POP S %ZIS="QM" D ^%ZIS I $G(POP)>0 D MESS K DIR,Y S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR,IOP,%ZIS,POP Q
"RTN","PSSMIRPT",23,0)
 I $D(IO("Q")) S ZTRTN="START^PSSMIRPT",ZTDESC="Medication Instruction File Report",ZTSAVE("PSSMXRP")="",ZTSAVE("PSSMXLNG")="" D ^%ZTLOAD K %ZIS W !!,"Report queued to print.",! D  Q
"RTN","PSSMIRPT",24,0)
 .K DIR,Y S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR
"RTN","PSSMIRPT",25,0)
 ;
"RTN","PSSMIRPT",26,0)
 ;
"RTN","PSSMIRPT",27,0)
START ;Print Medication Instruction File report
"RTN","PSSMIRPT",28,0)
 U IO
"RTN","PSSMIRPT",29,0)
 N PSSMXOUT,PSSMXNOF,PSSMXDEV,PSSMXCT,PSSMXLIN,PSSMXQ,PSSMXQEN,PSSMXRA,PSSMXRAA,PSSMXREP,PSSMXROO,PSSFD,PSSDFS
"RTN","PSSMIRPT",30,0)
 S (PSSMXOUT,PSSMXNOF)=0,PSSMXDEV=$S($E(IOST,1,2)'="C-":"P",1:"C"),PSSMXCT=1
"RTN","PSSMIRPT",31,0)
 K PSSMXLIN S:PSSMXLNG=132 $P(PSSMXLIN,"-",130)="" S:PSSMXLNG=80 $P(PSSMXLIN,"-",78)=""
"RTN","PSSMIRPT",32,0)
 D HD
"RTN","PSSMIRPT",33,0)
 S PSSMXQ="" F  S PSSMXQ=$O(^PS(51,"B",PSSMXQ)) Q:PSSMXQ=""!(PSSMXOUT)  D
"RTN","PSSMIRPT",34,0)
 .F PSSMXQEN=0:0 S PSSMXQEN=$O(^PS(51,"B",PSSMXQ,PSSMXQEN)) Q:'PSSMXQEN!(PSSMXOUT)  I '$G(^PS(51,"B",PSSMXQ,PSSMXQEN)) D
"RTN","PSSMIRPT",35,0)
 ..K PSSMXRA,PSSMXRAA,PSSMXREP,PSSMXROO
"RTN","PSSMIRPT",36,0)
 ..S PSSMXRA=PSSMXQEN_","
"RTN","PSSMIRPT",37,0)
 ..D GETS^DIQ(51,PSSMXRA,".01;.5;1;1.1;9;30;31;32;32.1*;33*","E","PSSMXRAA")
"RTN","PSSMIRPT",38,0)
 ..I PSSMXRP="O",$G(PSSMXRAA(51,PSSMXRA,31,"E"))'="" Q
"RTN","PSSMIRPT",39,0)
 ..S PSSMXNOF=1
"RTN","PSSMIRPT",40,0)
 ..W !!,$G(PSSMXRAA(51,PSSMXRA,.01,"E"))
"RTN","PSSMIRPT",41,0)
 ..I ($Y+5)>IOSL D HD Q:PSSMXOUT
"RTN","PSSMIRPT",42,0)
 ..W !?25,"SYNONYM: "_$G(PSSMXRAA(51,PSSMXRA,.5,"E"))
"RTN","PSSMIRPT",43,0)
 ..I ($Y+5)>IOSL D HD Q:PSSMXOUT
"RTN","PSSMIRPT",44,0)
 ..W !?23,"EXPANSION: " D
"RTN","PSSMIRPT",45,0)
 ...S PSSMXREP=$G(PSSMXRAA(51,PSSMXRA,1,"E"))
"RTN","PSSMIRPT",46,0)
 ...I PSSMXLNG=132 D  Q
"RTN","PSSMIRPT",47,0)
 ....W PSSMXREP,! Q
"RTN","PSSMIRPT",48,0)
 ...I $L(PSSMXREP)<46 W PSSMXREP,! Q
"RTN","PSSMIRPT",49,0)
 ...N X,DIWL,DIWR,DIWF S X=PSSMXREP,DIWL=35,DIWR=79,DIWF="W" K ^UTILITY($J,"W") D ^DIWP D ^DIWW K ^UTILITY($J,"W")
"RTN","PSSMIRPT",50,0)
 ..I ($Y+5)>IOSL D HD Q:PSSMXOUT  W !
"RTN","PSSMIRPT",51,0)
 ..W ?8,"OTHER LANGUAGE EXPANSION: " D
"RTN","PSSMIRPT",52,0)
 ...S PSSMXROO=$G(PSSMXRAA(51,PSSMXRA,1.1,"E"))
"RTN","PSSMIRPT",53,0)
 ...I PSSMXLNG=132 D  Q
"RTN","PSSMIRPT",54,0)
 ....I $L(PSSMXROO)<98 W PSSMXROO,! Q
"RTN","PSSMIRPT",55,0)
 ....N X,DIWL,DIWR,DIWF S X=PSSMXROO,DIWL=35,DIWR=131,DIWF="W" K ^UTILITY($J,"W") D ^DIWP D ^DIWW K ^UTILITY($J,"W")
"RTN","PSSMIRPT",56,0)
 ...I $L(PSSMXROO)<46 W PSSMXROO,! Q
"RTN","PSSMIRPT",57,0)
 ...N X,DIWL,DIWR,DIWF S X=PSSMXROO,DIWL=35,DIWR=79,DIWF="W" K ^UTILITY($J,"W") D ^DIWP D ^DIWW K ^UTILITY($J,"W")
"RTN","PSSMIRPT",58,0)
 ..I ($Y+5)>IOSL D HD Q:PSSMXOUT  W !
"RTN","PSSMIRPT",59,0)
 ..W ?26,"PLURAL: "_$G(PSSMXRAA(51,PSSMXRA,9,"E"))
"RTN","PSSMIRPT",60,0)
 ..I ($Y+5)>IOSL D HD Q:PSSMXOUT
"RTN","PSSMIRPT",61,0)
 ..W !?20,"INTENDED USE: "_$G(PSSMXRAA(51,PSSMXRA,30,"E"))
"RTN","PSSMIRPT",62,0)
 ..I ($Y+5)>IOSL D HD Q:PSSMXOUT
"RTN","PSSMIRPT",63,0)
 ..W !?10,"DOSING CHECK FREQUENCY: "_$G(PSSMXRAA(51,PSSMXRA,32,"E"))
"RTN","PSSMIRPT",64,0)
 ..I ($Y+5)>IOSL D HD Q:PSSMXOUT
"RTN","PSSMIRPT",65,0)
 ..W !?5,"DRUG(S) FOR DOSING CHK FREQ: "
"RTN","PSSMIRPT",66,0)
 ..IF $D(PSSMXRAA(51.321)) SET PSSFD=1,PSSDFS=0 FOR  SET PSSFD=$O(PSSMXRAA(51.321,PSSFD)) Q:PSSFD']""!(PSSMXOUT)  D
"RTN","PSSMIRPT",67,0)
 ...W:'PSSDFS ?34,$G(PSSMXRAA(51.321,PSSFD,.01,"E")) W:PSSDFS !,?34,$G(PSSMXRAA(51.321,PSSFD,.01,"E")) S PSSDFS=1
"RTN","PSSMIRPT",68,0)
 ...I ($Y+5)>IOSL D HD Q:PSSMXOUT
"RTN","PSSMIRPT",69,0)
 ..Q:PSSMXOUT
"RTN","PSSMIRPT",70,0)
 ..W !?10,"FREQUENCY (IN MINUTES): "_$G(PSSMXRAA(51,PSSMXRA,31,"E"))
"RTN","PSSMIRPT",71,0)
 ..I ($Y+5)>IOSL D HD Q:PSSMXOUT
"RTN","PSSMIRPT",72,0)
 ..W !?5,"OLD MED INSTRUCTION NAME(S): "
"RTN","PSSMIRPT",73,0)
 ..IF $D(PSSMXRAA(51.33)) SET PSSFD=1,PSSDFS=0 FOR  SET PSSFD=$O(PSSMXRAA(51.33,PSSFD)) Q:PSSFD']""!(PSSMXOUT)  D
"RTN","PSSMIRPT",74,0)
 ...W:'PSSDFS ?34,$G(PSSMXRAA(51.33,PSSFD,.01,"E")) W:PSSDFS !,?34,$G(PSSMXRAA(51.33,PSSFD,.01,"E")) S PSSDFS=1
"RTN","PSSMIRPT",75,0)
 ...I ($Y+5)>IOSL D HD Q:PSSMXOUT
"RTN","PSSMIRPT",76,0)
 ..ELSE  I ($Y+5)>IOSL D HD Q:PSSMXOUT
"RTN","PSSMIRPT",77,0)
 ;
"RTN","PSSMIRPT",78,0)
END ;
"RTN","PSSMIRPT",79,0)
 I '$G(PSSMXOUT),PSSMXRP="O",'$G(PSSMXNOF) W !!,"No Medication Instructions found without frequencies.",!
"RTN","PSSMIRPT",80,0)
 I $G(PSSMXDEV)="P"  W !!,"End of Report.",!
"RTN","PSSMIRPT",81,0)
 I '$G(PSSMXOUT),$G(PSSMXDEV)="C" W !!,"End of Report." K DIR S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR
"RTN","PSSMIRPT",82,0)
 I $G(PSSMXDEV)="C" W !
"RTN","PSSMIRPT",83,0)
 E  W @IOF
"RTN","PSSMIRPT",84,0)
 K PSSMXRP,PSSMXLNG
"RTN","PSSMIRPT",85,0)
 D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@"
"RTN","PSSMIRPT",86,0)
 Q
"RTN","PSSMIRPT",87,0)
 ;
"RTN","PSSMIRPT",88,0)
HD ;Report Header
"RTN","PSSMIRPT",89,0)
 I $G(PSSMXDEV)="C",$G(PSSMXCT)'=1 W ! K DIR,Y S DIR(0)="E",DIR("A")="Press Return to continue, '^' to exit" D ^DIR K DIR I 'Y S PSSMXOUT=1 Q
"RTN","PSSMIRPT",90,0)
 W @IOF
"RTN","PSSMIRPT",91,0)
 I PSSMXRP="A" W !,"MEDICATION INSTRUCTION FILE REPORT (All)"
"RTN","PSSMIRPT",92,0)
 I PSSMXRP="O" W !,"MEDICATION INSTRUCTIONS WITHOUT FREQUENCY REPORT"
"RTN","PSSMIRPT",93,0)
 W ?$S(PSSMXLNG=80:68,1:120),"PAGE: "_PSSMXCT,!,PSSMXLIN,! S PSSMXCT=PSSMXCT+1
"RTN","PSSMIRPT",94,0)
 Q
"RTN","PSSMIRPT",95,0)
 ;
"RTN","PSSMIRPT",96,0)
MESS ;
"RTN","PSSMIRPT",97,0)
 W !!,"Nothing queued to print.",!
"RTN","PSSMIRPT",98,0)
 Q
"RTN","PSSMIRPT",99,0)
 ;
"RTN","PSSPOID1")
0^29^B8199146^B7179282
"RTN","PSSPOID1",1,0)
PSSPOID1 ;BIR/RTR-Orderable Item cross references ;02/14/00
"RTN","PSSPOID1",2,0)
 ;;1.0;PHARMACY DATA MANAGEMENT;**38,201**;9/30/97;Build 23
"RTN","PSSPOID1",3,0)
 ;External reference to CHECKPS^ORUQO supported by DBIA #5756
"RTN","PSSPOID1",4,0)
KILL1 ;Kill x-ref from field 2.1 of File 50
"RTN","PSSPOID1",5,0)
 K ^PS(50.7,"A50",X,DA)
"RTN","PSSPOID1",6,0)
 S PSSCROSS=1 N PSPOINT,PSSZA,PSSZS,PSSZOI,PSSTEST,PSSOINM
"RTN","PSSPOID1",7,0)
 S PSSTEST=X D HOLD D EN1^PSSPOIDT D UNHOLD
"RTN","PSSPOID1",8,0)
 F PSSZA=0:0 S PSSZA=$O(^PS(52.6,"AC",DA,PSSZA)) Q:'PSSZA  D
"RTN","PSSPOID1",9,0)
 .S PSSZOI=$P($G(^PS(52.6,PSSZA,0)),"^",11)
"RTN","PSSPOID1",10,0)
 .I PSSZOI S $P(^PS(52.6,PSSZA,0),"^",11)="" K ^PS(52.6,"AOI",PSSZOI,PSSZA)
"RTN","PSSPOID1",11,0)
 F PSSZS=0:0 S PSSZS=$O(^PS(52.7,"AC",DA,PSSZS)) Q:'PSSZS  D
"RTN","PSSPOID1",12,0)
 .S PSSZOI=$P($G(^PS(52.7,PSSZS,0)),"^",11)
"RTN","PSSPOID1",13,0)
 .I PSSZOI S $P(^PS(52.7,PSSZS,0),"^",11)="" K ^PS(52.7,"AOI",PSSZOI,PSSZS)
"RTN","PSSPOID1",14,0)
 ;Next 2 lines PSS*1*201 - Alerts Quick Order authors of OI related changes
"RTN","PSSPOID1",15,0)
 S PSSOINM=$P($G(^PS(50.7,X,0)),"^")
"RTN","PSSPOID1",16,0)
 D CHECKPS^ORUQO(X,$G(PSSOINM))
"RTN","PSSPOID1",17,0)
 K PSSCROSS
"RTN","PSSPOID1",18,0)
 Q
"RTN","PSSPOID1",19,0)
SET1 ;Set x-ref from field 2.1 of File 50
"RTN","PSSPOID1",20,0)
 S ^PS(50.7,"A50",X,DA)=""
"RTN","PSSPOID1",21,0)
 S PSSCROSS=1 N PSPOINT,PSSZA,PSSZS,PSSTEST,PSSOINM
"RTN","PSSPOID1",22,0)
 S PSSTEST=X D HOLD D EN1^PSSPOIDT D UNHOLD
"RTN","PSSPOID1",23,0)
 F PSSZA=0:0 S PSSZA=$O(^PS(52.6,"AC",DA,PSSZA)) Q:'PSSZA  D
"RTN","PSSPOID1",24,0)
 .S $P(^PS(52.6,PSSZA,0),"^",11)=X,^PS(52.6,"AOI",X,PSSZA)=""
"RTN","PSSPOID1",25,0)
 F PSSZS=0:0 S PSSZS=$O(^PS(52.7,"AC",DA,PSSZS)) Q:'PSSZS  D
"RTN","PSSPOID1",26,0)
 .S $P(^PS(52.7,PSSZS,0),"^",11)=X,^PS(52.7,"AOI",X,PSSZS)=""
"RTN","PSSPOID1",27,0)
 ;Next 2 lines PSS*1*201 - Alerts Quick Order authors of OI related changes
"RTN","PSSPOID1",28,0)
 S PSSOINM=$P($G(^PS(50.7,X,0)),"^")
"RTN","PSSPOID1",29,0)
 D CHECKPS^ORUQO(X,$G(PSSOINM))
"RTN","PSSPOID1",30,0)
 K PSSCROSS
"RTN","PSSPOID1",31,0)
 Q
"RTN","PSSPOID1",32,0)
K526 ;Kill x-ref from generic pointer in IV Additives file
"RTN","PSSPOID1",33,0)
 K ^PSDRUG("A526",X,DA)
"RTN","PSSPOID1",34,0)
 N PSSTEST,PSSVAR S PSSCROSS=1
"RTN","PSSPOID1",35,0)
 S PSSTEST=$P($G(^PS(52.6,DA,0)),"^",11)
"RTN","PSSPOID1",36,0)
 I PSSTEST D HOLD D EN1^PSSPOIDT D UNHOLD
"RTN","PSSPOID1",37,0)
 S PSSVAR=$P($G(^PS(52.6,DA,0)),"^",11) I PSSVAR S $P(^PS(52.6,DA,0),"^",11)="" K ^PS(52.6,"AOI",PSSVAR,DA)
"RTN","PSSPOID1",38,0)
 K PSSCROSS
"RTN","PSSPOID1",39,0)
 Q
"RTN","PSSPOID1",40,0)
S526 ;Set x-ref from generic pointer in IV Additives file
"RTN","PSSPOID1",41,0)
 S ^PSDRUG("A526",X,DA)=""
"RTN","PSSPOID1",42,0)
 N PSSTEST S PSSCROSS=1
"RTN","PSSPOID1",43,0)
 S (PSSTEST,PSSTESTX)=$P($G(^PSDRUG(X,2)),"^") I PSSTEST D HOLD D EN1^PSSPOIDT D UNHOLD
"RTN","PSSPOID1",44,0)
 I PSSTESTX S $P(^PS(52.6,DA,0),"^",11)=PSSTESTX,^PS(52.6,"AOI",PSSTESTX,DA)=""
"RTN","PSSPOID1",45,0)
 K PSSTESTX,PSSCROSS
"RTN","PSSPOID1",46,0)
 Q
"RTN","PSSPOID1",47,0)
K527 ;Kill x-ref from Generic pointer in IV Solutions file
"RTN","PSSPOID1",48,0)
 K ^PSDRUG("A527",X,DA)
"RTN","PSSPOID1",49,0)
 N PSSTEST,PSSVAR S PSSCROSS=1
"RTN","PSSPOID1",50,0)
 S PSSTEST=$P($G(^PS(52.7,DA,0)),"^",11)
"RTN","PSSPOID1",51,0)
 I PSSTEST D HOLD D EN1^PSSPOIDT D UNHOLD
"RTN","PSSPOID1",52,0)
 S PSSVAR=$P($G(^PS(52.7,DA,0)),"^",11) I PSSVAR S $P(^PS(52.7,DA,0),"^",11)="" K ^PS(52.7,"AOI",PSSVAR,DA)
"RTN","PSSPOID1",53,0)
 K PSSCROSS
"RTN","PSSPOID1",54,0)
 Q
"RTN","PSSPOID1",55,0)
S527 ;Set x-ref from Generic pointer in IV Solutions file
"RTN","PSSPOID1",56,0)
 S ^PSDRUG("A527",X,DA)=""
"RTN","PSSPOID1",57,0)
 N PSSTEST S PSSCROSS=1
"RTN","PSSPOID1",58,0)
 S (PSSTEST,PSSTESTX)=$P($G(^PSDRUG(X,2)),"^") I PSSTEST D HOLD D EN1^PSSPOIDT D UNHOLD
"RTN","PSSPOID1",59,0)
 I PSSTESTX S $P(^PS(52.7,DA,0),"^",11)=PSSTESTX,^PS(52.7,"AOI",PSSTESTX,DA)=""
"RTN","PSSPOID1",60,0)
 K PSSTESTX,PSSCROSS
"RTN","PSSPOID1",61,0)
 Q
"RTN","PSSPOID1",62,0)
HOLD ;
"RTN","PSSPOID1",63,0)
 S PSSHDZX=$G(X),PSSHDZDA=$G(DA)
"RTN","PSSPOID1",64,0)
 Q
"RTN","PSSPOID1",65,0)
UNHOLD ;
"RTN","PSSPOID1",66,0)
 S X=$G(PSSHDZX),DA=$G(PSSHDZDA)
"RTN","PSSPOID1",67,0)
 K PSSHDZX,PSSHDZDA
"RTN","PSSPOID1",68,0)
 Q
"RTN","PSSREF")
0^30^B7784796^B5718052
"RTN","PSSREF",1,0)
PSSREF ;BIR/BAB-Cross Reference Utility ; 09/02/97 8:49
"RTN","PSSREF",2,0)
 ;;1.0;PHARMACY DATA MANAGEMENT;**201**;9/30/97;Build 23
"RTN","PSSREF",3,0)
 ;External reference to CHECKPS^ORUQO supported by DBIA #5756
"RTN","PSSREF",4,0)
ACT ;Entry point to create xref for CMOP Dispense field edit
"RTN","PSSREF",5,0)
 Q:$G(^PSDRUG(DA,3))=""
"RTN","PSSREF",6,0)
 S:'$D(^PSDRUG(DA,4,0)) ^PSDRUG(DA,4,0)="^50.0214DA^^"
"RTN","PSSREF",7,0)
 S (PSX,Z)=0 F  S Z=$O(^PSDRUG(DA,4,Z)) Q:'Z  S PSX=Z
"RTN","PSSREF",8,0)
 S PSX=PSX+1 D NOW^%DTC S ^PSDRUG(DA,4,PSX,0)=%_"^E^"_DUZ_"^CMOP Dispense^"_$S($G(^PSDRUG(DA,3))=1:"YES",$G(^PSDRUG(DA,3))=0:"NO",1:"")
"RTN","PSSREF",9,0)
 S $P(^PSDRUG(DA,4,0),"^",3)=PSX,$P(^(0),"^",4)=$P(^(0),"^",4)+1
"RTN","PSSREF",10,0)
 K PSX,Z,% Q
"RTN","PSSREF",11,0)
DEL ;  Called by ^DD(52.1,.01,"DEL",550,0)- PREVENTS DELETING REFILL DATE
"RTN","PSSREF",12,0)
 I $G(PSX(DA))]"",($G(PSX(DA))="L"!(+$G(PSX(DA))'=3)) D
"RTN","PSSREF",13,0)
 .W !!,"You cannot delete a refill date for a fill that is"_$S(+$G(PSX(DA))=1:" released by",+$G(PSX(DA))=0:" in transmission to",1:" being retransmitted to")_" the CMOP",!!
"RTN","PSSREF",14,0)
 Q
"RTN","PSSREF",15,0)
AR ; Sets the "AR" xref if CMOP status in 52 =1      
"RTN","PSSREF",16,0)
 ; ^PSRX("AR",RELEASE D/T,INTERNAL ENTRY # RX in 52,fill #
"RTN","PSSREF",17,0)
 I X=1 D
"RTN","PSSREF",18,0)
 .I $P(^PSRX(DA(1),4,DA,0),U,3)=0,($P($G(^PSRX(DA(1),2)),U,13)) S ^PSRX("AR",$P(^PSRX(DA(1),2),U,13),DA(1),$P(^PSRX(DA(1),4,DA,0),U,3))=""
"RTN","PSSREF",19,0)
 .I $P(^PSRX(DA(1),4,DA,0),U,3)>0,($D(^PSRX(DA(1),1,$P(^PSRX(DA(1),4,DA,0),U,3),0))),($P($G(^PSRX(DA(1),1,$P(^PSRX(DA(1),4,DA,0),U,3),0)),U,18)]"") D
"RTN","PSSREF",20,0)
 ..S ^PSRX("AR",$P(^PSRX(DA(1),1,$P(^PSRX(DA(1),4,DA,0),U,3),0),U,18),DA(1),$P(^PSRX(DA(1),4,DA,0),U,3))=""
"RTN","PSSREF",21,0)
 Q
"RTN","PSSREF",22,0)
AS ; Transmission D/T xref
"RTN","PSSREF",23,0)
 ; ^PSRX("AS",TRANS D/T,INTERNAL ENTRY # RX in 52, fill #
"RTN","PSSREF",24,0)
 I X=0 S ^PSRX("AS",$P(^PSX(550.2,$P(^PSRX(DA(1),4,DA,0),U),0),U,6),DA(1),$P(^PSRX(DA(1),4,DA,0),U,3))=""
"RTN","PSSREF",25,0)
 Q
"RTN","PSSREF",26,0)
ASKILL ;
"RTN","PSSREF",27,0)
 K ^PSRX("AS",$P(^PSX(550.2,$P(^PSRX(DA(1),4,DA,0),U),0),U,6),DA(1),$P(^PSRX(DA(1),4,DA,0),U,3))
"RTN","PSSREF",28,0)
 Q
"RTN","PSSREF",29,0)
DISPUNIT ;Called by ^DD(50,14.5,"DEL",0) to prevent deleting CMOP disp units. 
"RTN","PSSREF",30,0)
 I $D(^PSDRUG("AQ",DA)) W !,"The Dispense Unit of a CMOP drug cannot be deleted!",!
"RTN","PSSREF",31,0)
 Q
"RTN","PSSREF",32,0)
QO ; 50.7 .01 field "AD" index for CPRS Quick Order
"RTN","PSSREF",33,0)
 N PSNM
"RTN","PSSREF",34,0)
 Q:$G(X1(1))=$G(X2(1))  ;Q if OI Name is not changed
"RTN","PSSREF",35,0)
 Q:$G(X1(1))=""  ; Ignore if new record added
"RTN","PSSREF",36,0)
 I $G(X2(1))="" S PSNM=$G(X1(1)) ; If record deleted
"RTN","PSSREF",37,0)
 I $G(X1(1))]"",$G(X2(1))]"" S PSNM=$G(X1(1))  ;If record is edited
"RTN","PSSREF",38,0)
 I $G(ZZDA)=DA K ZZDA Q  ;Q if same OI processed during single session. ZZDA set below during first pass
"RTN","PSSREF",39,0)
 D CHECKPS^ORUQO(DA,$G(PSNM)) S ZZDA=DA
"RTN","PSSREF",40,0)
 Q
"RTN","PSSSCHRP")
0^26^B121739246^B109340534
"RTN","PSSSCHRP",1,0)
PSSSCHRP ;BIR/RTR-Schedule Report ; 10/15/15 4:26pm
"RTN","PSSSCHRP",2,0)
 ;;1.0;PHARMACY DATA MANAGEMENT;**129,160,189,201**;9/30/97;Build 23
"RTN","PSSSCHRP",3,0)
 ;External reference to ^PSNAPIS supported by DBIA #2531
"RTN","PSSSCHRP",4,0)
 ;
"RTN","PSSSCHRP",5,0)
EN ;Prompts for Administration File Schedule Report
"RTN","PSSSCHRP",6,0)
 W !!,"This report displays entries from the ADMINISTRATION SCHEDULE (#51.1) File."
"RTN","PSSSCHRP",7,0)
 W !,"It can be run for all Schedules, or only Schedules without a FREQUENCY"
"RTN","PSSSCHRP",8,0)
 W !,"(IN MINUTES). Only schedules with a PSJ Package Prefix will be displayed, since"
"RTN","PSSSCHRP",9,0)
 W !,"they are the only schedules the software will look at when deriving a FREQUENCY"
"RTN","PSSSCHRP",10,0)
 W !,"(IN MINUTES) for the daily dosage checks. If a FREQUENCY (IN MINUTES) cannot",!,"be determined for an order, the daily dosage check cannot occur for that order."
"RTN","PSSSCHRP",11,0)
 N DIR,PSSAFRP,PSSALONG,Y,X,DTOUT,DUOUT,DIRUT,DIROUT,IOP,%ZIS,POP,ZTRTN,ZTDESC,ZTSAVE,ZTSK
"RTN","PSSSCHRP",12,0)
 K DIR,Y S DIR(0)="SO^A:All Schedules;O:Only Schedules with a missing frequency",DIR("A")="Print All Schedules, or Only Schedules without a frequency",DIR("B")="A"
"RTN","PSSSCHRP",13,0)
 S DIR("?")=" ",DIR("?",1)=" ",DIR("?",2)="Enter 'A' to see all Administration Schedules, enter 'O' to see only",DIR("?",3)="those Administration Schedules without data in the FREQUENCY (IN MINUTES)"
"RTN","PSSSCHRP",14,0)
 S DIR("?",4)="(#2) Field. A FREQUENCY (IN MINUTES) must be derived from a Schedule",DIR("?",5)="for the daily dosage check to occur for an order."
"RTN","PSSSCHRP",15,0)
 W ! D ^DIR K DIR I $D(DUOUT)!($D(DTOUT)) D MESS K DIR,Y S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR Q
"RTN","PSSSCHRP",16,0)
 I Y'="A",Y'="O" D MESS K DIR,Y S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR Q
"RTN","PSSSCHRP",17,0)
 S PSSAFRP=Y
"RTN","PSSSCHRP",18,0)
 K DIR,Y S DIR(0)="SO^80:80 Column;132:132 Column",DIR("A")="Print report in 80 or 132 column format",DIR("B")="80"
"RTN","PSSSCHRP",19,0)
 S DIR("?")=" ",DIR("?",1)="Enter 80 to print the report in an 80 column format,",DIR("?",2)="Enter 132 to print the report in an 132 column format."
"RTN","PSSSCHRP",20,0)
 W ! D ^DIR K DIR I $D(DUOUT)!($D(DTOUT)) D MESS K DIR,Y S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR Q
"RTN","PSSSCHRP",21,0)
 I Y'="80",Y'="132" D MESS K DIR,Y S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR Q
"RTN","PSSSCHRP",22,0)
 S PSSALONG=Y W !
"RTN","PSSSCHRP",23,0)
 K IOP,%ZIS,POP S %ZIS="QM" D ^%ZIS I $G(POP)>0 D MESS K DIR,Y S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR,IOP,%ZIS,POP Q
"RTN","PSSSCHRP",24,0)
 I $D(IO("Q")) S ZTRTN="START^PSSSCHRP",ZTDESC="Administration Schedule Report",ZTSAVE("PSSAFRP")="",ZTSAVE("PSSALONG")="" D ^%ZTLOAD K %ZIS W !!,"Report queued to print.",! K DIR,Y S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR Q
"RTN","PSSSCHRP",25,0)
 ;
"RTN","PSSSCHRP",26,0)
 ;
"RTN","PSSSCHRP",27,0)
START ;Print Administration Schedule File report
"RTN","PSSSCHRP",28,0)
 U IO
"RTN","PSSSCHRP",29,0)
 N PSSAFCT,PSSAFOUT,PSSAFDEV,PSSAFLIN,PSSAFQ,PSSAFQEN,PSSAFQS,PSSAFQL,PSSAFQQ,PSSAFQC,PSSAFAA,PSSAFAL,PSSWAS,PSSWASEN,PSSWASNM,PSSWASAD,PSSWASLL,PSSTPE
"RTN","PSSSCHRP",30,0)
 N PSSAFRA,PSSAFRAA,PSSAFROP,PSSAFQL,PSSAFROO,PSSAFRFL,PSSWASX,PSSAFZZZ,PSSAFABC,PSSAFNOF,PSSFD,PSSDFS
"RTN","PSSSCHRP",31,0)
 S (PSSAFOUT,PSSAFNOF)=0,PSSAFDEV=$S($E(IOST,1,2)'="C-":"P",1:"C"),PSSAFCT=1
"RTN","PSSSCHRP",32,0)
 K PSSAFLIN S:PSSALONG=132 $P(PSSAFLIN,"-",130)="" S:PSSALONG=80 $P(PSSAFLIN,"-",78)=""
"RTN","PSSSCHRP",33,0)
 D HD
"RTN","PSSSCHRP",34,0)
 S PSSAFQ="" F  S PSSAFQ=$O(^PS(51.1,"B",PSSAFQ)) Q:PSSAFQ=""!(PSSAFOUT)  D
"RTN","PSSSCHRP",35,0)
 .F PSSAFQEN=0:0 S PSSAFQEN=$O(^PS(51.1,"B",PSSAFQ,PSSAFQEN)) Q:'PSSAFQEN!(PSSAFOUT)  D
"RTN","PSSSCHRP",36,0)
 ..K PSSAFRA,PSSAFRAA,PSSAFROP,PSSAFQS,PSSAFROP,PSSAFROO,PSSAFQL,PSSWASX,PSSAFQC,PSSAFQQ
"RTN","PSSSCHRP",37,0)
 ..S PSSAFRA=PSSAFQEN_","
"RTN","PSSSCHRP",38,0)
 ..D GETS^DIQ(51.1,PSSAFRA,".01;1;2;4;8;8.1;9;10;11;11.1*;13*","E","PSSAFRAA")
"RTN","PSSSCHRP",39,0)
 ..I $G(PSSAFRAA(51.1,PSSAFRA,4,"E"))'="PSJ" Q
"RTN","PSSSCHRP",40,0)
 ..I PSSAFRP="O",$G(PSSAFRAA(51.1,PSSAFRA,2,"E")) Q
"RTN","PSSSCHRP",41,0)
 ..S PSSAFNOF=1
"RTN","PSSSCHRP",42,0)
 ..W !!,$G(PSSAFRAA(51.1,PSSAFRA,.01,"E"))
"RTN","PSSSCHRP",43,0)
 ..I ($Y+5)>IOSL D HD Q:PSSAFOUT
"RTN","PSSSCHRP",44,0)
 ..S PSSAFQS=$G(PSSAFRAA(51.1,PSSAFRA,1,"E"))
"RTN","PSSSCHRP",45,0)
 ..W !?5,"STANDARD ADMINISTRATION TIMES: " D  K PSSAFAA Q:PSSAFOUT
"RTN","PSSSCHRP",46,0)
 ...Q:PSSAFQS=""
"RTN","PSSSCHRP",47,0)
 ...S PSSAFQL=$L(PSSAFQS)
"RTN","PSSSCHRP",48,0)
 ...I PSSALONG=132 D  Q
"RTN","PSSSCHRP",49,0)
 ....I PSSAFQL<96 D  Q
"RTN","PSSSCHRP",50,0)
 .....W PSSAFQS
"RTN","PSSSCHRP",51,0)
 .....I ($Y+5)>IOSL D HD Q:PSSAFOUT
"RTN","PSSSCHRP",52,0)
 ....K PSSAFAA D FORMAT(PSSAFQS,96)
"RTN","PSSSCHRP",53,0)
 ....S PSSAFRFL=0 F PSSAFAL=0:0 S PSSAFAL=$O(PSSAFAA(PSSAFAL)) Q:'PSSAFAL!(PSSAFOUT)  D
"RTN","PSSSCHRP",54,0)
 .....W:'PSSAFRFL ?36,$G(PSSAFAA(PSSAFAL)) W:PSSAFRFL !?36,$G(PSSAFAA(PSSAFAL)) S PSSAFRFL=1
"RTN","PSSSCHRP",55,0)
 .....I ($Y+5)>IOSL D HD Q:PSSAFOUT
"RTN","PSSSCHRP",56,0)
 ...I PSSAFQL<44 D  Q
"RTN","PSSSCHRP",57,0)
 ....W PSSAFQS
"RTN","PSSSCHRP",58,0)
 ....I ($Y+5)>IOSL D HD Q:PSSAFOUT
"RTN","PSSSCHRP",59,0)
 ...K PSSAFAA D FORMAT(PSSAFQS,44)
"RTN","PSSSCHRP",60,0)
 ...S PSSAFRFL=0 F PSSAFAL=0:0 S PSSAFAL=$O(PSSAFAA(PSSAFAL)) Q:'PSSAFAL!(PSSAFOUT)  D
"RTN","PSSSCHRP",61,0)
 ....W:'PSSAFRFL ?36,$G(PSSAFAA(PSSAFAL)) W:PSSAFRFL !?36,$G(PSSAFAA(PSSAFAL)) S PSSAFRFL=1
"RTN","PSSSCHRP",62,0)
 ....I ($Y+5)>IOSL D HD Q:PSSAFOUT
"RTN","PSSSCHRP",63,0)
 ..I ($Y+5)>IOSL D HD Q:PSSAFOUT
"RTN","PSSSCHRP",64,0)
 ..W !?14,"OUTPATIENT EXPANSION: " D
"RTN","PSSSCHRP",65,0)
 ...S PSSAFROP=$G(PSSAFRAA(51.1,PSSAFRA,8,"E"))
"RTN","PSSSCHRP",66,0)
 ...I PSSALONG=132 D  Q
"RTN","PSSSCHRP",67,0)
 ....I $L(PSSAFROP)<96 W PSSAFROP,! Q
"RTN","PSSSCHRP",68,0)
 ....N X,DIWL,DIWR,DIWF S X=PSSAFROP,DIWL=37,DIWR=131,DIWF="W" K ^UTILITY($J,"W") D ^DIWP D ^DIWW K ^UTILITY($J,"W")
"RTN","PSSSCHRP",69,0)
 ...I $L(PSSAFROP)<44 W PSSAFROP,! Q
"RTN","PSSSCHRP",70,0)
 ...N X,DIWL,DIWR,DIWF S X=PSSAFROP,DIWL=37,DIWR=79,DIWF="W" K ^UTILITY($J,"W") D ^DIWP D ^DIWW K ^UTILITY($J,"W")
"RTN","PSSSCHRP",71,0)
 ..I ($Y+5)>IOSL D HD Q:PSSAFOUT  W !
"RTN","PSSSCHRP",72,0)
 ..W ?10,"OTHER LANGUAGE EXPANSION: " D
"RTN","PSSSCHRP",73,0)
 ...S PSSAFROO=$G(PSSAFRAA(51.1,PSSAFRA,8.1,"E"))
"RTN","PSSSCHRP",74,0)
 ...I PSSALONG=132 D  Q
"RTN","PSSSCHRP",75,0)
 ....I $L(PSSAFROO)<96 W PSSAFROO,! Q
"RTN","PSSSCHRP",76,0)
 ....N X,DIWL,DIWR,DIWF S X=PSSAFROO,DIWL=37,DIWR=131,DIWF="W" K ^UTILITY($J,"W") D ^DIWP D ^DIWW K ^UTILITY($J,"W")
"RTN","PSSSCHRP",77,0)
 ...I $L(PSSAFROO)<44 W PSSAFROO,! Q
"RTN","PSSSCHRP",78,0)
 ...N X,DIWL,DIWR,DIWF S X=PSSAFROO,DIWL=37,DIWR=79,DIWF="W" K ^UTILITY($J,"W") D ^DIWP D ^DIWW K ^UTILITY($J,"W")
"RTN","PSSSCHRP",79,0)
 ..;Set PSSAFZZZ=0 if last write had a line feed, PSSAFZZZ=1 if last write did not have a line feed, to use for OLD SCHEDULE NAME(S)
"RTN","PSSSCHRP",80,0)
 ..S PSSAFZZZ=0 I ($Y+5)>IOSL D HD S PSSAFZZZ=0 Q:PSSAFOUT
"RTN","PSSSCHRP",81,0)
 ..S PSSAFRFL=0 F PSSWAS=0:0 S PSSWAS=$O(^PS(51.1,PSSAFQEN,1,PSSWAS)) Q:'PSSWAS!(PSSAFOUT)  D
"RTN","PSSSCHRP",82,0)
 ...S PSSWASEN=$P($G(^PS(51.1,PSSAFQEN,1,PSSWAS,0)),"^") Q:'PSSWASEN
"RTN","PSSSCHRP",83,0)
 ...S PSSWASX=PSSWAS_","_PSSAFQEN_"," S PSSWASNM=$$GET1^DIQ(51.11,PSSWASX,".01") Q:PSSWASNM=""
"RTN","PSSSCHRP",84,0)
 ...;PSSARFRL=0 if last Write ended in Line Feed, =1 if Last Write did not end in line feed, for writing Wards
"RTN","PSSSCHRP",85,0)
 ...W:'PSSAFRFL ?30,"WARD: "_PSSWASNM W:PSSAFRFL !?30,"WARD: "_PSSWASNM S (PSSAFZZZ,PSSAFRFL)=1
"RTN","PSSSCHRP",86,0)
 ...I ($Y+5)>IOSL D HD S (PSSAFZZZ,PSSAFRFL)=0 Q:PSSAFOUT
"RTN","PSSSCHRP",87,0)
 ...W !?9,"WARD ADMINISTRATION TIMES: " S (PSSAFZZZ,PSSAFRFL)=1
"RTN","PSSSCHRP",88,0)
 ...S PSSWASAD=$P($G(^PS(51.1,PSSAFQEN,1,PSSWAS,0)),"^",2)
"RTN","PSSSCHRP",89,0)
 ...Q:PSSWASAD=""
"RTN","PSSSCHRP",90,0)
 ...S (PSSWASLL,PSSAFQL)=$L(PSSWASAD)
"RTN","PSSSCHRP",91,0)
 ...I PSSALONG=132 D  Q
"RTN","PSSSCHRP",92,0)
 ....I PSSWASLL<96 D  Q
"RTN","PSSSCHRP",93,0)
 .....W PSSWASAD S (PSSAFZZZ,PSSAFRFL)=1
"RTN","PSSSCHRP",94,0)
 .....I ($Y+5)>IOSL D HD S (PSSAFZZZ,PSSAFRFL)=0 Q:PSSAFOUT
"RTN","PSSSCHRP",95,0)
 ....K PSSAFAA D FORMAT(PSSWASAD,96)
"RTN","PSSSCHRP",96,0)
 ....S PSSAFABC=0 F PSSAFAL=0:0 S PSSAFAL=$O(PSSAFAA(PSSAFAL)) Q:'PSSAFAL!(PSSAFOUT)  D
"RTN","PSSSCHRP",97,0)
 .....W:'PSSAFABC ?36,$G(PSSAFAA(PSSAFAL)) W:PSSAFABC !?36,$G(PSSAFAA(PSSAFAL)) S PSSAFABC=1 S (PSSAFZZZ,PSSAFRFL)=1
"RTN","PSSSCHRP",98,0)
 .....I ($Y+5)>IOSL D HD S (PSSAFZZZ,PSSAFRFL)=0 Q:PSSAFOUT
"RTN","PSSSCHRP",99,0)
 ...I PSSWASLL<37 D  Q
"RTN","PSSSCHRP",100,0)
 ....W PSSWASAD S (PSSAFZZZ,PSSAFRFL)=1
"RTN","PSSSCHRP",101,0)
 ....I ($Y+5)>IOSL D HD S (PSSAFZZZ,PSSAFRFL)=0 Q:PSSAFOUT
"RTN","PSSSCHRP",102,0)
 ...K PSSAFAA D FORMAT(PSSWASAD,44)
"RTN","PSSSCHRP",103,0)
 ...S PSSAFABC=0 F PSSAFAL=0:0 S PSSAFAL=$O(PSSAFAA(PSSAFAL)) Q:'PSSAFAL!(PSSAFOUT)  D
"RTN","PSSSCHRP",104,0)
 ....W:'PSSAFABC ?36,$G(PSSAFAA(PSSAFAL)) W:PSSAFABC !?36,$G(PSSAFAA(PSSAFAL)) S PSSAFABC=1 S (PSSAFZZZ,PSSAFRFL)=1
"RTN","PSSSCHRP",105,0)
 ....I ($Y+5)>IOSL D HD S (PSSAFZZZ,PSSAFRFL)=0 Q:PSSAFOUT
"RTN","PSSSCHRP",106,0)
 ..Q:PSSAFOUT
"RTN","PSSSCHRP",107,0)
 ..K PSSAFAA
"RTN","PSSSCHRP",108,0)
 ..I ($Y+5)>IOSL D HD S (PSSAFZZZ,PSSAFRFL)=0 Q:PSSAFOUT
"RTN","PSSSCHRP",109,0)
 ..W:'PSSAFZZZ ?14,"OLD SCHEDULE NAME(S): "  W:PSSAFZZZ !?14,"OLD SCHEDULE NAME(S): "
"RTN","PSSSCHRP",110,0)
 ..S:$D(PSSAFRAA(51.113)) PSSFD=1,PSSDFS=0 IF $D(PSSFD),$D(PSSDFS) FOR  SET PSSFD=$O(PSSAFRAA(51.113,PSSFD)) Q:PSSFD']""!(PSSAFOUT)  D
"RTN","PSSSCHRP",111,0)
 ...W:'PSSDFS ?36,$G(PSSAFRAA(51.113,PSSFD,.01,"E")) W:PSSDFS !,?36,$G(PSSAFRAA(51.113,PSSFD,.01,"E")) S PSSDFS=1
"RTN","PSSSCHRP",112,0)
 ...I ($Y+5)>IOSL D HD Q:PSSAFOUT
"RTN","PSSSCHRP",113,0)
 ..Q:PSSAFOUT
"RTN","PSSSCHRP",114,0)
 ..K PSSTPE S PSSTPE=$$GET1^DIQ(51.1,PSSAFQEN_",",5)
"RTN","PSSSCHRP",115,0)
 ..W:'PSSAFZZZ !?21,"SCHEDULE TYPE: "_$G(PSSTPE) W:PSSAFZZZ !?21,"SCHEDULE TYPE: "_$G(PSSTPE)
"RTN","PSSSCHRP",116,0)
 ..I ($Y+5)>IOSL D HD Q:PSSAFOUT
"RTN","PSSSCHRP",117,0)
 ..W !?12,"FREQUENCY (IN MINUTES): "_$G(PSSAFRAA(51.1,PSSAFRA,2,"E"))
"RTN","PSSSCHRP",118,0)
 ..I ($Y+5)>IOSL D HD Q:PSSAFOUT
"RTN","PSSSCHRP",119,0)
 ..W !?6,"EXCLUDE FROM ALL DOSE CHECKS: "_$G(PSSAFRAA(51.1,PSSAFRA,9,"E"))
"RTN","PSSSCHRP",120,0)
 ..I ($Y+5)>IOSL D HD Q:PSSAFOUT
"RTN","PSSSCHRP",121,0)
 ..W !?5,"EXCLUDE FROM DAILY DOSE CHECK: "_$G(PSSAFRAA(51.1,PSSAFRA,10,"E"))
"RTN","PSSSCHRP",122,0)
 ..I ($Y+5)>IOSL D HD Q:PSSAFOUT
"RTN","PSSSCHRP",123,0)
 ..W !?12,"DOSING CHECK FREQUENCY: "_$G(PSSAFRAA(51.1,PSSAFRA,11,"E"))
"RTN","PSSSCHRP",124,0)
 ..I ($Y+5)>IOSL D HD Q:PSSAFOUT
"RTN","PSSSCHRP",125,0)
 ..W !?7,"DRUG(S) FOR DOSING CHK FREQ: "
"RTN","PSSSCHRP",126,0)
 ..S:$D(PSSAFRAA(51.111)) PSSFD=1,PSSDFS=0 IF $D(PSSFD),$D(PSSDFS) FOR  SET PSSFD=$O(PSSAFRAA(51.111,PSSFD)) Q:PSSFD']""!(PSSAFOUT)  D
"RTN","PSSSCHRP",127,0)
 ...W:'PSSDFS ?36,$G(PSSAFRAA(51.111,PSSFD,.01,"E")) W:PSSDFS !,?36,$G(PSSAFRAA(51.111,PSSFD,.01,"E")) S PSSDFS=1
"RTN","PSSSCHRP",128,0)
 ...I ($Y+5)>IOSL D HD Q:PSSAFOUT
"RTN","PSSSCHRP",129,0)
 ..W !?26,"INACTIVE: "_$G(PSSAFRAA(51.1,PSSAFRA,12,"E"))
"RTN","PSSSCHRP",130,0)
 ..I ($Y+5)>IOSL D HD Q:PSSAFOUT
"RTN","PSSSCHRP",131,0)
 ;
"RTN","PSSSCHRP",132,0)
END ;
"RTN","PSSSCHRP",133,0)
 I '$G(PSSAFOUT),PSSAFRP="O",'$G(PSSAFNOF) W !!,"No schedules found without frequencies.",!
"RTN","PSSSCHRP",134,0)
 I $G(PSSAFDEV)="P"  W !!,"End of Report.",!
"RTN","PSSSCHRP",135,0)
 I '$G(PSSAFOUT),$G(PSSAFDEV)="C" W !!,"End of Report." K DIR S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR
"RTN","PSSSCHRP",136,0)
 I $G(PSSAFDEV)="C" W !
"RTN","PSSSCHRP",137,0)
 E  W @IOF
"RTN","PSSSCHRP",138,0)
 K PSSAFRP,PSSALONG
"RTN","PSSSCHRP",139,0)
 D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@"
"RTN","PSSSCHRP",140,0)
 Q
"RTN","PSSSCHRP",141,0)
 ;
"RTN","PSSSCHRP",142,0)
 ;
"RTN","PSSSCHRP",143,0)
HD ;Report Header
"RTN","PSSSCHRP",144,0)
 I $G(PSSAFDEV)="C",$G(PSSAFCT)'=1 W ! K DIR,Y S DIR(0)="E",DIR("A")="Press Return to continue, '^' to exit" D ^DIR K DIR I 'Y S PSSAFOUT=1 Q
"RTN","PSSSCHRP",145,0)
 W @IOF
"RTN","PSSSCHRP",146,0)
 I PSSAFRP="A" W !,"ADMINISTRATION SCHEDULE FILE REPORT (All)"
"RTN","PSSSCHRP",147,0)
 I PSSAFRP="O" W !,"ADMINISTRATION SCHEDULE WITHOUT FREQUENCY REPORT"
"RTN","PSSSCHRP",148,0)
 W ?$S(PSSALONG=80:68,1:120),"PAGE: "_PSSAFCT,!,PSSAFLIN,! S PSSAFCT=PSSAFCT+1
"RTN","PSSSCHRP",149,0)
 Q
"RTN","PSSSCHRP",150,0)
 ;
"RTN","PSSSCHRP",151,0)
 ;
"RTN","PSSSCHRP",152,0)
MESS ;
"RTN","PSSSCHRP",153,0)
 W !!,"Nothing queued to print.",!
"RTN","PSSSCHRP",154,0)
 Q
"RTN","PSSSCHRP",155,0)
 ;
"RTN","PSSSCHRP",156,0)
 ;
"RTN","PSSSCHRP",157,0)
FORMAT(PSSAFQC,PSSAFQQ) ;Format print arrays, breaking on the "-" character
"RTN","PSSSCHRP",158,0)
 ;PSSAFQC = Administration Times text
"RTN","PSSSCHRP",159,0)
 ;PSSAFQQ = Character at which to break
"RTN","PSSSCHRP",160,0)
 N PSSAFAC,PSSAFAB,PSSAFAZ,PSSAFAD,PSSAFAF,PSSAFAX
"RTN","PSSSCHRP",161,0)
 S PSSAFAC=1,PSSAFAZ=0 K PSSAFAB
"RTN","PSSSCHRP",162,0)
 F PSSAFAD=1:1:PSSAFQL I $E(PSSAFQC,PSSAFAD)="-" S PSSAFAB(PSSAFAC)=$P(PSSAFQC,"-",PSSAFAC)_"-" S PSSAFAC=PSSAFAC+1,PSSAFAZ=PSSAFAD+1
"RTN","PSSSCHRP",163,0)
 I PSSAFAZ<PSSAFAD S:PSSAFAZ=0 PSSAFAZ=1 S PSSAFAB(PSSAFAC)=$E(PSSAFQC,PSSAFAZ,PSSAFQL) S PSSAFAC=PSSAFAC+1
"RTN","PSSSCHRP",164,0)
 S PSSAFAF=1
"RTN","PSSSCHRP",165,0)
 F PSSAFAX=1:1:PSSAFAC D
"RTN","PSSSCHRP",166,0)
 .Q:'$D(PSSAFAB(PSSAFAX))
"RTN","PSSSCHRP",167,0)
 .I '$D(PSSAFAA(PSSAFAF)) S PSSAFAA(PSSAFAF)=PSSAFAB(PSSAFAX) Q
"RTN","PSSSCHRP",168,0)
 .I $L(PSSAFAA(PSSAFAF))+$L(PSSAFAB(PSSAFAX))<PSSAFQQ S PSSAFAA(PSSAFAF)=PSSAFAA(PSSAFAF)_PSSAFAB(PSSAFAX) Q
"RTN","PSSSCHRP",169,0)
 .S PSSAFAF=PSSAFAF+1 S PSSAFAA(PSSAFAF)=PSSAFAB(PSSAFAX)
"RTN","PSSSCHRP",170,0)
 Q
"RTN","PSSSCHRP",171,0)
 ;
"RTN","PSSSCHRP",172,0)
 ;
"RTN","PSSSCHRP",173,0)
TRAIL ;Trailing spaces Report
"RTN","PSSSCHRP",174,0)
 W !!,"This report displays active, multi-ingredient entries from the DRUG (#50) File"
"RTN","PSSSCHRP",175,0)
 W !,"with Local Possible Dosages defined, with trailing spaces in the name. Entries"
"RTN","PSSSCHRP",176,0)
 W !,"not matched to National Drug File are also included if there are trailing"
"RTN","PSSSCHRP",177,0)
 W !,"spaces. Trailing spaces can potentially cause the Dose check to fail, and"
"RTN","PSSSCHRP",178,0)
 W !,"also possibly cause the conjunction and drug name to become part of the Dosage.",!
"RTN","PSSSCHRP",179,0)
 N DIR,Y,X,DTOUT,DUOUT,DIRUT,DIROUT,IOP,%ZIS,POP,ZTRTN,ZTDESC,ZTSAVE,ZTSK
"RTN","PSSSCHRP",180,0)
 K IOP,%ZIS,POP S %ZIS="QM" D ^%ZIS I $G(POP)>0 D MESS K DIR,Y S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR,IOP,%ZIS,POP Q
"RTN","PSSSCHRP",181,0)
 I $D(IO("Q")) S ZTRTN="STRAIL^PSSSCHRP",ZTDESC="Trailing Spaces Report" D ^%ZTLOAD K %ZIS W !!,"Report queued to print.",! K DIR,Y S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR Q
"RTN","PSSSCHRP",182,0)
 ;
"RTN","PSSSCHRP",183,0)
 ;
"RTN","PSSSCHRP",184,0)
STRAIL ;Print Trailing spaces report
"RTN","PSSSCHRP",185,0)
 U IO
"RTN","PSSSCHRP",186,0)
 N PSSTRSOT,PSSTRSLG,PSSTRSFL,PSSTRSDV,PSSTRSPG,PSSTRSAA,PSSTRSBB,PSSTRSNM,PSSTRSIN,PSSTRSST,PSSTRSUN,PSSTRSN1,PSSTRSN3,PSSTRSN9
"RTN","PSSSCHRP",187,0)
 S (PSSTRSOT,PSSTRSFL)=0,PSSTRSDV=$S($E(IOST,1,2)'="C-":"P",1:"C"),PSSTRSPG=1
"RTN","PSSSCHRP",188,0)
 K PSSTRSLG S $P(PSSTRSLG,"-",78)=""
"RTN","PSSSCHRP",189,0)
 D STHD
"RTN","PSSSCHRP",190,0)
 S PSSTRSAA="" F  S PSSTRSAA=$O(^PSDRUG("B",PSSTRSAA)) Q:PSSTRSAA=""!(PSSTRSOT)  D
"RTN","PSSSCHRP",191,0)
 .F PSSTRSBB=0:0 S PSSTRSBB=$O(^PSDRUG("B",PSSTRSAA,PSSTRSBB)) Q:'PSSTRSBB!(PSSTRSOT)  D:$O(^PSDRUG(PSSTRSBB,"DOS2",0))
"RTN","PSSSCHRP",192,0)
 ..S PSSTRSNM=$P($G(^PSDRUG(PSSTRSBB,0)),"^"),PSSTRSIN=$P($G(^PSDRUG(PSSTRSBB,"I")),"^")
"RTN","PSSSCHRP",193,0)
 ..I $E(PSSTRSNM,$L(PSSTRSNM))'=" " Q
"RTN","PSSSCHRP",194,0)
 ..I PSSTRSIN,PSSTRSIN<DT Q
"RTN","PSSSCHRP",195,0)
 ..S PSSTRSN1=$P($G(^PSDRUG(PSSTRSBB,"ND")),"^"),PSSTRSN3=$P($G(^PSDRUG(PSSTRSBB,"ND")),"^",3)
"RTN","PSSSCHRP",196,0)
 ..I 'PSSTRSN1!('PSSTRSN3) W !,PSSTRSNM_"   ("_PSSTRSBB_")" S PSSTRSFL=1 D:($Y+5)>IOSL STHD Q
"RTN","PSSSCHRP",197,0)
 ..S PSSTRSST=$P($G(^PSDRUG(PSSTRSBB,"DOS")),"^"),PSSTRSUN=$P($G(^PSDRUG(PSSTRSBB,"DOS")),"^",2)
"RTN","PSSSCHRP",198,0)
 ..I PSSTRSST'="" Q
"RTN","PSSSCHRP",199,0)
 ..K PSSTRSN9 I PSSTRSST=""!('PSSTRSUN) S PSSTRSN9=$$DFSU^PSNAPIS(PSSTRSN1,PSSTRSN3)
"RTN","PSSSCHRP",200,0)
 ..S PSSTRSST=$P($G(PSSTRSN9),"^",4) I $$STST() Q
"RTN","PSSSCHRP",201,0)
 ..W !,PSSTRSNM_"   ("_PSSTRSBB_")" S PSSTRSFL=1 I ($Y+5)>IOSL D STHD
"RTN","PSSSCHRP",202,0)
 ;
"RTN","PSSSCHRP",203,0)
 ;
"RTN","PSSSCHRP",204,0)
STEND ;
"RTN","PSSSCHRP",205,0)
 I '$G(PSSTRSOT),'$G(PSSTRSFL) W !!,"No drug names found.",!
"RTN","PSSSCHRP",206,0)
 I $G(PSSTRSDV)="P"  W !!,"End of Report.",!
"RTN","PSSSCHRP",207,0)
 I '$G(PSSTRSOT),$G(PSSTRSDV)="C" W !!,"End of Report." K DIR S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR
"RTN","PSSSCHRP",208,0)
 I $G(PSSTRSDV)="C" W !
"RTN","PSSSCHRP",209,0)
 E  W @IOF
"RTN","PSSSCHRP",210,0)
 D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@"
"RTN","PSSSCHRP",211,0)
 Q
"RTN","PSSSCHRP",212,0)
 ;
"RTN","PSSSCHRP",213,0)
 ;
"RTN","PSSSCHRP",214,0)
STHD ;Report Header
"RTN","PSSSCHRP",215,0)
 I $G(PSSTRSDV)="C",$G(PSSTRSPG)'=1 W ! K DIR,Y S DIR(0)="E",DIR("A")="Press Return to continue, '^' to exit" D ^DIR K DIR I 'Y S PSSTRSOT=1 Q
"RTN","PSSSCHRP",216,0)
 W @IOF
"RTN","PSSSCHRP",217,0)
 W !,"DRUG NAME TRAILING SPACES REPORT"
"RTN","PSSSCHRP",218,0)
 W ?68,"PAGE: "_PSSTRSPG,!,PSSTRSLG,! S PSSTRSPG=PSSTRSPG+1
"RTN","PSSSCHRP",219,0)
 Q
"RTN","PSSSCHRP",220,0)
 ;
"RTN","PSSSCHRP",221,0)
 ;
"RTN","PSSSCHRP",222,0)
STST() ;Is strength numeric
"RTN","PSSSCHRP",223,0)
 I PSSTRSST="" Q 0
"RTN","PSSSCHRP",224,0)
 I PSSTRSST'?.N&(PSSTRSST'?.N1".".N) Q 0
"RTN","PSSSCHRP",225,0)
 Q 1
"SEC","^DIC",51.25,51.25,0,"AUDIT")
@
"SEC","^DIC",51.25,51.25,0,"DD")
@
"SEC","^DIC",51.25,51.25,0,"DEL")
@
"SEC","^DIC",51.25,51.25,0,"LAYGO")
@
"SEC","^DIC",51.25,51.25,0,"RD")
Pp
"SEC","^DIC",51.25,51.25,0,"WR")
@
"UP",51,51.321,-1)
51^5
"UP",51,51.321,0)
51.321
"UP",51,51.33,-1)
51^6
"UP",51,51.33,0)
51.33
"UP",51.1,51.111,-1)
51.1^4
"UP",51.1,51.111,0)
51.111
"UP",51.1,51.113,-1)
51.1^5
"UP",51.1,51.113,0)
51.113
"VER")
8.0^22.0
"^DD",50.7,50.7,.01,0)
NAME^RFX^^0;1^K:X[""""!($A(X)=45)!('$G(PSEDITNM)) X I $D(X) K:$L(X)>40!($L(X)<3)!'(X'?1P.E)!(X?2"z".E) X
"^DD",50.7,50.7,.01,1,0)
^.1
"^DD",50.7,50.7,.01,1,1,0)
50.7^B^MUMPS
"^DD",50.7,50.7,.01,1,1,1)
S ^PS(50.7,"B",$E(X,1,40),DA)=""
"^DD",50.7,50.7,.01,1,1,2)
K ^PS(50.7,"B",$E(X,1,40),DA)
"^DD",50.7,50.7,.01,1,1,"%D",0)
^^2^2^2970926^^^
"^DD",50.7,50.7,.01,1,1,"%D",1,0)
Cross-reference on PHARMACY ORDERABLE ITEM file NAME field.
"^DD",50.7,50.7,.01,1,1,"%D",2,0)
In the form of: ^PS(50.7,"B",$E(X,1,40),DA)
"^DD",50.7,50.7,.01,1,1,"DT")
2950504
"^DD",50.7,50.7,.01,1,2,0)
50.7^ASP1^MUMPS
"^DD",50.7,50.7,.01,1,2,1)
S:$P($G(^PS(50.7,DA,0)),"^",2)'="" ^PS(50.7,"ADF",X,$P($G(^PS(50.7,DA,0)),"^",2),DA)=""
"^DD",50.7,50.7,.01,1,2,2)
K:$P($G(^PS(50.7,DA,0)),"^",2)'="" ^PS(50.7,"ADF",X,$P($G(^PS(50.7,DA,0)),"^",2),DA)
"^DD",50.7,50.7,.01,1,2,3)
Do Not Delete
"^DD",50.7,50.7,.01,1,2,"%D",0)
^^2^2^2970926^^^^
"^DD",50.7,50.7,.01,1,2,"%D",1,0)
Cross-reference by name, dosage form pointer.
"^DD",50.7,50.7,.01,1,2,"%D",2,0)
In the form of: ^PS(50.7,"ADF",Name,Dosage Form ptr.,DA)
"^DD",50.7,50.7,.01,1,2,"DT")
2940826
"^DD",50.7,50.7,.01,1,3,0)
50.7^A50^MUMPS
"^DD",50.7,50.7,.01,1,3,1)
Q
"^DD",50.7,50.7,.01,1,3,2)
Q
"^DD",50.7,50.7,.01,1,3,"%D",0)
^.101^6^6^3001020^^^^
"^DD",50.7,50.7,.01,1,3,"%D",1,0)
This cross reference is a place holder. A cross reference is being set in
"^DD",50.7,50.7,.01,1,3,"%D",2,0)
the form of ^PS(50.7,"A50",Pharmacy Orderable Item IEN,Dispense Drug IEN)=
"^DD",50.7,50.7,.01,1,3,"%D",3,0)
"". This is being set from the Pharmacy Orderable Item field (#2.1) of the
"^DD",50.7,50.7,.01,1,3,"%D",4,0)
DRUG file (#50). This data will be used to maintain the Pharmacy Orderable
"^DD",50.7,50.7,.01,1,3,"%D",5,0)
Items when changes are made in other files that point to the PHARMACY
"^DD",50.7,50.7,.01,1,3,"%D",6,0)
ORDERABLE ITEM file (#50.7).
"^DD",50.7,50.7,.01,1,3,"DT")
3001018
"^DD",50.7,50.7,.01,3)
Answer must be 3-40 characters in length.
"^DD",50.7,50.7,.01,"DEL",.01,0)
I 1 D EN^DDIOL("DELETIONS ARE NOT ALLOWED")
"^DD",50.7,50.7,.01,"DT")
3141103
"^DD",51,51,.01,0)
NAME^RFX^^0;1^S X=$$UP^XLFSTR(X) K:$L(X)>9!($L(X)<1)!'(X?.ANP)!($D(^PS(51,"B",X))) X
"^DD",51,51,.01,1,0)
^.1
"^DD",51,51,.01,1,1,0)
51^B
"^DD",51,51,.01,1,1,1)
S ^PS(51,"B",X,DA)=""
"^DD",51,51,.01,1,1,2)
K ^PS(51,"B",X,DA)
"^DD",51,51,.01,1,2,0)
51^AIN^MUMPS
"^DD",51,51,.01,1,2,1)
I $P(^PS(51,DA,0),"^",4) S ^PS(51,"AI",X,DA)=""
"^DD",51,51,.01,1,2,2)
I $P(^PS(51,DA,0),"^",4) K ^PS(51,"AI",X,DA)
"^DD",51,51,.01,1,2,"%D",0)
^^2^2^2970926^^
"^DD",51,51,.01,1,2,"%D",1,0)
Sets intended use cross-ref.
"^DD",51,51,.01,1,2,"%D",2,0)
In the form of: ^PS(51,"AI",X,DA)
"^DD",51,51,.01,1,3,0)
51^A^MUMPS
"^DD",51,51,.01,1,3,1)
S X1=^PS(51,DA,0),%=$P(X1,"^",1) I %'="" S ^PS(51,"A",%)=$P(X1,"^",2)_"^"_$S($D(^PS(51,DA,9)):^(9),1:"")
"^DD",51,51,.01,1,3,2)
K ^PS(51,"A",X)
"^DD",51,51,.01,1,3,"%D",0)
^.101^3^3^3001010^^^^
"^DD",51,51,.01,1,3,"%D",1,0)
This cross reference uses the drug name to obtain the drug's expanded
"^DD",51,51,.01,1,3,"%D",2,0)
name and plural.
"^DD",51,51,.01,1,3,"%D",3,0)
In the form of: ^PS(51,"A",$P(^PS(51,DA,0),"^",1))
"^DD",51,51,.01,1,3,"DT")
3001010
"^DD",51,51,.01,3)
Answer must be 1 to 9 characters in length, and must be unique among all NAMEs and SYNONYMs.
"^DD",51,51,.01,20,0)
^.3LA^1^1
"^DD",51,51,.01,20,1,0)
PS
"^DD",51,51,.01,21,0)
^^3^3^3110815^
"^DD",51,51,.01,21,1,0)
  For inpatient pharmacy use, you may enter one of the following standard
"^DD",51,51,.01,21,2,0)
times or you may use a non-standard schedule when appropriate.  For
"^DD",51,51,.01,21,3,0)
example,  Q36H  or Q17H.
"^DD",51,51,.01,"DT")
3161201
"^DD",51,51,32,0)
DOSING CHECK FREQUENCY^FX^^0;9^D DFCHK^PSSJSV
"^DD",51,51,32,3)
Answer must be 3-4 characters in length.
"^DD",51,51,32,4)
D HPDCHK^PSSJSV
"^DD",51,51,32,21,0)
^^30^30^3161013^
"^DD",51,51,32,21,1,0)
The DOSING CHECK FREQUENCY field takes priority over all other 
"^DD",51,51,32,21,2,0)
fields/values when determining frequency.
"^DD",51,51,32,21,3,0)
     
"^DD",51,51,32,21,4,0)
PLEASE BE AWARE that the format of the frequency in this field must 
"^DD",51,51,32,21,5,0)
employ the format patterns of the vendor database, which always places 
"^DD",51,51,32,21,6,0)
the numeric value in the middle position of the medication instruction.
"^DD",51,51,32,21,7,0)
In some cases an 'X' (symbol for 'times') must be entered as the first 
"^DD",51,51,32,21,8,0)
character, although it is still translated as the number of times per 
"^DD",51,51,32,21,9,0)
designated period.
"^DD",51,51,32,21,10,0)
  
"^DD",51,51,32,21,11,0)
The text examples within the following brackets [] provide clarification
"^DD",51,51,32,21,12,0)
of the literal medication instruction translation for the possible
"^DD",51,51,32,21,13,0)
formats.  Enter the dosing check frequency in one of the following
"^DD",51,51,32,21,14,0)
specified formats (# represents a whole number):
"^DD",51,51,32,21,15,0)
 
"^DD",51,51,32,21,16,0)
Q#H [every # hour(s), such as every 5 hours] 
"^DD",51,51,32,21,17,0)
 
"^DD",51,51,32,21,18,0)
Q#D [every # day(s), such as every 3 days] 
"^DD",51,51,32,21,19,0)
 
"^DD",51,51,32,21,20,0)
Q#W [every # week(s), such as every 5 weeks] 
"^DD",51,51,32,21,21,0)
 
"^DD",51,51,32,21,22,0)
Q#L [every # month(s), such as every 3 months] 
"^DD",51,51,32,21,23,0)
 
"^DD",51,51,32,21,24,0)
X#D [times per day, such as 17 times per day] 
"^DD",51,51,32,21,25,0)
 
"^DD",51,51,32,21,26,0)
X#W [times per week, such as 3 times per week] 
"^DD",51,51,32,21,27,0)
 
"^DD",51,51,32,21,28,0)
X#L [times per month, such as 4 times per month]
"^DD",51,51,32,21,29,0)
 
"^DD",51,51,32,21,30,0)
Numeric value can be 1-2 characters.
"^DD",51,51,32,"DT")
3141022
"^DD",51,51,32.1,0)
DRUG(S) FOR DOSING CHK FREQ^51.321P^^5;0
"^DD",51,51,32.1,21,0)
^.001^18^18^3161115^^
"^DD",51,51,32.1,21,1,0)
 
"^DD",51,51,32.1,21,2,0)
This multiple field allows dispense drugs from the DRUG (#50) file to be
"^DD",51,51,32.1,21,3,0)
associated with the DOSING CHECK FREQUENCY (#32) field value within the
"^DD",51,51,32.1,21,4,0)
MEDICATION INSTRUCTION (#51) file.
"^DD",51,51,32.1,21,5,0)
                                   
"^DD",51,51,32.1,21,6,0)
When a value is entered for "DOSING CHECK FREQUENCY:" and NO drug(s) is
"^DD",51,51,32.1,21,7,0)
entered for "Select DRUG(S) FOR DOSING CHK FREQ:", the dosing check will
"^DD",51,51,32.1,21,8,0)
use the value for "DOSING CHECK FREQUENCY:" to derive a frequency for all
"^DD",51,51,32.1,21,9,0)
orders that have that medication instruction.
"^DD",51,51,32.1,21,10,0)
                                   
"^DD",51,51,32.1,21,11,0)
When a value is entered for "DOSING CHECK FREQUENCY:" and a drug(s) is
"^DD",51,51,32.1,21,12,0)
entered for "Select DRUG(S) FOR DOSING CHK FREQ:", the Daily Dose Order
"^DD",51,51,32.1,21,13,0)
Check will ONLY use the value in "DOSING CHECK FREQUENCY:" to derive
"^DD",51,51,32.1,21,14,0)
frequency if the order that has that medication instruction also matches
"^DD",51,51,32.1,21,15,0)
one of the drug(s) entered.  If the drug found in the order does not match
"^DD",51,51,32.1,21,16,0)
a drug listed in the DRUG(S) FOR DOSING CHK FREQ field, then the value of
"^DD",51,51,32.1,21,17,0)
the DOSING CHECK FREQUENCY will not be used for the Daily Dose Order
"^DD",51,51,32.1,21,18,0)
Check.  
"^DD",51,51,33,0)
OLD MED INSTRUCTION NAME(S)^51.33^^6;0
"^DD",51,51,33,21,0)
^^4^4^3161013^
"^DD",51,51,33,21,1,0)
 
"^DD",51,51,33,21,2,0)
This multiple stores the old values of the medication instruction when 
"^DD",51,51,33,21,3,0)
the NAME (#.01) field is edited.  Values can also be added to this field 
"^DD",51,51,33,21,4,0)
directly.
"^DD",51,51.321,0)
DRUG(S) FOR DOSING CHK FREQ SUB-FIELD^^.01^1
"^DD",51,51.321,0,"DT")
3140204
"^DD",51,51.321,0,"IX","B",51.321,.01)

"^DD",51,51.321,0,"NM","DRUG(S) FOR DOSING CHK FREQ")

"^DD",51,51.321,0,"UP")
51
"^DD",51,51.321,.01,0)
DRUG(S) FOR DOSING CHK FREQ^MP50'^PSDRUG(^0;1^Q
"^DD",51,51.321,.01,1,0)
^.1
"^DD",51,51.321,.01,1,1,0)
51.321^B
"^DD",51,51.321,.01,1,1,1)
S ^PS(51,DA(1),5,"B",$E(X,1,30),DA)=""
"^DD",51,51.321,.01,1,1,2)
K ^PS(51,DA(1),5,"B",$E(X,1,30),DA)
"^DD",51,51.321,.01,3)
Select a dispense drug to be associated with the dosing check frequency.
"^DD",51,51.321,.01,4)
D ENMEDI^PSSDDUT
"^DD",51,51.321,.01,21,0)
^.001^18^18^3161115^^^
"^DD",51,51.321,.01,21,1,0)
 
"^DD",51,51.321,.01,21,2,0)
This field allows a dispense drug from the DRUG (#50) file to be
"^DD",51,51.321,.01,21,3,0)
associated with the DOSING CHECK FREQUENCY (#32) field value within the
"^DD",51,51.321,.01,21,4,0)
MEDICATION INSTRUCTION (#51) file.
"^DD",51,51.321,.01,21,5,0)
 
"^DD",51,51.321,.01,21,6,0)
When a value is entered for "DOSING CHECK FREQUENCY:" and NO drug(s) is
"^DD",51,51.321,.01,21,7,0)
entered for "Select DRUG(S) FOR DOSING CHK FREQ:", the dosing check will
"^DD",51,51.321,.01,21,8,0)
use the value for "DOSING CHECK FREQUENCY:" to derive a frequency for
"^DD",51,51.321,.01,21,9,0)
all orders that have that medication instruction.
"^DD",51,51.321,.01,21,10,0)
 
"^DD",51,51.321,.01,21,11,0)
When a value is entered for "DOSING CHECK FREQUENCY:" and a drug(s) is
"^DD",51,51.321,.01,21,12,0)
entered for "Select DRUG(S) FOR DOSING CHK FREQ:", the Daily Dose Order
"^DD",51,51.321,.01,21,13,0)
Check will ONLY use the value in "DOSING CHECK FREQUENCY:" to derive a
"^DD",51,51.321,.01,21,14,0)
frequency if the order that has that medication instruction also matches
"^DD",51,51.321,.01,21,15,0)
one of the drug(s) entered. If the drug found in the order does not
"^DD",51,51.321,.01,21,16,0)
match a drug listed in the DRUG(S) FOR DOSING CHK FREQ field, then the
"^DD",51,51.321,.01,21,17,0)
value of the DOSING CHECK FREQUENCY will not be used for the Daily Dose
"^DD",51,51.321,.01,21,18,0)
Order Check.
"^DD",51,51.321,.01,"DT")
3161115
"^DD",51,51.33,0)
OLD MED INSTRUCTION NAME(S) SUB-FIELD^^.01^1
"^DD",51,51.33,0,"DT")
3140204
"^DD",51,51.33,0,"IX","B",51.33,.01)

"^DD",51,51.33,0,"NM","OLD MED INSTRUCTION NAME(S)")

"^DD",51,51.33,0,"UP")
51
"^DD",51,51.33,.01,0)
OLD MED INSTRUCTION NAME(S)^MFX^^0;1^D OMICHK^PSSFILED
"^DD",51,51.33,.01,1,0)
^.1^^-1
"^DD",51,51.33,.01,1,1,0)
51.33^B
"^DD",51,51.33,.01,1,1,1)
S ^PS(51,DA(1),6,"B",$E(X,1,30),DA)=""
"^DD",51,51.33,.01,1,1,2)
K ^PS(51,DA(1),6,"B",$E(X,1,30),DA)
"^DD",51,51.33,.01,1,3,0)
51^D
"^DD",51,51.33,.01,1,3,1)
S ^PS(51,"D",$E(X,1,30),DA(1),DA)=""
"^DD",51,51.33,.01,1,3,2)
K ^PS(51,"D",$E(X,1,30),DA(1),DA)
"^DD",51,51.33,.01,1,3,"%D",0)
^^2^2^3161130^
"^DD",51,51.33,.01,1,3,"%D",1,0)
Used to identify (lookup) a medication instruction entered for an order 
"^DD",51,51.33,.01,1,3,"%D",2,0)
to derive a frequency for the Max Daily Dose Order Check.
"^DD",51,51.33,.01,1,3,"DT")
3161130
"^DD",51,51.33,.01,3)
Answer must be 1-9 characters in length.
"^DD",51,51.33,.01,21,0)
^^7^7^3161013^
"^DD",51,51.33,.01,21,1,0)
 
"^DD",51,51.33,.01,21,2,0)
This field stores the old value of the medication instruction when the 
"^DD",51,51.33,.01,21,3,0)
NAME (#.01) field is edited.  Values can also be added to this field 
"^DD",51,51.33,.01,21,4,0)
directly using the Pharmacy Data Management Medication Instruction File 
"^DD",51,51.33,.01,21,5,0)
Add/Edit [PSSJU MI] option.  This field will be used to identify a 
"^DD",51,51.33,.01,21,6,0)
medication instruction when its old name is found in a medication order 
"^DD",51,51.33,.01,21,7,0)
when deriving a frequency for a Daily Dose Order Check.
"^DD",51,51.33,.01,"DT")
3161130
"^DD",51.1,51.1,11,0)
DOSING CHECK FREQUENCY^FX^^0;11^D DFCHK^PSSJSV
"^DD",51.1,51.1,11,3)
Answer must be 3-4 characters in length.
"^DD",51.1,51.1,11,4)
D HPDCHK^PSSJSV
"^DD",51.1,51.1,11,21,0)
^^30^30^3161013^
"^DD",51.1,51.1,11,21,1,0)
The DOSING CHECK FREQUENCY field takes priority over all other 
"^DD",51.1,51.1,11,21,2,0)
fields/values when determining frequency.
"^DD",51.1,51.1,11,21,3,0)
     
"^DD",51.1,51.1,11,21,4,0)
PLEASE BE AWARE that the format of the frequency in this field must 
"^DD",51.1,51.1,11,21,5,0)
employ the format patterns of the vendor database, which always places 
"^DD",51.1,51.1,11,21,6,0)
the numeric value in the middle position of the schedule.  In some  
"^DD",51.1,51.1,11,21,7,0)
cases an 'X' (symbol for 'times') must be entered as the first 
"^DD",51.1,51.1,11,21,8,0)
character, although it is still translated as the number of times per 
"^DD",51.1,51.1,11,21,9,0)
designated period.  
"^DD",51.1,51.1,11,21,10,0)
 
"^DD",51.1,51.1,11,21,11,0)
The text examples within the following brackets [] provide clarification
"^DD",51.1,51.1,11,21,12,0)
of the literal schedule translation for the possible formats.  Enter the
"^DD",51.1,51.1,11,21,13,0)
dosing check frequency in one of the following specified formats (#
"^DD",51.1,51.1,11,21,14,0)
represents a whole number): 
"^DD",51.1,51.1,11,21,15,0)
 
"^DD",51.1,51.1,11,21,16,0)
Q#H [every # hour(s), such as every 5 hours] 
"^DD",51.1,51.1,11,21,17,0)
 
"^DD",51.1,51.1,11,21,18,0)
Q#D [every # day(s), such as every 3 days] 
"^DD",51.1,51.1,11,21,19,0)
 
"^DD",51.1,51.1,11,21,20,0)
Q#W [every # week(s), such as every 5 weeks] 
"^DD",51.1,51.1,11,21,21,0)
 
"^DD",51.1,51.1,11,21,22,0)
Q#L [every # month(s), such as every 3 months] 
"^DD",51.1,51.1,11,21,23,0)
 
"^DD",51.1,51.1,11,21,24,0)
X#D [times per day, such as 17 times per day] 
"^DD",51.1,51.1,11,21,25,0)
 
"^DD",51.1,51.1,11,21,26,0)
X#W [times per week, such as 3 times per week] 
"^DD",51.1,51.1,11,21,27,0)
 
"^DD",51.1,51.1,11,21,28,0)
X#L [times per month, such as 4 times per month]
"^DD",51.1,51.1,11,21,29,0)
 
"^DD",51.1,51.1,11,21,30,0)
Numeric value can be 1-2 characters.
"^DD",51.1,51.1,11,"DT")
3141022
"^DD",51.1,51.1,11.1,0)
DRUG(S) FOR DOSING CHK FREQ^51.111P^^4;0
"^DD",51.1,51.1,11.1,21,0)
^.001^17^17^3161115^^
"^DD",51.1,51.1,11.1,21,1,0)
 
"^DD",51.1,51.1,11.1,21,2,0)
This multiple field allows for dispense drugs from the DRUG (#50) file to
"^DD",51.1,51.1,11.1,21,3,0)
be associated with the DOSING CHECK FREQUENCY (#11) field value within the
"^DD",51.1,51.1,11.1,21,4,0)
ADMINISTRATION SCHEDULE (#51.1) file.
"^DD",51.1,51.1,11.1,21,5,0)
 
"^DD",51.1,51.1,11.1,21,6,0)
When a value is entered for "DOSING CHECK FREQUENCY:" and NO drug(s) is
"^DD",51.1,51.1,11.1,21,7,0)
entered for "Select DRUG(S) FOR DOSING CHK FREQ:",the dosing check will
"^DD",51.1,51.1,11.1,21,8,0)
use the value for "DOSING CHECK FREQUENCY:" to derive a frequency for all
"^DD",51.1,51.1,11.1,21,9,0)
orders that have that schedule.
"^DD",51.1,51.1,11.1,21,10,0)
                                   
"^DD",51.1,51.1,11.1,21,11,0)
When a value is entered for "DOSING CHECK FREQUENCY:" and a drug(s) is
"^DD",51.1,51.1,11.1,21,12,0)
entered for "Select DRUG(S) FOR DOSING CHK FREQ:", the Daily Dose Order
"^DD",51.1,51.1,11.1,21,13,0)
Check will ONLY use the value in "DOSING CHECK FREQUENCY:" to derive a
"^DD",51.1,51.1,11.1,21,14,0)
frequency if the order that has that schedule also matches one of the
"^DD",51.1,51.1,11.1,21,15,0)
drug(s) entered. If the drug found in the order does not match a drug
"^DD",51.1,51.1,11.1,21,16,0)
listed in the DRUG(S) FOR DOSING CHK FREQ field, then the value of the
"^DD",51.1,51.1,11.1,21,17,0)
DOSING CHECK FREQUENCY will not be used for the Daily Dose Order Check.
"^DD",51.1,51.1,13,0)
OLD SCHEDULE NAME(S)^51.113^^5;0
"^DD",51.1,51.1,13,21,0)
^.001^4^4^3161028^^^^
"^DD",51.1,51.1,13,21,1,0)
 
"^DD",51.1,51.1,13,21,2,0)
This multiple stores the old values of the administration schedule when 
"^DD",51.1,51.1,13,21,3,0)
the NAME (#.01) field is edited.  Values can also be added to this field 
"^DD",51.1,51.1,13,21,4,0)
directly.
"^DD",51.1,51.111,0)
DRUG(S) FOR DOSING CHK FREQ SUB-FIELD^^.01^1
"^DD",51.1,51.111,0,"DT")
3140204
"^DD",51.1,51.111,0,"IX","B",51.111,.01)

"^DD",51.1,51.111,0,"NM","DRUG(S) FOR DOSING CHK FREQ")

"^DD",51.1,51.111,0,"UP")
51.1
"^DD",51.1,51.111,.01,0)
DRUG(S) FOR DOSING CHK FREQ^MP50'^PSDRUG(^0;1^Q
"^DD",51.1,51.111,.01,1,0)
^.1
"^DD",51.1,51.111,.01,1,1,0)
51.111^B
"^DD",51.1,51.111,.01,1,1,1)
S ^PS(51.1,DA(1),4,"B",$E(X,1,30),DA)=""
"^DD",51.1,51.111,.01,1,1,2)
K ^PS(51.1,DA(1),4,"B",$E(X,1,30),DA)
"^DD",51.1,51.111,.01,3)
Select a dispense drug to be associated with the dosing check frequency.
"^DD",51.1,51.111,.01,4)
D ENADMSCH^PSSDDUT
"^DD",51.1,51.111,.01,21,0)
^.001^17^17^3161115^^
"^DD",51.1,51.111,.01,21,1,0)
 
"^DD",51.1,51.111,.01,21,2,0)
This field allows a dispense drug from the DRUG (#50) file to be
"^DD",51.1,51.111,.01,21,3,0)
associated with the DOSING CHECK FREQUENCY (#11) field value within the
"^DD",51.1,51.111,.01,21,4,0)
ADMINISTRATION SCHEDULE (#51.1) file.
"^DD",51.1,51.111,.01,21,5,0)
 
"^DD",51.1,51.111,.01,21,6,0)
When a value is entered for "DOSING CHECK FREQUENCY:" and NO drug(s) is
"^DD",51.1,51.111,.01,21,7,0)
entered for "Select DRUG(S) FOR DOSING CHK FREQ:",the dosing check will
"^DD",51.1,51.111,.01,21,8,0)
use the value for "DOSING CHECK FREQUENCY:" to derive a frequency for
"^DD",51.1,51.111,.01,21,9,0)
all orders that have that schedule.
"^DD",51.1,51.111,.01,21,10,0)
         
"^DD",51.1,51.111,.01,21,11,0)
When a value is entered for "DOSING CHECK FREQUENCY:" and a drug(s) is
"^DD",51.1,51.111,.01,21,12,0)
entered for "Select DRUG(S) FOR DOSING CHK FREQ:", the Daily Dose Order
"^DD",51.1,51.111,.01,21,13,0)
Check will ONLY use the value in "DOSING CHECK FREQUENCY:" to derive a
"^DD",51.1,51.111,.01,21,14,0)
frequency if the order that has that schedule also matches one of the
"^DD",51.1,51.111,.01,21,15,0)
drug(s) entered. If the drug found in the order does not match a drug
"^DD",51.1,51.111,.01,21,16,0)
listed in the DRUG(S) FOR DOSING CHK FREQ field, then the value of the
"^DD",51.1,51.111,.01,21,17,0)
DOSING CHECK FREQUENCY will not be used for the Daily Dose Order Check.
"^DD",51.1,51.111,.01,"DT")
3161115
"^DD",51.1,51.113,0)
OLD SCHEDULE NAME(S) SUB-FIELD^^.01^1
"^DD",51.1,51.113,0,"DT")
3160727
"^DD",51.1,51.113,0,"IX","B",51.113,.01)

"^DD",51.1,51.113,0,"NM","OLD SCHEDULE NAME(S)")

"^DD",51.1,51.113,0,"UP")
51.1
"^DD",51.1,51.113,.01,0)
OLD SCHEDULE NAME(S)^MFX^^0;1^D OASCHK^PSSJSV
"^DD",51.1,51.113,.01,1,0)
^.1^^-1
"^DD",51.1,51.113,.01,1,1,0)
51.113^B
"^DD",51.1,51.113,.01,1,1,1)
S ^PS(51.1,DA(1),5,"B",$E(X,1,30),DA)=""
"^DD",51.1,51.113,.01,1,1,2)
K ^PS(51.1,DA(1),5,"B",$E(X,1,30),DA)
"^DD",51.1,51.113,.01,1,3,0)
51.1^D
"^DD",51.1,51.113,.01,1,3,1)
S ^PS(51.1,"D",$E(X,1,30),DA(1),DA)=""
"^DD",51.1,51.113,.01,1,3,2)
K ^PS(51.1,"D",$E(X,1,30),DA(1),DA)
"^DD",51.1,51.113,.01,1,3,"%D",0)
^^2^2^3161130^
"^DD",51.1,51.113,.01,1,3,"%D",1,0)
Used to identify (lookup) a schedule entered for an order to derive a 
"^DD",51.1,51.113,.01,1,3,"%D",2,0)
frequency for the Max Daily Dose Order Check.
"^DD",51.1,51.113,.01,1,3,"DT")
3161130
"^DD",51.1,51.113,.01,3)
Answer must be 2-20 characters in length.
"^DD",51.1,51.113,.01,21,0)
^.001^7^7^3161028^^^
"^DD",51.1,51.113,.01,21,1,0)
 
"^DD",51.1,51.113,.01,21,2,0)
This field stores the old value of the administration schedule when the 
"^DD",51.1,51.113,.01,21,3,0)
NAME (#.01) field is edited.  Values can also be added to this field 
"^DD",51.1,51.113,.01,21,4,0)
directly using the Pharmacy Data Management Standard Schedule Edit [PSS 
"^DD",51.1,51.113,.01,21,5,0)
SCHEDULE EDIT] option.  This field will be used to identify an 
"^DD",51.1,51.113,.01,21,6,0)
administration schedule when its old name is found in a medication order
"^DD",51.1,51.113,.01,21,7,0)
when deriving a frequency for a Daily Dose Order Check.
"^DD",51.1,51.113,.01,"DT")
3161130
"^DD",51.24,51.24,0)
FIELD^^3^8
"^DD",51.24,51.24,0,"DDA")
N
"^DD",51.24,51.24,0,"DT")
3081001
"^DD",51.24,51.24,0,"IX","AREPLACETERM",51.24,99.97)

"^DD",51.24,51.24,0,"IX","AVUID",51.24,99.99)

"^DD",51.24,51.24,0,"IX","B",51.24,.01)

"^DD",51.24,51.24,0,"IX","C",51.24,1)

"^DD",51.24,51.24,0,"IX","D",51.242,.01)

"^DD",51.24,51.24,0,"NM","DOSE UNITS")

"^DD",51.24,51.24,0,"PT",50.0904,4)

"^DD",51.24,51.24,0,"PT",51.24,99.97)

"^DD",51.24,51.24,0,"VRPK")
PSS
"^DD",51.24,51.24,.01,0)
NAME^RFX^^0;1^K:$L(X)>30!($L(X)<1)!($E(X,1)=" ")!($E(X,$L(X))=" ")!(X["  ")!(X'?.ANP)!'(X'?1P.E) X
"^DD",51.24,51.24,.01,1,0)
^.1^^-1
"^DD",51.24,51.24,.01,1,1,0)
51.24^B
"^DD",51.24,51.24,.01,1,1,1)
S ^PS(51.24,"B",$E(X,1,30),DA)=""
"^DD",51.24,51.24,.01,1,1,2)
K ^PS(51.24,"B",$E(X,1,30),DA)
"^DD",51.24,51.24,.01,3)
Answer must be 1-30 characters in length, comprised of upper and lower case letters, numerics, and punctuation, but no leading punctuation, and contain no leading, trailing, or consecutive spaces.
"^DD",51.24,51.24,.01,7.5)
I $G(DIC(0))["L",'$D(XUMF) K X D EN^DDIOL("Entries must be edited via the Master File Server (MFS).","","!?5")
"^DD",51.24,51.24,.01,9)
^
"^DD",51.24,51.24,.01,21,0)
^.001^5^5^3080404^^
"^DD",51.24,51.24,.01,21,1,0)
This is the name of the Dose Unit. Local Possible Dosages entries in the
"^DD",51.24,51.24,.01,21,2,0)
DRUG (#50) File will be mapped to entries in this file. This mapping will
"^DD",51.24,51.24,.01,21,3,0)
enable the software to derive a First DataBank Dose Unit, also in this
"^DD",51.24,51.24,.01,21,4,0)
file, that can be passed into the Dose API for Dose checks for medication
"^DD",51.24,51.24,.01,21,5,0)
orders.
"^DD",51.24,51.24,.01,"DEL",1,0)
D:'$D(XUMF) EN^DDIOL("Entries must be inactivated via the Master File Server(MFS).","","!?5") I '$D(XUMF)
"^DD",51.24,51.24,.01,"DT")
3110608
"^DD",51.24,51.24,.01,"LAYGO",1,0)
D:'$D(XUMF) EN^DDIOL("Entries must be added via the Master File Server(MFS).","","!?5") I $D(XUMF)
"^DD",51.24,51.24,1,0)
FIRST DATABANK DOSE UNIT^FX^^0;2^K:$L(X)>30!($L(X)<1)!($E(X,1)=" ")!($E(X,$L(X))=" ")!(X["  ")!(X'?.ANP) X
"^DD",51.24,51.24,1,1,0)
^.1
"^DD",51.24,51.24,1,1,1,0)
51.24^C
"^DD",51.24,51.24,1,1,1,1)
S ^PS(51.24,"C",$E(X,1,30),DA)=""
"^DD",51.24,51.24,1,1,1,2)
K ^PS(51.24,"C",$E(X,1,30),DA)
"^DD",51.24,51.24,1,1,1,"%D",0)
^^3^3^3080126^
"^DD",51.24,51.24,1,1,1,"%D",1,0)
This cross reference is a regular cross reference on the FIRST DATABANK 
"^DD",51.24,51.24,1,1,1,"%D",2,0)
DOSE UNIT field. It sets the global: PS(51.24,"C",FIRST DATABANK DOSE 
"^DD",51.24,51.24,1,1,1,"%D",3,0)
UNIT, Internal Entry Number)="".
"^DD",51.24,51.24,1,1,1,"DT")
3080126
"^DD",51.24,51.24,1,3)
Answer must be 1-30 characters in length, comprised of upper and lower case letters, numerics, and punctuation, and contain no leading, trailing, or consecutive spaces.
"^DD",51.24,51.24,1,9)
^
"^DD",51.24,51.24,1,21,0)
^^3^3^3080331^
"^DD",51.24,51.24,1,21,1,0)
This field provides the mapping from the Vista Dose Unit to the First
"^DD",51.24,51.24,1,21,2,0)
DataBank Dose Unit. The First DataBank Dose Unit will be used when
"^DD",51.24,51.24,1,21,3,0)
processing the dosage checks provided by First DataBank.
"^DD",51.24,51.24,1,"DT")
3080126
"^DD",51.24,51.24,2,0)
SYNONYM^51.242^^1;0
"^DD",51.24,51.24,2,9)
^
"^DD",51.24,51.24,3,0)
DOSE FORM INDICATOR^RS^0:NO;1:YES;^0;3^Q
"^DD",51.24,51.24,3,3)
Enter 'Yes' if this Dose Unit should be considered a Dose Form type by First DataBank for the Dosing Check API. This determines the values used to compose the general dosing information message.
"^DD",51.24,51.24,3,9)
^
"^DD",51.24,51.24,3,21,0)
^.001^4^4^3081001^^^^
"^DD",51.24,51.24,3,21,1,0)
This field indicates whether the Dose Unit is considered by First 
"^DD",51.24,51.24,3,21,2,0)
DataBank (FDB) as a Dose Form type of Dose Unit when returning data for 
"^DD",51.24,51.24,3,21,3,0)
the Dosing Check API. It determines what values should be used to compose 
"^DD",51.24,51.24,3,21,4,0)
the general dosing information message.
"^DD",51.24,51.24,3,"DT")
3081001
"^DD",51.24,51.24,99.97,0)
REPLACED BY VHA STANDARD TERM^P51.24'^PS(51.24,^VUID;3^Q
"^DD",51.24,51.24,99.97,1,0)
^.1
"^DD",51.24,51.24,99.97,1,1,0)
51.24^AREPLACETERM
"^DD",51.24,51.24,99.97,1,1,1)
S ^PS(51.24,"AREPLACETERM",$E(X,1,30),DA)=""
"^DD",51.24,51.24,99.97,1,1,2)
K ^PS(51.24,"AREPLACETERM",$E(X,1,30),DA)
"^DD",51.24,51.24,99.97,1,1,"%D",0)
^^2^2^3080103^
"^DD",51.24,51.24,99.97,1,1,"%D",1,0)
This cross-reference can be used to identify the replacement entries 
"^DD",51.24,51.24,99.97,1,1,"%D",2,0)
associated with a Term/Concept.
"^DD",51.24,51.24,99.97,1,1,"DT")
3080103
"^DD",51.24,51.24,99.97,9)
^
"^DD",51.24,51.24,99.97,21,0)
^^4^4^3071227^
"^DD",51.24,51.24,99.97,21,1,0)
This field is populated when one Term/Concept replaces another 
"^DD",51.24,51.24,99.97,21,2,0)
Term/Concept.  This field is controlled by standardization and should 
"^DD",51.24,51.24,99.97,21,3,0)
only be changed by standardization processes.  This field contains a 
"^DD",51.24,51.24,99.97,21,4,0)
pointer to a VHA standard term that replaces this entry.
"^DD",51.24,51.24,99.97,"DT")
3080301
"^DD",51.24,51.24,99.98,0)
MASTER ENTRY FOR VUID^RSI^0:NO;1:YES;^VUID;2^Q
"^DD",51.24,51.24,99.98,9)
^
"^DD",51.24,51.24,99.98,21,0)
^^2^2^3050210^
"^DD",51.24,51.24,99.98,21,1,0)
This field identifies the Master entry for a VUID associated with a 
"^DD",51.24,51.24,99.98,21,2,0)
Term/Concept.
"^DD",51.24,51.24,99.98,"DT")
3080126
"^DD",51.24,51.24,99.99,0)
VUID^RFXI^^VUID;1^S X=+X K:$L(X)>20!($L(X)<1)!'(X?1.20N) X
"^DD",51.24,51.24,99.99,1,0)
^.1
"^DD",51.24,51.24,99.99,1,1,0)
51.24^AVUID
"^DD",51.24,51.24,99.99,1,1,1)
S ^PS(51.24,"AVUID",$E(X,1,30),DA)=""
"^DD",51.24,51.24,99.99,1,1,2)
K ^PS(51.24,"AVUID",$E(X,1,30),DA)
"^DD",51.24,51.24,99.99,1,1,3)
This cross-reference is by VUID.
"^DD",51.24,51.24,99.99,1,1,"%D",0)
^^1^1^3051026^
"^DD",51.24,51.24,99.99,1,1,"%D",1,0)
This cross-reference is by VUID.
"^DD",51.24,51.24,99.99,1,1,"DT")
3041223
"^DD",51.24,51.24,99.99,3)
Answer must be 1-20 digits in length.
"^DD",51.24,51.24,99.99,9)
^
"^DD",51.24,51.24,99.99,21,0)
^.001^2^2^3050210^^
"^DD",51.24,51.24,99.99,21,1,0)
VHA Unique ID (VUID). A unique meaningless integer assigned to reference
"^DD",51.24,51.24,99.99,21,2,0)
terms VHA wide.
"^DD",51.24,51.24,99.99,"DT")
3080126
"^DD",51.24,51.24,99.991,0)
EFFECTIVE DATE/TIME^51.2499DA^^TERMSTATUS;0
"^DD",51.24,51.24,99.991,9)
^
"^DD",51.24,51.24,99.991,21,0)
^^1^1^3050201^
"^DD",51.24,51.24,99.991,21,1,0)
Describes the pair Status and Effective Date/Time for each reference term.
"^DD",51.24,51.24,99.991,"DT")
3080126
"^DD",51.24,51.242,0)
SYNONYM SUB-FIELD^^.01^1
"^DD",51.24,51.242,0,"DT")
3071031
"^DD",51.24,51.242,0,"IX","B",51.242,.01)

"^DD",51.24,51.242,0,"NM","SYNONYM")

"^DD",51.24,51.242,0,"UP")
51.24
"^DD",51.24,51.242,.01,0)
SYNONYM^MFX^^0;1^K:$L(X)>30!($L(X)<1)!($E(X,1)=" ")!($E(X,$L(X))=" ")!(X["  ")!(X'?.ANP) X
"^DD",51.24,51.242,.01,1,0)
^.1
"^DD",51.24,51.242,.01,1,1,0)
51.242^B
"^DD",51.24,51.242,.01,1,1,1)
S ^PS(51.24,DA(1),1,"B",$E(X,1,30),DA)=""
"^DD",51.24,51.242,.01,1,1,2)
K ^PS(51.24,DA(1),1,"B",$E(X,1,30),DA)
"^DD",51.24,51.242,.01,1,2,0)
51.24^D
"^DD",51.24,51.242,.01,1,2,1)
S ^PS(51.24,"D",$E(X,1,30),DA(1),DA)=""
"^DD",51.24,51.242,.01,1,2,2)
K ^PS(51.24,"D",$E(X,1,30),DA(1),DA)
"^DD",51.24,51.242,.01,1,2,"%D",0)
^^3^3^3080331^
"^DD",51.24,51.242,.01,1,2,"%D",1,0)
This is a whole file cross reference on the SYNONYM (#.01) Field of the 
"^DD",51.24,51.242,.01,1,2,"%D",2,0)
SYNONYM (#51.242) Subfile. It sets the global
"^DD",51.24,51.242,.01,1,2,"%D",3,0)
PS(51.24,"D",SYNONYM,DA(1),DA)="".
"^DD",51.24,51.242,.01,1,2,"DT")
3080331
"^DD",51.24,51.242,.01,3)
Answer must be 1-30 characters in length, comprised of upper and lower case letters, numerics, and punctuation, and contain no leading, trailing, or consecutive spaces.
"^DD",51.24,51.242,.01,9)
^
"^DD",51.24,51.242,.01,21,0)
^.001^1^1^3080123^^^^
"^DD",51.24,51.242,.01,21,1,0)
This is a synonym for the NAME field, which is the name of the DOSE UNIT.
"^DD",51.24,51.242,.01,"DT")
3080331
"^DD",51.24,51.2499,0)
EFFECTIVE DATE/TIME SUB-FIELD^^.02^2
"^DD",51.24,51.2499,0,"DT")
3050201
"^DD",51.24,51.2499,0,"IX","B",51.2499,.01)

"^DD",51.24,51.2499,0,"NM","EFFECTIVE DATE/TIME")
 
"^DD",51.24,51.2499,0,"UP")
51.24
"^DD",51.24,51.2499,.01,0)
EFFECTIVE DATE/TIME^RDI^^0;1^S %DT="ESTX" D ^%DT S X=Y K:Y<1 X
"^DD",51.24,51.2499,.01,1,0)
^.1
"^DD",51.24,51.2499,.01,1,1,0)
51.2499^B
"^DD",51.24,51.2499,.01,1,1,1)
S ^PS(51.24,DA(1),"TERMSTATUS","B",$E(X,1,30),DA)=""
"^DD",51.24,51.2499,.01,1,1,2)
K ^PS(51.24,DA(1),"TERMSTATUS","B",$E(X,1,30),DA)
"^DD",51.24,51.2499,.01,1,1,"%D",0)
^^1^1^3050201^
"^DD",51.24,51.2499,.01,1,1,"%D",1,0)
This cross-reference is by Effective Date/Time.
"^DD",51.24,51.2499,.01,9)
^
"^DD",51.24,51.2499,.01,21,0)
^^2^2^3050201^
"^DD",51.24,51.2499,.01,21,1,0)
This is the date/time when the Status of the reference term was 
"^DD",51.24,51.2499,.01,21,2,0)
established.
"^DD",51.24,51.2499,.01,"DT")
3080126
"^DD",51.24,51.2499,.02,0)
STATUS^RSI^1:ACTIVE;0:INACTIVE;^0;2^Q
"^DD",51.24,51.2499,.02,9)
^
"^DD",51.24,51.2499,.02,21,0)
^^4^4^3050201^
"^DD",51.24,51.2499,.02,21,1,0)
The Status of a reference term is either 'ACTIVE' or 'INACTIVE'. If 
"^DD",51.24,51.2499,.02,21,2,0)
'ACTIVE', then the term will be accessible by end-users to document a 
"^DD",51.24,51.2499,.02,21,3,0)
particular patient event. If 'INACTIVE', then the term will only be 
"^DD",51.24,51.2499,.02,21,4,0)
accessible by the application to display legacy data.
"^DD",51.24,51.2499,.02,"DT")
3080126
"^DD",51.25,51.25,0)
FIELD^^1^2
"^DD",51.25,51.25,0,"DDA")
N
"^DD",51.25,51.25,0,"DT")
3140211
"^DD",51.25,51.25,0,"IX","B",51.25,.01)

"^DD",51.25,51.25,0,"NM","DOSE UNIT CONVERSION")

"^DD",51.25,51.25,.01,0)
DOSE UNIT 1^RF^^0;1^K:$L(X)>30!($L(X)<2)!'(X'?1P.E) X
"^DD",51.25,51.25,.01,1,0)
^.1
"^DD",51.25,51.25,.01,1,1,0)
51.25^B
"^DD",51.25,51.25,.01,1,1,1)
S ^PS(51.25,"B",$E(X,1,30),DA)=""
"^DD",51.25,51.25,.01,1,1,2)
K ^PS(51.25,"B",$E(X,1,30),DA)
"^DD",51.25,51.25,.01,3)
Answer must be 2-30 characters in length.
"^DD",51.25,51.25,.01,7.5)
I $G(DIC(0))["L",'$D(XUMF) K X D EN^DDIOL("Entries must be edited via the Master File Server (MFS).","","!?5")
"^DD",51.25,51.25,.01,9)
^
"^DD",51.25,51.25,.01,21,0)
^^1^1^3140130^
"^DD",51.25,51.25,.01,21,1,0)
The Dose Unit value to be converted from.
"^DD",51.25,51.25,.01,23,0)
^^1^1^3140212^
"^DD",51.25,51.25,.01,23,1,0)
The parent DOSE UNIT 1 value to be converted from.  
"^DD",51.25,51.25,.01,"DEL",1,0)
D:'$D(XUMF) EN^DDIOL("Entries must be inactivated via the Master File Server(MFS).","","!?5") I '$D(XUMF)
"^DD",51.25,51.25,.01,"DT")
3140212
"^DD",51.25,51.25,.01,"LAYGO",1,0)
D:'$D(XUMF) EN^DDIOL("Entries must be added via the Master File Server(MFS).","","!?5") I $D(XUMF)
"^DD",51.25,51.25,1,0)
DOSE UNIT 2^51.251^^1;0
"^DD",51.25,51.25,1,21,0)
^^2^2^3140212^
"^DD",51.25,51.25,1,21,1,0)
A list of child DOSE UNIT 2 values with an associated CONVERSION FACTOR
"^DD",51.25,51.25,1,21,2,0)
for the parent DOSE UNIT 1.
"^DD",51.25,51.25,1,23,0)
^^2^2^3140212^
"^DD",51.25,51.25,1,23,1,0)
The CONVERSION FACTOR numeric field will be used to convert associated 
"^DD",51.25,51.25,1,23,2,0)
parent DOSE UNIT 1 values to child DOSE UNIT 2 values.
"^DD",51.25,51.251,0)
DOSE UNIT 2 SUB-FIELD^^1^2
"^DD",51.25,51.251,0,"DT")
3140211
"^DD",51.25,51.251,0,"IX","B",51.251,.01)

"^DD",51.25,51.251,0,"NM","DOSE UNIT 2")

"^DD",51.25,51.251,0,"UP")
51.25
"^DD",51.25,51.251,.01,0)
DOSE UNIT 2^MRF^^0;1^K:$L(X)>30!($L(X)<2) X
"^DD",51.25,51.251,.01,1,0)
^.1
"^DD",51.25,51.251,.01,1,1,0)
51.251^B
"^DD",51.25,51.251,.01,1,1,1)
S ^PS(51.25,DA(1),1,"B",$E(X,1,30),DA)=""
"^DD",51.25,51.251,.01,1,1,2)
K ^PS(51.25,DA(1),1,"B",$E(X,1,30),DA)
"^DD",51.25,51.251,.01,3)
Answer must be 2-30 characters in length.
"^DD",51.25,51.251,.01,21,0)
^^2^2^3140212^
"^DD",51.25,51.251,.01,21,1,0)
A child DOSE UNIT 2 value with an associated CONVERSION FACTOR for the 
"^DD",51.25,51.251,.01,21,2,0)
parent DOSE UNIT 1 value.
"^DD",51.25,51.251,.01,23,0)
^^2^2^3140212^
"^DD",51.25,51.251,.01,23,1,0)
The CONVERSION FACTOR numeric field will be used to convert associated 
"^DD",51.25,51.251,.01,23,2,0)
parent DOSE UNIT 1 values to the child DOSE UNIT 2 values.
"^DD",51.25,51.251,.01,"DT")
3140212
"^DD",51.25,51.251,1,0)
CONVERSION FACTOR^RNJ14,6^^0;2^K:+X'=X!(X>1000000)!(X<0)!(X?.E1"."7.N) X
"^DD",51.25,51.251,1,3)
Type a number between 0 and 1000000, 6 decimal digits.
"^DD",51.25,51.251,1,21,0)
^^2^2^3140212^
"^DD",51.25,51.251,1,21,1,0)
The value to multiply parent DOSE UNIT 1 values by in order to return the
"^DD",51.25,51.251,1,21,2,0)
child DOSE UNIT 2 values.
"^DD",51.25,51.251,1,23,0)
^^2^2^3140212^
"^DD",51.25,51.251,1,23,1,0)
The CONVERSION FACTOR value will be used to multiply the parent DOSE 
"^DD",51.25,51.251,1,23,2,0)
UNIT 1 value by in order to return a child DOSE UNIT 2 value.
"^DD",51.25,51.251,1,"DT")
3140212
"^DIC",51.24,51.24,0)
DOSE UNITS^51.24
"^DIC",51.24,51.24,0,"GL")
^PS(51.24,
"^DIC",51.24,51.24,"%",0)
^1.005^^0
"^DIC",51.24,51.24,"%D",0)
^1.001^14^14^3081010^^^^
"^DIC",51.24,51.24,"%D",1,0)
Per VHA Directive 2005-044, this file has been "locked down" by Data 
"^DIC",51.24,51.24,"%D",2,0)
Standardization (DS).  The file definition (i.e. data dictionary) shall 
"^DIC",51.24,51.24,"%D",3,0)
not be modified.  All additions, changes and deletions to entries in the 
"^DIC",51.24,51.24,"%D",4,0)
file shall be done by Enterprise Reference Terminology (ERT) using the 
"^DIC",51.24,51.24,"%D",5,0)
Master File Server (MFS), provided by Common Services (CS).  Creating 
"^DIC",51.24,51.24,"%D",6,0)
and/or editing locally defined fields in the file are not permitted.  Use 
"^DIC",51.24,51.24,"%D",7,0)
of locally defined fields that were created prior to the VHA Directive's 
"^DIC",51.24,51.24,"%D",8,0)
2005-044 effective date shall not be supported.
"^DIC",51.24,51.24,"%D",9,0)
 
"^DIC",51.24,51.24,"%D",10,0)
This file contains a list of Standard Dose Units, associated synonyms, and
"^DIC",51.24,51.24,"%D",11,0)
a corresponding FIRST DATABANK Dose Unit for every Standard Dose Unit. 
"^DIC",51.24,51.24,"%D",12,0)
The associated FIRST DATABANK Dose Unit will be used for the Dosage 
"^DIC",51.24,51.24,"%D",13,0)
Checks provided by FIRST DATABANK. Updates cannot be made at a local
"^DIC",51.24,51.24,"%D",14,0)
facility.
"^DIC",51.24,"B","DOSE UNITS",51.24)

"^DIC",51.25,51.25,0)
DOSE UNIT CONVERSION^51.25
"^DIC",51.25,51.25,0,"GL")
^PS(51.25,
"^DIC",51.25,51.25,"%",0)
^1.005^^0
"^DIC",51.25,51.25,"%D",0)
^^19^19^3140212^
"^DIC",51.25,51.25,"%D",1,0)
Per VHA Directive 2005-044, this file has been "locked down" by Data 
"^DIC",51.25,51.25,"%D",2,0)
Standardization (DS).  The file definition (i.e. data dictionary) shall 
"^DIC",51.25,51.25,"%D",3,0)
not be modified.  All additions, changes and deletions to entries in the
"^DIC",51.25,51.25,"%D",4,0)
file shall be done by Enterprise Reference Terminology (ERT) using the
"^DIC",51.25,51.25,"%D",5,0)
Master File Server (MFS), provided by Common Services (CS) or via released
"^DIC",51.25,51.25,"%D",6,0)
Pharmacy Data Management (PDM) patches. Creating and/or editing locally
"^DIC",51.25,51.25,"%D",7,0)
defined fields in the file are not permitted. 
"^DIC",51.25,51.25,"%D",8,0)
 
"^DIC",51.25,51.25,"%D",9,0)
This file will be used to store CONVERSION FACTORS for DOSE UNIT 1 to
"^DIC",51.25,51.25,"%D",10,0)
DOSE UNIT 2.  The top level or parent will be DOSE UNIT 1(#.01).  
"^DIC",51.25,51.25,"%D",11,0)
Associated with each DOSE UNIT 1 will be multiple child DOSE UNIT 
"^DIC",51.25,51.25,"%D",12,0)
2(51.251,#.01) and CONVERSION FACTOR(51.251,#1) pairs.  All fields are 
"^DIC",51.25,51.25,"%D",13,0)
required for a given entry or sub-entry.  
"^DIC",51.25,51.25,"%D",14,0)
 
"^DIC",51.25,51.25,"%D",15,0)
The DOSE UNIT CONVERSION file will be used to convert one dose unit to 
"^DIC",51.25,51.25,"%D",16,0)
another using a conversion factor so that a comparison can be made 
"^DIC",51.25,51.25,"%D",17,0)
between two dose units when they are not equivalent.  The dose unit used 
"^DIC",51.25,51.25,"%D",18,0)
for the Dosing Order Check may not be the same dose unit First Data Bank 
"^DIC",51.25,51.25,"%D",19,0)
(FDB) returns with the Dosing Order Check results.
"^DIC",51.25,"B","DOSE UNIT CONVERSION",51.25)

"BLD",9645,6)
6^
$END KID PSS*1.0*201
