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

BUSAAPI.m

Go to the documentation of this file.
  1. BUSAAPI ;GDIT/HS/BEE-IHS USER SECURITY AUDIT Utility API Program ; 31 Jan 2013 9:53 AM
  1. ;;1.0;IHS USER SECURITY AUDIT;;Nov 05, 2013;Build 65
  1. ;
  1. Q
  1. ;
  1. LOG(TYPE,CAT,ACTION,CALL,DESC,DETAIL) ;PEP - Log Security Audit Entries
  1. ;
  1. ; Required variables:
  1. ; DUZ - Pointer to NEW PERSON (#200) file
  1. ;
  1. ;Input Parameters:
  1. ; TYPE - (Optional) - The type of entry to log (R:RPC Call;W:Web Service
  1. ; Call;A:API Call;O:Other)
  1. ; (Default - A)
  1. ; CAT - (Required) - The category of the event to log (S:System Event;
  1. ; P:Patient Related;D:Definition Change;
  1. ; O:Other Event)
  1. ; ACTION - (Required for CAT="P") - The action of the event to log
  1. ; (A:Additions;D:Deletions;Q:Queries;P:Print;
  1. ; E:Changes;C:Copy)
  1. ; CALL - (Required) - Free text entry describing the call which
  1. ; originated the audit request (Maximum length
  1. ; 200 characters)
  1. ; Examples could be an RPC value or calling
  1. ; routine
  1. ; DESC - (Required) - Free text entry describing the call action
  1. ; (Maximum length 250 characters)
  1. ; Examples could be 'Patient demographic update',
  1. ; 'Copied iCare panel to clipboard' or 'POV Entry'
  1. ;
  1. ; DETAIL - Array of patient/visit records to log. Required for patient
  1. ; related events. Optional for other event types
  1. ;
  1. ; Format: DETAIL(#)=DFN^VIEN^EVENT DESCRIPTION^NEW VALUE^ORIGINAL VALUE
  1. ;
  1. ; Where:
  1. ; # - Record counter (1,2,3...)
  1. ; DFN - (Optional for non-patient related calls) - Pointer to VA PATIENT file (#2)
  1. ; VIEN - (Optional for non-visit related calls) - Pointer to VISIT file (#9000010)
  1. ; EVENT DESCRIPTION -(Optional) - Additional detail to log for this entry
  1. ; NEW VALUE - (Optional) - New value after call completion, if applicable
  1. ; ORIGINAL VALUE - (Optional) - Original value prior to call execution, if applicable
  1. ;
  1. NEW STS,SIEN,BUSAUPD,ERROR,BUSAII
  1. S STS=""
  1. ;
  1. ;Make sure logging switch is on
  1. I '+$$STATUS^BUSAOPT("M") S STS="0^Master audit logging switch is off" G XLOG
  1. ;
  1. ALTENT ;Entry point from bypass call
  1. ;
  1. ;Check for DUZ (USER filed)
  1. I +$G(DUZ)<1 S STS="0^Invalid DUZ value" G XLOG
  1. ;
  1. ;Check for TYPE (ENTRY TYPE field)
  1. S TYPE=$G(TYPE,"") S:TYPE="" TYPE="A"
  1. ;
  1. ;Check for CAT (CATEGORY field)
  1. I $G(CAT)="" S STS="0^Invalid CAT value" G XLOG
  1. ;
  1. ;Action
  1. S ACTION=$G(ACTION,"") I ACTION="",CAT="P" S STS="0^Action required if Patient Category" G XLOG
  1. ;
  1. ;Check for CALL (ORIGINATING CALL field)
  1. I $G(CALL)="" S STS="0^Invalid CALL value" G XLOG
  1. ;
  1. ;Check for DESC (ENTRY DESCRIPTION field)
  1. I $G(DESC)="" S STS="0^Invalid DESC value" G XLOG
  1. ;
  1. ;Log new BUSA AUDIT LOG SUMMARY entry
  1. S SIEN=$$NEWS() I 'SIEN S STS="0^Unable to create summary entry" G XLOG
  1. ;
  1. ;Log remaining summary fields
  1. S BUSAUPD(9002319.01,SIEN_",",.02)=DUZ ;USER
  1. S BUSAUPD(9002319.01,SIEN_",",.03)=CAT ;CATEGORY
  1. S BUSAUPD(9002319.01,SIEN_",",.04)=TYPE ;ENTRY TYPE
  1. S BUSAUPD(9002319.01,SIEN_",",.05)=ACTION ;ACTION
  1. S BUSAUPD(9002319.01,SIEN_",",.06)=$E(CALL,1,200) ;ORIGINATING CALL
  1. S BUSAUPD(9002319.01,SIEN_",",1)=$E(DESC,1,250) ;ENTRY DESCRIPTION
  1. D FILE^DIE("","BUSAUPD","ERROR") I $D(ERROR) S STS="0^"_$G(ERROR) G XLOG
  1. ;
  1. ;Log BUSA AUDIT LOG DETAIL entries
  1. I $G(DETAIL)]"" S BUSAII=0 F S BUSAII=$O(@DETAIL@(BUSAII)) Q:BUSAII="" D Q:STS]""
  1. . NEW DIEN,BUSADET,ND
  1. . ;
  1. . ;Log detail entry
  1. . S ND=$G(@DETAIL@(BUSAII))
  1. . S DIEN=$$NEWD(SIEN) I 'DIEN S STS="0^Unable to create detail entry" Q
  1. . ;
  1. . ;Plug in DFN using VIEN (if DFN is blank)
  1. . I $P(ND,U)="",$P(ND,U,2)]"" S $P(ND,U)=$$GET1^DIQ(9000010,$P(ND,U,2)_",",".05","I")
  1. . ;
  1. . ;Log remaining detail fields
  1. . S:$P(ND,U)]"" BUSADET(9002319.02,DIEN_",",.02)=$P(ND,U)
  1. . S:$P(ND,U,2)]"" BUSADET(9002319.02,DIEN_",",.03)=$P(ND,U,2)
  1. . S:$P(ND,U,3)]"" BUSADET(9002319.02,DIEN_",",.04)=$E($P(ND,U,3),1,200)
  1. . ;
  1. . ;New value
  1. . I $P(ND,U,4)]"" D
  1. .. N TXT,VAR
  1. .. D WRAP^BUSAUTIL(.TXT,$P(ND,U,4),220)
  1. .. S VAR="TXT"
  1. .. D WP^DIE(9002319.02,DIEN_",",1,"",VAR)
  1. . ;
  1. . ;Original value
  1. . I $P(ND,U,5)]"" D
  1. .. N TXT,VAR
  1. .. D WRAP^BUSAUTIL(.TXT,$P(ND,U,5),220)
  1. .. S VAR="TXT"
  1. .. D WP^DIE(9002319.02,DIEN_",",2,"",VAR)
  1. . D FILE^DIE("","BUSADET","ERROR") I $D(ERROR) S STS="0^"_$G(ERROR)
  1. I STS]"" G XLOG
  1. ;
  1. ;Successful log
  1. S STS=1
  1. ;
  1. ;Log Exit Point
  1. XLOG Q STS
  1. ;
  1. BYPSLOG(TYPE,CAT,ACTION,CALL,DESC,DETAIL) ;EP - Log Security Audit Entries
  1. ;
  1. ;This API makes the call to log an audit entry but bypasses the check
  1. ;to see if the master audit is turned on
  1. ;
  1. NEW STS,SIEN,BUSAUPD,ERROR,BUSAII
  1. S STS=""
  1. ;
  1. G ALTENT
  1. ;
  1. NEWS() ;EP - Create new BUSA AUDIT LOG SUMMARY entry stub
  1. N DIC,X,Y,DA,DLAYGO,%
  1. S DIC(0)="L",DIC="^BUSAS(",DLAYGO=DIC
  1. D NOW^%DTC
  1. S X=%
  1. K DO,DD D FILE^DICN
  1. Q +Y
  1. ;
  1. NEWD(SIEN) ;EP - Create new BUSA AUDIT LOG DETAIL entry stub
  1. N DIC,X,Y,DA,DLAYGO
  1. S DIC(0)="L",DIC="^BUSAD(",DLAYGO=DIC
  1. S X=SIEN
  1. K DO,DD D FILE^DICN
  1. Q +Y