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

SCDXUTL4.m

Go to the documentation of this file.
SCDXUTL4 ;ALB/JRP - ACRP ERROR CODE UTILITIES;08-OCT-1996
 ;;5.3;Scheduling;**68,1015**;AUG 13, 1993;Build 21
PAT4XMIT(XMITPTR) ;Return patient associated to entry in TRANSMITTED
 ; OUTPATIENT ENCOUNTER file (#409.73)
 ;
 ;Input  : XMITPTR - Pointer to entry in TRANSMITTED OUTPATIENT
 ;                   ENCOUNTER file (#409.73)
 ;Output : DFN^Name - Patient that is associated to the encounter
 ;                  DFN = Pointer to PATIENT file (#2)
 ;                  Name = Patient's name
 ;         0 - Error/bad input
 ;Notes  : This call follows the link from the TRANSMITTED OUTPATIENT
 ;         ENCOUNTER file (#409.73) to the OUTPATIENT ENCOUNTER file
 ;         (#409.68) [or DELETED OUTPATIENT ENCOUNTER file (#409.74)]
 ;         to the PATIENT file (#2)
 ;
 ;Check input
 S XMITPTR=+$G(XMITPTR)
 Q:('$D(^SD(409.73,XMITPTR,0))) 0
 ;Declare variables
 N DFN,DELPTR,ENCPTR,NODE,NAME
 S DFN=0
 ;Determine if entry in transmit file is for a deleted encounter or
 ; an existing encounter
 S NODE=$G(^SD(409.73,XMITPTR,0))
 S ENCPTR=+$P(NODE,"^",2)
 S DELPTR=+$P(NODE,"^",3)
 Q:(('ENCPTR)&('DELPTR)) 0
 ;Existing encounter
 I (ENCPTR) D
 .;Follow pointer to OUTPATIENT ENCOUNTER file
 .S NODE=$G(^SCE(ENCPTR,0))
 .;Get pointer to PATIENT file
 .S DFN=+$P(NODE,"^",2)
 ;Deleted encounter
 I (DELPTR) D
 .;Follow pointer to DELETED OUTPATIENT ENCOUNTER file
 .S NODE=$G(^SD(409.74,DELPTR,0))
 .;Get pointer to PATIENT file
 .S DFN=+$P(NODE,"^",2)
 ;Bad pointer to PATIENT file
 Q:('$D(^DPT(DFN,0))) 0
 ;Get patient's name
 S NODE=$G(^DPT(DFN,0))
 S NAME=$P(NODE,"^",1)
 ;No name on file
 S:(NAME="") NAME="NAME NOT ON FILE (#"_DFN_")"
 ;Done
 Q DFN_"^"_NAME
 ;
PAT4ERR(PTRERR) ;Return patient associated to entry in TRANSMITTED OUTPATIENT
 ; ENCOUNTER ERROR file (#409.75)
 ;
 ;Input  : PTRERR - Pointer to entry in TRANSMITTED OUTPATIENT
 ;                  ENCOUNTER ERROR file (#409.75)
 ;Output : DFN^Name - Patient that is associated to the error
 ;                  DFN = Pointer to PATIENT file (#2)
 ;                  Name = Patient's name
 ;         0 - Error/bad input
 ;Notes  : This call follows the link from the TRANSMITTED OUTPATIENT
 ;         ENCOUNTER ERROR file (#409.75) to the TRANSMITTED OUTPATIENT
 ;         ENCOUNTER file (#409.73) to the OUTPATIENT ENCOUNTER file
 ;         (#409.68) [or DELETED OUTPATIENT ENCOUNTER file (#409.74)]
 ;         to the PATIENT file (#2)
 ;
 ;Check input
 S PTRERR=+$G(PTRERR)
 Q:('$D(^SD(409.75,PTRERR,0))) 0
 ;Declare variables
 N NODE,XMITPTR
 ;Get pointer to TRANSMITTED OUTPATIENT ENCOUNTER file
 S NODE=$G(^SD(409.75,PTRERR,0))
 S XMITPTR=+$P(NODE,"^",1)
 Q:('XMITPTR) 0
 ;Return patient info
 Q $$PAT4XMIT(XMITPTR)
 ;
GETREJ(OUTARR,SCREEN,DOTS) ;Return list of all patients/encounters in the
 ; TRANSMITTED OUTPATIENT ENCOUNTER file (#409.73) that were rejected
 ;
 ;Input  : OUTARR - Array to store output in (full global reference)
 ;                  Defaults to ^TMP("SCDX",$J)
 ;         SCREEN - Flag denoting if entries should be screen
 ;                  0 = Don't apply any screens (default)
 ;                  1 = Screen out entries that are marked for [re]xmit
 ;                  2 = Only return entries that are demographic rejects
 ;                  3 = Apply screen #1 & #2
 ;         DOTS - Flag denoting if dots (.) should be printed
 ;                0 = Don't print dots whild building list (default)
 ;                N = Print 1 dot for every N encounters found
 ;Output : PATCNT ^ ENCCNT
 ;           PATS = Number of patients that were found
 ;           COUNT = Number of entries in TRANSMITTED OUTPATIENT
 ;                   ENCOUNTER file (#409.73) that were found
 ;         If entries are found, OUTARR() will be in the format
 ;             OUTARR("NAME",NAME) = DFN ^ REJ
 ;             OUTARR("DFN",DFN,XMITPTR) = NAME
 ;         Where NAME = Patient's name
 ;               DFN = Pointer to entry in PATIENT file (#2)
 ;               REJ = Total number of encounters rejected for patient
 ;               XMITPTR = Pointer to entry in TRANSMITTED OUTPATIENT
 ;                         ENCOUNTER file (#409.73)
 ;Notes  : It is the responsibility of the calling program to
 ;         initialize (ie KILL) the output array
 ;
 ;Check input
 S OUTARR=$G(OUTARR)
 S:(OUTARR="") OUTARR="^TMP(""SCDX"","_$J_")"
 S SCREEN=+$G(SCREEN)
 S DOTS=+$G(DOTS)
 S:(DOTS<0) DOTS=0
 ;Declare variables
 N DFN,XMITPTR,PATCNT,ENCCNT,NAME,TMP,MARKED
 S PATCNT=0
 S ENCCNT=0
 ;Loop through all encounters that have been rejected
 S XMITPTR=""
 F  S XMITPTR=+$O(^SD(409.75,"B",XMITPTR)) Q:('XMITPTR)  D
 .;If applicable, screen out encounters marked for [re]transmission
 .I ((SCREEN=1)!(SCREEN=3)) D  Q:(MARKED)
 ..S TMP=$G(^SD(409.73,XMITPTR,0))
 ..S MARKED=+$P(TMP,"^",4)
 .;If applicable, screen out encounters that are not demographic rejects
 .I ((SCREEN=2)!(SCREEN=3)) Q:'$$REJ4DEMO^SCDXUTL3(XMITPTR)
 .;Get pointer to encounter's patient
 .S TMP=$$PAT4XMIT(XMITPTR)
 .S DFN=+$P(TMP,"^",1)
 .S NAME=$P(TMP,"^",2)
 .;Couldn't find patient - ignore
 .Q:('DFN)
 .;Increment patient count
 .S:('$D(@OUTARR@("DFN",DFN))) PATCNT=PATCNT+1
 .;Store patient & encounter in output array
 .S @OUTARR@("DFN",DFN,XMITPTR)=NAME
 .;Increment encounter counts
 .S TMP=$G(@OUTARR@("NAME",NAME))
 .S @OUTARR@("NAME",NAME)=DFN_"^"_(1+$P(TMP,"^",2))
 .S ENCCNT=ENCCNT+1
 .;Print dots ?
 .I (DOTS) W:('(ENCCNT#DOTS)) "."
 Q PATCNT_"^"_ENCCNT
 ;
XMIT4DFN(DFN,OUTARR) ;Return list of entries in TRANSMITTED OUTPATIENT
 ; ENCOUNTER file (#409.73) for a given patient
 ;
 ;Input  : DFN - Pointer to entry in PATIENT file (#2)
 ;         OUTARR - Array to store output in (full global reference)
 ;                  Defaults to ^TMP("SCDX",$J)
 ;Output : X - Number of entries in TRANSMITTED OUTPATIENT ENCOUNTER
 ;             file (#409.73) that were found
 ;         If entries are found, OUTARR() will be in the format
 ;             OUTARR(DFN,XMITPTR) = ""
 ;         Where XMITPTR = Pointer to entry in TRANSMITTED OUTPATIENT
 ;                         ENCOUNTER file (#409.73)
 ;Notes  : It is the responsibility of the calling program to
 ;         initialize (ie KILL) the output array
 ;
 ;Check input
 S DFN=+$G(DFN)
 Q:('$D(^DPT(DFN,0))) 0
 S OUTARR=$G(OUTARR)
 S:(OUTARR="") OUTARR="^TMP(""SCDX"","_$J_")"
 ;Declare variables
 N ENCPTR,DELPTR,XMITPTR,COUNT
 S COUNT=0
 ;Find all entries in the OUTPATIENT ENCOUNTER file (#409.68) that
 ;pertain to the given patient
 S ENCPTR=""
 F  S ENCPTR=+$O(^SCE("C",DFN,ENCPTR)) Q:('ENCPTR)  D
 .;Find entry in TRANSMITTED OUTPATIENT ENCOUNTER file
 .S XMITPTR=+$O(^SD(409.73,"AENC",ENCPTR,0))
 .Q:('XMITPTR)
 .;Store pointer in output array an increment counter
 .S @OUTARR@(DFN,XMITPTR)=""
 .S COUNT=COUNT+1
 ;Find all entries in DELETED OUTPATIENT ENCOUNTER file (#409.74) that
 ;pertain to the given patient
 S DELPTR=""
 F  S DELPTR=+$O(^SD(409.74,"PAT",DFN,DELPTR)) Q:('DELPTR)  D
 .;Find entry in TRANSMITTED OUTPATIENT ENCOUNTER file
 .S XMITPTR=+$O(^SD(409.73,"ADEL",DELPTR,0))
 .Q:('XMITPTR)
 .;Store pointer in output array an increment counter
 .S @OUTARR@(DFN,XMITPTR)=""
 .S COUNT=COUNT+1
 Q COUNT