| 1 | OOPSGUI8 ;WIOFO/LLH-RPC Broker calls for GUI ;10/23/01
 | 
|---|
| 2 |  ;;2.0;ASISTS;**8,7,11**;Jun 03, 2002
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | EN1(RESULTS,INPUT) ; Entry point for routine
 | 
|---|
| 5 |  ;  Input:  INPUT contains the IEN of the ASISTS record and the 
 | 
|---|
| 6 |  ;          calling menu, in the format IEN^CALLING MENU
 | 
|---|
| 7 |  ; Output:  RESULTS contains status messages back to the client. 
 | 
|---|
| 8 |  ;          RESULTS(0) will = either 1 or 0.  1 if ok for form to be
 | 
|---|
| 9 |  ;          signed by calling menu option, 0 if not ok.  The RESULTS
 | 
|---|
| 10 |  ;          array with status message will start at 1.
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 |  N CALL,CN,DIC,IEN,FORM,PRM1,PRM2,SIGN,Y
 | 
|---|
| 13 |  S CN=1
 | 
|---|
| 14 |  S IEN=$P($G(INPUT),U),CALL=$P($G(INPUT),U,2)
 | 
|---|
| 15 |  S FORM=$$GET1^DIQ(2260,IEN,52,"I")
 | 
|---|
| 16 |  S FORM=$S(FORM=1:"CA1",FORM=2:"CA2",1:"")
 | 
|---|
| 17 |  S PRM1=$S(CALL="O":"Safety Officer",CALL="H":"Occupational Health",1:0)
 | 
|---|
| 18 |  S PRM2=PRM1_" approves the WCP signing for the Employee: "
 | 
|---|
| 19 |  S SIGN=""
 | 
|---|
| 20 |  I '$G(IEN)!($G(FORM)="")!($G(CALL)="") D  Q
 | 
|---|
| 21 |  . S RESULTS(0)=0
 | 
|---|
| 22 |  . S RESULTS(1)="Missing Information, Cannot Continue"
 | 
|---|
| 23 |  I CALL="W" G WCPS4E
 | 
|---|
| 24 |  S RESULTS(0)=$$VALID()
 | 
|---|
| 25 |  I RESULTS(0) S RESULTS(CN)=PRM2,CN=CN+1
 | 
|---|
| 26 |  G EXIT
 | 
|---|
| 27 | WCPS4E ; allow WCP to sign for employee if all approvals given
 | 
|---|
| 28 |  N CONT,EHS,SIGN,SOS,VALID,VIEW
 | 
|---|
| 29 |  S SIGN=0,VALID=0,VIEW=1
 | 
|---|
| 30 |  S SOS=$$GET1^DIQ(2260,IEN,76,"I")
 | 
|---|
| 31 |  S EHS=$$GET1^DIQ(2260,IEN,79,"I")
 | 
|---|
| 32 |  S CONT=$S(DUZ=SOS:"S",DUZ=EHS:"H",1:"")
 | 
|---|
| 33 |  I (CONT="S")!(CONT="H") D
 | 
|---|
| 34 |  . S RESULTS(CN)="You have approved as "_$S(CONT="S":"Safety Officer",CONT="H":"Occ Health Rep",1:"")
 | 
|---|
| 35 |  . S RESULTS(CN)=RESULTS(0)_" and cannot sign as Employee.",CN=CN+1
 | 
|---|
| 36 |  . S RESULTS(CN)="Three different individuals must be involved."
 | 
|---|
| 37 |  . S VIEW=0
 | 
|---|
| 38 |  I '$G(SOS) S VIEW=0 D
 | 
|---|
| 39 |  . S RESULTS(CN)="Safety Officer has not approved WCP signing for employee.",CN=CN+1
 | 
|---|
| 40 |  I '$G(EHS) S VIEW=0 D
 | 
|---|
| 41 |  . S RESULTS(CN)="Occupational Health has not approved WCP signing for employee.",CN=CN+1
 | 
|---|
| 42 |  I VIEW D
 | 
|---|
| 43 |  . ; Allow clearing WCP signature, employee may be able to sign
 | 
|---|
| 44 |  . I $$GET1^DIQ(2260,IEN,119,"I") D CLRES^OOPSUTL1(IEN,"E",FORM)
 | 
|---|
| 45 |  . D VALIDATE^OOPSUTL4(IEN,FORM,"E",.VALID)
 | 
|---|
| 46 |  . I 'VALID S RESULTS(CN)="All required fields not completed",CN=CN+1 Q
 | 
|---|
| 47 |  . D EMP^OOPSVAL1
 | 
|---|
| 48 | EXIT ;
 | 
|---|
| 49 |  Q
 | 
|---|
| 50 | VALID() ; make sure same person is not signing for both safety and EH and if
 | 
|---|
| 51 |  ; signed from menu option being called not needed again - so quit
 | 
|---|
| 52 |  N CONT,EHAPP,ERR,SOAPP,VALID
 | 
|---|
| 53 |  S VALID=1,ERR=0
 | 
|---|
| 54 |  S SOAPP=$P($G(^OOPS(2260,IEN,"WCSE")),U)
 | 
|---|
| 55 |  S EHAPP=$P($G(^OOPS(2260,IEN,"WCSE")),U,4)
 | 
|---|
| 56 |  S CONT=$S(DUZ=SOAPP:"S",DUZ=EHAPP:"H",1:"")
 | 
|---|
| 57 |  I CALL="O" D
 | 
|---|
| 58 |  . I CONT="S" S ERR=1
 | 
|---|
| 59 |  . I $G(EHAPP)=DUZ S ERR=2
 | 
|---|
| 60 |  . I $G(SOAPP)&($G(CONT)="") S ERR=3
 | 
|---|
| 61 |  I CALL="H" D
 | 
|---|
| 62 |  . I CONT="H" S ERR=1
 | 
|---|
| 63 |  . I $G(SOAPP)=DUZ S ERR=2
 | 
|---|
| 64 |  . I $G(EHAPP)&($G(CONT)="") S ERR=3
 | 
|---|
| 65 |  I ERR=1 D
 | 
|---|
| 66 |  . S RESULTS(CN)="You have signed as "
 | 
|---|
| 67 |  . S RESULTS(CN)=RESULTS(CN)_PRM1
 | 
|---|
| 68 |  . S RESULTS(CN)=RESULTS(CN)_", Cannot sign."
 | 
|---|
| 69 |  . S CN=CN+1,VALID=0
 | 
|---|
| 70 |  I ERR=2 D
 | 
|---|
| 71 |  . S RESULTS(CN)="You have already signed as "
 | 
|---|
| 72 |  . S RESULTS(CN)=RESULTS(CN)_$S(CALL="O":"Occupational Health",CALL="H":"Safety Officer",1:0)_".",CN=CN+1
 | 
|---|
| 73 |  . S RESULTS(CN)="Both signatures cannot be made by the same person."
 | 
|---|
| 74 |  . S CN=CN+1,VALID=0
 | 
|---|
| 75 |  I ERR=3 D
 | 
|---|
| 76 |  . S RESULTS(CN)=PRM1_" has already signed, re-signing is not required."
 | 
|---|
| 77 |  . S CN=CN+1,VALID=0
 | 
|---|
| 78 |  Q VALID
 | 
|---|
| 79 | CSIGN(RESULTS,IEN,FORM,CALL) ; Clears Signature from form
 | 
|---|
| 80 |  ;
 | 
|---|
| 81 |  ;   Input:     IEN - IEN of the ASISTS case to have the
 | 
|---|
| 82 |  ;                    signature cleared from
 | 
|---|
| 83 |  ;             FORM - the Form to clear the signature from, 2162,
 | 
|---|
| 84 |  ;                    CA1 or CA2 or CA7 (CA7 added V2 patch 5)
 | 
|---|
| 85 |  ;             CALL - the calling menu
 | 
|---|
| 86 |  ;  Output: RESULTS - single value with status message
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 |  S RESULTS="Clearing Signatures"
 | 
|---|
| 89 |  I ('$G(IEN))!($G(FORM)="")!($G(CALL)="") S RESULTS="FAILED"
 | 
|---|
| 90 |  ; V2 Patch 5 llh - added logic for CA7
 | 
|---|
| 91 |  I FORM'="CA7" D CLRES^OOPSUTL1(IEN,CALL,FORM)
 | 
|---|
| 92 |  I FORM="CA7" D CLRES^OOPSGUIS(IEN,CALL,FORM)
 | 
|---|
| 93 |  S RESULTS="CLEARED"
 | 
|---|
| 94 |  Q
 | 
|---|
| 95 | DTFC(RESULTS,DATE,FLAG) ; Reformat Date/Time
 | 
|---|
| 96 |  ;  Input  - Date to be reformatted
 | 
|---|
| 97 |  ;         - Flag to be used
 | 
|---|
| 98 |  ; Output  - RESULTS contains the reformatted date
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 |  N X,%DT            ; patch 11 - added %DT
 | 
|---|
| 101 |  S FLAG=+$G(FLAG)
 | 
|---|
| 102 |  I DATE=""!(FLAG="") S (RESULTS,RESULTS(1))="" Q
 | 
|---|
| 103 |  S X=DATE,%DT="T" D ^%DT
 | 
|---|
| 104 |  S DATE=Y,X="NOW"
 | 
|---|
| 105 |  D ^%DT
 | 
|---|
| 106 |  I $S(DATE=-1:1,FLAG<0:Y<DATE,FLAG>0:DATE>Y,1:0) S DATE=-1
 | 
|---|
| 107 |  I DATE=-1 S (RESULTS,RESULTS(1))="DATE ERROR" Q
 | 
|---|
| 108 |  S (RESULTS,RESULTS(1))=$$FMTE^XLFDT(DATE,5)
 | 
|---|
| 109 |  Q
 | 
|---|
| 110 | GETNOI(RESULTS,OPT) ; Broker Call to retrieve NOI Codes
 | 
|---|
| 111 |  ;  Input:     OPT - Either CA1 or CA2 to indicate which codes should be
 | 
|---|
| 112 |  ;                   retrieved.  If CA1 must start with T, otherwise CA2
 | 
|---|
| 113 |  ; Output: RESULTS - NOI Description and Code
 | 
|---|
| 114 |  N NOI,DES,CODE,CN
 | 
|---|
| 115 |  S DES="",CN=0
 | 
|---|
| 116 |  F  S DES=$O(^OOPS(2263.3,"B",DES)) Q:DES=""  S NOI="" F  S NOI=$O(^OOPS(2263.3,"B",DES,NOI)) Q:NOI=""  D
 | 
|---|
| 117 |  . S CODE=$P(^OOPS(2263.3,NOI,0),U,2)
 | 
|---|
| 118 |  . I OPT="CA1",($E(CODE,1)="T") S RESULTS(CN)=NOI_":"_DES_" - "_CODE
 | 
|---|
| 119 |  . I OPT="CA2",($E(CODE,1)'="T") S RESULTS(CN)=NOI_":"_DES_" - "_CODE
 | 
|---|
| 120 |  . S CN=CN+1
 | 
|---|
| 121 |  Q
 | 
|---|
| 122 | ZIPCHK(RESULTS,DATA) ; patch 5 - validate zip code against file 5.12
 | 
|---|
| 123 |  ;                 to ensure zip in file and has correct state.
 | 
|---|
| 124 |  ;
 | 
|---|
| 125 |  ;  Input:    DATA - contains ZIP CODE^STATE NAME
 | 
|---|
| 126 |  ; Output: RESULTS - returns message with validation results
 | 
|---|
| 127 |  ;
 | 
|---|
| 128 |  N STATE,VALSTATE,VALZIP,ZIP,ZZIP
 | 
|---|
| 129 |  S ZIP=$P($G(DATA),U,1),STATE=$P($G(DATA),U,2)
 | 
|---|
| 130 |  S RESULTS=""
 | 
|---|
| 131 |  I '$G(ZIP)!($G(STATE)="") S RESULTS="MISSING PARAMETERS" Q
 | 
|---|
| 132 |  D POSTAL^XIPUTIL(ZIP,.ZZIP)
 | 
|---|
| 133 |  I $G(ZZIP("ERROR"))'="" S RESULTS="ZIP CODE NOT FOUND" Q
 | 
|---|
| 134 |  I STATE'=ZZIP("STATE") S RESULTS="STATE MISMATCH ON ZIP" Q
 | 
|---|
| 135 |  S RESULTS="VALID ZIP/STATE"
 | 
|---|
| 136 |  Q
 | 
|---|
| 137 | AMEND(RESULTS,OLDIEN) ; File new Amended Case
 | 
|---|
| 138 |  ;  Input:  OLDIEN - The ASISTS IEN for the case to have an
 | 
|---|
| 139 |  ;                   amendment created for.
 | 
|---|
| 140 |  ; Output: RESULTS - Single value with the new case number
 | 
|---|
| 141 |  ;
 | 
|---|
| 142 |  N DLAYGO
 | 
|---|
| 143 |  Q:$P(^OOPS(2260,OLDIEN,0),"^",6)'=0   ;defensive code, should not occur
 | 
|---|
| 144 |  S NUM=$P(^OOPS(2260,OLDIEN,0),U,1),SUF=$E(NUM,11)
 | 
|---|
| 145 |  S $P(^OOPS(2260,OLDIEN,0),U,6)=3
 | 
|---|
| 146 |  S NUM=$E(NUM,1,10)_$S(SUF="":"A",1:$CHAR($ASCII(SUF)+1))
 | 
|---|
| 147 |  K DD,DO
 | 
|---|
| 148 |  S DLAYGO=2260,DIC="^OOPS(2260,",DIC(0)="QLZ",X=NUM
 | 
|---|
| 149 |  D FILE^DICN G:Y=-1 DONE
 | 
|---|
| 150 |  S NEWIEN=+Y
 | 
|---|
| 151 |  MERGE ^OOPS(2260,NEWIEN)=^OOPS(2260,OLDIEN)
 | 
|---|
| 152 |  S OOP=^OOPS(2260,NEWIEN,0)
 | 
|---|
| 153 |  S $P(OOP,U,1)=NUM,$P(OOP,U,6)=0,$P(OOP,U,11)="",$P(OOP,U,19)=""
 | 
|---|
| 154 |  S ^OOPS(2260,NEWIEN,0)=OOP,$P(^OOPS(2260,NEWIEN,"CA"),U,6)=""
 | 
|---|
| 155 |  S DIK="^OOPS(2260,",DA=NEWIEN D IX^DIK
 | 
|---|
| 156 |  K ^OOPS(2260,NEWIEN,"2162ES")
 | 
|---|
| 157 |  K ^OOPS(2260,NEWIEN,"CA1ES")
 | 
|---|
| 158 |  K ^OOPS(2260,NEWIEN,"CA2ES")
 | 
|---|
| 159 |  N IEN,X,WCPDUZ,WOK
 | 
|---|
| 160 |  S WCPDUZ=$P($G(^OOPS(2260,NEWIEN,"WCES")),U)
 | 
|---|
| 161 |  I $G(WCPDUZ) S WOK=1,X=WCPDUZ,IEN=OLDIEN D WK^OOPSUTL1
 | 
|---|
| 162 |  K ^OOPS(2260,NEWIEN,"WCES")
 | 
|---|
| 163 |  S RESULTS=NUM
 | 
|---|
| 164 | DONE K DA,DIC,OLDIEN,NEWIEN,NUM,SUF,X,Y,DIK,OOP
 | 
|---|
| 165 |  Q
 | 
|---|
| 166 | SETDLOC(RESULTS,P1,DATA) ; files the detail location records
 | 
|---|
| 167 |  ;  Input - P1 is the Location record IEN concatenated with the station
 | 
|---|
| 168 |  ;              subrecord IEN. EX.  38^600  
 | 
|---|
| 169 |  ;          DATA is a # subscripted array containing the detail loc data
 | 
|---|
| 170 |  ;          in the format - detail location description^Detail Loc IEN  
 | 
|---|
| 171 |  ; Output - RESULTS indicating the success of the filing.
 | 
|---|
| 172 |  N CNT,IENS,FILE,LV1,LV2,LOC,MSG,REC,RECNO,STAFDA,STR
 | 
|---|
| 173 |  S BAD=0,FILE=2261.4,LOC=$P(P1,U),STA=$P(P1,U,2),RESULTS=""
 | 
|---|
| 174 |  I $D(DATA)<10 S RESULTS="NO DATA TO FILE, CANNOT CONTINUE" Q
 | 
|---|
| 175 |  I '$G(STA) S RESULTS="NO STATION SENT, COULDN'T FILE" Q
 | 
|---|
| 176 |  I '$G(LOC) S RESULTS="NO LOCATION SENT, COULDN'T FILE" Q
 | 
|---|
| 177 |  I '$D(^OOPS(FILE,LOC,1,"B",STA)) D  I BAD Q
 | 
|---|
| 178 |  .S IENS="+1,"_LOC_",",STAFDA(2261.43,IENS,.01)=STA
 | 
|---|
| 179 |  .D UPDATE^DIE("","STAFDA","IENS","MSG")
 | 
|---|
| 180 |  .I $D(MSG("DIERR")) D
 | 
|---|
| 181 |  ..S RESULTS="PROBLEM FILING NEW STATION SUBRECORD",BAD=1
 | 
|---|
| 182 |  ;KILL THE DETAIL LOCATION REC FOR STATION AND LOCATION PASSED IN
 | 
|---|
| 183 |  S DIENS=$O(^OOPS(FILE,"E",STA,LOC,"")),LV1=$O(^OOPS(FILE,LOC,0))
 | 
|---|
| 184 |  I $G(DIENS) D
 | 
|---|
| 185 |  .S LV2=$O(^OOPS(FILE,LOC,LV1,DIENS,0))
 | 
|---|
| 186 |  .I $G(LV2) K ^OOPS(FILE,LOC,LV1,DIENS,LV2)
 | 
|---|
| 187 |  .I $D(^OOPS(FILE,"F",DIENS,LOC)) K ^OOPS(FILE,"F",DIENS,LOC)
 | 
|---|
| 188 |  ;RE-FILE THE DETAIL LOCATION LEVEL RECORD
 | 
|---|
| 189 |  K STAFDA S CNT=0,RECNO=0,REC=""
 | 
|---|
| 190 |  F  S REC=$O(DATA(REC)) Q:REC=""  D
 | 
|---|
| 191 |  .S STR=DATA(REC),RECNO=$P(STR,U,2),CNT=CNT+1
 | 
|---|
| 192 |  .I RECNO="" S RECNO=CNT
 | 
|---|
| 193 |  .S IENS="+"_RECNO_","_DIENS_","_LOC_","
 | 
|---|
| 194 |  .S STAFDA(2261.431,IENS,.01)=$P(STR,U,1)
 | 
|---|
| 195 |  D UPDATE^DIE("E","STAFDA","IENS","MSG")
 | 
|---|
| 196 |  I '$D(MSG) S RESULTS="Filing Successful"
 | 
|---|
| 197 |  K MSG,STR,Y,X,%DT
 | 
|---|
| 198 |  Q
 | 
|---|