1 | DGSEC1 ;ALB/RMO-MAS Security Options ;7/24/99 23:48
|
---|
2 | ;;5.3;Registration;**222,149,214**;Aug 13, 1993
|
---|
3 | N I,X,DIK
|
---|
4 | G:$D(^DOPT("DGSEC1",4)) A S ^DOPT("DGSEC1",0)="Security Menu Options^1N^" F I=1:1 S X=$T(@(I)+1) Q:X="" S ^DOPT("DGSEC1",I,0)=$P(X,";;",2,99)
|
---|
5 | S DIK="^DOPT(""DGSEC1""," D IXALL^DIK
|
---|
6 | A N DIC,Y,X
|
---|
7 | W !! S DIC="^DOPT(""DGSEC1"",",DIC(0)="AEQM" D ^DIC Q:Y<0 D @+Y G A
|
---|
8 | 1 ;
|
---|
9 | ;;Enter/Edit Patient Security Level
|
---|
10 | N DA,DLAYGO,DR,DIC,X,Y
|
---|
11 | I '$D(^XUSEC("DG SENSITIVITY",DUZ)) W !!?3,$C(7),"You do not have the appropriate access privileges to assign security." Q
|
---|
12 | S DIC("A")="Select PATIENT NAME: ",DIC="^DGSL(38.1,",DLAYGO=38.1,DIC(0)="AELMQ",DGSENFLG="" W ! D ^DIC K DIC("A"),DGSENFLG Q:Y<0
|
---|
13 | S DA=+Y
|
---|
14 | ;
|
---|
15 | ; warn user if attempting to edit security level from remote source
|
---|
16 | N SECSRCE,OK
|
---|
17 | S SECSRCE=$P($G(^DGSL(38.1,DA,0)),"^",5)
|
---|
18 | I SECSRCE'="" D G:'OK 1
|
---|
19 | .W !!?3,$C(7),">>> WARNING: The source that assigned this patient's security level"
|
---|
20 | .W !,?16,"is '"_$S(SECSRCE="AAC":"VBA",1:"UNKNOWN")_"'. Editing the patient security level will"
|
---|
21 | .W !,?16,"cause the security source to be deleted.",!
|
---|
22 | .S OK=$$RUSURE()
|
---|
23 | ;
|
---|
24 | N SENSBEF,SENSAFTR
|
---|
25 | S SENSBEF=$P($G(^DGSL(38.1,DA,0)),"^",2)
|
---|
26 | S DIE="^DGSL(38.1,"
|
---|
27 | S DR="2;3////"_DUZ_";4///NOW"
|
---|
28 | I SECSRCE'="",$G(OK) S DR=DR_";5////@"
|
---|
29 | D ^DIE
|
---|
30 | K DE,DQ,DIE
|
---|
31 | S SENSAFTR=$P($G(^DGSL(38.1,DA,0)),"^",2)
|
---|
32 | ;
|
---|
33 | ;CIRN CHANGES
|
---|
34 | I SENSBEF'=SENSAFTR D SECA08^VAFCDD01(DA)
|
---|
35 | K SENSBEF,SENSAFTR
|
---|
36 | G 1
|
---|
37 | ;
|
---|
38 | BULTIN ;This bulletin is sent if a patient's sensitivity is removed.
|
---|
39 | N SECSRCE,SUB,DIC,X,Y S SUB=1
|
---|
40 | K DGB I $D(^DG(43,1,"NOT")),+$P(^("NOT"),"^",11) S DGB=11
|
---|
41 | Q:'$D(DGB)
|
---|
42 | S DGB=+$P($G(^DG(43,1,"NOT")),U,DGB) Q:'DGB
|
---|
43 | S DGB=$P($G(^XMB(3.8,DGB,0)),U) Q:'$L(DGB)
|
---|
44 | N XMB,XMY,XMY0,XMZ,DGI
|
---|
45 | S XMB="DG SENSITIVITY REMOVED" S Y=$$NOW^XLFDT() X ^DD("DD") S XMB(7)=Y
|
---|
46 | S XMB(1)="UNKNOWN",X=+$P(^DGSL(38.1,DA,0),"^",3) I X D
|
---|
47 | .S DIC="^VA(200,",DIC(0)="MO",X="`"_X D ^DIC
|
---|
48 | .S:Y>0 XMB(1)=$P(Y,U,2) S:XMB(1)="" XMB(1)="UNKNOWN"
|
---|
49 | .Q
|
---|
50 | S XMB(2)=$S($D(^DPT(DA,0)):$P(^(0),"^")_" ("_$P(^(0),"^",9)_")",1:"UNKNOWN")
|
---|
51 | F DGI=3:1:6 S XMB(DGI)=""
|
---|
52 | S SECSRCE=$P($G(^DGSL(38.1,DA,0)),"^",5) I SECSRCE'="" D
|
---|
53 | .S XMB(3)=" >>> WARNING: The source of the patient sensitivity"
|
---|
54 | .S XMB(4)=" removed was "_$S(SECSRCE="AAC":"VBA",1:"UNKNOWN")
|
---|
55 | I $D(^DGSL(38.1,DA,0)),'$O(^("D",0)) D
|
---|
56 | .S XMB(5)="No record of user access, patient should be removed"
|
---|
57 | .S XMB(6)="from the security log."
|
---|
58 | S XMY("G."_DGB)="" D SEND^DGSEC(.XMB,.XMY)
|
---|
59 | Q
|
---|
60 | 2 ;
|
---|
61 | ;;Display User Access to Patient Record
|
---|
62 | G ^DGSEC2
|
---|
63 | 3 ;
|
---|
64 | ;;Purge Record of User Access from Security Log
|
---|
65 | G ^DGSEC3
|
---|
66 | 4 ;
|
---|
67 | ;;Purge Non-sensitive Patients from Security Log
|
---|
68 | I '$D(^XUSEC("DG SECURITY OFFICER",DUZ)) W !!?3,$C(7),"You do not have the appropriate access privileges to purge patients." Q
|
---|
69 | ASKPUR N %
|
---|
70 | W !!,"Are you sure you want to purge all non-sensitive patients" S %=2 D YN^DICN G Q:%<0!(%=2)
|
---|
71 | I '% W !!,"Enter 'YES' to purge non-sensitive patients, or 'NO' to exit this process." G ASKPUR
|
---|
72 | ;
|
---|
73 | ASKPRT W !!,"Do you want to print patients as they are purged" S %=2 D YN^DICN G Q:%<0 S DGPRT=$S(%=2:"QUE",1:"") I '% W !!,"Enter 'YES' to print patients being purged, or 'NO' to schedule purge." G ASKPRT
|
---|
74 | S DGPGM="PURNON^DGSEC1",DGVAR="DGPRT^DUZ" I DGPRT="" W ! D ZIS^DGUTQ G Q:POP,PURNON
|
---|
75 | I DGPRT="QUE" S ION="" W ! D QUE^DGUTQ G Q
|
---|
76 | ;
|
---|
77 | PURNON N DIC,Y
|
---|
78 | I DGPRT="" S DGCNT=0 W !!,"Purge Non-sensitive Patients from Security Log started " D H^DGUTL S Y=DGTIME D DT^DIQ W ".",!
|
---|
79 | F DFN=0:0 S DFN=$O(^DGSL(38.1,"ANS",DFN)) Q:'DFN I $D(^DGSL(38.1,DFN,0)),'$P(^(0),"^",2) S DA=DFN,DIK="^DGSL(38.1," D ^DIK I DGPRT="" W !," ...",$S($D(^DPT(DFN,0)):$P(^(0),"^")_" ("_$P(^(0),"^",9)_")",1:"Unknown") S DGCNT=DGCNT+1
|
---|
80 | I DGPRT="" W !!,"Purge completed " D H^DGUTL S Y=DGTIME D DT^DIQ W ". ","Number of records purged: ",DGCNT
|
---|
81 | ;
|
---|
82 | Q K DFN,DGCNT,DGPGM,DGPRT,DGVAR,POP D CLOSE^DGUTQ
|
---|
83 | Q
|
---|
84 | ;
|
---|
85 | ;
|
---|
86 | RUSURE() ; Description: Asks user if they are sure they want to edit the DG SECURITY LOG record.
|
---|
87 | ;
|
---|
88 | N DIR,DIRUT,X,Y
|
---|
89 | S DIR(0)="Y"
|
---|
90 | S DIR("A")="Are you sure that you want to edit the patient's security level"
|
---|
91 | S DIR("B")="NO"
|
---|
92 | D ^DIR
|
---|
93 | Q:$D(DIRUT) 0
|
---|
94 | Q Y
|
---|