Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: DGRRLU2

DGRRLU2.m

Go to the documentation of this file.
  1. DGRRLU2 ;ALB/AAS - Patient Look-up log data, copied from DGSEC ;7/15/05 14:26
  1. ;;5.3;Registration;**538,1015**;Aug 13, 1993;Build 21
  1. ;
  1. NOTICE(RESULT,DFN,DGOPT,ACTION) ;RPC/API entry point for log entry and message generation
  1. ;Input parameters:
  1. ; DFN = Patient file DFN
  1. ; DGOPT = Java application name, needed for DG Security Log file and bulletin
  1. ; ACTION = 1 - Set DG Security Log entry, 2 - Generate mail
  1. ; message, 3 - Both (Optional - Defaults to both)
  1. ;
  1. ;Output: RESULT = 1 - DG Security Log updated and/or Sensitive Record msg sent (Determined by ACTION value)
  1. ; 0 - Required variable undefined
  1. ;
  1. I $G(DFN)="" S RESULT=0 Q
  1. I $G(^DPT(+DFN,0))="" S RESULT=0 Q
  1. I $G(DUZ)="" S RESULT=0 Q
  1. S DGOPT=$G(DGOPT)
  1. I $G(ACTION)="" S ACTION=3
  1. I ACTION'=1 D BULTIN1(DFN,DUZ,.DGOPT)
  1. I ACTION'=2 D SETLOG1(DFN,DUZ,,.DGOPT)
  1. S RESULT=1 ;_"^"_$G(DGOPT)
  1. Q
  1. ;
  1. SETLOG1(DFN,DGDUZ,DG1,DGOPT) ;Adds/updates entry in DG Security Log file (38.1)
  1. ;Input:
  1. ; DFN - Patient (#2) file DFN (Required)
  1. ; DGDUZ - New Person (#200) file IEN
  1. ; DG1 - Inpatient or Outpatient (Optional)
  1. ; DGOPT - Java Application name
  1. ;
  1. N DGA1,DGDATE,DGDTE,DGT,DGTIME,XQOPT
  1. ;Lock global
  1. LOCK L +^DGSL(38.1,+DFN):1 G:'$T LOCK
  1. ;Add new entry for patient if not found
  1. I '$D(^DGSL(38.1,+DFN,0)) D
  1. .S ^DGSL(38.1,+DFN,0)=+DFN
  1. .S ^DGSL(38.1,"B",+DFN,+DFN)=""
  1. .S $P(^DGSL(38.1,0),U,3)=+DFN
  1. .S $P(^DGSL(38.1,0),U,4)=$P(^DGSL(38.1,0),U,4)+1
  1. .;Determine if entry is automatically sensitive
  1. .N ELIG,FLAG,X
  1. .S FLAG=0
  1. .S X=$S($D(^DPT(+DFN,"TYPE")):+^("TYPE"),1:"")
  1. .I $D(^DG(391,+X,0)),$P(^(0),"^",4) S FLAG=1
  1. .I 'FLAG S ELIG=0 F S ELIG=$O(^DPT(+DFN,"E",ELIG)) Q:'ELIG D Q:FLAG
  1. ..S X=$G(^DIC(8,ELIG,0))
  1. ..I $P(X,"^",12) S FLAG=1
  1. .S $P(^DGSL(38.1,+DFN,0),"^",2)=FLAG
  1. .;Date/time sensitivity was set
  1. .S $P(^DGSL(38.1,+DFN,0),"^",4)=$$NOW^XLFDT()
  1. ;determine if an inpatient
  1. D H^DGUTL
  1. S DGT=DGTIME
  1. I $G(DG1)="" D ^DGPMSTAT
  1. ;get option name
  1. I $G(DGOPT)="" SET DGOPT="From Java Patient Lookup"
  1. ;I $G(DGOPT)="" D OP^XQCHK S DGOPT=$S(+XQOPT<0:"^UNKNOWN",1:$P(XQOPT,U)_U_$P(XQOPT,U,2))
  1. SETUSR ;
  1. S DGDTE=9999999.9999-DGTIME
  1. I $D(^DGSL(38.1,+DFN,"D",DGDTE,0)) S DGTIME=DGTIME+.00001 G SETUSR
  1. S:'$D(^DGSL(38.1,+DFN,"D",0)) ^(0)="^38.11DA^^"
  1. S ^DGSL(38.1,+DFN,"D",DGDTE,0)=DGTIME_U_DGDUZ_U_DGOPT_U_$S(DG1:"y",1:"n")
  1. S $P(^(0),U,3,4)=DGDTE_U_($P(^DGSL(38.1,+DFN,"D",0),U,4)+1)
  1. S ^DGSL(38.1,"AD",DGDTE,+DFN)=""
  1. S ^DGSL(38.1,"AU",+DFN,DGDUZ,DGDTE)=""
  1. L -^DGSL(38.1,+DFN)
  1. Q
  1. ;
  1. BULTIN1(DFN,DGDUZ,DGOPT,DGMSG) ;Generate sensitive record access bulletin
  1. ;
  1. ;Input: DFN = Patient file IEN
  1. ; DGDUZ = New Person (#200) file IEN
  1. ; DGOPT = OPTION from Java
  1. ; DGMSG = Message array (Optional)
  1. ;
  1. N DGEMPLEE,XMSUB,XQOPT
  1. K DGB
  1. ;I $D(^DG(43,1,"NOT")),+$P(^("NOT"),U,10) S DGB=10
  1. ;Q:'$D(DGB)
  1. S XMSUB="RESTRICTED PATIENT RECORD ACCESSED"
  1. ;S DGB=+$P($G(^DG(43,1,"NOT")),U,DGB) Q:'DGB
  1. ;S DGB=$P($G(^XMB(3.8,DGB,0)),U) Q:'$L(DGB)
  1. S DGB=$$GET1^DIQ(43,1,509)
  1. Q:'$L(DGB)
  1. ;
  1. I $G(DGOPT)="" SET DGOPT="From Java Patient Lookup"
  1. N XMB,XMY,XMY0,XMZ
  1. S XMB="DG SENSITIVITY",XMB(1)=$P(^DPT(+DFN,0),U)
  1. S DGEMPLEE=$$EMPL^DGSEC4(+DFN)
  1. I DGEMPLEE=1 S XMB(1)=XMB(1)_" (Employee)"
  1. S XMB(2)=$P(^DPT(+DFN,0),U,9),XMB(3)=DGOPT,XMY("G."_DGB)=""
  1. N Y S Y=$$NOW^XLFDT() X ^DD("DD") S XMB(4)=Y
  1. D SEND(.XMB,.XMY)
  1. S DGMSG(1)="NOTE: A bulletin will now be sent to your station security officer."
  1. Q
  1. ;
  1. SEND(XMB,XMY) ;Queue mail bulletin
  1. ;Input: XMB,XMY=Mailman bulletin parameters
  1. ;
  1. N ZTSK,ZTRTN,ZTDESC,ZTIO,ZTDTH,ZTSAVE,DGI,X,Y
  1. F DGI="XMB","XMB(","XMY(" S ZTSAVE(DGI)=""
  1. S ZTRTN="EN^XMB",ZTDESC="DG Security Bulletin",ZTIO="",ZTDTH=$H
  1. D ^%ZTLOAD
  1. Q
  1. TEST4 ;
  1. N RESULT
  1. SET RESULT=""
  1. D NOTICE(.RESULT,40,"ALAN TEST",3)
  1. W !,"Result = ",RESULT
  1. Q