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
|
---|