1 | ORQPT2 ; HIRMFO/DAD-Patient Look-Up Security Check and Notification ;1/31/97 07:57
|
---|
2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;;Dec 17, 1997
|
---|
3 | ;
|
---|
4 | EN1(ORDFN) ;
|
---|
5 | ; Sensitive Patient record check
|
---|
6 | ; Input
|
---|
7 | ; ORDFN = Pointer to the Patient file (#2)
|
---|
8 | ; Output
|
---|
9 | ; 0 - Patient record IS NOT sensitive
|
---|
10 | ; 1 - Patient record IS sensitive
|
---|
11 | ;
|
---|
12 | Q ''$$GET1^DIQ(38.1,+$G(ORDFN),2,"I")
|
---|
13 | ;
|
---|
14 | EN2(ORDFN) ;
|
---|
15 | ; Update DG Security Log file (#38.1) and sends
|
---|
16 | ; the 'Restricted Patient Accessed' bulletin to the
|
---|
17 | ; mailgroup specified in the 'Sensitive Rec Accessed
|
---|
18 | ; Group' field (43,509)
|
---|
19 | ; Input
|
---|
20 | ; ORDFN = Pointer to the Patient file (#2)
|
---|
21 | ; Output
|
---|
22 | ; None
|
---|
23 | ;
|
---|
24 | I $S($G(ORDFN)'>0:1,$G(DUZ)'>0:1,1:'$$EN1(ORDFN)) Q
|
---|
25 | ;
|
---|
26 | N DFN,DG1,DGA1,DGT,DGXFR0
|
---|
27 | N ORINPT,ORINVNOW,ORMAILGR,ORNOW,OROPT
|
---|
28 | N X,XQOPT
|
---|
29 | ;
|
---|
30 | D OP^XQCHK
|
---|
31 | S OROPT=$S(+XQOPT<0:"^UNKNOWN",1:$P(XQOPT,U)_U_$P(XQOPT,U,2))
|
---|
32 | S ORNOW=$E($$NOW^XLFDT,1,12)
|
---|
33 | S DFN=ORDFN,DGT=ORNOW D EN^DGPMSTAT S ORINPT=$S(DG1:"y",1:"n")
|
---|
34 | S ORMAILGR=$$GET1^DIQ(43,1,509)
|
---|
35 | ;
|
---|
36 | I ORINPT="n",'$D(^XUSEC("DG SENSITIVITY",DUZ)),ORMAILGR]"" D
|
---|
37 | . N ORTEXT,XMCHAN,XMDUZ,XMSUB,XMTEXT,XMY,XMZ
|
---|
38 | . S XMSUB="RESTRICTED PATIENT RECORD ACCESSED"
|
---|
39 | . S XMY("G."_ORMAILGR)=""
|
---|
40 | . S XMTEXT="ORTEXT("
|
---|
41 | . S XMDUZ=DUZ
|
---|
42 | . S XMCHAN=1
|
---|
43 | . S ORTEXT(1)="The following sensitive patient record has been accessed:"
|
---|
44 | . S ORTEXT(2)=""
|
---|
45 | . S ORTEXT(3)=" Patient Name: "_$$GET1^DIQ(2,ORDFN,.01)
|
---|
46 | . S ORTEXT(4)=" Soc Sec Num : "_$$GET1^DIQ(2,ORDFN,.09)
|
---|
47 | . S ORTEXT(5)=" Option Used : "_$P(OROPT,U,2)
|
---|
48 | . D ^XMD
|
---|
49 | . Q
|
---|
50 | ;
|
---|
51 | F L +^DGSL(38.1,ORDFN):1 Q:$T
|
---|
52 | ;
|
---|
53 | I '$D(^DGSL(38.1,ORDFN)) D
|
---|
54 | . N ORFDA,ORIEN,ORMSG
|
---|
55 | . S ORFDA(38.1,"+1,",.01)=ORDFN
|
---|
56 | . S ORIEN(1)=ORDFN
|
---|
57 | . D UPDATE^DIE("","ORFDA","ORIEN","ORMSG")
|
---|
58 | . Q
|
---|
59 | F S ORINVNOW=9999999.9999-ORNOW Q:'$D(^DGSL(38.1,ORDFN,"D",ORINVNOW)) S ORNOW=ORNOW+.00001
|
---|
60 | N ORFDA,ORIEN,ORMSG
|
---|
61 | S ORFDA(38.11,"+1,"_ORDFN_",",.01)=ORNOW
|
---|
62 | S ORFDA(38.11,"+1,"_ORDFN_",",2)=DUZ
|
---|
63 | S ORFDA(38.11,"+1,"_ORDFN_",",3)=$P(OROPT,U,2)
|
---|
64 | S ORFDA(38.11,"+1,"_ORDFN_",",4)=ORINPT
|
---|
65 | S ORIEN(1)=ORINVNOW
|
---|
66 | D UPDATE^DIE("","ORFDA","ORIEN","ORMSG")
|
---|
67 | ;
|
---|
68 | L -^DGSL(38.1,ORDFN)
|
---|
69 | ;
|
---|
70 | S X="MPRCHK" X ^%ZOSF("TEST") I $T D EN^MPRCHK(ORDFN)
|
---|
71 | ;
|
---|
72 | Q
|
---|
73 | ;
|
---|
74 | CWAD(DFN) ;
|
---|
75 | ; Crisis notes, clinical Warnings, Allergies, advance Directives
|
---|
76 | ; Input:
|
---|
77 | ; DFN = A Patient file (#2) IEN
|
---|
78 | ; Output:
|
---|
79 | ; A string of 0-4 nonrepeating characters consisting
|
---|
80 | ; of the letters C,W,A,D. The string will be returned
|
---|
81 | ; with the letters in the order shown.
|
---|
82 | ;
|
---|
83 | I $G(DFN)'>0 Q ""
|
---|
84 | N ACRN,CTR,ORLST,MSG
|
---|
85 | D ENCOVER^TIUPP3(DFN)
|
---|
86 | ; ORLST initialized with lower case 'cwad' to generate
|
---|
87 | ; correct ordering of letters. Lower case letter indicates
|
---|
88 | ; that the patient does not have that item. Upper case
|
---|
89 | ; indicates that the patient has the item.
|
---|
90 | S ORLST="cwad"
|
---|
91 | S CTR=0
|
---|
92 | F S CTR=$O(^TMP("TIUPPCV",$J,CTR)) Q:(CTR'>0)!(ORLST?4U) D
|
---|
93 | . S ACRN=$P($G(^TMP("TIUPPCV",$J,CTR)),U,2)
|
---|
94 | . ; If patient has item, convert item to uppercase
|
---|
95 | . I "^C^W^A^D^"[(U_ACRN_U) S ORLST=$TR(ORLST,$C($A(ACRN)+32),ACRN)
|
---|
96 | . Q
|
---|
97 | K ^TMP("TIUPPCV",$J)
|
---|
98 | ; Remove any remaining lower case items
|
---|
99 | S ORLST=$TR(ORLST,"cwad")
|
---|
100 | Q ORLST
|
---|