| [613] | 1 | ENEQ3 ;WIRMFO/DH,SAB-Equipment Entry Functions ;3.31.98
 | 
|---|
 | 2 |  ;;7.0;ENGINEERING;**25,29,35,52**;Aug 17, 1993
 | 
|---|
 | 3 | EQMAS ; Multiple Equipment Subsequent (Similar) Records
 | 
|---|
 | 4 |  ; in
 | 
|---|
 | 5 |  ;   ENDAOLD - ien of record to be copied from
 | 
|---|
 | 6 |  ;   ENMA(   - array containing info on how FA Document and
 | 
|---|
 | 7 |  ;             incoming inspection w.o. should be handled
 | 
|---|
 | 8 |  ;   ENBULL( - (optional) array of mail group info
 | 
|---|
 | 9 |  ; out
 | 
|---|
 | 10 |  ;   ENNXL   - ien of new record, 0 if unsuccessful
 | 
|---|
 | 11 |  N EN
 | 
|---|
 | 12 |  S ENNXL=0
 | 
|---|
 | 13 |  ; lock master
 | 
|---|
 | 14 |  L +^ENG(6914,ENDAOLD):10 I '$T D  Q
 | 
|---|
 | 15 |  . W $C(7),!,"Another user is editing Entry# ",ENDAOLD,". Can't proceed."
 | 
|---|
 | 16 |  . S DIR(0)="E" D ^DIR K DIR
 | 
|---|
 | 17 |  ; create new record
 | 
|---|
 | 18 |  D ENR^ENEQ1 I 'ENNXL D  L -^ENG(6914,ENDAOLD) Q
 | 
|---|
 | 19 |  . W $C(7),!,ENERR S DIR(0)="E" D ^DIR K DIR,ENERR
 | 
|---|
 | 20 |  ; lock new record
 | 
|---|
 | 21 |  L +^ENG(6914,ENNXL):10 I '$T D  L -^ENG(6914,ENDAOLD) Q
 | 
|---|
 | 22 |  . W $C(7),!,"Another user is editing Entry# ",ENNXL,". Can't proceed."
 | 
|---|
 | 23 |  . S DIR(0)="E" D ^DIR K DIR
 | 
|---|
 | 24 |  ;
 | 
|---|
 | 25 |  ; copy master into local array
 | 
|---|
 | 26 |  M EN=^ENG(6914,ENDAOLD)
 | 
|---|
 | 27 |  ; modify local array for new record
 | 
|---|
 | 28 |  ;   set up .01 and triggered fields
 | 
|---|
 | 29 |  S $P(EN(0),U)=ENNXL
 | 
|---|
 | 30 |  S $P(EN(0),U,5,6)=$P(^ENG(6914,ENNXL,0),U,5,6)
 | 
|---|
 | 31 |  ;   remove data that should not be copied
 | 
|---|
 | 32 |  I $D(EN(1)) S $P(EN(1),U,3)=""
 | 
|---|
 | 33 |  I $D(EN(2)) F ENI=7,13 S $P(EN(2),U,ENI)=""
 | 
|---|
 | 34 |  I $D(EN(3)) F ENI=6,7,10,14 S $P(EN(3),U,ENI)=""
 | 
|---|
 | 35 |  K EN(6)
 | 
|---|
 | 36 |  I $D(EN(9)) S $P(EN(9),U,10)=""
 | 
|---|
 | 37 |  ; move local array to new record
 | 
|---|
 | 38 |  M ^ENG(6914,ENNXL)=EN K EN
 | 
|---|
 | 39 |  ; re-index new record
 | 
|---|
 | 40 |  S DIK="^ENG(6914,",DA=ENNXL D IX1^DIK K DIK
 | 
|---|
 | 41 |  ; unlock master
 | 
|---|
 | 42 |  L -^ENG(6914,ENDAOLD)
 | 
|---|
 | 43 |  ; user edit new record
 | 
|---|
 | 44 |  W !!,"Equipment ID: ",ENNXL
 | 
|---|
 | 45 |  S DIE="^ENG(6914,",DR="5;24;25;26",DA=ENNXL
 | 
|---|
 | 46 |  I $P(^ENG(6914,ENDAOLD,0),U,3)]"" S DR=DR_";2" ; parent system
 | 
|---|
 | 47 |  I $D(^ENG(6914,ENNXL,8)),$P(^(8),U,8)]"" S DR=DR_";51" ; replacing
 | 
|---|
 | 48 |  D ^DIE I $D(Y)!$D(DTOUT),$P($G(^ENG(6914,DA,1)),U,3)']"" D  Q
 | 
|---|
 | 49 |  . W $C(7),!,"Time Out or '^' entered and Serial Number was left blank."
 | 
|---|
 | 50 |  . W !,"Deleting last entry (",DA,")..."
 | 
|---|
 | 51 |  . S DIK="^ENG(6914," D ^DIK K DIK L -^ENG(6914,DA)
 | 
|---|
 | 52 |  . S ENNXL=0
 | 
|---|
 | 53 |  I $G(ENMA("IIWO")) D IIWO^ENWONEW3(ENNXL)
 | 
|---|
 | 54 |  I $G(ENMA("FAP")) S ENEQ("DA")=DA D ^ENFAACQ S DA=ENEQ("DA") K ENEQ("DA")
 | 
|---|
 | 55 |  S DA=ENNXL D BULL
 | 
|---|
 | 56 |  L -^ENG(6914,ENNXL)
 | 
|---|
 | 57 |  Q
 | 
|---|
 | 58 |  ;
 | 
|---|
 | 59 | BULL ;X-mit new equipment bulletin if mail group established
 | 
|---|
 | 60 |  ; Input
 | 
|---|
 | 61 |  ;   DA - ien of equipment entry
 | 
|---|
 | 62 |  ;   optional ENBULL( - array indicating mail group availabliity
 | 
|---|
 | 63 |  ;                      undefined nodes not yet evaluated
 | 
|---|
 | 64 |  ;            ENBULL = true(1) if 'EN NEW EQUIPMENT' established
 | 
|---|
 | 65 |  ;            ENBULL(station number)=true(1) if
 | 
|---|
 | 66 |  ;               'EN NEW EQUIPMENT station number' established 
 | 
|---|
 | 67 |  Q:'$D(DA)  Q:'$D(^ENG(6914,DA,0))
 | 
|---|
 | 68 |  N ENSN,XMB,XMDUZ,XMY
 | 
|---|
 | 69 |  ; determine station number of equipment entry
 | 
|---|
 | 70 |  S ENSN=$$GET1^DIQ(6914,DA,60)
 | 
|---|
 | 71 |  ; if blank use default station #
 | 
|---|
 | 72 |  I ENSN="" S ENSN=$$GET1^DIQ(6910,1,1)
 | 
|---|
 | 73 |  ; get status of station specific mail group if not already done
 | 
|---|
 | 74 |  I ENSN]"",'$D(ENBULL(ENSN)) S ENBULL(ENSN)=$$CHKMGRP("EN NEW EQUIPMENT "_ENSN)
 | 
|---|
 | 75 |  ; use station specific mail group if available
 | 
|---|
 | 76 |  I ENSN]"",ENBULL(ENSN) S XMY("G.EN NEW EQUIPMENT "_ENSN)=""
 | 
|---|
 | 77 |  ; if station specific mail group not established then use generic group
 | 
|---|
 | 78 |  I '$D(XMY) D
 | 
|---|
 | 79 |  . ; get staus of generic mail group if not already done
 | 
|---|
 | 80 |  . I $G(ENBULL)']"" S ENBULL=$$CHKMGRP("EN NEW EQUIPMENT")
 | 
|---|
 | 81 |  . I ENBULL S XMY("G.EN NEW EQUIPMENT")=""
 | 
|---|
 | 82 |  ; send bulletin if a mail group is established
 | 
|---|
 | 83 |  I $D(XMY) D
 | 
|---|
 | 84 |  . S XMB="EN NEW EQUIPMENT"
 | 
|---|
 | 85 |  . S XMB(1)=DA,XMB(2)=$P(^VA(200,DUZ,0),U),XMB(3)=$P(^ENG(6914,DA,0),U,2)
 | 
|---|
 | 86 |  . F X=4,5 S XMB(X)=""
 | 
|---|
 | 87 |  . I $D(^ENG(6914,DA,1)) S X=$P(^(1),U) S:X>0 XMB(4)=$P(^ENG(6911,X,0),U)
 | 
|---|
 | 88 |  . I $D(^ENG(6914,DA,3)) S X=$P(^(3),U,2) S:X>0 XMB(5)=$P(^DIC(49,X,0),U)
 | 
|---|
 | 89 |  . S:ENSN]"" XMB(6)=ENSN
 | 
|---|
 | 90 |  . F X=4,5,6 S:XMB(X)="" XMB(X)="MISSING"
 | 
|---|
 | 91 |  . S X="0^0"
 | 
|---|
 | 92 |  . I $P($G(^ENG(6914,DA,0)),U,4)="NX",$P($G(^(8)),U,2) S $P(X,U)=1 ;CapNX
 | 
|---|
 | 93 |  . I $P(X,U),+$$CHKFA^ENFAUTL(DA) S $P(X,U,2)=1 ; FAP
 | 
|---|
 | 94 |  . S XMB(7)="Item is"_$S($P(X,U):"",1:" NOT")_" capitalized NX."
 | 
|---|
 | 95 |  . I $P(X,U) S XMB(7)=XMB(7)_" It was"_$S($P(X,U,2):"",1:" NOT")_" reported to FAP."
 | 
|---|
 | 96 |  . S XMDUZ="AEMS/MERS"
 | 
|---|
 | 97 |  . D ^XMB
 | 
|---|
 | 98 |  Q
 | 
|---|
 | 99 | CHKMGRP(ENMG) ; Check Mail Group Extrinsic Variable
 | 
|---|
 | 100 |  ; true if mail group exists and has at least one member
 | 
|---|
 | 101 |  ; Input Variable
 | 
|---|
 | 102 |  ;   ENMG - name of mail group to check
 | 
|---|
 | 103 |  N ENI,ENOK,ENQ
 | 
|---|
 | 104 |  S ENOK=0 ; initialize result flag
 | 
|---|
 | 105 |  ; look for mail group
 | 
|---|
 | 106 |  S ENI=$$FIND1^DIC(3.8,"","X",ENMG,"B")
 | 
|---|
 | 107 |  ; if found look for a member
 | 
|---|
 | 108 |  I ENI D
 | 
|---|
 | 109 |  . D LIST^DIC(3.81,","_ENI_",","","",1,"","","","","","ENQ")
 | 
|---|
 | 110 |  . I $P(ENQ("DILIST",0),U) S ENOK=1 ; has at least one member
 | 
|---|
 | 111 |  Q ENOK
 | 
|---|
 | 112 |  ;
 | 
|---|
 | 113 | LAST ;Last service episode (including PMI)
 | 
|---|
 | 114 |  ; called by ENG DJ SCREENs
 | 
|---|
 | 115 |  ; in:  DA - ien of equipment entry
 | 
|---|
 | 116 |  ; out: displays date and work action of last service episode (if any)
 | 
|---|
 | 117 |  N ENA,ENB,ENI,ENX
 | 
|---|
 | 118 |  Q:'$D(DA)
 | 
|---|
 | 119 |  Q:'$D(^ENG(6914,DA,6))
 | 
|---|
 | 120 |  S ENI=0 F  S ENI=$O(^ENG(6914,DA,6,ENI)) Q:'ENI  S ENA=^(ENI,0) I $E($P(ENA,U,3))'="D" D  Q
 | 
|---|
 | 121 |  . S ENX="Last serviced: "_$E(ENA,4,5)_"/"_$E(ENA,6,7)_"/"_$E(ENA,2,3)
 | 
|---|
 | 122 |  . S ENB=$P($P(ENA,U),"-",2) D:ENB]""  S ENX=ENX_"   Work Action: "_ENB
 | 
|---|
 | 123 |  . . I $D(^ENG(6920.1,"D",ENB)) S ENB(0)=$O(^(ENB,0))
 | 
|---|
 | 124 |  . . I $D(ENB(0)),$D(^ENG(6920.1,ENB(0),0)) S ENB=$P(^(0),U)
 | 
|---|
 | 125 |  . W !!,ENX
 | 
|---|
 | 126 |  Q
 | 
|---|
 | 127 |  ;ENEQ3
 | 
|---|