PSOLLU4 ;BIR/EJW - CHANGE CONTROL CODES ;05/23/2004
;;7.0;OUTPATIENT PHARMACY;**161**;DEC 1997
;
;Read-only reference to %ZIS(2 supported by DBIA 3435
;Reference to %ZIS(2 supported by DBIA 3884
;
N IO,IOST
S %ZIS="MN"
IO D ^%ZIS
I '$G(IOST(0)) W "No terminal type available." Q
I '$D(DUZ(0)) W "No DUZ defined." Q
I DUZ(0)'="@" W "FileMan access must be @." Q
I '$D(^%ZIS(2,IOST(0),55,"B","LL")) W "No CONTROL CODES defined." Q
W !!,"You will be copying the CONTROL CODES to device: ",IO K DIR W ! S DIR(0)="Y",DIR("B")="YES",DIR("A")="Are you sure" D ^DIR K DIR I Y'=1 G IO
W !,"Copying..."
S AB="PFI",NAME="PATIENT FILL INITIALIZATION",CODE="S PSOFONT=""F10"",PSOX=1210,PSOY=710,PSOYI=45,PSOHFONT=""F12"",PSOBYI=100" D FILE
S AB="PFDW",NAME="PHARMACY FILL DOCUMENT WARNING",CODE="S PSOY=1258,PSOX=660,PSOYI=30,PSOFONT=""F8"",PSOYM=1329" D FILE
S AB="MLI",NAME="MAILING LABEL INITIALIZATION",CODE="S PSOFONT=""F10"",PSOX=1680,PSOY=175,PSOYI=50" D FILE
S AB="RMI",NAME="RETURN MAIL INITIALIZATION",CODE="S PSOHFONT=""F8"",PSOFONT=""F10"",PSOX=1680,PSOY=35,PSORYI=40,PSOHYI=40,PSOTFONT=""F8"",PSOTY=550" D FILE
D CLEAN
Q
FILE K DIC,DIE S DIC(0)="L",DA(1)=IOST(0),X=AB,DIC="^%ZIS(2,"_DA(1)_",55," D FILE^DICN
K DA,DR,DIE S DIE=DIC,DA=+Y,DA(1)=IOST(0)
S DR=".01////"_AB_";1////"_NAME_";2////"_CODE D ^DIE
Q
;
CLEAN ; REMOVE EXACT DUPLICATE CONTROL CODES RESULTING WHEN CHANGE CONTROL CODES ROUTINES ARE RUN MORE THAN ONCE
I '$G(DT) S DT=$$DT^XLFDT
I '$D(^XTMP("PSOLLU4")) S X1=DT,X2=+90 D C^%DTC S ^XTMP("PSOLLU4",0)=$G(X)_"^"_DT
I '$D(IOST(0)) Q
M ^XTMP("PSOLLU4",$J,IOST(0))=^%ZIS(2,IOST(0)) ; SAVE COPY OF SETTINGS BEFORE CLEAN-UP
S CODE="" F S CODE=$O(^%ZIS(2,IOST(0),55,"B",CODE)) Q:CODE="" S SEQ=0 F S SEQ=$O(^%ZIS(2,IOST(0),55,"B",CODE,SEQ)) Q:'SEQ D
.I '$D(^%ZIS(2,IOST(0),55,SEQ)) K ^%ZIS(2,IOST(0),55,"B",CODE,SEQ) Q
.S SEQ1=$O(^%ZIS(2,IOST(0),55,"B",CODE,SEQ)) I SEQ1="" Q
.S X0=$G(^%ZIS(2,IOST(0),55,SEQ,0)),X1=$G(^(1))
.S Z0=$G(^%ZIS(2,IOST(0),55,SEQ1,0)),Z1=$G(^(1))
.I X0'="",X1'="" D
..I X0=Z0,X1=Z1 K ^%ZIS(2,IOST(0),55,"B",CODE,SEQ),^%ZIS(2,IOST(0),55,SEQ)
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSOLLU4 2157 printed Nov 22, 2024@17:40:46 Page 2
PSOLLU4 ;BIR/EJW - CHANGE CONTROL CODES ;05/23/2004
+1 ;;7.0;OUTPATIENT PHARMACY;**161**;DEC 1997
+2 ;
+3 ;Read-only reference to %ZIS(2 supported by DBIA 3435
+4 ;Reference to %ZIS(2 supported by DBIA 3884
+5 ;
+6 NEW IO,IOST
+7 SET %ZIS="MN"
IO DO ^%ZIS
+1 IF '$GET(IOST(0))
WRITE "No terminal type available."
QUIT
+2 IF '$DATA(DUZ(0))
WRITE "No DUZ defined."
QUIT
+3 IF DUZ(0)'="@"
WRITE "FileMan access must be @."
QUIT
+4 IF '$DATA(^%ZIS(2,IOST(0),55,"B","LL"))
WRITE "No CONTROL CODES defined."
QUIT
+5 WRITE !!,"You will be copying the CONTROL CODES to device: ",IO
KILL DIR
WRITE !
SET DIR(0)="Y"
SET DIR("B")="YES"
SET DIR("A")="Are you sure"
DO ^DIR
KILL DIR
IF Y'=1
GOTO IO
+6 WRITE !,"Copying..."
+7 SET AB="PFI"
SET NAME="PATIENT FILL INITIALIZATION"
SET CODE="S PSOFONT=""F10"",PSOX=1210,PSOY=710,PSOYI=45,PSOHFONT=""F12"",PSOBYI=100"
DO FILE
+8 SET AB="PFDW"
SET NAME="PHARMACY FILL DOCUMENT WARNING"
SET CODE="S PSOY=1258,PSOX=660,PSOYI=30,PSOFONT=""F8"",PSOYM=1329"
DO FILE
+9 SET AB="MLI"
SET NAME="MAILING LABEL INITIALIZATION"
SET CODE="S PSOFONT=""F10"",PSOX=1680,PSOY=175,PSOYI=50"
DO FILE
+10 SET AB="RMI"
SET NAME="RETURN MAIL INITIALIZATION"
SET CODE="S PSOHFONT=""F8"",PSOFONT=""F10"",PSOX=1680,PSOY=35,PSORYI=40,PSOHYI=40,PSOTFONT=""F8"",PSOTY=550"
DO FILE
+11 DO CLEAN
+12 QUIT
FILE KILL DIC,DIE
SET DIC(0)="L"
SET DA(1)=IOST(0)
SET X=AB
SET DIC="^%ZIS(2,"_DA(1)_",55,"
DO FILE^DICN
+1 KILL DA,DR,DIE
SET DIE=DIC
SET DA=+Y
SET DA(1)=IOST(0)
+2 SET DR=".01////"_AB_";1////"_NAME_";2////"_CODE
DO ^DIE
+3 QUIT
+4 ;
CLEAN ; REMOVE EXACT DUPLICATE CONTROL CODES RESULTING WHEN CHANGE CONTROL CODES ROUTINES ARE RUN MORE THAN ONCE
+1 IF '$GET(DT)
SET DT=$$DT^XLFDT
+2 IF '$DATA(^XTMP("PSOLLU4"))
SET X1=DT
SET X2=+90
DO C^%DTC
SET ^XTMP("PSOLLU4",0)=$GET(X)_"^"_DT
+3 IF '$DATA(IOST(0))
QUIT
+4 ; SAVE COPY OF SETTINGS BEFORE CLEAN-UP
MERGE ^XTMP("PSOLLU4",$JOB,IOST(0))=^%ZIS(2,IOST(0))
+5 SET CODE=""
FOR
SET CODE=$ORDER(^%ZIS(2,IOST(0),55,"B",CODE))
if CODE=""
QUIT
SET SEQ=0
FOR
SET SEQ=$ORDER(^%ZIS(2,IOST(0),55,"B",CODE,SEQ))
if 'SEQ
QUIT
Begin DoDot:1
+6 IF '$DATA(^%ZIS(2,IOST(0),55,SEQ))
KILL ^%ZIS(2,IOST(0),55,"B",CODE,SEQ)
QUIT
+7 SET SEQ1=$ORDER(^%ZIS(2,IOST(0),55,"B",CODE,SEQ))
IF SEQ1=""
QUIT
+8 SET X0=$GET(^%ZIS(2,IOST(0),55,SEQ,0))
SET X1=$GET(^(1))
+9 SET Z0=$GET(^%ZIS(2,IOST(0),55,SEQ1,0))
SET Z1=$GET(^(1))
+10 IF X0'=""
IF X1'=""
Begin DoDot:2
+11 IF X0=Z0
IF X1=Z1
KILL ^%ZIS(2,IOST(0),55,"B",CODE,SEQ),^%ZIS(2,IOST(0),55,SEQ)
End DoDot:2
End DoDot:1
+12 QUIT
+13 ;