| [613] | 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
 | 
|---|