PSSP254 ;BIRM/SA - PATCH PSS*1*254 Pre/Post-Init Rtn ; Aug 25, 2021@16:00
;;1.0;PHARMACY DATA MANAGEMENT;**254**;9/30/97;Build 109
;
POST ; post install actions
N PSSLINE,MTXT
;
; Post-install will only run on the first time the patch is installed
;I $$PATCH^XPDUTL("PSS*1.0*254") D G END
;. D BMES^XPDUTL("No file updates made. Patch has already been installed before.")
;
;I $D(^XTMP("PSSP254B")) D G END
;. D BMES^XPDUTL("No file updates made. Patch has already been installed.")
;
;Add a check for the new routes and new units here, if not run before, run those and give a different message
I $D(^XTMP("PSSP254B")) D G END
. I '$D(^XTMP("PSSP254B","NEWROUTE")),'$D(^XTMP("PSSP254B","NEWUNIT")) D RTEUNIT^PSSP254A Q
. D BMES^XPDUTL("No file updates made. Patch has already been installed.")
;
; This TEMP global will be used for the Mailman Message
K ^TMP("PSS254P",$J)
;
; This TEMP global will be used to store backup data for Backing out the patch
K ^XTMP("PSSP254B")
S ^XTMP("PSSP254B",0)=$$FMADD^XLFDT(DT,180)_"^"_DT_"^PSS*1.0*254 - FDB v4.5 Upgrade - Backout Data"
;
D SETTXT("The following updates have been automatically performed to support the First Data Bank (FDB) v4.5 Upgrade:")
D SETTXT("")
;
; Updates to the PPSN & FDB WebServices
D WS
; Updates to DOSE UNITS (#51.24) and DOSE UNIT CONVERSION (#51.25) files
D ST
; Updates to STANDARD MEDICATION ROUTES (#51.23) file
D MR
; Updates to the DOSING CHECK FREQUENCY field for the files #51 and #51.1
D DCF
;
; Sends Mailman Message to Installer and PSNMGR key holders listing updates
D MAIL
K ^TMP("PSS254P",$J)
D EN^PSSP254R ; generate Orderable items & Quick orders reports
END ; Post-install end point
Q
;
ST ; Update entries in DOSE UNITS file (#51.24) and DOSE UNIT CONVERSION file (#51.25)
N II,JJ,PSA,PSI,PSJ,PSL,PSLIST,PSX,SYM,TXT,X
D BMES^XPDUTL("DOSE UNITS file (#51.24) and DOSE UNIT CONVERSION file (#51.25) Updates:")
D SETTXT("")
D SETTXT("DOSE UNITS (#51.24) and DOSE UNIT CONVERSION file (#51.25) Updates:")
D SETTXT("===================================================================")
;
S MTXT="o FDB DOSE UNIT updates:" D BMES^XPDUTL(MTXT),SETTXT(MTXT)
F PSJ=1:1 S PSLIST=$P($T(LI241+PSJ),";;",2) Q:PSLIST="" D FDB
D SETTXT("")
S MTXT="o New Synonyms:" D BMES^XPDUTL(MTXT),SETTXT(MTXT)
F PSJ=1:1 S PSLIST=$P($T(LI242+PSJ),";;",2) Q:PSLIST="" D SYN
D SETTXT("")
S MTXT="o Deleted entries:" D BMES^XPDUTL(MTXT),SETTXT(MTXT)
D DEL24
D SETTXT("")
S MTXT="o DOSE UNIT 1 updates:" D BMES^XPDUTL(MTXT),SETTXT(MTXT)
F PSJ=1:1 S PSLIST=$P($T(LI251+PSJ),";;",2) Q:PSLIST="" D DUC
D SETTXT("")
S MTXT="o Deleted entries:" D BMES^XPDUTL(MTXT),SETTXT(MTXT)
D DEL25
D SETTXT("")
S MTXT="o DOSE UNIT 2 updates:" D BMES^XPDUTL(MTXT),SETTXT(MTXT)
F PSJ=1:1 S PSLIST=$P($T(LI252+PSJ),";;",2) Q:PSLIST="" D UNIT2
K DIE,DR,DA,XUMF
;
D NEWUNITS^PSSP254A
Q
;
FDB ; 1st DataBank Dose Unit Updates
N DA,DIE,DR,FROM
S DA=+$$FIND1^DIC(51.24,"","C",$P(PSLIST,U)) Q:DA<1
S FROM=$$GET1^DIQ(51.24,DA,1)
I FROM=$P(PSLIST,U,2) Q
S XUMF=1,DR="1////"_$P(PSLIST,U,2),DIE=51.24 D ^DIE
S MTXT=" - Entry #"_DA_": changed from '"_FROM_"' to '"_$P(PSLIST,U,2)_"'"
D BMES^XPDUTL(MTXT),SETTXT(MTXT)
S ^XTMP("PSSP254B","DU-U",51.24,DA,1)=$P(PSLIST,U)_"^"_FROM_"^"_$P(PSLIST,U,2)
Q
;
SYN ; SYNONYM updates
N DA,DIC,DD,DO,DINUM,PSA,PSI,PSX,SYM,Y
S PSA=+$$FIND1^DIC(51.24,"","B",$P(PSLIST,U)) Q:PSA<1
S SYM=$P(PSLIST,U,2) F PSI=1:1 S PSX=$P(SYM,",",PSI) Q:PSX="" D
. I $D(^PS(51.24,PSA,1,"B",$E(PSX,1,30))) Q
. S DA(1)=PSA,X=PSX,DIC="^PS(51.24,"_DA(1)_",1,",DIC(0)="L" D FILE^DICN
. M ^XTMP("PSSP254B","DU-SYN-A",51.242,DA(1),DA,+$G(Y))=PSX
. S MTXT=" - '"_PSX_"' added to entry '"_$P(PSLIST,U)_"'"
. D BMES^XPDUTL(MTXT),SETTXT(MTXT)
Q
;
DEL24 ; delete entries from file #51.24
N DA,DIK,TXT
S XUMF=1
F TXT="anti-Xa unit","ENEMA","OVULE(S)","SQUIRT(S)","TROCHE(S)" D
. S DA=+$$FIND1^DIC(51.24,"","B",TXT) Q:'DA
. M ^XTMP("PSSP254B","DU-D",51.24,DA)=^PS(51.24,DA)
. S DIK="^PS(51.24," D ^DIK
. S MTXT=" - Deleted entry '"_TXT_"' from DOSE UNITS file (#51.24)"
. D BMES^XPDUTL(MTXT),SETTXT(MTXT)
Q
;
DUC ; update the DOSE UNIT 1 (#.01) of the DOSE UNIT CONVERSION file (#51.25)
N DA,DIE,DR
S DA=+$$FIND1^DIC(51.25,"","MX",$P(PSLIST,U)) Q:DA<1
S XUMF=1,DR=".01////"_$P(PSLIST,U,2),DIE=51.25 D ^DIE
S MTXT=" - Entry #"_DA_": changed from '"_$P(PSLIST,U)_"' to '"_$P(PSLIST,U,2)_"'"
D BMES^XPDUTL(MTXT),SETTXT(MTXT)
S ^XTMP("PSSP254B","DUC-U",51.25,DA,.01)=$P(PSLIST,U)_"^"_$P(PSLIST,U,2)
Q
;
DEL25 ; delete entries from the DOSE UNIT CONVERSION file (#51.25)
N DA,DIK,TXT
S XUMF=1
F TXT="ENEMAS","OVULE(S)","SQUIRTS","TROCHES" D
. S DA=+$$FIND1^DIC(51.25,"","B",TXT) Q:'DA
. M ^XTMP("PSSP254B","DUC-D",51.25,DA)=^PS(51.25,DA)
. S DIK="^PS(51.25," D ^DIK
. S MTXT=" - Deleted entry '"_TXT_"' from DOSE UNIT CONVERSION file (#51.25)"
. D BMES^XPDUTL(MTXT),SETTXT(MTXT)
Q
;
UNIT2 ; update the DOSE UNIT 2 field (#.01) and the CONVERSION FACTOR field (#1) entries in file (#51.25)
K DIE,DR,DA,JJ,PSL,PSX,II
S XUMF=1
S PSL=$P(PSLIST,U,2) F II=1:1:$L(PSL,",") S PSX=$P(PSL,",",II) D
. S DA(1)=$P(PSLIST,U)
. S JJ=$O(^PS(51.25,DA(1),1,"B",$S(PSX["@":$P(PSX,"@"),1:$P(PSX,":")),0))
. S DA=JJ I 'DA Q
. I PSX'["@",$$GET1^DIQ(51.251,DA_","_DA(1)_",",.01)=$P(PSX,":",2)&($$GET1^DIQ(51.251,DA_","_DA(1)_",",1)=$P(PSX,":",3)) Q
. S DIE="^PS(51.25,"_DA(1)_",1,"
. S DR=".01////"_$S(PSX["@":"@",1:$P(PSX,":",2))_$S($P(PSX,":",3):";1////"_$P(PSX,":",3),1:"")
. M ^XTMP("PSSP254B","DU2C-"_$S(PSX["@":"D",1:"U"),51.251,DA(1),DA)=^PS(51.25,DA(1),1,DA)
. D ^DIE K DA,DIE,DR
. I PSX["@" S MTXT=" - Deleted entry '"_$P(PSX,"@")_"' for "_$P($G(^PS(51.25,$P(PSLIST,U),0)),U)
. I PSX'["@" S MTXT=" - Changed from '"_$P(PSX,":")_"' to '"_$P(PSX,":",2)_"' for "_$P($G(^PS(51.25,$P(PSLIST,U),0)),U)
. D BMES^XPDUTL(MTXT),SETTXT(MTXT)
Q
;
MR ; STANDARD MEDICATION ROUTES (#51.23) file updates
D SETTXT("")
S MTXT="STANDARD MEDICATION ROUTES file (#51.23) Updates:"
D BMES^XPDUTL(MTXT),SETTXT(MTXT)
D SETTXT("=================================================")
F TXT="INTRA-AMNIOTIC;INTRA-AMNIOTIC","INTRATYMPANIC;INTRATYMPANIC","IONTOPHORESIS;IONTOPHORETIC","OPHTHALMIC;OPHTHALMIC (EYE)","OTIC;OTIC (EAR)","SUBMUCOSAL;SUBMUCOSAL INJECTION" D
. S DA=$$FIND1^DIC(51.23,"","B",$P(TXT,";")) Q:'DA
. I $$GET1^DIQ(51.23,DA,1)=$P(TXT,";",2) Q
. S ^XTMP("PSSP254B","SMR-U",51.23,DA,1)=$$GET1^DIQ(51.23,DA,1)_"^"_$P(TXT,";",2)
. S MTXT=" - Changed '"_$$GET1^DIQ(51.23,DA,1)_"' to '"_$P(TXT,";",2)_"'"
. S DIE="^PS(51.23,",DR="1////"_$P(TXT,";",2) D ^DIE K DA,DIE,DR
. D BMES^XPDUTL(MTXT),SETTXT(MTXT)
;
D NEWROUTE^PSSP254A
Q
;
WS ; Web Service updates
N SRVNAME,PSSCNT,PSSDATA,PSSTYPE,FDA
S PSSTYPE=$G(XPDQUES("POS1")) ;Get the site type entered in the Installation question POS1
; PSSTYPE will be a value of 1-5 (PRE-PROD, SQA, STAGE, DEVELOPMENT, PRODUCTION)
I 'PSSTYPE S PSSTYPE=5
D MES^XPDUTL("Setting up the servers for "_$S(PSSTYPE=1:"PRE-PROD",PSSTYPE=2:"SQA",PSSTYPE=3:"STAGING",PSSTYPE=4:"DEVELOPMENT",1:"PRODUCTION")_":")
F PSSCNT=1:1 S PSSDATA=$P($T(WEBS+PSSCNT),";;",2) D Q:PSSDATA=""
. Q:PSSTYPE'=$P(PSSDATA,";")
. S SRVNAME=$P(PSSDATA,";",3),PSSIEN=$$FIND1^DIC(18.12,,"B",SRVNAME) Q:'PSSIEN
. K FDA M ^XTMP("PSSP254B","WS",18.12,PSSIEN)=^XOB(18.12,PSSIEN)
. S PSSIEN=PSSIEN_"," D DISABLE(SRVNAME,PSSIEN)
. S FDA(18.12,PSSIEN,.04)=$P(PSSDATA,";",4) ; server
. S FDA(18.12,PSSIEN,.03)=$P(PSSDATA,";",5) ; port
. S FDA(18.12,PSSIEN,.06)=1 ; status
. I SRVNAME="PPSN" D
. . S FDA(18.12,PSSIEN,3.02)="encrypt_only_tlsv12"
. . S FDA(18.12,PSSIEN,3.03)=443 ; ssl port
. D FILE^DIE("K","FDA","PSSERR") K FDA
. I '$D(PSSERR("DIERR",1,"TEXT",1)) S MTXT="o WEB SERVER '"_SRVNAME_"' updated successfully"
. I $D(PSSERR("DIERR",1,"TEXT",1)) S MTXT="o WEB SERVER '"_SRVNAME_"' Error: "_PSSERR("DIERR",1,"TEXT",1)
. D BMES^XPDUTL(MTXT),SETTXT(MTXT)
Q
;
DISABLE(SRVNAME,PSSIEN) ; Disable PPSN server if it exists-will set it back to enabled
N PSSERVER,PSSERR
; Set STATUS to DISABLED
S PSSERVER(18.12,PSSIEN,.06)=0
D FILE^DIE("","PSSERVER","PSSERR") ; update existing entry
D BMES^XPDUTL("o WEB SERVER '"_SRVNAME_"' server temporarily disabled.")
Q
;
DCF ; Converting DOSING CHECK FREQUENCY field in both files (MEDICATION INSTRUCTION (#51) & ADMINISTRATION SCHEDULE (#51.1))
N FILE,FIELD,MEDSCH,OLDFREQ,NEWFREQ,XX,LINE,DIE,DR,DA,X,Y,REVFLG,FREQCHK,DRGCTR,DRGFILE,DRGNODE,TMPMSG
;
D SETTXT("")
S MTXT="DOSING CHECK FREQUENCY field Conversion:"
D BMES^XPDUTL(MTXT),SETTXT(MTXT)
D SETTXT("========================================")
F FILE=51,51.1 D
. I FILE=51 S FIELD=32,DRGNODE=5,DRGFILE=51.321
. E S FIELD=11,DRGNODE=4,DRGFILE=51.111
. ;
. S MEDSCH=0 F S MEDSCH=$O(^PS(FILE,MEDSCH)) Q:'MEDSCH D
. . S OLDFREQ=$$UP^XLFSTR($$GET1^DIQ(FILE,MEDSCH,FIELD)) I OLDFREQ="" Q
. . S NEWFREQ=OLDFREQ I $E(OLDFREQ,1)="X" S NEWFREQ=+$E(OLDFREQ,2,3)_"X"_$E(OLDFREQ,$L(OLDFREQ))
. . S FREQCHK=$$FREQCHK^PSSJSV(NEWFREQ)
. . I FREQCHK'="",OLDFREQ=NEWFREQ Q
. . S ^XTMP("PSSP254B","DCF",FILE,MEDSCH,FIELD)=OLDFREQ_"^"_$S(FREQCHK="":"@",1:NEWFREQ)
. . K DIE,DR S DIE=FILE,DR=FIELD_"////"_$S(FREQCHK="":"@",1:NEWFREQ),DA=MEDSCH D ^DIE
. . ;
. . ;Impacted Drugs
. . I FREQCHK="" S DRGCTR=0 F S DRGCTR=$O(^PS(FILE,MEDSCH,DRGNODE,DRGCTR)) Q:(+DRGCTR'=DRGCTR) D
. . . S TMPMSG=$G(^PS(FILE,MEDSCH,DRGNODE,DRGCTR,0))_"^"_$$GET1^DIQ(DRGFILE,DRGCTR_","_MEDSCH_",",.01)
. . . S ^XTMP("PSSP254B","DCFDRUG",FILE,MEDSCH,FIELD,DRGCTR)=TMPMSG
. . . S DIE="^PS(FILE,MEDSCH,DRGNODE,",DA=DRGCTR,DA(1)=MEDSCH,DR=".01////@" D ^DIE
;
S REVFLG=0
I '$D(^XTMP("PSSP254B","DCF")) D
. D SETTXT("There were no updates needed.")
E D
. S FILE="" F S FILE=$O(^XTMP("PSSP254B","DCF",FILE)) Q:'FILE D
. . S MTXT="o File: "_$S(FILE=51:"MEDICATION INSTRUCTION (#51)",1:"ADMINISTRATION SCHEDULE (#51.1)")
. . D BMES^XPDUTL(MTXT),SETTXT(MTXT)
. . S MEDSCH="" F S MEDSCH=$O(^XTMP("PSSP254B","DCF",FILE,MEDSCH)) Q:MEDSCH="" D
. . . S FIELD="" F S FIELD=$O(^XTMP("PSSP254B","DCF",FILE,MEDSCH,FIELD)) Q:FIELD="" D
. . . . S XX=$G(^XTMP("PSSP254B","DCF",FILE,MEDSCH,FIELD))
. . . . S MTXT=" - "_$$GET1^DIQ(FILE,MEDSCH,.01)_" ("_$$GET1^DIQ(FILE,MEDSCH,$S(FILE=51:1,1:8))
. . . . I $P(XX,"^",2)="@" D
. . . . . S MTXT=MTXT_") - '"_$P(XX,"^")_"' deleted - no longer supported."
. . . . . S REVFLG=1
. . . . . D BMES^XPDUTL(MTXT),SETTXT(MTXT)
. . . . . D LSTDRG(FILE,MEDSCH,FIELD)
. . . . E D
. . . . . S MTXT=MTXT_") - Changed from '"_$P(XX,"^")_"' to '"_$P(XX,"^",2)_"'"
. . . . . D BMES^XPDUTL(MTXT),SETTXT(MTXT)
. . D SETTXT("")
I '$G(REVFLG) D
. D SETTXT("NOTE: No further (manual) updates are needed for the Medication Instructions")
. D SETTXT("==== or Administration Schedule entries.")
E D
. D SETTXT("NOTE: Make sure you review the entries that the DOSING CHECK FREQUENCY field")
. D SETTXT("==== content was deleted and select the appropriate valid value for them.")
;
Q
;
SETTXT(TXT) ; Setting Plain Text
S PSSLINE=$G(PSSLINE)+1,^TMP("PSS254P",$J,PSSLINE)=TXT
Q
;
LSTDRG(FILE,MEDSCH,FIELD) ;Display impacted drugs
N DRGCTR,DRGFILE,DRGLIST,DRGNAME
;
S DRGFILE=$S(FILE=51:51.321,1:51.111)
S DRGCTR=""
F S DRGCTR=$O(^XTMP("PSSP254B","DCFDRUG",FILE,MEDSCH,FIELD,DRGCTR)) Q:DRGCTR="" D
. S DRGNAME=$P($G(^XTMP("PSSP254B","DCFDRUG",FILE,MEDSCH,FIELD,DRGCTR)),"^",2)
. I DRGNAME'="" S DRGLIST(DRGNAME)="" ;Setup for alphabetical display
;
I $DATA(DRGLIST) D
. S MTXT=" Impacted Drugs"
. D MES^XPDUTL(MTXT),SETTXT(MTXT)
. S DRGNAME="" F S DRGNAME=$O(DRGLIST(DRGNAME)) Q:DRGNAME="" D
. . S MTXT=" "_DRGNAME
. . D MES^XPDUTL(MTXT),SETTXT(MTXT)
Q
;
MAIL ; Sends Mailman message
N II,XMX,XMSUB,XMDUZ,XMTEXT,XMY,DIFROM
;
D BMES^XPDUTL("Sending Mailman Message with updates...")
;
S II=0 F S II=$O(^XUSEC("PSNMGR",II)) Q:'II S XMY(II)=""
S XMY(DUZ)="",XMSUB="PSS*1*254 FDB v4.5 Upgrade Installation Complete"
S XMDUZ="PSS*1*254 Install",XMTEXT="^TMP(""PSS254P"",$J,"
D ^XMD
Q
;
LI241 ; FDB DOSE Unit entry list in file (#51.24)
;;APPLICATION(S)^APPLICATIONS
;;APPLICATORFUL(S)^APPLICATORFUL
;;CAP/TAB^TABLET-CAPSULE
;;CAPSULE(S)^CAPSULES
;;DROP(S)^DROPS
;;INCH(ES)^INCHES
;;MICROGRAM(S)^MICROGRAMS
;;MG-PE^MILLIGRAM PHENYTOIN EQUIVALENT
;;MICRO UNIT(S)^MICROUNITS
;;MILLIONUNIT(S)^MILLION UNITS
;;PIECE(S)^PIECES OF GUM
;;PUFF(S)^PUFFS
;;SCOOPFUL(S)^SCOOPS
;;SPRAY(S)^SPRAY
;;STRIP(S)^STRIPS
;;SUPPOSITORY(IES)^SUPPOSITORY
;;TABLESPOONFUL(S)^TABLESPOONFUL
;;TABLET(S)^TABLETS
;;TEASPOONFUL(S)^TEASPOONFUL
;;THOUSAND UNITS^THOUSAND UNITS
;;UNIT(S)^UNITS
;;
LI242 ; new SYNONYM list to be added in file (#51.24)
;;CAP/TAB^TABLET-CAPSULE,TABLET-CAPSULES
;;MG-PE^MILLIGRAM PHENYTOIN EQUIVALENTS,MILLIGRAM PHENYTOIN EQUIVALENT
;;THOUSAND UNITS^THOUSAND UNIT
;;
LI251 ; DOSE UNIT 1 entries of file (#51.25)
;;APPLICATION(S)^APPLICATIONS
;;APPLICATORFUL(S)^APPLICATORFUL
;;CAPSULE(S)^CAPSULES
;;DROP(S)^DROPS
;;INCH(ES)^INCHES
;;MICRO UNITS^MICROUNITS
;;MICROGRAM(S)^MICROGRAMS
;;MILLIONUNIT(S)^MILLION UNITS
;;PIECE(S)^PIECES OF GUM
;;PUFF(S)^PUFFS
;;SCOOPFULS^SCOOPS
;;SPRAY(S)^SPRAYS
;;STRIP(S)^STRIPS
;;SUPPOSITORY(IES)^SUPPOSITORY
;;TAB-CAPS^TABLET-CAPSULES
;;TABLESPOONFULS^TABLESPOONFUL
;;TABLET(S)^TABLET
;;TEASPOONFULS^TEASPOONFUL
;;TU^THOUSAND UNITS
;;UNIT(S)^UNITS
;;
LI252 ; DOSE UNIT 2 entries of file (#51.25)
;;67^APPLICATORFUL(S):APPLICATORFUL
;;1^APPLICATION(S):APPLICATIONS
;;7^INCH(ES):INCHES
;;9^TAB-CAPS:TABLET-CAPSULES,CAPSULE(S):CAPSULES,ENEMAS@,OVULE(S)@,PIECE(S):PIECES OF GUM,SCOOPFULS:SCOOPS,STRIP(S):STRIPS,SUPPOSITORY(IES):SUPPOSITORY,TABLET(S):TABLETS,TROCHES@
;;12^MICROGRAM(S):MICROGRAMS
;;15^SPRAY(S):SPRAYS,PUFF(S):PUFFS,SQUIRTS@
;;36^MILLIONUNIT(S):MILLION UNITS,UNIT(S):UNITS
;;38^MICROGRAM(S):MICROGRAMS
;;39^DROP(S):DROPS,TABLESPOONFULS:TABLESPOONFUL,TEASPOONFULS:TEASPOONFUL
;;40^MICRO UNITS:MICROUNITS,TU:THOUSAND UNITS:1000,UNIT(S):UNITS
;;41^MICROGRAM(S):MICROGRAMS
;;49^SPRAY(S):SPRAYS
;;52^PUFF(S):PUFFS,SQUIRTS@
;;61^MILLIONUNIT(S):MILLION UNITS:0.001,UNIT(S):UNITS
;;62^MICRO UNITS:MICROUNITS,TU:THOUSAND UNITS,MILLIONUNIT(S):MILLION UNITS
;;
;;3;STAGE;PEPS;mocha-ioc.pitc.domain.ext;8010
WEBS ; Map the system type to the SERVER endpoint
;;1;PRE-PROD;PPSN;vaausapppps401.aac.domain.ext;443
;;1;PRE-PROD;PEPS;mocha-pre.pharmacy.healthevet.domain.ext;8011
;;2;SQA;PPSN;vaausapppps930.aac.domain.ext;443
;;2;SQA;PEPS;vaausapppps950.aac.domain.ext;8001
;;3;STAGE;PPSN;vaausapppps901.aac.domain.ext;443
;;3;STAGE;PEPS;mocha-pre.pharmacy.healthevet.domain.ext;8011
;;4;DEV;PPSN;vaausapppps910.aac.domain.ext;443
;;4;DEV;PEPS;vaausppsapp94.aac.domain.ext;8001
;;5;PROD;PPSN;vaww.ppsn.domain.ext;443
;;5;PROD;PEPS;mocha.pharmacy.healthevet.domain.ext;8011
;;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSSP254 15164 printed Aug 26, 2025@22:49:10 Page 2
PSSP254 ;BIRM/SA - PATCH PSS*1*254 Pre/Post-Init Rtn ; Aug 25, 2021@16:00
+1 ;;1.0;PHARMACY DATA MANAGEMENT;**254**;9/30/97;Build 109
+2 ;
POST ; post install actions
+1 NEW PSSLINE,MTXT
+2 ;
+3 ; Post-install will only run on the first time the patch is installed
+4 ;I $$PATCH^XPDUTL("PSS*1.0*254") D G END
+5 ;. D BMES^XPDUTL("No file updates made. Patch has already been installed before.")
+6 ;
+7 ;I $D(^XTMP("PSSP254B")) D G END
+8 ;. D BMES^XPDUTL("No file updates made. Patch has already been installed.")
+9 ;
+10 ;Add a check for the new routes and new units here, if not run before, run those and give a different message
+11 IF $DATA(^XTMP("PSSP254B"))
Begin DoDot:1
+12 IF '$DATA(^XTMP("PSSP254B","NEWROUTE"))
IF '$DATA(^XTMP("PSSP254B","NEWUNIT"))
DO RTEUNIT^PSSP254A
QUIT
+13 DO BMES^XPDUTL("No file updates made. Patch has already been installed.")
End DoDot:1
GOTO END
+14 ;
+15 ; This TEMP global will be used for the Mailman Message
+16 KILL ^TMP("PSS254P",$JOB)
+17 ;
+18 ; This TEMP global will be used to store backup data for Backing out the patch
+19 KILL ^XTMP("PSSP254B")
+20 SET ^XTMP("PSSP254B",0)=$$FMADD^XLFDT(DT,180)_"^"_DT_"^PSS*1.0*254 - FDB v4.5 Upgrade - Backout Data"
+21 ;
+22 DO SETTXT("The following updates have been automatically performed to support the First Data Bank (FDB) v4.5 Upgrade:")
+23 DO SETTXT("")
+24 ;
+25 ; Updates to the PPSN & FDB WebServices
+26 DO WS
+27 ; Updates to DOSE UNITS (#51.24) and DOSE UNIT CONVERSION (#51.25) files
+28 DO ST
+29 ; Updates to STANDARD MEDICATION ROUTES (#51.23) file
+30 DO MR
+31 ; Updates to the DOSING CHECK FREQUENCY field for the files #51 and #51.1
+32 DO DCF
+33 ;
+34 ; Sends Mailman Message to Installer and PSNMGR key holders listing updates
+35 DO MAIL
+36 KILL ^TMP("PSS254P",$JOB)
+37 ; generate Orderable items & Quick orders reports
DO EN^PSSP254R
END ; Post-install end point
+1 QUIT
+2 ;
ST ; Update entries in DOSE UNITS file (#51.24) and DOSE UNIT CONVERSION file (#51.25)
+1 NEW II,JJ,PSA,PSI,PSJ,PSL,PSLIST,PSX,SYM,TXT,X
+2 DO BMES^XPDUTL("DOSE UNITS file (#51.24) and DOSE UNIT CONVERSION file (#51.25) Updates:")
+3 DO SETTXT("")
+4 DO SETTXT("DOSE UNITS (#51.24) and DOSE UNIT CONVERSION file (#51.25) Updates:")
+5 DO SETTXT("===================================================================")
+6 ;
+7 SET MTXT="o FDB DOSE UNIT updates:"
DO BMES^XPDUTL(MTXT)
DO SETTXT(MTXT)
+8 FOR PSJ=1:1
SET PSLIST=$PIECE($TEXT(LI241+PSJ),";;",2)
if PSLIST=""
QUIT
DO FDB
+9 DO SETTXT("")
+10 SET MTXT="o New Synonyms:"
DO BMES^XPDUTL(MTXT)
DO SETTXT(MTXT)
+11 FOR PSJ=1:1
SET PSLIST=$PIECE($TEXT(LI242+PSJ),";;",2)
if PSLIST=""
QUIT
DO SYN
+12 DO SETTXT("")
+13 SET MTXT="o Deleted entries:"
DO BMES^XPDUTL(MTXT)
DO SETTXT(MTXT)
+14 DO DEL24
+15 DO SETTXT("")
+16 SET MTXT="o DOSE UNIT 1 updates:"
DO BMES^XPDUTL(MTXT)
DO SETTXT(MTXT)
+17 FOR PSJ=1:1
SET PSLIST=$PIECE($TEXT(LI251+PSJ),";;",2)
if PSLIST=""
QUIT
DO DUC
+18 DO SETTXT("")
+19 SET MTXT="o Deleted entries:"
DO BMES^XPDUTL(MTXT)
DO SETTXT(MTXT)
+20 DO DEL25
+21 DO SETTXT("")
+22 SET MTXT="o DOSE UNIT 2 updates:"
DO BMES^XPDUTL(MTXT)
DO SETTXT(MTXT)
+23 FOR PSJ=1:1
SET PSLIST=$PIECE($TEXT(LI252+PSJ),";;",2)
if PSLIST=""
QUIT
DO UNIT2
+24 KILL DIE,DR,DA,XUMF
+25 ;
+26 DO NEWUNITS^PSSP254A
+27 QUIT
+28 ;
FDB ; 1st DataBank Dose Unit Updates
+1 NEW DA,DIE,DR,FROM
+2 SET DA=+$$FIND1^DIC(51.24,"","C",$PIECE(PSLIST,U))
if DA<1
QUIT
+3 SET FROM=$$GET1^DIQ(51.24,DA,1)
+4 IF FROM=$PIECE(PSLIST,U,2)
QUIT
+5 SET XUMF=1
SET DR="1////"_$PIECE(PSLIST,U,2)
SET DIE=51.24
DO ^DIE
+6 SET MTXT=" - Entry #"_DA_": changed from '"_FROM_"' to '"_$PIECE(PSLIST,U,2)_"'"
+7 DO BMES^XPDUTL(MTXT)
DO SETTXT(MTXT)
+8 SET ^XTMP("PSSP254B","DU-U",51.24,DA,1)=$PIECE(PSLIST,U)_"^"_FROM_"^"_$PIECE(PSLIST,U,2)
+9 QUIT
+10 ;
SYN ; SYNONYM updates
+1 NEW DA,DIC,DD,DO,DINUM,PSA,PSI,PSX,SYM,Y
+2 SET PSA=+$$FIND1^DIC(51.24,"","B",$PIECE(PSLIST,U))
if PSA<1
QUIT
+3 SET SYM=$PIECE(PSLIST,U,2)
FOR PSI=1:1
SET PSX=$PIECE(SYM,",",PSI)
if PSX=""
QUIT
Begin DoDot:1
+4 IF $DATA(^PS(51.24,PSA,1,"B",$EXTRACT(PSX,1,30)))
QUIT
+5 SET DA(1)=PSA
SET X=PSX
SET DIC="^PS(51.24,"_DA(1)_",1,"
SET DIC(0)="L"
DO FILE^DICN
+6 MERGE ^XTMP("PSSP254B","DU-SYN-A",51.242,DA(1),DA,+$GET(Y))=PSX
+7 SET MTXT=" - '"_PSX_"' added to entry '"_$PIECE(PSLIST,U)_"'"
+8 DO BMES^XPDUTL(MTXT)
DO SETTXT(MTXT)
End DoDot:1
+9 QUIT
+10 ;
DEL24 ; delete entries from file #51.24
+1 NEW DA,DIK,TXT
+2 SET XUMF=1
+3 FOR TXT="anti-Xa unit","ENEMA","OVULE(S)","SQUIRT(S)","TROCHE(S)"
Begin DoDot:1
+4 SET DA=+$$FIND1^DIC(51.24,"","B",TXT)
if 'DA
QUIT
+5 MERGE ^XTMP("PSSP254B","DU-D",51.24,DA)=^PS(51.24,DA)
+6 SET DIK="^PS(51.24,"
DO ^DIK
+7 SET MTXT=" - Deleted entry '"_TXT_"' from DOSE UNITS file (#51.24)"
+8 DO BMES^XPDUTL(MTXT)
DO SETTXT(MTXT)
End DoDot:1
+9 QUIT
+10 ;
DUC ; update the DOSE UNIT 1 (#.01) of the DOSE UNIT CONVERSION file (#51.25)
+1 NEW DA,DIE,DR
+2 SET DA=+$$FIND1^DIC(51.25,"","MX",$PIECE(PSLIST,U))
if DA<1
QUIT
+3 SET XUMF=1
SET DR=".01////"_$PIECE(PSLIST,U,2)
SET DIE=51.25
DO ^DIE
+4 SET MTXT=" - Entry #"_DA_": changed from '"_$PIECE(PSLIST,U)_"' to '"_$PIECE(PSLIST,U,2)_"'"
+5 DO BMES^XPDUTL(MTXT)
DO SETTXT(MTXT)
+6 SET ^XTMP("PSSP254B","DUC-U",51.25,DA,.01)=$PIECE(PSLIST,U)_"^"_$PIECE(PSLIST,U,2)
+7 QUIT
+8 ;
DEL25 ; delete entries from the DOSE UNIT CONVERSION file (#51.25)
+1 NEW DA,DIK,TXT
+2 SET XUMF=1
+3 FOR TXT="ENEMAS","OVULE(S)","SQUIRTS","TROCHES"
Begin DoDot:1
+4 SET DA=+$$FIND1^DIC(51.25,"","B",TXT)
if 'DA
QUIT
+5 MERGE ^XTMP("PSSP254B","DUC-D",51.25,DA)=^PS(51.25,DA)
+6 SET DIK="^PS(51.25,"
DO ^DIK
+7 SET MTXT=" - Deleted entry '"_TXT_"' from DOSE UNIT CONVERSION file (#51.25)"
+8 DO BMES^XPDUTL(MTXT)
DO SETTXT(MTXT)
End DoDot:1
+9 QUIT
+10 ;
UNIT2 ; update the DOSE UNIT 2 field (#.01) and the CONVERSION FACTOR field (#1) entries in file (#51.25)
+1 KILL DIE,DR,DA,JJ,PSL,PSX,II
+2 SET XUMF=1
+3 SET PSL=$PIECE(PSLIST,U,2)
FOR II=1:1:$LENGTH(PSL,",")
SET PSX=$PIECE(PSL,",",II)
Begin DoDot:1
+4 SET DA(1)=$PIECE(PSLIST,U)
+5 SET JJ=$ORDER(^PS(51.25,DA(1),1,"B",$SELECT(PSX["@":$PIECE(PSX,"@"),1:$PIECE(PSX,":")),0))
+6 SET DA=JJ
IF 'DA
QUIT
+7 IF PSX'["@"
IF $$GET1^DIQ(51.251,DA_","_DA(1)_",",.01)=$PIECE(PSX,":",2)&($$GET1^DIQ(51.251,DA_","_DA(1)_",",1)=$PIECE(PSX,":",3))
QUIT
+8 SET DIE="^PS(51.25,"_DA(1)_",1,"
+9 SET DR=".01////"_$SELECT(PSX["@":"@",1:$PIECE(PSX,":",2))_$SELECT($PIECE(PSX,":",3):";1////"_$PIECE(PSX,":",3),1:"")
+10 MERGE ^XTMP("PSSP254B","DU2C-"_$SELECT(PSX["@":"D",1:"U"),51.251,DA(1),DA)=^PS(51.25,DA(1),1,DA)
+11 DO ^DIE
KILL DA,DIE,DR
+12 IF PSX["@"
SET MTXT=" - Deleted entry '"_$PIECE(PSX,"@")_"' for "_$PIECE($GET(^PS(51.25,$PIECE(PSLIST,U),0)),U)
+13 IF PSX'["@"
SET MTXT=" - Changed from '"_$PIECE(PSX,":")_"' to '"_$PIECE(PSX,":",2)_"' for "_$PIECE($GET(^PS(51.25,$PIECE(PSLIST,U),0)),U)
+14 DO BMES^XPDUTL(MTXT)
DO SETTXT(MTXT)
End DoDot:1
+15 QUIT
+16 ;
MR ; STANDARD MEDICATION ROUTES (#51.23) file updates
+1 DO SETTXT("")
+2 SET MTXT="STANDARD MEDICATION ROUTES file (#51.23) Updates:"
+3 DO BMES^XPDUTL(MTXT)
DO SETTXT(MTXT)
+4 DO SETTXT("=================================================")
+5 FOR TXT="INTRA-AMNIOTIC;INTRA-AMNIOTIC","INTRATYMPANIC;INTRATYMPANIC","IONTOPHORESIS;IONTOPHORETIC","OPHTHALMIC;OPHTHALMIC (EYE)","OTIC;OTIC (EAR)","SUBMUCOSAL;SUBMUCOSAL INJECTION"
Begin DoDot:1
+6 SET DA=$$FIND1^DIC(51.23,"","B",$PIECE(TXT,";"))
if 'DA
QUIT
+7 IF $$GET1^DIQ(51.23,DA,1)=$PIECE(TXT,";",2)
QUIT
+8 SET ^XTMP("PSSP254B","SMR-U",51.23,DA,1)=$$GET1^DIQ(51.23,DA,1)_"^"_$PIECE(TXT,";",2)
+9 SET MTXT=" - Changed '"_$$GET1^DIQ(51.23,DA,1)_"' to '"_$PIECE(TXT,";",2)_"'"
+10 SET DIE="^PS(51.23,"
SET DR="1////"_$PIECE(TXT,";",2)
DO ^DIE
KILL DA,DIE,DR
+11 DO BMES^XPDUTL(MTXT)
DO SETTXT(MTXT)
End DoDot:1
+12 ;
+13 DO NEWROUTE^PSSP254A
+14 QUIT
+15 ;
WS ; Web Service updates
+1 NEW SRVNAME,PSSCNT,PSSDATA,PSSTYPE,FDA
+2 ;Get the site type entered in the Installation question POS1
SET PSSTYPE=$GET(XPDQUES("POS1"))
+3 ; PSSTYPE will be a value of 1-5 (PRE-PROD, SQA, STAGE, DEVELOPMENT, PRODUCTION)
+4 IF 'PSSTYPE
SET PSSTYPE=5
+5 DO MES^XPDUTL("Setting up the servers for "_$SELECT(PSSTYPE=1:"PRE-PROD",PSSTYPE=2:"SQA",PSSTYPE=3:"STAGING",PSSTYPE=4:"DEVELOPMENT",1:"PRODUCTION")_":")
+6 FOR PSSCNT=1:1
SET PSSDATA=$PIECE($TEXT(WEBS+PSSCNT),";;",2)
Begin DoDot:1
+7 if PSSTYPE'=$PIECE(PSSDATA,";")
QUIT
+8 SET SRVNAME=$PIECE(PSSDATA,";",3)
SET PSSIEN=$$FIND1^DIC(18.12,,"B",SRVNAME)
if 'PSSIEN
QUIT
+9 KILL FDA
MERGE ^XTMP("PSSP254B","WS",18.12,PSSIEN)=^XOB(18.12,PSSIEN)
+10 SET PSSIEN=PSSIEN_","
DO DISABLE(SRVNAME,PSSIEN)
+11 ; server
SET FDA(18.12,PSSIEN,.04)=$PIECE(PSSDATA,";",4)
+12 ; port
SET FDA(18.12,PSSIEN,.03)=$PIECE(PSSDATA,";",5)
+13 ; status
SET FDA(18.12,PSSIEN,.06)=1
+14 IF SRVNAME="PPSN"
Begin DoDot:2
+15 SET FDA(18.12,PSSIEN,3.02)="encrypt_only_tlsv12"
+16 ; ssl port
SET FDA(18.12,PSSIEN,3.03)=443
End DoDot:2
+17 DO FILE^DIE("K","FDA","PSSERR")
KILL FDA
+18 IF '$DATA(PSSERR("DIERR",1,"TEXT",1))
SET MTXT="o WEB SERVER '"_SRVNAME_"' updated successfully"
+19 IF $DATA(PSSERR("DIERR",1,"TEXT",1))
SET MTXT="o WEB SERVER '"_SRVNAME_"' Error: "_PSSERR("DIERR",1,"TEXT",1)
+20 DO BMES^XPDUTL(MTXT)
DO SETTXT(MTXT)
End DoDot:1
if PSSDATA=""
QUIT
+21 QUIT
+22 ;
DISABLE(SRVNAME,PSSIEN) ; Disable PPSN server if it exists-will set it back to enabled
+1 NEW PSSERVER,PSSERR
+2 ; Set STATUS to DISABLED
+3 SET PSSERVER(18.12,PSSIEN,.06)=0
+4 ; update existing entry
DO FILE^DIE("","PSSERVER","PSSERR")
+5 DO BMES^XPDUTL("o WEB SERVER '"_SRVNAME_"' server temporarily disabled.")
+6 QUIT
+7 ;
DCF ; Converting DOSING CHECK FREQUENCY field in both files (MEDICATION INSTRUCTION (#51) & ADMINISTRATION SCHEDULE (#51.1))
+1 NEW FILE,FIELD,MEDSCH,OLDFREQ,NEWFREQ,XX,LINE,DIE,DR,DA,X,Y,REVFLG,FREQCHK,DRGCTR,DRGFILE,DRGNODE,TMPMSG
+2 ;
+3 DO SETTXT("")
+4 SET MTXT="DOSING CHECK FREQUENCY field Conversion:"
+5 DO BMES^XPDUTL(MTXT)
DO SETTXT(MTXT)
+6 DO SETTXT("========================================")
+7 FOR FILE=51,51.1
Begin DoDot:1
+8 IF FILE=51
SET FIELD=32
SET DRGNODE=5
SET DRGFILE=51.321
+9 IF '$TEST
SET FIELD=11
SET DRGNODE=4
SET DRGFILE=51.111
+10 ;
+11 SET MEDSCH=0
FOR
SET MEDSCH=$ORDER(^PS(FILE,MEDSCH))
if 'MEDSCH
QUIT
Begin DoDot:2
+12 SET OLDFREQ=$$UP^XLFSTR($$GET1^DIQ(FILE,MEDSCH,FIELD))
IF OLDFREQ=""
QUIT
+13 SET NEWFREQ=OLDFREQ
IF $EXTRACT(OLDFREQ,1)="X"
SET NEWFREQ=+$EXTRACT(OLDFREQ,2,3)_"X"_$EXTRACT(OLDFREQ,$LENGTH(OLDFREQ))
+14 SET FREQCHK=$$FREQCHK^PSSJSV(NEWFREQ)
+15 IF FREQCHK'=""
IF OLDFREQ=NEWFREQ
QUIT
+16 SET ^XTMP("PSSP254B","DCF",FILE,MEDSCH,FIELD)=OLDFREQ_"^"_$SELECT(FREQCHK="":"@",1:NEWFREQ)
+17 KILL DIE,DR
SET DIE=FILE
SET DR=FIELD_"////"_$SELECT(FREQCHK="":"@",1:NEWFREQ)
SET DA=MEDSCH
DO ^DIE
+18 ;
+19 ;Impacted Drugs
+20 IF FREQCHK=""
SET DRGCTR=0
FOR
SET DRGCTR=$ORDER(^PS(FILE,MEDSCH,DRGNODE,DRGCTR))
if (+DRGCTR'=DRGCTR)
QUIT
Begin DoDot:3
+21 SET TMPMSG=$GET(^PS(FILE,MEDSCH,DRGNODE,DRGCTR,0))_"^"_$$GET1^DIQ(DRGFILE,DRGCTR_","_MEDSCH_",",.01)
+22 SET ^XTMP("PSSP254B","DCFDRUG",FILE,MEDSCH,FIELD,DRGCTR)=TMPMSG
+23 SET DIE="^PS(FILE,MEDSCH,DRGNODE,"
SET DA=DRGCTR
SET DA(1)=MEDSCH
SET DR=".01////@"
DO ^DIE
End DoDot:3
End DoDot:2
End DoDot:1
+24 ;
+25 SET REVFLG=0
+26 IF '$DATA(^XTMP("PSSP254B","DCF"))
Begin DoDot:1
+27 DO SETTXT("There were no updates needed.")
End DoDot:1
+28 IF '$TEST
Begin DoDot:1
+29 SET FILE=""
FOR
SET FILE=$ORDER(^XTMP("PSSP254B","DCF",FILE))
if 'FILE
QUIT
Begin DoDot:2
+30 SET MTXT="o File: "_$SELECT(FILE=51:"MEDICATION INSTRUCTION (#51)",1:"ADMINISTRATION SCHEDULE (#51.1)")
+31 DO BMES^XPDUTL(MTXT)
DO SETTXT(MTXT)
+32 SET MEDSCH=""
FOR
SET MEDSCH=$ORDER(^XTMP("PSSP254B","DCF",FILE,MEDSCH))
if MEDSCH=""
QUIT
Begin DoDot:3
+33 SET FIELD=""
FOR
SET FIELD=$ORDER(^XTMP("PSSP254B","DCF",FILE,MEDSCH,FIELD))
if FIELD=""
QUIT
Begin DoDot:4
+34 SET XX=$GET(^XTMP("PSSP254B","DCF",FILE,MEDSCH,FIELD))
+35 SET MTXT=" - "_$$GET1^DIQ(FILE,MEDSCH,.01)_" ("_$$GET1^DIQ(FILE,MEDSCH,$SELECT(FILE=51:1,1:8))
+36 IF $PIECE(XX,"^",2)="@"
Begin DoDot:5
+37 SET MTXT=MTXT_") - '"_$PIECE(XX,"^")_"' deleted - no longer supported."
+38 SET REVFLG=1
+39 DO BMES^XPDUTL(MTXT)
DO SETTXT(MTXT)
+40 DO LSTDRG(FILE,MEDSCH,FIELD)
End DoDot:5
+41 IF '$TEST
Begin DoDot:5
+42 SET MTXT=MTXT_") - Changed from '"_$PIECE(XX,"^")_"' to '"_$PIECE(XX,"^",2)_"'"
+43 DO BMES^XPDUTL(MTXT)
DO SETTXT(MTXT)
End DoDot:5
End DoDot:4
End DoDot:3
+44 DO SETTXT("")
End DoDot:2
End DoDot:1
+45 IF '$GET(REVFLG)
Begin DoDot:1
+46 DO SETTXT("NOTE: No further (manual) updates are needed for the Medication Instructions")
+47 DO SETTXT("==== or Administration Schedule entries.")
End DoDot:1
+48 IF '$TEST
Begin DoDot:1
+49 DO SETTXT("NOTE: Make sure you review the entries that the DOSING CHECK FREQUENCY field")
+50 DO SETTXT("==== content was deleted and select the appropriate valid value for them.")
End DoDot:1
+51 ;
+52 QUIT
+53 ;
SETTXT(TXT) ; Setting Plain Text
+1 SET PSSLINE=$GET(PSSLINE)+1
SET ^TMP("PSS254P",$JOB,PSSLINE)=TXT
+2 QUIT
+3 ;
LSTDRG(FILE,MEDSCH,FIELD) ;Display impacted drugs
+1 NEW DRGCTR,DRGFILE,DRGLIST,DRGNAME
+2 ;
+3 SET DRGFILE=$SELECT(FILE=51:51.321,1:51.111)
+4 SET DRGCTR=""
+5 FOR
SET DRGCTR=$ORDER(^XTMP("PSSP254B","DCFDRUG",FILE,MEDSCH,FIELD,DRGCTR))
if DRGCTR=""
QUIT
Begin DoDot:1
+6 SET DRGNAME=$PIECE($GET(^XTMP("PSSP254B","DCFDRUG",FILE,MEDSCH,FIELD,DRGCTR)),"^",2)
+7 ;Setup for alphabetical display
IF DRGNAME'=""
SET DRGLIST(DRGNAME)=""
End DoDot:1
+8 ;
+9 IF $DATA(DRGLIST)
Begin DoDot:1
+10 SET MTXT=" Impacted Drugs"
+11 DO MES^XPDUTL(MTXT)
DO SETTXT(MTXT)
+12 SET DRGNAME=""
FOR
SET DRGNAME=$ORDER(DRGLIST(DRGNAME))
if DRGNAME=""
QUIT
Begin DoDot:2
+13 SET MTXT=" "_DRGNAME
+14 DO MES^XPDUTL(MTXT)
DO SETTXT(MTXT)
End DoDot:2
End DoDot:1
+15 QUIT
+16 ;
MAIL ; Sends Mailman message
+1 NEW II,XMX,XMSUB,XMDUZ,XMTEXT,XMY,DIFROM
+2 ;
+3 DO BMES^XPDUTL("Sending Mailman Message with updates...")
+4 ;
+5 SET II=0
FOR
SET II=$ORDER(^XUSEC("PSNMGR",II))
if 'II
QUIT
SET XMY(II)=""
+6 SET XMY(DUZ)=""
SET XMSUB="PSS*1*254 FDB v4.5 Upgrade Installation Complete"
+7 SET XMDUZ="PSS*1*254 Install"
SET XMTEXT="^TMP(""PSS254P"",$J,"
+8 DO ^XMD
+9 QUIT
+10 ;
LI241 ; FDB DOSE Unit entry list in file (#51.24)
+1 ;;APPLICATION(S)^APPLICATIONS
+2 ;;APPLICATORFUL(S)^APPLICATORFUL
+3 ;;CAP/TAB^TABLET-CAPSULE
+4 ;;CAPSULE(S)^CAPSULES
+5 ;;DROP(S)^DROPS
+6 ;;INCH(ES)^INCHES
+7 ;;MICROGRAM(S)^MICROGRAMS
+8 ;;MG-PE^MILLIGRAM PHENYTOIN EQUIVALENT
+9 ;;MICRO UNIT(S)^MICROUNITS
+10 ;;MILLIONUNIT(S)^MILLION UNITS
+11 ;;PIECE(S)^PIECES OF GUM
+12 ;;PUFF(S)^PUFFS
+13 ;;SCOOPFUL(S)^SCOOPS
+14 ;;SPRAY(S)^SPRAY
+15 ;;STRIP(S)^STRIPS
+16 ;;SUPPOSITORY(IES)^SUPPOSITORY
+17 ;;TABLESPOONFUL(S)^TABLESPOONFUL
+18 ;;TABLET(S)^TABLETS
+19 ;;TEASPOONFUL(S)^TEASPOONFUL
+20 ;;THOUSAND UNITS^THOUSAND UNITS
+21 ;;UNIT(S)^UNITS
+22 ;;
LI242 ; new SYNONYM list to be added in file (#51.24)
+1 ;;CAP/TAB^TABLET-CAPSULE,TABLET-CAPSULES
+2 ;;MG-PE^MILLIGRAM PHENYTOIN EQUIVALENTS,MILLIGRAM PHENYTOIN EQUIVALENT
+3 ;;THOUSAND UNITS^THOUSAND UNIT
+4 ;;
LI251 ; DOSE UNIT 1 entries of file (#51.25)
+1 ;;APPLICATION(S)^APPLICATIONS
+2 ;;APPLICATORFUL(S)^APPLICATORFUL
+3 ;;CAPSULE(S)^CAPSULES
+4 ;;DROP(S)^DROPS
+5 ;;INCH(ES)^INCHES
+6 ;;MICRO UNITS^MICROUNITS
+7 ;;MICROGRAM(S)^MICROGRAMS
+8 ;;MILLIONUNIT(S)^MILLION UNITS
+9 ;;PIECE(S)^PIECES OF GUM
+10 ;;PUFF(S)^PUFFS
+11 ;;SCOOPFULS^SCOOPS
+12 ;;SPRAY(S)^SPRAYS
+13 ;;STRIP(S)^STRIPS
+14 ;;SUPPOSITORY(IES)^SUPPOSITORY
+15 ;;TAB-CAPS^TABLET-CAPSULES
+16 ;;TABLESPOONFULS^TABLESPOONFUL
+17 ;;TABLET(S)^TABLET
+18 ;;TEASPOONFULS^TEASPOONFUL
+19 ;;TU^THOUSAND UNITS
+20 ;;UNIT(S)^UNITS
+21 ;;
LI252 ; DOSE UNIT 2 entries of file (#51.25)
+1 ;;67^APPLICATORFUL(S):APPLICATORFUL
+2 ;;1^APPLICATION(S):APPLICATIONS
+3 ;;7^INCH(ES):INCHES
+4 ;;9^TAB-CAPS:TABLET-CAPSULES,CAPSULE(S):CAPSULES,ENEMAS@,OVULE(S)@,PIECE(S):PIECES OF GUM,SCOOPFULS:SCOOPS,STRIP(S):STRIPS,SUPPOSITORY(IES):SUPPOSITORY,TABLET(S):TABLETS,TROCHES@
+5 ;;12^MICROGRAM(S):MICROGRAMS
+6 ;;15^SPRAY(S):SPRAYS,PUFF(S):PUFFS,SQUIRTS@
+7 ;;36^MILLIONUNIT(S):MILLION UNITS,UNIT(S):UNITS
+8 ;;38^MICROGRAM(S):MICROGRAMS
+9 ;;39^DROP(S):DROPS,TABLESPOONFULS:TABLESPOONFUL,TEASPOONFULS:TEASPOONFUL
+10 ;;40^MICRO UNITS:MICROUNITS,TU:THOUSAND UNITS:1000,UNIT(S):UNITS
+11 ;;41^MICROGRAM(S):MICROGRAMS
+12 ;;49^SPRAY(S):SPRAYS
+13 ;;52^PUFF(S):PUFFS,SQUIRTS@
+14 ;;61^MILLIONUNIT(S):MILLION UNITS:0.001,UNIT(S):UNITS
+15 ;;62^MICRO UNITS:MICROUNITS,TU:THOUSAND UNITS,MILLIONUNIT(S):MILLION UNITS
+16 ;;
+17 ;;3;STAGE;PEPS;mocha-ioc.pitc.domain.ext;8010
WEBS ; Map the system type to the SERVER endpoint
+1 ;;1;PRE-PROD;PPSN;vaausapppps401.aac.domain.ext;443
+2 ;;1;PRE-PROD;PEPS;mocha-pre.pharmacy.healthevet.domain.ext;8011
+3 ;;2;SQA;PPSN;vaausapppps930.aac.domain.ext;443
+4 ;;2;SQA;PEPS;vaausapppps950.aac.domain.ext;8001
+5 ;;3;STAGE;PPSN;vaausapppps901.aac.domain.ext;443
+6 ;;3;STAGE;PEPS;mocha-pre.pharmacy.healthevet.domain.ext;8011
+7 ;;4;DEV;PPSN;vaausapppps910.aac.domain.ext;443
+8 ;;4;DEV;PEPS;vaausppsapp94.aac.domain.ext;8001
+9 ;;5;PROD;PPSN;vaww.ppsn.domain.ext;443
+10 ;;5;PROD;PEPS;mocha.pharmacy.healthevet.domain.ext;8011
+11 ;;