ENEQ1 ;WIRMFO/DH,SAB-Enter Equipment Records ;12.18.97
;;7.0;ENGINEERING;**14,25,29,35,47**;Aug 17, 1993
;
EQAD ;New Inventory Entry Point
S END=0
N IOINLOW,IOINHI D ZIS^ENUTL
D ASKEDM G:END EQADX
;
F D Q:END
. W @IOF,!!!
. S DIR(0)="Y",DIR("A")="Enter a new equipment inventory item"
. S DIR("B")="NO"
. S DIR("?")="Enter 'Y' to add a new Equipment Record."
. W @IOF,!!! D ^DIR K DIR I 'Y S END=1 Q
. D ASKSER Q:END Q:'$D(ENSERIAL)
. D ADDEQ
EQADX ;
K DA,DIC,DIE,DIK,DIR,DIROUT,DIRUT,DR,DTOUT,DUOUT,X,Y
K END,ENDA,ENDR,ENNXL,ENSCRN
Q
;
EQMAD ;Multiple Inventory Entry Point
S END=0,ENMA=1
N IOINLOW,IOINHI D ZIS^ENUTL
W @IOF,!!!
S DIR(0)="Y",DIR("A")="Enter multiple equipment inventory items"
S DIR("B")="NO"
S DIR("?",1)="This option allows a rapid entry of multiple items which"
S DIR("?",2)="are alike; e.g. 25 new electric beds."
S DIR("?")="Enter YES or NO"
D ^DIR K DIR G:'Y EQMADX
;
D ASKEDM G:END EQMADX
;
W !!,"Proceed by entering the first item in full"
S DIR(0)="E" D ^DIR K DIR G:$D(DIRUT) EQMADX
;
D ASKSER G:END EQMADX G:'$D(ENSERIAL) EQMAD
;
D ADDEQ I 'ENNXL G EQMADX
;
W @IOF,!!!,"For each additional equipment entry enter:"
W !," SERIAL #, LOCATION, VA PM NUMBER, and LOCAL IDENTIFIER (if any)."
F D Q:END
. W !!
. S DIR(0)="Y",DIR("A")="Enter another item",DIR("B")="YES"
. S DIR("?")="Enter YES to add another similar equipment item"
. D ^DIR K DIR I 'Y S END=1 Q
. S ENDAOLD=ENNXL
. D EQMAS^ENEQ3 I 'ENNXL S ENNXL=ENDAOLD
. K ENDAOLD
;
EQMADX ;
K DA,DIC,DIE,DIK,DIR,DIROUT,DIRUT,DR,DTOUT,DUOUT,X,Y
K END,ENDA,ENDR,ENMA,ENNXL,ENSCRN
Q
;
ASKEDM ; ask edit method (screen or template)
; out
; ENSCRN - flag: true when screen entry
; ENDR - input template when ENSCRN = 0
; END - true when timeout or '^'
S DIR(0)="Y",DIR("A")="Screen entry",DIR("B")="YES"
S DIR("?")="Enter 'Y' for screen handler, 'N' for standard FileMan."
D ^DIR K DIR S:$D(DIRUT) END=1 S ENSCRN=Y
S:ENSCRN=0 ENDR=$S($D(^DIE("B","ENZEQENTER")):"[ENZ",1:"[EN")_"EQENTER]"
Q
;
ASKSER ; ask serial # and check file for duplicates
; out
; ENSERIAL - contains entered serial # or
; undefined if user did not reconfirm after a match
; END - true when timeout or '^'
N DA,ENI,ENMATCH,ENX
; ask serial #
S ENSERIAL=""
W !!,"Please enter SERIAL # if available. Otherwise press <return>."
S DIR(0)="6914,5" D ^DIR K DIR I $D(DTOUT)!$D(DUOUT) S END=1 Q
S ENSERIAL=Y
Q:ENSERIAL=""
; look for matches
S ENX=$$UP^XLFSTR($TR(ENSERIAL," !""#$%&'()*+,-./:;<=>?@[\]^_`{|}~",""))
S ENX=$E(ENX_" ",1,30)
S ENI=0 F S ENI=$O(^ENG(6914,"FC",ENX,ENI)) Q:'ENI S ENMATCH(ENI)=""
; if match show list, reconfirm
I $D(ENMATCH) D
. W !,"List of existing equipment with a similar Serial #"
. W !,?2,"Entry #",?14,"Manufacturer"
. S ENI=0 F S ENI=$O(ENMATCH(ENI)) Q:'ENI D
. . W !,?2,ENI,?14,$E($$GET1^DIQ(6914,ENI,1),1,60)
. . W !,?4,"Mod: ",$$GET1^DIQ(6914,ENI,4)
. . W ?40,"Ser #: ",$$GET1^DIQ(6914,ENI,5)
. S DIR(0)="Y",DIR("A")="Do you still want to add this new record"
. S DIR("B")="NO" D ^DIR K DIR S:$D(DIRUT) END=1 I 'Y K ENSERIAL
Q
;
ADDEQ ; add new equipment item
; in
; ENSERIAL (optional) contains serial #
; ENMA (optional) flag, true if multiple equipment entry
; out
; ENNXL - ien of new equipment record, 0 if unsuccessful
; also when $G(ENMA) true
; ENMA("FAP") - flag, true if FA Document generated
; ENMA("IIWO") - flag, true if Incom. Insp. W.O. generated
; also when $G(ENMA("IIWO")) true
; ENMA("IIWO","DA") - ien of created w.o.
; ENMA("IIWO","ION") - ION where w.o. printed
; ENMA("IIWO","QDT") - queued date/time if w.o. tasked
; create new record
D ENR I 'ENNXL W $C(7),!,ENERR S DIR(0)="E" D ^DIR K DIR,ENERR Q
; lock new record
L +^ENG(6914,ENNXL):1 I '$T D Q
. W !!,$C(7),"Another user is editing Entry # ",ENNXL,". Can't proceed."
; populate serial #
I $G(ENSERIAL)]"" S DIE="^ENG(6914,",DR="5////"_ENSERIAL,DA=ENNXL D ^DIE
; user edit new record
I ENSCRN D
. S DJSC="ENEQ1",(DJDN,ENDA,DA)=ENNXL
. D EN^ENJ W IOINLOW
. K DJD0,DJDIS,DJDN,DJLG,DJSC,DJSW2
I 'ENSCRN S DIE="^ENG(6914,",DR=ENDR,DA=ENNXL D ^DIE
; enter PM schedule
I $D(^XUSEC("ENEDPM",DUZ)) D
. S DIR(0)="Y",DIR("B")="YES"
. S DIR("A")="Would you like to include this item in the PM program"
. D ^DIR K DIR Q:'Y
. N ENXP
. S DIE="^ENG(6914,",(DA,ENDA)=ENNXL,ENXP=1
. I $D(^ENG(6914,DA,4)) D DINV^ENEQPMP3 Q:X="^"
. D XNPMSE^ENEQPMP
; generate incoming inspection W.O.?
S ENI=$O(^ENG(6910.2,"B","ASK INCOMING INSPECTION W.O.",0))
I ENI,$P(^ENG(6910.2,ENI,0),U,2) D
. S DIR(0)="Y",DIR("A")="Create an Incoming Inspection Work Order"
. S DIR("B")=$S($P(^ENG(6910.2,ENI,0),U,2)=2:"YES",1:"NO")
. D ^DIR K DIR S:$G(ENMA) ENMA("IIWO")=$S(Y>0:1,1:0)
. I Y D IIWO^ENWONEW3(ENNXL) I $G(ENMA) D
. . S ENMA("IIWO","DA")=ENDA
. . S ENMA("IIWO","ION")=$G(ENION)
. . S ENMA("IIWO","QDT")=$G(ENQDT)
. . K ENDA,ENION,ENQDT
; generate FA Document?
I $D(^XUSEC("ENFACS",DUZ)),$P(^ENG(6914,ENNXL,0),U,4)="NX",$P($G(^(8)),U,2) D
. W !!,"This Equipment Record is both NONEXPENDABLE and CAPITALIZED."
. W:$G(ENMA) !,"The same will be true of other records created using this option."
. S DIR(0)="Y",DIR("A")="Do you wish to send an FA document to Austin"
. S DIR("B")="YES"
. D ^DIR K DIR S:$G(ENMA) ENMA("FAP")=$S(Y>0:1,1:0)
. I Y S ENEQ("DA")=ENNXL D ^ENFAACQ K ENEQ("DA")
; generate new equipment bulletin
S DA=ENNXL D BULL^ENEQ3
; unlock entry
L -^ENG(6914,ENNXL)
Q
;
ENR ; create entry with next available ien
; out
; DA,ENNXL - ien of new entry, 0 when unsuccessful
; ENERR - error message if unsuccessful
S (DA,ENNXL)=0 K ENERR
I '$D(ZTQUEUED) W !,"...Setting up new equipment record"
N DD,DIC,DINUM,DO,X,Y
L +^ENG(6914,0):10
I '$T S ENERR="SORRY, CAN'T LOCK ^ENG(6914,0) GLOBAL, TRY LATER" Q
;
S ENNXL=$P(^ENG(6914,0),"^",3)
F S ENNXL=ENNXL+1 Q:'$D(^ENG(6914,ENNXL,0))
;
S DIC="^ENG(6914,",DIC(0)="LX",(DA,X,DINUM)=ENNXL
K DD,DO D FILE^DICN
S:Y'>0 (DA,ENNXL)=0,ENERR="Unable to add new record at this time..."
L -^ENG(6914,0)
Q
;
;ENEQ1
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HENEQ1 6322 printed Dec 13, 2024@01:52:22 Page 2
ENEQ1 ;WIRMFO/DH,SAB-Enter Equipment Records ;12.18.97
+1 ;;7.0;ENGINEERING;**14,25,29,35,47**;Aug 17, 1993
+2 ;
EQAD ;New Inventory Entry Point
+1 SET END=0
+2 NEW IOINLOW,IOINHI
DO ZIS^ENUTL
+3 DO ASKEDM
if END
GOTO EQADX
+4 ;
+5 FOR
Begin DoDot:1
+6 WRITE @IOF,!!!
+7 SET DIR(0)="Y"
SET DIR("A")="Enter a new equipment inventory item"
+8 SET DIR("B")="NO"
+9 SET DIR("?")="Enter 'Y' to add a new Equipment Record."
+10 WRITE @IOF,!!!
DO ^DIR
KILL DIR
IF 'Y
SET END=1
QUIT
+11 DO ASKSER
if END
QUIT
if '$DATA(ENSERIAL)
QUIT
+12 DO ADDEQ
End DoDot:1
if END
QUIT
EQADX ;
+1 KILL DA,DIC,DIE,DIK,DIR,DIROUT,DIRUT,DR,DTOUT,DUOUT,X,Y
+2 KILL END,ENDA,ENDR,ENNXL,ENSCRN
+3 QUIT
+4 ;
EQMAD ;Multiple Inventory Entry Point
+1 SET END=0
SET ENMA=1
+2 NEW IOINLOW,IOINHI
DO ZIS^ENUTL
+3 WRITE @IOF,!!!
+4 SET DIR(0)="Y"
SET DIR("A")="Enter multiple equipment inventory items"
+5 SET DIR("B")="NO"
+6 SET DIR("?",1)="This option allows a rapid entry of multiple items which"
+7 SET DIR("?",2)="are alike; e.g. 25 new electric beds."
+8 SET DIR("?")="Enter YES or NO"
+9 DO ^DIR
KILL DIR
if 'Y
GOTO EQMADX
+10 ;
+11 DO ASKEDM
if END
GOTO EQMADX
+12 ;
+13 WRITE !!,"Proceed by entering the first item in full"
+14 SET DIR(0)="E"
DO ^DIR
KILL DIR
if $DATA(DIRUT)
GOTO EQMADX
+15 ;
+16 DO ASKSER
if END
GOTO EQMADX
if '$DATA(ENSERIAL)
GOTO EQMAD
+17 ;
+18 DO ADDEQ
IF 'ENNXL
GOTO EQMADX
+19 ;
+20 WRITE @IOF,!!!,"For each additional equipment entry enter:"
+21 WRITE !," SERIAL #, LOCATION, VA PM NUMBER, and LOCAL IDENTIFIER (if any)."
+22 FOR
Begin DoDot:1
+23 WRITE !!
+24 SET DIR(0)="Y"
SET DIR("A")="Enter another item"
SET DIR("B")="YES"
+25 SET DIR("?")="Enter YES to add another similar equipment item"
+26 DO ^DIR
KILL DIR
IF 'Y
SET END=1
QUIT
+27 SET ENDAOLD=ENNXL
+28 DO EQMAS^ENEQ3
IF 'ENNXL
SET ENNXL=ENDAOLD
+29 KILL ENDAOLD
End DoDot:1
if END
QUIT
+30 ;
EQMADX ;
+1 KILL DA,DIC,DIE,DIK,DIR,DIROUT,DIRUT,DR,DTOUT,DUOUT,X,Y
+2 KILL END,ENDA,ENDR,ENMA,ENNXL,ENSCRN
+3 QUIT
+4 ;
ASKEDM ; ask edit method (screen or template)
+1 ; out
+2 ; ENSCRN - flag: true when screen entry
+3 ; ENDR - input template when ENSCRN = 0
+4 ; END - true when timeout or '^'
+5 SET DIR(0)="Y"
SET DIR("A")="Screen entry"
SET DIR("B")="YES"
+6 SET DIR("?")="Enter 'Y' for screen handler, 'N' for standard FileMan."
+7 DO ^DIR
KILL DIR
if $DATA(DIRUT)
SET END=1
SET ENSCRN=Y
+8 if ENSCRN=0
SET ENDR=$SELECT($DATA(^DIE("B","ENZEQENTER")):"[ENZ",1:"[EN")_"EQENTER]"
+9 QUIT
+10 ;
ASKSER ; ask serial # and check file for duplicates
+1 ; out
+2 ; ENSERIAL - contains entered serial # or
+3 ; undefined if user did not reconfirm after a match
+4 ; END - true when timeout or '^'
+5 NEW DA,ENI,ENMATCH,ENX
+6 ; ask serial #
+7 SET ENSERIAL=""
+8 WRITE !!,"Please enter SERIAL # if available. Otherwise press <return>."
+9 SET DIR(0)="6914,5"
DO ^DIR
KILL DIR
IF $DATA(DTOUT)!$DATA(DUOUT)
SET END=1
QUIT
+10 SET ENSERIAL=Y
+11 if ENSERIAL=""
QUIT
+12 ; look for matches
+13 SET ENX=$$UP^XLFSTR($TRANSLATE(ENSERIAL," !""#$%&'()*+,-./:;<=>?@[\]^_`{|}~",""))
+14 SET ENX=$EXTRACT(ENX_" ",1,30)
+15 SET ENI=0
FOR
SET ENI=$ORDER(^ENG(6914,"FC",ENX,ENI))
if 'ENI
QUIT
SET ENMATCH(ENI)=""
+16 ; if match show list, reconfirm
+17 IF $DATA(ENMATCH)
Begin DoDot:1
+18 WRITE !,"List of existing equipment with a similar Serial #"
+19 WRITE !,?2,"Entry #",?14,"Manufacturer"
+20 SET ENI=0
FOR
SET ENI=$ORDER(ENMATCH(ENI))
if 'ENI
QUIT
Begin DoDot:2
+21 WRITE !,?2,ENI,?14,$EXTRACT($$GET1^DIQ(6914,ENI,1),1,60)
+22 WRITE !,?4,"Mod: ",$$GET1^DIQ(6914,ENI,4)
+23 WRITE ?40,"Ser #: ",$$GET1^DIQ(6914,ENI,5)
End DoDot:2
+24 SET DIR(0)="Y"
SET DIR("A")="Do you still want to add this new record"
+25 SET DIR("B")="NO"
DO ^DIR
KILL DIR
if $DATA(DIRUT)
SET END=1
IF 'Y
KILL ENSERIAL
End DoDot:1
+26 QUIT
+27 ;
ADDEQ ; add new equipment item
+1 ; in
+2 ; ENSERIAL (optional) contains serial #
+3 ; ENMA (optional) flag, true if multiple equipment entry
+4 ; out
+5 ; ENNXL - ien of new equipment record, 0 if unsuccessful
+6 ; also when $G(ENMA) true
+7 ; ENMA("FAP") - flag, true if FA Document generated
+8 ; ENMA("IIWO") - flag, true if Incom. Insp. W.O. generated
+9 ; also when $G(ENMA("IIWO")) true
+10 ; ENMA("IIWO","DA") - ien of created w.o.
+11 ; ENMA("IIWO","ION") - ION where w.o. printed
+12 ; ENMA("IIWO","QDT") - queued date/time if w.o. tasked
+13 ; create new record
+14 DO ENR
IF 'ENNXL
WRITE $CHAR(7),!,ENERR
SET DIR(0)="E"
DO ^DIR
KILL DIR,ENERR
QUIT
+15 ; lock new record
+16 LOCK +^ENG(6914,ENNXL):1
IF '$TEST
Begin DoDot:1
+17 WRITE !!,$CHAR(7),"Another user is editing Entry # ",ENNXL,". Can't proceed."
End DoDot:1
QUIT
+18 ; populate serial #
+19 IF $GET(ENSERIAL)]""
SET DIE="^ENG(6914,"
SET DR="5////"_ENSERIAL
SET DA=ENNXL
DO ^DIE
+20 ; user edit new record
+21 IF ENSCRN
Begin DoDot:1
+22 SET DJSC="ENEQ1"
SET (DJDN,ENDA,DA)=ENNXL
+23 DO EN^ENJ
WRITE IOINLOW
+24 KILL DJD0,DJDIS,DJDN,DJLG,DJSC,DJSW2
End DoDot:1
+25 IF 'ENSCRN
SET DIE="^ENG(6914,"
SET DR=ENDR
SET DA=ENNXL
DO ^DIE
+26 ; enter PM schedule
+27 IF $DATA(^XUSEC("ENEDPM",DUZ))
Begin DoDot:1
+28 SET DIR(0)="Y"
SET DIR("B")="YES"
+29 SET DIR("A")="Would you like to include this item in the PM program"
+30 DO ^DIR
KILL DIR
if 'Y
QUIT
+31 NEW ENXP
+32 SET DIE="^ENG(6914,"
SET (DA,ENDA)=ENNXL
SET ENXP=1
+33 IF $DATA(^ENG(6914,DA,4))
DO DINV^ENEQPMP3
if X="^"
QUIT
+34 DO XNPMSE^ENEQPMP
End DoDot:1
+35 ; generate incoming inspection W.O.?
+36 SET ENI=$ORDER(^ENG(6910.2,"B","ASK INCOMING INSPECTION W.O.",0))
+37 IF ENI
IF $PIECE(^ENG(6910.2,ENI,0),U,2)
Begin DoDot:1
+38 SET DIR(0)="Y"
SET DIR("A")="Create an Incoming Inspection Work Order"
+39 SET DIR("B")=$SELECT($PIECE(^ENG(6910.2,ENI,0),U,2)=2:"YES",1:"NO")
+40 DO ^DIR
KILL DIR
if $GET(ENMA)
SET ENMA("IIWO")=$SELECT(Y>0:1,1:0)
+41 IF Y
DO IIWO^ENWONEW3(ENNXL)
IF $GET(ENMA)
Begin DoDot:2
+42 SET ENMA("IIWO","DA")=ENDA
+43 SET ENMA("IIWO","ION")=$GET(ENION)
+44 SET ENMA("IIWO","QDT")=$GET(ENQDT)
+45 KILL ENDA,ENION,ENQDT
End DoDot:2
End DoDot:1
+46 ; generate FA Document?
+47 IF $DATA(^XUSEC("ENFACS",DUZ))
IF $PIECE(^ENG(6914,ENNXL,0),U,4)="NX"
IF $PIECE($GET(^(8)),U,2)
Begin DoDot:1
+48 WRITE !!,"This Equipment Record is both NONEXPENDABLE and CAPITALIZED."
+49 if $GET(ENMA)
WRITE !,"The same will be true of other records created using this option."
+50 SET DIR(0)="Y"
SET DIR("A")="Do you wish to send an FA document to Austin"
+51 SET DIR("B")="YES"
+52 DO ^DIR
KILL DIR
if $GET(ENMA)
SET ENMA("FAP")=$SELECT(Y>0:1,1:0)
+53 IF Y
SET ENEQ("DA")=ENNXL
DO ^ENFAACQ
KILL ENEQ("DA")
End DoDot:1
+54 ; generate new equipment bulletin
+55 SET DA=ENNXL
DO BULL^ENEQ3
+56 ; unlock entry
+57 LOCK -^ENG(6914,ENNXL)
+58 QUIT
+59 ;
ENR ; create entry with next available ien
+1 ; out
+2 ; DA,ENNXL - ien of new entry, 0 when unsuccessful
+3 ; ENERR - error message if unsuccessful
+4 SET (DA,ENNXL)=0
KILL ENERR
+5 IF '$DATA(ZTQUEUED)
WRITE !,"...Setting up new equipment record"
+6 NEW DD,DIC,DINUM,DO,X,Y
+7 LOCK +^ENG(6914,0):10
+8 IF '$TEST
SET ENERR="SORRY, CAN'T LOCK ^ENG(6914,0) GLOBAL, TRY LATER"
QUIT
+9 ;
+10 SET ENNXL=$PIECE(^ENG(6914,0),"^",3)
+11 FOR
SET ENNXL=ENNXL+1
if '$DATA(^ENG(6914,ENNXL,0))
QUIT
+12 ;
+13 SET DIC="^ENG(6914,"
SET DIC(0)="LX"
SET (DA,X,DINUM)=ENNXL
+14 KILL DD,DO
DO FILE^DICN
+15 if Y'>0
SET (DA,ENNXL)=0
SET ENERR="Unable to add new record at this time..."
+16 LOCK -^ENG(6914,0)
+17 QUIT
+18 ;
+19 ;ENEQ1