| 1 | OOPSGUI0 ;WIOFO/LLH-RPC routines ;01/02/02
 | 
|---|
| 2 |  ;;2.0;ASISTS;**2,4,7**;Jun 03, 2002
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | GETCASE(RESULTS,PERSON,CSTAT,PSTAT,CALL,OPT) ; Subroutine for Case Selection
 | 
|---|
| 5 |  ; Returns a list of cases that can be displayed for selection
 | 
|---|
| 6 |  ; RESULTS = return array containing, CASE#^IEN^NAME^DATE TIME OCCUR
 | 
|---|
| 7 |  ; PERSON  = 0^ if no person selected
 | 
|---|
| 8 |  ;           1^PERSON INVOLVED NAME
 | 
|---|
| 9 |  ;           2^SUPERVISOR DUZ
 | 
|---|
| 10 |  ;           3^USER SSN
 | 
|---|
| 11 |  ;           4^CASE NUMBER
 | 
|---|
| 12 |  ; CSTAT   = #^#^#^#  0^1^2^3 0=open, 1=closed, 2=deleted, 3=replaced
 | 
|---|
| 13 |  ;           99^ if all Case Status should be included
 | 
|---|
| 14 |  ;           CSTAT is only set programatically
 | 
|---|
| 15 |  ; PSTAT   = 0^  if all personnel status types should be included
 | 
|---|
| 16 |  ;           #^#^#^ for each personnel status selected
 | 
|---|
| 17 |  ; CALL    = Calling menu, used to assure proper access
 | 
|---|
| 18 |  ; OPT     = Option called from, used to assure proper access
 | 
|---|
| 19 |  ; 
 | 
|---|
| 20 |  K ^TMP("OOPSCASE",DUZ)
 | 
|---|
| 21 |  N ARR,CNUM,OOPSDA,PER,STA,SUP,VIEWSUP,VIEWEMP,VALSSN
 | 
|---|
| 22 |  I $G(PERSON)="" Q
 | 
|---|
| 23 |  I +PERSON=1 D GETPER,SORT G EXIT
 | 
|---|
| 24 |  I +PERSON=4 D  G EXIT
 | 
|---|
| 25 |  . S CNUM=$P($G(PERSON),U,2) I '$G(CNUM) Q
 | 
|---|
| 26 |  . S OOPSDA=$O(^OOPS(2260,"B",CNUM,"")) I '$G(OOPSDA) D  Q
 | 
|---|
| 27 |  .. S ^TMP("OOPSCASE",DUZ,1)="No Cases Selectable"
 | 
|---|
| 28 |  .. S RESULTS=$NA(^TMP("OOPSCASE",DUZ))
 | 
|---|
| 29 |  ..; S RESULTS(0)="No Cases Selectable"
 | 
|---|
| 30 |  . S STA=$$GET1^DIQ(2260,OOPSDA,51,"I")
 | 
|---|
| 31 |  . I +CSTAT'=99,(CSTAT'[STA_"^") Q  ;allow only selected case status
 | 
|---|
| 32 |  . I $$CALLER() S ARR(CNUM)=OOPSDA
 | 
|---|
| 33 |  . D SORT
 | 
|---|
| 34 |  S CNUM=0
 | 
|---|
| 35 |  F  S CNUM=$O(^OOPS(2260,"B",CNUM)) Q:CNUM=""  D
 | 
|---|
| 36 |  . S OOPSDA=""
 | 
|---|
| 37 |  . F  S OOPSDA=$O(^OOPS(2260,"B",CNUM,OOPSDA)) Q:OOPSDA=""  D
 | 
|---|
| 38 |  .. I +PERSON=3 D  Q:'VIEWEMP
 | 
|---|
| 39 |  ... S VIEWEMP=1,VALSSN=$P($G(PERSON),U,2)
 | 
|---|
| 40 |  ... I $$GET1^DIQ(2260,OOPSDA,5,"I")'=VALSSN  D
 | 
|---|
| 41 |  .... S VIEWEMP=0
 | 
|---|
| 42 |  .... S ^TMP("OOPSCASE",DUZ,1)="No Cases Selectable"
 | 
|---|
| 43 |  .... S RESULTS=$NA(^TMP("OOPSCASE",DUZ))
 | 
|---|
| 44 |  .. S STA=$$GET1^DIQ(2260,OOPSDA,51,"I")
 | 
|---|
| 45 |  .. I +CSTAT'=99,(CSTAT'[STA_"^") Q  ;allow only selected case status
 | 
|---|
| 46 |  .. S PER=$$GET1^DIQ(2260,OOPSDA,2,"I")
 | 
|---|
| 47 |  .. I (+PSTAT)&(PSTAT'[(PER_"^")) Q      ;allow only selected per status
 | 
|---|
| 48 |  .. I +PERSON=2 D  Q:'VIEWSUP
 | 
|---|
| 49 |  ... S VIEWSUP=1,SUP=$P(PERSON,U,2)
 | 
|---|
| 50 |  ... I $$GET1^DIQ(2260,OOPSDA,53,"I")'=SUP,($$GET1^DIQ(2260,OOPSDA,53.1,"I")'=SUP) D  Q
 | 
|---|
| 51 |  ....; S RESULTS(0)="No Cases Selectable",VIEWSUP=0
 | 
|---|
| 52 |  .... S ^TMP("OOPSCASE",DUZ,1)="No Cases Selectable",VIEWSUP=0
 | 
|---|
| 53 |  .... S RESULTS=$NA(^TMP("OOPSCASE",DUZ))
 | 
|---|
| 54 |  .. I $$CALLER() S CNUM=$$GET1^DIQ(2260,OOPSDA,.01),ARR(CNUM)=OOPSDA
 | 
|---|
| 55 |  D SORT
 | 
|---|
| 56 | EXIT ; quit the routine
 | 
|---|
| 57 |  Q
 | 
|---|
| 58 | GETPER ; Person Name passed in, match
 | 
|---|
| 59 |  ; See above for documentation
 | 
|---|
| 60 |  N NM
 | 
|---|
| 61 |  S OOPSDA="",NM=$P(PERSON,U,2)
 | 
|---|
| 62 |  F  S OOPSDA=$O(^OOPS(2260,"C",NM,OOPSDA)) Q:OOPSDA=""  D
 | 
|---|
| 63 |  . S STA=$$GET1^DIQ(2260,OOPSDA,51,"I")
 | 
|---|
| 64 |  . I +CSTAT'=99,(CSTAT'[STA_"^") Q  ;allow only selected case status
 | 
|---|
| 65 |  . S PER=$$GET1^DIQ(2260,OOPSDA,2,"I")
 | 
|---|
| 66 |  . I (+PSTAT)&(PSTAT'[(PER_"^")) Q      ;allow only selected per status
 | 
|---|
| 67 |  . I $$CALLER() S CNUM=$$GET1^DIQ(2260,OOPSDA,.01),ARR(CNUM)=OOPSDA
 | 
|---|
| 68 |  Q
 | 
|---|
| 69 | CALLER() ; Check to make sure case should be included
 | 
|---|
| 70 |  N EES,ESTAT,FLD,INC,SIG,SSN,VIEWC
 | 
|---|
| 71 |  S VIEWC=1
 | 
|---|
| 72 |  S INC=$$GET1^DIQ(2260,OOPSDA,52,"I")
 | 
|---|
| 73 |  ; get users SSN 
 | 
|---|
| 74 |  S SSN=$$GET1^DIQ(200,DUZ,9)
 | 
|---|
| 75 |  ; make sure user cannot access claim from any menu but Employee
 | 
|---|
| 76 |  I CALL'="E",($$GET1^DIQ(2260,OOPSDA,5,"I")=SSN) S VIEWC=0 Q VIEWC
 | 
|---|
| 77 |  ; Claim already sent to DOL, can't edit, Caller / Option doesnt matter
 | 
|---|
| 78 |  ; unless the Option = "CHGCASE"
 | 
|---|
| 79 |  ; Patch 4 llh - should also be able to create amendment.  NOTE: Case
 | 
|---|
| 80 |  ;               status should always = open
 | 
|---|
| 81 |  ; patch 7 llh - allow access if also opt=iocome
 | 
|---|
| 82 |  I ($$GET1^DIQ(2260,OOPSDA,66)'=""),(OPT'="CHGCASE"),(OPT'="PRINTCA"),(OPT'=2162),(OPT'="CRAMEND"),(OPT'="IOCOME") S VIEWC=0 Q VIEWC
 | 
|---|
| 83 |  ; for any option from the supervisor menu
 | 
|---|
| 84 |  I CALL="S" D  I 'VIEWC Q VIEWC
 | 
|---|
| 85 |  . I $$GET1^DIQ(2260,OOPSDA,53,"I")'=DUZ,($$GET1^DIQ(2260,OOPSDA,53.1,"I")'=DUZ) S VIEWC=0 Q
 | 
|---|
| 86 |  ; if opt = 2162
 | 
|---|
| 87 |  I OPT=2162 D  Q VIEWC
 | 
|---|
| 88 |  . I $$GET1^DIQ(2260,OOPSDA,51,"I")=1 S VIEWC=0  ; closed, can't edit
 | 
|---|
| 89 |  . ; signed SO, coming from Supervisor menu, cant access
 | 
|---|
| 90 |  . I (CALL="S"),+$$EDSTA^OOPSUTL1(OOPSDA,"O") S VIEWC=0
 | 
|---|
| 91 |  . I CALL="H" D
 | 
|---|
| 92 |  .. I $P($$EDSTA^OOPSUTL1(OOPSDA,"S"),U,3)!(+$$EDSTA^OOPSUTL1(OOPSDA,"O")) S VIEWC=0
 | 
|---|
| 93 |  . I CALL="W" D
 | 
|---|
| 94 |  .. I +$$EDSTA^OOPSUTL1(OOPSDA,"O") S VIEWC=0   ;safety signed cant see
 | 
|---|
| 95 |  ; if opt = CA1 only return/allow CA1's, caller doesnt matter
 | 
|---|
| 96 |  I OPT="CA1",INC'=1 S VIEWC=0 Q VIEWC
 | 
|---|
| 97 |  ; if opt = CA2 only return/allow CA2's, caller doesnt matter
 | 
|---|
| 98 |  I OPT="CA2",INC'=2 S VIEWC=0 Q VIEWC
 | 
|---|
| 99 |  I CALL="E" D  Q VIEWC
 | 
|---|
| 100 |  . I '$$ISEMP^OOPSUTL4(OOPSDA) S VIEWC=0 Q
 | 
|---|
| 101 |  . I '$G(SSN) S VIEWC=0 Q
 | 
|---|
| 102 |  . I $D(^OOPS(2260,"SSN",SSN))<1 S VIEWC=0 Q
 | 
|---|
| 103 |  . ; user SSN must = case IEN from Employee menu
 | 
|---|
| 104 |  . I $$GET1^DIQ(2260,OOPSDA,5,"I")'=SSN S VIEWC=0 Q
 | 
|---|
| 105 |  . S SIG=$$EDSTA^OOPSUTL1(OOPSDA,"S")
 | 
|---|
| 106 |  . I (OPT'="PRINTCA"),$P(SIG,U,INC) S VIEWC=0 Q
 | 
|---|
| 107 |  I CALL="S" D  Q VIEWC
 | 
|---|
| 108 |  . ; not Super or Sec Super, can't access form, regardless of form type
 | 
|---|
| 109 |  . I $$GET1^DIQ(2260,OOPSDA,53,"I")'=DUZ&($$GET1^DIQ(2260,OOPSDA,53.1,"I")'=DUZ) S VIEWC=0 Q
 | 
|---|
| 110 |  . ; Supervisor cannot complete their own form.
 | 
|---|
| 111 |  . I $$GET1^DIQ(2260,OOPSDA,5,"I")=SSN S VIEWC=0 Q
 | 
|---|
| 112 |  . I OPT="CA1"!(OPT="CA2") D  Q
 | 
|---|
| 113 |  .. ; if form CA, must be employee to complete
 | 
|---|
| 114 |  .. I '$$ISEMP^OOPSUTL4(OOPSDA) S VIEWC=0 Q
 | 
|---|
| 115 |  .. ; commented out next 2 lines, ? whether wanted by TAG 11/1/01 llh
 | 
|---|
| 116 |  .. ; Employee hasn't signed, super can't get to
 | 
|---|
| 117 |  .. ; I '$P($$EDSTA^OOPSUTL1(OOPSDA,"E"),U,INC) S VIEWC=0 Q
 | 
|---|
| 118 |  .. ; Supervisor has signed, can't re-edit
 | 
|---|
| 119 |  .. I $P($$EDSTA^OOPSUTL1(OOPSDA,"S"),U,INC) S VIEWC=0 Q
 | 
|---|
| 120 |  I CALL="O"!(CALL="W")!(CALL="H") D  Q VIEWC
 | 
|---|
| 121 |  . I OPT="CA1"!(OPT="CA2") D  Q
 | 
|---|
| 122 |  .. I '$$ISEMP^OOPSUTL4(OOPSDA) S VIEWC=0 Q
 | 
|---|
| 123 |  . I OPT="WCSIGN" D  Q
 | 
|---|
| 124 |  .. S ESTAT=$$EDSTA^OOPSUTL1(OOPSDA,"E")
 | 
|---|
| 125 |  .. I '$$ISEMP^OOPSUTL4(OOPSDA) S VIEWC=0 Q
 | 
|---|
| 126 |  .. I CALL'="W",$P(ESTAT,U,INC) S VIEWC=0 Q
 | 
|---|
| 127 |  .. I CALL="W" D
 | 
|---|
| 128 |  ... S FLD=$S(INC=1:119,INC=2:221,1:"") I 'FLD S VIEWC=0 Q
 | 
|---|
| 129 |  ... S EES=$$GET1^DIQ(2260,OOPSDA,FLD,"I")
 | 
|---|
| 130 |  ... ; employee hasn't signed, ok for WC to sign
 | 
|---|
| 131 |  ... I 'EES Q
 | 
|---|
| 132 |  ... ; employee signed, not signed by person accessing claim, no access
 | 
|---|
| 133 |  ... I EES'=DUZ S VIEWC=0 Q
 | 
|---|
| 134 |  ... I $P($$EDSTA^OOPSUTL1(OOPSDA,"S"),U,INC) S VIEWC=0 ;Sup Sign, no acc
 | 
|---|
| 135 |  . I OPT="WCEMPSIGN" D  Q
 | 
|---|
| 136 |  .. N CALLER,SVIEW
 | 
|---|
| 137 |  .. S CALLER=CALL
 | 
|---|
| 138 |  .. I $$GET1^DIQ(2260,OOPSDA,51,"I") S VIEWC=0 Q    ; claim must be open
 | 
|---|
| 139 |  .. I $$GET1^DIQ(2260,OOPSDA,77)="" S VIEWC=0 Q
 | 
|---|
| 140 |  .. I $$GET1^DIQ(2260,OOPSDA,80)="" S VIEWC=0 Q
 | 
|---|
| 141 |  .. S SVIEW=$$SCR^OOPSWCSE(OOPSDA) I 'SVIEW S VIEWC=0 Q
 | 
|---|
| 142 |  I CALL="U" D  Q VIEWC
 | 
|---|
| 143 |  . I '+$$EDSTA^OOPSUTL1(OOPSDA,"O") S VIEWC=0 Q
 | 
|---|
| 144 |  . I '$P($$EDSTA^OOPSUTL1(OOPSDA,"S"),U,3) S VIEWC=0 Q
 | 
|---|
| 145 |  Q VIEWC
 | 
|---|
| 146 | SORT ; put cases in reverse number order
 | 
|---|
| 147 |  N CN,CNUM,OOPSDA,SSN,DOI
 | 
|---|
| 148 |  S ^TMP("OOPSCASE",DUZ,0)="",CNUM="",CN=1
 | 
|---|
| 149 |  I '$D(ARR) S RESULTS(0)="No Cases Selectable"  D
 | 
|---|
| 150 |  . S ^TMP("OOPSCASE",DUZ,1)="No Cases Selectable",VIEWSUP=0
 | 
|---|
| 151 |  . S RESULTS=$NA(^TMP("OOPSCASE",DUZ))
 | 
|---|
| 152 |  F  S CNUM=$O(ARR(CNUM),-1) Q:CNUM=""  D
 | 
|---|
| 153 |  . S OOPSDA=ARR(CNUM)
 | 
|---|
| 154 |  . S NM=$$GET1^DIQ(2260,OOPSDA,1)
 | 
|---|
| 155 |  . S DOI=$$GET1^DIQ(2260,OOPSDA,4)
 | 
|---|
| 156 |  . S SSN=$$GET1^DIQ(2260,OOPSDA,5)
 | 
|---|
| 157 |  . I CALL="U" S (NM,DOI,SSN)=""
 | 
|---|
| 158 |  . S ^TMP("OOPSCASE",DUZ,CN)=CNUM_U_DOI_U_NM_U_OOPSDA_U_SSN_$C(10),CN=CN+1
 | 
|---|
| 159 |  S RESULTS=$NA(^TMP("OOPSCASE",DUZ))
 | 
|---|
| 160 |  Q
 | 
|---|