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

BDGSECL.m

Go to the documentation of this file.
  1. BDGSECL ; IHS/ANMC/LJF - LIST SENSITIVE PATIENTS ;
  1. ;;5.3;PIMS;;APR 26, 2002
  1. ;
  1. EN ; -- main entry point for BDG SECURITY LIST
  1. NEW VALMCNT
  1. D TERM^VALM0
  1. D EN^VALM("BDG SECURITY LIST")
  1. D CLEAR^VALM1
  1. Q
  1. ;
  1. HDR ; -- header code
  1. NEW X
  1. S X="Patients stored in DG SECURITY LOG file as of "_$$FMTE^XLFDT(DT)
  1. S VALMHDR(1)=$$SP(10)_X
  1. Q
  1. ;
  1. INIT ; -- init variables and list array
  1. NEW DGN,NAME,STATUS,DATA,LINE,DGNUM
  1. K ^TMP("BDGSECL",$J),^TMP("BDGSECL1",$J)
  1. S VALMCNT=0
  1. ;
  1. ; find all entries and sort by status and then by name
  1. S (DGN,DGNUM)=0
  1. F S DGN=$O(^DGSL(38.1,DGN)) Q:'DGN D
  1. . S NAME=$$GET1^DIQ(38.1,DGN,.01),STATUS=$$GET1^DIQ(38.1,DGN,2)
  1. . Q:STATUS'="SENSITIVE"
  1. . ; assigned by (initials)
  1. . S X=$$GET1^DIQ(200,+$$GET1^DIQ(38.1,DGN,3,"I"),1)
  1. . ; date assigned status
  1. . S Y=$$FMTE^XLFDT($$GET1^DIQ(38.1,DGN,4,"I"))
  1. . S ^TMP("BDGSECL1",$J,NAME,DGN)=X_U_Y
  1. ;
  1. ; if file is empty, set message and quit
  1. I '$D(^TMP("BDGSECL1",$J)) D SET("No PATIENTS currently or previously defined as SENSITIVE",0,.VALMCNT,0) Q
  1. ;
  1. ; otherwise, set display lines per sorts
  1. S NAME=0 F S NAME=$O(^TMP("BDGSECL1",$J,NAME)) Q:NAME="" D
  1. . S DGN=0 F S DGN=$O(^TMP("BDGSECL1",$J,NAME,DGN)) Q:'DGN D
  1. .. S DATA=^TMP("BDGSECL1",$J,NAME,DGN)
  1. .. ; create display line
  1. .. S DGNUM=DGNUM+1 ;entry # on display screen
  1. .. S LINE=$J(DGNUM,3)_". "_$E(NAME,1,20) ;#. pat name
  1. .. S LINE=$$PAD(LINE,28)_$P(DATA,U,2) ;date
  1. .. S LINE=$$PAD(LINE,50)_$P(DATA,U) ;assigned by
  1. .. D SET(LINE,DGN,.VALMCNT,.DGNUM) ;add display line to list global
  1. ;
  1. K ^TMP("BDGSECL1",$J)
  1. Q
  1. ;
  1. HELP ; -- help code
  1. S X="?" D DISP^XQORM1 W !!
  1. Q
  1. ;
  1. EXIT ; -- exit code
  1. K VALMCNT,^TMP("BDGSECL",$J)
  1. Q
  1. ;
  1. EXPND ; -- expand code
  1. Q
  1. ;
  1. DISPLAY ;EP; -- called by protocol to display access records for patient
  1. D FULL^VALM1
  1. I '$D(^XUSEC("DG SECURITY OFFICER",DUZ)) W !!?3,*7,"You do not have the appropriate access privileges to display user access." D PAUSE^BDGF,RESET2 Q
  1. NEW BDGI
  1. S BDGI=$$GETITEM^BDGFL("BDGSECL","OS") ;choose entry to display
  1. I 'BDGI D RESET2 Q ;or go back
  1. S DFN=$$GET1^DIQ(38.1,+BDGI,.01,"I") ;set variable for call
  1. D DTRNG^DGSEC2 I DGPOP D Q^DGSEC2,RESET2 Q ;ask date range
  1. D ASKUSR^DGSEC2,RESET2 ;rest of code for report
  1. Q
  1. ;
  1. EDIT ;EP; -- called by protocol to edit sensitivity level
  1. D FULL^VALM1
  1. I '$D(^XUSEC("DG SENSITIVITY",DUZ)) W !!?3,$C(7),"You do not have the appropriate access privileges to assign security." D PAUSE^BDGF,RESET2 Q
  1. NEW BDGI
  1. S BDGI=$$GETITEM^BDGFL("BDGSECL","OS") ;choose entry to edit
  1. I 'BDGI D RESET2 Q ;or go back
  1. S DA=+BDGI,BDGSECL=1 ;calling rtn needs DA set, BDGSECL helps exit
  1. D IHS^DGSEC1,RESET ;call 1^DGSEC1 after patient lookup
  1. Q
  1. ;
  1. SET(DATA,IEN,LINE,NUM) ; -- create ^tmp global for list template
  1. S LINE=LINE+1
  1. S ^TMP("BDGSECL",$J,LINE,0)=DATA
  1. S ^TMP("BDGSECL",$J,"IDX",LINE,NUM)=IEN
  1. Q
  1. ;
  1. PAD(D,L) ;EP -- SUBRTN to pad length of data
  1. ; -- D=data L=length
  1. Q $E(D_$$REPEAT^XLFSTR(" ",L),1,L)
  1. ;
  1. SP(N) ; -- SUBRTN to pad N number of spaces
  1. Q $$PAD(" ",N)
  1. ;
  1. RESET ; -- update partition for return to list manager
  1. I $D(VALMQUIT) S VALMBCK="Q" Q
  1. D TERM^VALM0 S VALMBCK="R"
  1. D INIT,HDR
  1. Q
  1. ;
  1. RESET2 ; -- return to list manager; don't update list
  1. I $D(VALMQUIT) S VALMBCK="Q" Q
  1. D TERM^VALM0 S VALMBCK="R"
  1. Q