| [613] | 1 | OOPSGUIF ;WIOFO/LLH-RPC routine for OSHA Log ;11/5/01
 | 
|---|
 | 2 |  ;;2.0;ASISTS;**6,7,11**;Jun 03, 2002
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 | OSHA(RESULTS,INPUT,CALL) ; get the data
 | 
|---|
 | 5 |  ;   Input:  INPUT - contains 4 values, the START AND END DATE, 
 | 
|---|
 | 6 |  ;                   STATION, and INCLUDE NAME ON REPORT.  The Date of
 | 
|---|
 | 7 |  ;                   Occ (fld #4) is used to in/exclude claims from the
 | 
|---|
 | 8 |  ;                   report.  If Include name = Y, then names are
 | 
|---|
 | 9 |  ;                   printed, else they will not,and if Station='ALL'
 | 
|---|
 | 10 |  ;                   then all claims are included, if not 'All', then
 | 
|---|
 | 11 |  ;                   only 1 station is included.
 | 
|---|
 | 12 |  ;            CALL - Contains the calling menu.  If caller = "U"nion
 | 
|---|
 | 13 |  ;                   name is excluded from printing.
 | 
|---|
 | 14 |  ; Output: RESULTS - the results array passes data back to the client.
 | 
|---|
 | 15 |  N CN,DA,IEN,INCNA,OCC,OOPS,PERSON,SDATE,STDT,STA,ENDDT,EDATE,X,Y
 | 
|---|
 | 16 |  N GONE,LOST,DOI,CAX,FILL,TYPE
 | 
|---|
 | 17 |  K ^TMP($J,"OSHA")
 | 
|---|
 | 18 |  S CN=1,RESULTS(0)="Processing..."
 | 
|---|
 | 19 |  S STDT=$P($G(INPUT),U),ENDDT=$P($G(INPUT),U,2)
 | 
|---|
 | 20 |  S STA=$P($G(INPUT),U,3)
 | 
|---|
 | 21 |  S INCNA=$P($G(INPUT),U,4)
 | 
|---|
 | 22 |  I (STDT="")!(ENDDT="")!(STA="")!(INCNA="") D  Q
 | 
|---|
 | 23 |  . S RESULTS(0)="Input parameters missing, cannot run report." Q
 | 
|---|
 | 24 |  S (SDATE,EDATE)=""
 | 
|---|
 | 25 |  S X=STDT D ^%DT S SDATE=Y
 | 
|---|
 | 26 |  S X=ENDDT D ^%DT S EDATE=Y
 | 
|---|
 | 27 |  ; SDATE made last time in day prior so start date correct
 | 
|---|
 | 28 |  S SDATE=(SDATE-1)_".9999",EDATE=EDATE_".9999"
 | 
|---|
 | 29 |  S LP="",IEN=""
 | 
|---|
 | 30 |  F LP=SDATE:0 S LP=$O(^OOPS(2260,"AD",LP)) Q:(LP'>0)!(LP>EDATE)  D
 | 
|---|
 | 31 |  . F  S IEN=$O(^OOPS(2260,"AD",LP,IEN)) Q:IEN'>0  D
 | 
|---|
 | 32 |  .. I $$GET1^DIQ(2260,IEN,88,"I")'="Y" Q
 | 
|---|
 | 33 |  .. I $$GET1^DIQ(2260,IEN,51,"I")>1 Q
 | 
|---|
 | 34 |  .. S STATION=$P(^OOPS(2260,IEN,"2162A"),U,9)
 | 
|---|
 | 35 |  .. I $G(STA)'="A",(STATION'=STA) Q
 | 
|---|
 | 36 |  .. K OOPS,ARR S DIC="^OOPS(2260,"
 | 
|---|
 | 37 |  .. S DR=".01;1;3;4;15;30;33;52;63;86;89"
 | 
|---|
 | 38 |  .. S DA=IEN,DIQ="OOPS",DIQ(0)="IE" D EN^DIQ1
 | 
|---|
 | 39 |  .. S CAX=OOPS(2260,IEN,52,"I")
 | 
|---|
 | 40 |  .. S DOI=OOPS(2260,IEN,4,"I"),DOI=$P($$FMTE^XLFDT(DOI,2),"@")
 | 
|---|
 | 41 |  .. ; PER A. BIERENBAUM, GET OCC DESC 5/13/02
 | 
|---|
 | 42 |  .. S OCC=$$OCCDESC(IEN)
 | 
|---|
 | 43 |  .. ; S OCC=OOPS(2260,IEN,63,"E")_$E(OOPS(2260,IEN,15,"E"),1,4)
 | 
|---|
 | 44 |  .. S GONE=OOPS(2260,IEN,89,"I"),GONE=$S(GONE="Y":"X",1:"")
 | 
|---|
 | 45 |  .. S LOST=OOPS(2260,IEN,33,"I")
 | 
|---|
 | 46 |  .. S LOST=$S(LOST="Y":"X^",LOST="N":"^X",1:"^X")
 | 
|---|
 | 47 |  .. S TYPE=OOPS(2260,IEN,3,"I")
 | 
|---|
 | 48 |  .. I TYPE>10&(TYPE<15) S PERSON="Privacy Case"
 | 
|---|
 | 49 |  .. S PERSON=OOPS(2260,IEN,1,"E") I CALL="Union"!(INCNA="N") S PERSON=""
 | 
|---|
 | 50 |  .. S ARR=OOPS(2260,IEN,.01,"E")_U_DOI_U
 | 
|---|
 | 51 |  .. S ARR=ARR_PERSON_U_OCC_U_$E(OOPS(2260,IEN,86,"E"),1,35)_U
 | 
|---|
 | 52 |  .. S ARR=ARR_OOPS(2260,IEN,3,"E")_U_OOPS(2260,IEN,30,"E")_U
 | 
|---|
 | 53 |  .. S FILL="" I CAX=2 S FILL="^^^"
 | 
|---|
 | 54 |  .. S ARR=ARR_FILL_GONE_U_LOST
 | 
|---|
 | 55 |  .. S ^TMP($J,"OSHA",CN)=ARR,CN=CN+1
 | 
|---|
 | 56 |  S RESULTS=$NA(^TMP($J,"OSHA"))
 | 
|---|
 | 57 |  Q
 | 
|---|
 | 58 | NSTICK(RESULTS,INPUT,CALL) ; NeedleStick Log get data logic
 | 
|---|
 | 59 |  ;   Input:  INPUT - contains 4 values, the START DATE, END DATE, 
 | 
|---|
 | 60 |  ;                   STATION, and INCLUDE NAME ON REPORT.  The Date of
 | 
|---|
 | 61 |  ;                   Occurrence (field #4) will be used to include/
 | 
|---|
 | 62 |  ;                   exclude claims from the report.  If the Include
 | 
|---|
 | 63 |  ;                   name is = Y then the names will be printed, if no
 | 
|---|
 | 64 |  ;                   they will not, and if the Station = 'ALL' then any
 | 
|---|
 | 65 |  ;                   claim will be include, if not 'All', but the
 | 
|---|
 | 66 |  ;                   station number then only 1 station is included.
 | 
|---|
 | 67 |  ;            CALL - Contains the calling menu.  This will be used
 | 
|---|
 | 68 |  ;                   to exclude the name from printing if the caller
 | 
|---|
 | 69 |  ;                   is 'U'nion.
 | 
|---|
 | 70 |  ; Output: RESULTS - the results array passes the data back to the
 | 
|---|
 | 71 |  ;                   client.
 | 
|---|
 | 72 |  N CN,DA,IEN,INCNA,OCC,PERSON,SDATE,STDT,STA,ENDDT,EDATE,X,Y
 | 
|---|
 | 73 |  N LOST,DOI,OOPS,TYPE
 | 
|---|
 | 74 |  K ^TMP($J,"NS")
 | 
|---|
 | 75 |  S CN=1,RESULTS(0)="Processing..."
 | 
|---|
 | 76 |  S STDT=$P($G(INPUT),U),ENDDT=$P($G(INPUT),U,2)
 | 
|---|
 | 77 |  S STA=$P($G(INPUT),U,3)
 | 
|---|
 | 78 |  S INCNA=$P($G(INPUT),U,4)
 | 
|---|
 | 79 |  I (STDT="")!(ENDDT="")!(STA="")!(INCNA="") D  Q
 | 
|---|
 | 80 |  . S RESULTS(0)="Input parameters missing, cannot run report." Q
 | 
|---|
 | 81 |  S (SDATE,EDATE)=""
 | 
|---|
 | 82 |  S X=STDT D ^%DT S SDATE=Y
 | 
|---|
 | 83 |  S X=ENDDT D ^%DT S EDATE=Y
 | 
|---|
 | 84 |  ; SDATE made last time in day prior so start date correct
 | 
|---|
 | 85 |  S SDATE=(SDATE-1)_".9999",EDATE=EDATE_".9999"
 | 
|---|
 | 86 |  S LP="",IEN=""
 | 
|---|
 | 87 |  F LP=SDATE:0 S LP=$O(^OOPS(2260,"AD",LP)) Q:(LP'>0)!(LP>EDATE)  D
 | 
|---|
 | 88 |  . F  S IEN=$O(^OOPS(2260,"AD",LP,IEN)) Q:IEN'>0  D
 | 
|---|
 | 89 |  .. ; exclude deleted, replaced by amendment cases
 | 
|---|
 | 90 |  .. I $$GET1^DIQ(2260,IEN,51,"I")>1 Q
 | 
|---|
 | 91 |  .. S STATION=$P(^OOPS(2260,IEN,"2162A"),U,9)
 | 
|---|
 | 92 |  .. I $G(STA)'="A",(STATION'=STA) Q
 | 
|---|
 | 93 |  .. ; if Type Incident not = Hollow Bore Needlestick, Sharps Exposure,
 | 
|---|
 | 94 |  .. ; Exposure to Body Fluids/Splash, Suture Needlestick don't include
 | 
|---|
 | 95 |  .. S TYPE=$$GET1^DIQ(2260,IEN,3,"I")
 | 
|---|
 | 96 |  .. I TYPE<11!(TYPE>14) Q
 | 
|---|
 | 97 |  .. ; now get the data and put in array.
 | 
|---|
 | 98 |  .. K OOPS,ARR S DIC="^OOPS(2260,"
 | 
|---|
 | 99 |  .. S DR=".01;1;3;4;15;14;29;30;33;37;38;51;52;82;86;108"
 | 
|---|
 | 100 |  .. S DA=IEN,DIQ="OOPS",DIQ(0)="IE" D EN^DIQ1
 | 
|---|
 | 101 |  .. S DOI=OOPS(2260,IEN,4,"E")
 | 
|---|
 | 102 |  .. ; PER A. BIERENBAUM, USE OCC DESC 5/13/02
 | 
|---|
 | 103 |  .. S OCC=$$OCCDESC(IEN)
 | 
|---|
 | 104 |  .. ; S OCC=$E(OOPS(2260,IEN,15,"E"),1,4)
 | 
|---|
 | 105 |  .. ; patch 7 remove lost time
 | 
|---|
 | 106 |  .. ; S LOST=OOPS(2260,IEN,33,"E")
 | 
|---|
 | 107 |  .. S INJILL=OOPS(2260,IEN,52,"I")
 | 
|---|
 | 108 |  .. S INJILL=$S(INJILL=1:"Injury",INJILL=2:"Illness",1:"")
 | 
|---|
 | 109 |  .. ; patch 7 - only print privacy case in name field - all cases
 | 
|---|
 | 110 |  .. S PERSON="Privacy Case"
 | 
|---|
 | 111 |  .. ; S PERSON=OOPS(2260,IEN,1,"E")
 | 
|---|
 | 112 |  .. I CALL="Union"!(INCNA="N") S PERSON=""
 | 
|---|
 | 113 |  .. S ARR=IEN_U_OOPS(2260,IEN,.01,"E")_U_DOI_U_PERSON_U_INJILL_U
 | 
|---|
 | 114 |  .. S ARR=ARR_OOPS(2260,IEN,51,"E")_U_OCC_U_$E(OOPS(2260,DA,14,"E"),1,4)
 | 
|---|
 | 115 |  .. S ARR=ARR_U_OOPS(2260,IEN,86,"E")_U
 | 
|---|
 | 116 |  .. S ARR=ARR_OOPS(2260,IEN,3,"E")_U_OOPS(2260,IEN,108,"E")
 | 
|---|
 | 117 |  .. S ARR=ARR_U_OOPS(2260,IEN,30,"E")_U_$E(OOPS(2260,IEN,29,"E"),1,45)_U
 | 
|---|
 | 118 |  .. S ARR=ARR_$E(OOPS(2260,IEN,37,"E"),1,50)_U
 | 
|---|
 | 119 |  .. S ARR=ARR_$E(OOPS(2260,IEN,38,"E"),1,50)_U_OOPS(2260,IEN,82,"E")
 | 
|---|
 | 120 |  .. S ^TMP($J,"NS",CN)=ARR K ARR
 | 
|---|
 | 121 |  .. S CN=CN+1
 | 
|---|
 | 122 |  S RESULTS=$NA(^TMP($J,"NS"))
 | 
|---|
 | 123 |  Q
 | 
|---|
 | 124 | OCCDESC(IEN) ;Get Occupation Description
 | 
|---|
 | 125 |  ;
 | 
|---|
 | 126 |  ;  Input:  IEN - IEN of the ASISTS Case number to get the Occ Desc
 | 
|---|
 | 127 |  ; Output:      - will be the Occupation description
 | 
|---|
 | 128 |  ;
 | 
|---|
 | 129 |  N INC,FLD
 | 
|---|
 | 130 |  S INC=$$GET1^DIQ(2260,IEN,52,"I")
 | 
|---|
 | 131 |  S FLD=$S(INC=1:111,INC=2:208,1:"")
 | 
|---|
 | 132 |  I 'FLD Q ""
 | 
|---|
 | 133 |  Q $$GET1^DIQ(2260,IEN,FLD)
 | 
|---|
 | 134 | DSPUTE ; Reason for Dispute Report - called from DSPUTE^OOPSGUIR
 | 
|---|
 | 135 |  ; code in DSPUTE^OOPSGUIF requires case to be a CA1
 | 
|---|
 | 136 |  N BLK36,DIS,DSPCD,F174
 | 
|---|
 | 137 |  S F174=$$GET1^DIQ(2260,IEN,174,"I")      ; determines lost time or not
 | 
|---|
 | 138 |  S F174=$S(F174=3:"LT",1:"NLT")
 | 
|---|
 | 139 |  S DIS=$$GET1^DIQ(2260,IEN,165.2,"I"),DSPCD=$$GET1^DIQ(2260,IEN,347)
 | 
|---|
 | 140 |  I $G(DIS)="" S DIS="N"
 | 
|---|
 | 141 |  I DIS="N" S DSPCD="zCase not disputed, no dispute code expected"
 | 
|---|
 | 142 |  I (DIS="Y"),DSPCD="" S DSPCD="zCase disputed, no dispute code entered"
 | 
|---|
 | 143 |  ;if data in State the reason in detail question and case controverted
 | 
|---|
 | 144 |  ;don't count, otherwise report number of entries in free text field
 | 
|---|
 | 145 |  S BLK36=""
 | 
|---|
 | 146 |  I DIS="Y",($P($G(^OOPS(2260,IEN,"CA1K",0)),U,3)) D
 | 
|---|
 | 147 |  .I $$GET1^DIQ(2260,IEN,165.1,"I")="Y" Q
 | 
|---|
 | 148 |  .S BLK36="zBlk 36 also has text entered"
 | 
|---|
 | 149 |  S:'$D(ARR(DSPCD,F174)) ARR(DSPCD,F174)=0
 | 
|---|
 | 150 |  S ARR(DSPCD,F174)=ARR(DSPCD,F174)+1
 | 
|---|
 | 151 |  I BLK36'="" D
 | 
|---|
 | 152 |  .S:'$D(ARR(BLK36,F174)) ARR(BLK36,F174)=0
 | 
|---|
 | 153 |  .S ARR(BLK36,F174)=ARR(BLK36,F174)+1
 | 
|---|
 | 154 |  Q
 | 
|---|