| [613] | 1 | OOPSGUIS ;WIOFO/LLH-RPC Broker calls for GUI ;03/25/04 | 
|---|
|  | 2 | ;;2.0;ASISTS;**8,11**;Jun 03, 2002 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | STA(RESULTS) ; Get listing of Stations from Edit Site Parameter | 
|---|
|  | 5 | ; | 
|---|
|  | 6 | ; Output:  RESULTS contains a listing or all stations listed in the | 
|---|
|  | 7 | ;          Edit Site Parameter file.  This list will be used for | 
|---|
|  | 8 | ;          selecting a station from any field that expects an entry | 
|---|
|  | 9 | ;          from the Institution file.  If no stations exist, then | 
|---|
|  | 10 | ;          a call will automatically be made to GETINST^OOPSGUI7 | 
|---|
|  | 11 | ;          to use the rpc to get all the stations. | 
|---|
|  | 12 | ; | 
|---|
|  | 13 | N ARR,CN,FAC,IFLAG,SNAME,SNUM,SP,STA,VAL | 
|---|
|  | 14 | K ^TMP("OOPSINST",$J) | 
|---|
|  | 15 | S (CN,SP)=0 | 
|---|
|  | 16 | F  S SP=$O(^OOPS(2262,SP)) Q:SP=""  S STA=0 D | 
|---|
|  | 17 | .F  S STA=$O(^OOPS(2262,SP,STA)) Q:STA'>0  S IEN=0 D | 
|---|
|  | 18 | ..F  S IEN=$O(^OOPS(2262,SP,STA,IEN)) Q:IEN'>0  D | 
|---|
|  | 19 | ...S FAC=$P($G(^OOPS(2262,SP,STA,IEN,0)),U,1) | 
|---|
|  | 20 | ...I '$G(FAC) Q | 
|---|
|  | 21 | ...; have station #, now go to the institution file and get the info | 
|---|
|  | 22 | ...I $$GET1^DIQ(4,FAC,101)=1 Q           ; FAC inactive, don't get | 
|---|
|  | 23 | ...S SNAME=$$GET1^DIQ(4,FAC,.01) I $G(SNAME)="" Q | 
|---|
|  | 24 | ...S SNUM=$$GET1^DIQ(4,FAC,99) | 
|---|
|  | 25 | ...S VAL=SNAME_" = "_SNUM | 
|---|
|  | 26 | ...S CN=CN+1,^TMP("OOPSINST",$J,CN)=FAC_":"_VAL_$C(10) | 
|---|
|  | 27 | S CN=CN+1,^TMP("OOPSINST",$J,CN)="999999:All Stations" | 
|---|
|  | 28 | I CN=1 D GETINST^OOPSGUI7(.ARR) Q   ; if only entry = all get all | 
|---|
|  | 29 | S RESULTS=$NA(^TMP("OOPSINST",$J)) | 
|---|
|  | 30 | Q | 
|---|
|  | 31 | ; | 
|---|
|  | 32 | SIGNCA7(RESULTS,INPUT,SIGN) ; Validates Electronic Signature and creates | 
|---|
|  | 33 | ;                         validation code to ensure data not changed | 
|---|
|  | 34 | ;  Input:   INPUT - FILE^FIELD^IEN where File and Field are the file | 
|---|
|  | 35 | ;                   and field the data is being filed into and IEN | 
|---|
|  | 36 | ;                   is the internal record number. | 
|---|
|  | 37 | ;            SIGN - the electronic signature to be encrypted | 
|---|
|  | 38 | ; Output: RESULTS - is an array containing a list of fields that did | 
|---|
|  | 39 | ;                   not pass data validation prior to applying the ES. | 
|---|
|  | 40 | ; | 
|---|
|  | 41 | N CALL,CHKSUM,IEN,ESIG,FILE,FLD,FLD48,FLD84,FLD95,FLD96,FLD97,REC,REC1 | 
|---|
|  | 42 | N SIGNBLK,VALID,VER,DR,DA,DIE | 
|---|
|  | 43 | S RESULTS="SIGNED" | 
|---|
|  | 44 | S FILE=$P($G(INPUT),U),FLD=$P($G(INPUT),U,2),IEN=$P($G(INPUT),U,3) | 
|---|
|  | 45 | I '$G(IEN)!('$G(FILE))!('$G(FLD)) S RESULTS(1)="Invalid Parameters" Q | 
|---|
|  | 46 | I $G(SIGN)="" S RESULTS="No signature passed in" Q | 
|---|
|  | 47 | S CALL=$S(FLD=48:"E",FLD=84:"W",1:"") | 
|---|
|  | 48 | I CALL="" S RESULTS="Invalid field number" Q | 
|---|
|  | 49 | ; S VALID=0 D CHKFLD(IEN,CALL.VALID) I 'VALID Q | 
|---|
|  | 50 | S ESIG=$$HASH($$DECRYP^XUSRB1(SIGN)) | 
|---|
|  | 51 | I $G(ESIG)=""!(ESIG'=$P($G(^VA(200,DUZ,20)),U,4)="") D  Q | 
|---|
|  | 52 | . S RESULTS="Invalid Electronic Signature" | 
|---|
|  | 53 | S SIGNBLK=$P($G(^VA(200,DUZ,20)),U,2) | 
|---|
|  | 54 | I SIGNBLK="" S RESULTS="No signature block on file" Q | 
|---|
|  | 55 | K DR S DIE="^OOPS("_FILE_",",DA=IEN | 
|---|
|  | 56 | D NOW^%DTC S DTIME=% | 
|---|
|  | 57 | I CALL="E" D | 
|---|
|  | 58 | .S REC=$G(^OOPS(FILE,IEN,0)),REC1=$G(^OOPS(FILE,IEN,"CA7S2")) | 
|---|
|  | 59 | .S CHKSUM=$$SUM(IEN_U_REC_U_REC1) | 
|---|
|  | 60 | .S FLD48=$$ENCODE(SIGNBLK,DUZ,CHKSUM),FLD96=1 | 
|---|
|  | 61 | .S FLD95=$$SUM(SIGNBLK) | 
|---|
|  | 62 | .S DR="47////^S X=+DUZ;48////^S X=FLD48;49////^S X=DTIME" | 
|---|
|  | 63 | .S DR=DR_";95////^S X=FLD95;96////^S X=FLD96" | 
|---|
|  | 64 | I CALL="W" D | 
|---|
|  | 65 | .S REC=$G(^OOPS(FILE,IEN,"CA7S10")),REC1=$G(^OOPS(FILE,IEN,"CA7S13")) | 
|---|
|  | 66 | .S CHKSUM=$$SUM(IEN_U_REC_U_REC1) | 
|---|
|  | 67 | .S FLD84=$$ENCODE(SIGNBLK,DUZ,CHKSUM) | 
|---|
|  | 68 | .S FLD97=$$SUM(SIGNBLK) | 
|---|
|  | 69 | .S DR="83////^S X=+DUZ;84////^S X=FLD84;85////^S X=DTIME" | 
|---|
|  | 70 | .S DR=DR_";97////^S X=FLD97" | 
|---|
|  | 71 | D ^DIE | 
|---|
|  | 72 | I $G(Y)'="" S RESULTS="Problem filing E-Signature" Q | 
|---|
|  | 73 | ; patch 11 - send bulletin when employee signs CA7 | 
|---|
|  | 74 | I CALL="E" D | 
|---|
|  | 75 | .N GRP,X0,STR | 
|---|
|  | 76 | .S X0=$P($G(^OOPS(2264,IEN,0)),U,5) | 
|---|
|  | 77 | .S STR=$G(^OOPS(2260,X0,0)) K XMY | 
|---|
|  | 78 | .S XMB(1)=$$GET1^DIQ(2260,X0,4) | 
|---|
|  | 79 | .S XMB(2)=$P(STR,U,1) | 
|---|
|  | 80 | .S XMB="OOPS EMPSIGNCA7" | 
|---|
|  | 81 | .S GRP="OOPS WCP" | 
|---|
|  | 82 | .D MFAC^OOPSMBUL | 
|---|
|  | 83 | .D ^XMB K XMB,XMY,XMM,XMDT | 
|---|
|  | 84 | Q | 
|---|
|  | 85 | HASH(X) ; | 
|---|
|  | 86 | D HASH^XUSHSHP | 
|---|
|  | 87 | Q X | 
|---|
|  | 88 | ENCODE(X,X1,X2) ; X=SIGN BLK, X1=DUZ, X2=CHKSUM CRITICAL FIELDS | 
|---|
|  | 89 | D EN^XUSHSHP | 
|---|
|  | 90 | Q X | 
|---|
|  | 91 | DECODE(RESULTS,IEN,CALL,FORM) ; | 
|---|
|  | 92 | ; Call to return electronic signature to readable form | 
|---|
|  | 93 | ;  Input:  IEN    - internal record number of CA7 case | 
|---|
|  | 94 | ;         CALL    - call menu - either E (Employee) or W (Workers Comp) | 
|---|
|  | 95 | ;         FORM    - form - right now only expects CA7 | 
|---|
|  | 96 | ; Output: RESULTS - readable electronic signature | 
|---|
|  | 97 | ; | 
|---|
|  | 98 | N FILE,NODE,REC,REC1,VAL,VALID,VER,X,X1,X2 | 
|---|
|  | 99 | S RESULTS="",VALID=1 | 
|---|
|  | 100 | I '$G(IEN)!($G(CALL)="")!($G(FORM)="") Q | 
|---|
|  | 101 | S (NODE,FILE,VER)="" | 
|---|
|  | 102 | I FORM="CA7" S FILE=2264 | 
|---|
|  | 103 | S NODE=$S(CALL="E":"CA7S7",CALL="W":"CA7S15",1:"") | 
|---|
|  | 104 | I FILE=""!(NODE="") Q | 
|---|
|  | 105 | S VER=$P($G(^OOPS(FILE,IEN,"CA7S7")),U,5) I VER'=1 Q | 
|---|
|  | 106 | I CALL="E" D | 
|---|
|  | 107 | .S VAL=$P($G(^OOPS(FILE,IEN,"CA7S7")),U,4) I VAL="" S VALID=0 | 
|---|
|  | 108 | .S REC=$G(^OOPS(FILE,IEN,0)),REC1=$G(^OOPS(FILE,IEN,"CA7S2")) | 
|---|
|  | 109 | I CALL="W" D | 
|---|
|  | 110 | .S VAL=$P($G(^OOPS(FILE,IEN,"CA7S15")),U,11) I VAL="" S VALID=0 | 
|---|
|  | 111 | .S REC=$G(^OOPS(FILE,IEN,"CA7S10")),REC1=$G(^OOPS(FILE,IEN,"CA7S13")) | 
|---|
|  | 112 | ; | 
|---|
|  | 113 | I 'VALID Q | 
|---|
|  | 114 | S X=$P($G(^OOPS(FILE,IEN,NODE)),U,2) I X="" Q       ; ES VALIDATION # | 
|---|
|  | 115 | S X1=$P($G(^OOPS(FILE,IEN,NODE)),U,1)               ; USER NUMBER | 
|---|
|  | 116 | S X2=$$SUM(IEN_U_REC_U_REC1)                        ; CHECKSUM | 
|---|
|  | 117 | D DE^XUSHSHP | 
|---|
|  | 118 | ; I $$SUM(X)'=VAL S X="DECODING FAILED" | 
|---|
|  | 119 | S RESULTS=X | 
|---|
|  | 120 | Q | 
|---|
|  | 121 | ; | 
|---|
|  | 122 | SUM(X) ;CALCULATE CHECKSUM VALUE FOR STRING | 
|---|
|  | 123 | N I,Y | 
|---|
|  | 124 | S Y=0 F I=1:1:$L(X) S Y=$A(X,I)*I+Y | 
|---|
|  | 125 | Q Y | 
|---|
|  | 126 | CLRES(IEN,CALL,FORM) ; Clear signature from CA7, if necessary | 
|---|
|  | 127 | ;   Input:  IEN - record IEN for CA7 | 
|---|
|  | 128 | ;          CALL - calling menu - either E (EMP) or W (Workers comp) | 
|---|
|  | 129 | ;          FORM - form where ES should be removed (now only CA7) | 
|---|
|  | 130 | N FILE,SIG,NODE,FIELD | 
|---|
|  | 131 | S (FILE,SIG,NODE,FIELD)="",RESULTS="FAILED" | 
|---|
|  | 132 | I ('$G(IEN)),($G(CALL)=""),($G(FORM)="") Q | 
|---|
|  | 133 | I FORM="CA7" S FILE=2264 | 
|---|
|  | 134 | I FILE=2264 D | 
|---|
|  | 135 | .I CALL="E" S SIG="CA7S7;1,5" | 
|---|
|  | 136 | .I CALL="W" S SIG="CA7S15;1,3" | 
|---|
|  | 137 | S NODE=$P(SIG,";") Q:NODE="" | 
|---|
|  | 138 | S FIELD=$P(SIG,";",2) | 
|---|
|  | 139 | I '$D(^OOPS(FILE,IEN,NODE)) Q | 
|---|
|  | 140 | F I=$P(FIELD,","):1:$P(FIELD,",",2) S $P(^OOPS(FILE,IEN,NODE),U,I)="" | 
|---|
|  | 141 | Q | 
|---|
|  | 142 | GETDLOC(RESULTS,INPUT) ; Get Detail Loc for specific incident setting | 
|---|
|  | 143 | ;  Input:  INPUT - File _"^"_Station IEN from a station in the | 
|---|
|  | 144 | ;                  site par file_"^"_rec ien from file to retrieve | 
|---|
|  | 145 | ;                  subfile information for. | 
|---|
|  | 146 | ; Output: RESULTS - listing of valid sub file data | 
|---|
|  | 147 | ; | 
|---|
|  | 148 | N CN,FIEN,FILE,I,REC,STA | 
|---|
|  | 149 | S CN=0 | 
|---|
|  | 150 | S FILE=$P($G(INPUT),U,1),STA=$P($G(INPUT),U,2),FIEN=$P($G(INPUT),U,3) | 
|---|
|  | 151 | I FILE=""!(STA="")!(FIEN="") D  Q | 
|---|
|  | 152 | . S ^TMP($J,"DLOC",CN)="MISSING PARAMETERS",RESULTS=$NA(^TMP($J,"DLOC")) | 
|---|
|  | 153 | S REC=$O(^OOPS(FILE,FIEN,1,"B",STA,"")) | 
|---|
|  | 154 | I '$G(REC) S ^TMP($J,"DLOC",CN)="NO DETAIL LOCATIONS LOADED",RESULTS=$NA(^TMP($J,"DLOC")) Q | 
|---|
|  | 155 | I '$D(^OOPS(FILE,"F",REC,FIEN)) D  Q | 
|---|
|  | 156 | .S ^TMP($J,"DLOC",CN)="NO DETAIL LOCATIONS LOADED",RESULTS=$NA(^TMP($J,"DLOC")) | 
|---|
|  | 157 | S DATA="" | 
|---|
|  | 158 | F  S DATA=$O(^OOPS(FILE,"F",REC,FIEN,DATA)) Q:DATA=""  S DATAIEN=0 D | 
|---|
|  | 159 | .S DATAIEN=$O(^OOPS(FILE,"F",REC,FIEN,DATA,DATAIEN)) | 
|---|
|  | 160 | .S ^TMP($J,"DLOC",CN)=DATA_U_DATAIEN,CN=CN+1 | 
|---|
|  | 161 | S RESULTS=$NA(^TMP($J,"DLOC")) | 
|---|
|  | 162 | Q | 
|---|