| 1 | ENEQ2 ;WIRMFO/DH,SAB-Edit or Display Equipment Records ;4.15.97
 | 
|---|
| 2 |  ;;7.0;ENGINEERING;**14,25,29,35,39**;Aug 17, 1993
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | EQED ;Edit Record Entry Point
 | 
|---|
| 5 |  S ENEQ("MODE")="E"
 | 
|---|
| 6 |  S ENEDNX=$D(^XUSEC("ENEDNX",DUZ))
 | 
|---|
| 7 |  S ENEDPM=$D(^XUSEC("ENEDPM",DUZ))
 | 
|---|
| 8 |  G SELEQ
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 | EQDS ;Display Record Entry Point
 | 
|---|
| 11 |  S ENEQ("MODE")="D"
 | 
|---|
| 12 |  G SELEQ
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 | SELEQ ; select (and process) equipment for edit or display
 | 
|---|
| 15 |  ; input
 | 
|---|
| 16 |  ;   ENEQ("MODE") - switch: 'E' for edit or 'D" for display
 | 
|---|
| 17 |  ;   also when ENEQ("MODE")="E"
 | 
|---|
| 18 |  ;     ENEDNX - flag, true if user holds key ENEDNX
 | 
|---|
| 19 |  ;     ENEDPM - flag, true if user holds key ENEDPM
 | 
|---|
| 20 |  N IOINLOW,IOINHI D ZIS^ENUTL
 | 
|---|
| 21 |  S ENEQ("LVL")=0
 | 
|---|
| 22 |  S END=0
 | 
|---|
| 23 |  ; select and process equipment
 | 
|---|
| 24 |  F  D GETEQ^ENUTL Q:Y<1  S ENDA=+Y D EQP Q:END
 | 
|---|
| 25 |  ; clean up
 | 
|---|
| 26 |  K:ENEQ("MODE")="E" ENEDNX,ENEDPM
 | 
|---|
| 27 |  K DIC,END,ENDA,ENEQ,Y
 | 
|---|
| 28 |  Q
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 | EQP ; process one equipment item (display or edit)
 | 
|---|
| 31 |  ; input
 | 
|---|
| 32 |  ;   ENDA - ien of equipment item
 | 
|---|
| 33 |  ;   ENEQ("MODE") - switch: 'E' for edit or 'D' for Display
 | 
|---|
| 34 |  ;   ENEQ("LVL") - recursion level
 | 
|---|
| 35 |  ;   IOINHI - bold escape code
 | 
|---|
| 36 |  ;   IOINLOW - unbold escape code
 | 
|---|
| 37 |  ;   END - flag, true when entire process should stop
 | 
|---|
| 38 |  ;   also when ENEQ("MODE")="E"
 | 
|---|
| 39 |  ;     ENEDPM - flag; true if user holds ENEDPM key
 | 
|---|
| 40 |  ;     ENEDNX - flag; true if user holds ENEDNX key
 | 
|---|
| 41 |  ; output
 | 
|---|
| 42 |  ;   END - flag, true when entire process should stop
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 |  Q:END
 | 
|---|
| 45 |  ; lock equipment
 | 
|---|
| 46 |  L +^ENG(6914,ENDA):3 I '$T D  G EQPX
 | 
|---|
| 47 |  . W $C(7),!,"Record being edited by someone else. Try later."
 | 
|---|
| 48 |  . S DIR(0)="E" D ^DIR K DIR S:$D(DTOUT) END=1
 | 
|---|
| 49 |  ; call DJ screen handler
 | 
|---|
| 50 |  I ENEQ("MODE")="D" S DJSC="ENEQ1D",DJDIS=1
 | 
|---|
| 51 |  I ENEQ("MODE")="E" S DJSC=$S($P($G(^ENG(6914,ENDA,0)),U,4)'="NX"!ENEDNX:"ENEQ1",1:"ENEQNX1")
 | 
|---|
| 52 |  S (DJDN,DA)=ENDA
 | 
|---|
| 53 |  D EN^ENJ W IOINLOW
 | 
|---|
| 54 |  ; PM Data edit (edit mode only)
 | 
|---|
| 55 |  I ENEQ("MODE")="E",ENEDPM D
 | 
|---|
| 56 |  . S DIR(0)="Y",DIR("A")="Want to enter/edit PM data",DIR("B")="NO"
 | 
|---|
| 57 |  . D ^DIR K DIR S:$D(DTOUT) END=1 Q:'Y
 | 
|---|
| 58 |  . S DIE="^ENG(6914,",DA=ENDA,ENXP=1 D XNPMSE^ENEQPMP
 | 
|---|
| 59 |  . K ENXP
 | 
|---|
| 60 |  ; display comments & spex (display mode only)
 | 
|---|
| 61 |  I ENEQ("MODE")="D",$O(^ENG(6914,ENDA,5,0))!$O(^ENG(6914,ENDA,10,0)) D
 | 
|---|
| 62 |  . W @IOF,"   ***ENTRY NUMBER:",ENDA,"***"
 | 
|---|
| 63 |  . ; show COMMENTS (if any)
 | 
|---|
| 64 |  . I $O(^ENG(6914,ENDA,5,0)) D WP(ENDA,"COMMENTS",5)
 | 
|---|
| 65 |  . ; show SPEX (if any)
 | 
|---|
| 66 |  . I '$G(END1),$O(^ENG(6914,ENDA,10,0)) D WP(ENDA,"SPEX",10)
 | 
|---|
| 67 |  . ; pause
 | 
|---|
| 68 |  . I '$G(END1) S DIR(0)="E" D ^DIR K DIR S:$D(DTOUT) END=1
 | 
|---|
| 69 |  . K END1
 | 
|---|
| 70 |  ; unlock equip
 | 
|---|
| 71 |  L -^ENG(6914,ENDA)
 | 
|---|
| 72 |  ; check for components
 | 
|---|
| 73 |  I 'END,$O(^ENG(6914,"AE",ENDA,0)) D
 | 
|---|
| 74 |  . ; ask if components should be listed
 | 
|---|
| 75 |  . S DIR(0)="Y",DIR("B")="NO"
 | 
|---|
| 76 |  . S DIR("A")="Equipment has components. Do you want a list (Y/N)"
 | 
|---|
| 77 |  . D ^DIR K DIR S:$D(DTOUT) END=1 Q:'Y
 | 
|---|
| 78 |  . ; increment recursion level
 | 
|---|
| 79 |  . S ENEQ("LVL")=ENEQ("LVL")+1
 | 
|---|
| 80 |  . ; build list
 | 
|---|
| 81 |  . K ^TMP("ENC",$J,ENEQ("LVL"))
 | 
|---|
| 82 |  . S (ENCDA,ENL)=0
 | 
|---|
| 83 |  . F  S ENCDA=$O(^ENG(6914,"AE",ENDA,ENCDA)) Q:'ENCDA  D
 | 
|---|
| 84 |  . . S ENL=ENL+1
 | 
|---|
| 85 |  . . S ^TMP("ENC",$J,ENEQ("LVL"),ENCDA)=""
 | 
|---|
| 86 |  . S ^TMP("ENC",$J,ENEQ("LVL"),0)=ENDA_U_ENL
 | 
|---|
| 87 |  . ; display list
 | 
|---|
| 88 |  . D LISTC
 | 
|---|
| 89 |  . ; kill saved list
 | 
|---|
| 90 |  . K ^TMP("ENC",$J,ENEQ("LVL"))
 | 
|---|
| 91 |  . ; decrement recursion level
 | 
|---|
| 92 |  . S ENEQ("LVL")=ENEQ("LVL")-1
 | 
|---|
| 93 | EQPX ; clean up
 | 
|---|
| 94 |  W @IOF
 | 
|---|
| 95 |  K DA,DIE,DIROUT,DIRUT,DR,DTOUT,DUOUT
 | 
|---|
| 96 |  K DJDIS,DJD0,DJDN,DJLG,DJSC,DJSW2
 | 
|---|
| 97 |  K ENCDA,ENL
 | 
|---|
| 98 |  Q
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 | WP(ENDA,ENFIELD,ENNODE) ; display word-processing field
 | 
|---|
| 101 |  ; input
 | 
|---|
| 102 |  ;   ENDA    - ien of equipment
 | 
|---|
| 103 |  ;   ENFIELD - name of field being displayed
 | 
|---|
| 104 |  ;   ENNODE  - node where field is located in file 6914
 | 
|---|
| 105 |  ; output
 | 
|---|
| 106 |  ;   END    - (optional) true if user timed-out
 | 
|---|
| 107 |  ;   END1   - (optional) true if user entered '^' or timed-out
 | 
|---|
| 108 |  N ENI
 | 
|---|
| 109 |  K ^UTILITY($J,"W") S DIWL=1,DIWR=76,DIWF="W"
 | 
|---|
| 110 |  W !!,IOINHI,ENFIELD_":",IOINLOW
 | 
|---|
| 111 |  S ENI=0 F  S ENI=$O(^ENG(6914,ENDA,ENNODE,ENI)) Q:'ENI  D  Q:$G(END1)
 | 
|---|
| 112 |  . I $Y>19 D  Q:$G(END1)
 | 
|---|
| 113 |  . . S DIR(0)="E" D ^DIR K DIR S:$D(DTOUT) END=1 S:'Y END1=1 Q:$G(END1)
 | 
|---|
| 114 |  . . W @IOF,"   ***ENTRY NUMBER:",ENDA,"***"
 | 
|---|
| 115 |  . . W !!,IOINHI,ENFIELD_" (continued):",IOINLOW
 | 
|---|
| 116 |  . S X=^ENG(6914,ENDA,ENNODE,ENI,0) D ^DIWP
 | 
|---|
| 117 |  I '$G(END1) D ^DIWW
 | 
|---|
| 118 |  K ^UTILITY($J,"W"),DIWL,DIWR,DIWF
 | 
|---|
| 119 |  Q
 | 
|---|
| 120 |  ;
 | 
|---|
| 121 | LISTC ; Show/Select-From Component List
 | 
|---|
| 122 |  ; input
 | 
|---|
| 123 |  ;   ENEQ("LVL") - recursion level
 | 
|---|
| 124 |  ;   ^TMP("ENC",$J,ENEQ("LVL"),0)=parent ien^number of components
 | 
|---|
| 125 |  ;   ^TMP("ENC",$J,ENEQ("LVL"),component ien)=""
 | 
|---|
| 126 |  ;   END - flag; true if entire process should stop
 | 
|---|
| 127 |  ; output
 | 
|---|
| 128 |  ;   END - flag; true if entire process should stop
 | 
|---|
| 129 |  ;
 | 
|---|
| 130 |  ; build screen array from component list
 | 
|---|
| 131 |  K ^TMP($J,"SCR")
 | 
|---|
| 132 |  S ENCDA=0,ENC=0
 | 
|---|
| 133 |  F  S ENCDA=$O(^TMP("ENC",$J,ENEQ("LVL"),ENCDA)) Q:'ENCDA  D
 | 
|---|
| 134 |  . S ENC=ENC+1
 | 
|---|
| 135 |  . S ENX=ENCDA_U_$E($$GET1^DIQ(6914,ENCDA,3),1,20)
 | 
|---|
| 136 |  . S ENX=ENX_U_$E($$GET1^DIQ(6914,ENCDA,6),1,20)
 | 
|---|
| 137 |  . S ENX=ENX_U_$E($$GET1^DIQ(6914,ENCDA,24),1,10)
 | 
|---|
| 138 |  . S ^TMP($J,"SCR",ENC)=ENX
 | 
|---|
| 139 |  S ENX=^TMP("ENC",$J,ENEQ("LVL"),0)
 | 
|---|
| 140 |  S ^TMP($J,"SCR")=ENC_U_"Equip. #"_$P(ENX,U)_" Component List"
 | 
|---|
| 141 |  S ENX="6;10;Entry#^18;20;Mfgr. Equip. Name"
 | 
|---|
| 142 |  S ENX=ENX_"^40;20;Category^62;10;Location"
 | 
|---|
| 143 |  S ^TMP($J,"SCR",0)=ENX
 | 
|---|
| 144 | LISTC1 ; call list handler
 | 
|---|
| 145 |  D EN^ENPLS2
 | 
|---|
| 146 |  ; save selected items
 | 
|---|
| 147 |  K ^TMP("ENC",$J,ENEQ("LVL"),"ACL")
 | 
|---|
| 148 |  S ENC=0,ENJ="" F  S ENJ=$O(ENACL(ENJ)) Q:ENJ=""  D
 | 
|---|
| 149 |  . F ENK=1:1 S ENI=$P(ENACL(ENJ),",",ENK) Q:ENI=""  D
 | 
|---|
| 150 |  . . S ENY=^TMP($J,"SCR",ENI)
 | 
|---|
| 151 |  . . S ^TMP("ENC",$J,ENEQ("LVL"),"ACL",$P(ENY,U))=$P(ENY,U,5)
 | 
|---|
| 152 |  . . S ENC=ENC+1
 | 
|---|
| 153 |  S:ENC ^TMP("ENC",$J,ENEQ("LVL"),"ACL",0)=ENC
 | 
|---|
| 154 |  ; process selected items
 | 
|---|
| 155 |  S ENDA=0,END(ENEQ("LVL"))=0
 | 
|---|
| 156 |  F  S ENDA=$O(^TMP("ENC",$J,ENEQ("LVL"),"ACL",ENDA)) Q:'ENDA  D  Q:END(ENEQ("LVL"))
 | 
|---|
| 157 |  . D EQP Q:END
 | 
|---|
| 158 |  . Q:'$O(^TMP("ENC",$J,ENEQ("LVL"),"ACL",ENDA))  ; no more left
 | 
|---|
| 159 |  . ; give user chance to break out of this loop or entire process
 | 
|---|
| 160 |  . S DIR(0)="FO"
 | 
|---|
| 161 |  . S DIR("A")="Press RETURN to continue, '^' to exit, or '^^' to stop"
 | 
|---|
| 162 |  . D ^DIR K DIR
 | 
|---|
| 163 |  . S:$D(DTOUT)!$D(DIROUT) END=1 S:END!$D(DUOUT) END(ENEQ("LVL"))=1
 | 
|---|
| 164 |  K END(ENEQ("LVL"))
 | 
|---|
| 165 |  ; restore ENDA to value of parent
 | 
|---|
| 166 |  S ENDA=$P($G(^TMP("ENC",$J,ENEQ("LVL"),0)),U)
 | 
|---|
| 167 |  ; if items selected then redisplay list
 | 
|---|
| 168 |  I 'END,$G(^TMP("ENC",$J,ENEQ("LVL"),"ACL",0))>0 G LISTC
 | 
|---|
| 169 | LISTCX ; clean up
 | 
|---|
| 170 |  K ^TMP($J,"SCR"),^TMP("ENC",$J,ENEQ("LVL"),"ACL")
 | 
|---|
| 171 |  K ENACL,ENC,ENCDA,ENI,ENJ,ENK,ENY,ENX
 | 
|---|
| 172 |  Q
 | 
|---|
| 173 |  ;ENEQ2
 | 
|---|