| 1 | SCDXUTL4 ;ALB/JRP - ACRP ERROR CODE UTILITIES;08-OCT-1996
 | 
|---|
| 2 |  ;;5.3;Scheduling;**68**;AUG 13, 1993
 | 
|---|
| 3 | PAT4XMIT(XMITPTR) ;Return patient associated to entry in TRANSMITTED
 | 
|---|
| 4 |  ; OUTPATIENT ENCOUNTER file (#409.73)
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ;Input  : XMITPTR - Pointer to entry in TRANSMITTED OUTPATIENT
 | 
|---|
| 7 |  ;                   ENCOUNTER file (#409.73)
 | 
|---|
| 8 |  ;Output : DFN^Name - Patient that is associated to the encounter
 | 
|---|
| 9 |  ;                  DFN = Pointer to PATIENT file (#2)
 | 
|---|
| 10 |  ;                  Name = Patient's name
 | 
|---|
| 11 |  ;         0 - Error/bad input
 | 
|---|
| 12 |  ;Notes  : This call follows the link from the TRANSMITTED OUTPATIENT
 | 
|---|
| 13 |  ;         ENCOUNTER file (#409.73) to the OUTPATIENT ENCOUNTER file
 | 
|---|
| 14 |  ;         (#409.68) [or DELETED OUTPATIENT ENCOUNTER file (#409.74)]
 | 
|---|
| 15 |  ;         to the PATIENT file (#2)
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 |  ;Check input
 | 
|---|
| 18 |  S XMITPTR=+$G(XMITPTR)
 | 
|---|
| 19 |  Q:('$D(^SD(409.73,XMITPTR,0))) 0
 | 
|---|
| 20 |  ;Declare variables
 | 
|---|
| 21 |  N DFN,DELPTR,ENCPTR,NODE,NAME
 | 
|---|
| 22 |  S DFN=0
 | 
|---|
| 23 |  ;Determine if entry in transmit file is for a deleted encounter or
 | 
|---|
| 24 |  ; an existing encounter
 | 
|---|
| 25 |  S NODE=$G(^SD(409.73,XMITPTR,0))
 | 
|---|
| 26 |  S ENCPTR=+$P(NODE,"^",2)
 | 
|---|
| 27 |  S DELPTR=+$P(NODE,"^",3)
 | 
|---|
| 28 |  Q:(('ENCPTR)&('DELPTR)) 0
 | 
|---|
| 29 |  ;Existing encounter
 | 
|---|
| 30 |  I (ENCPTR) D
 | 
|---|
| 31 |  .;Follow pointer to OUTPATIENT ENCOUNTER file
 | 
|---|
| 32 |  .S NODE=$G(^SCE(ENCPTR,0))
 | 
|---|
| 33 |  .;Get pointer to PATIENT file
 | 
|---|
| 34 |  .S DFN=+$P(NODE,"^",2)
 | 
|---|
| 35 |  ;Deleted encounter
 | 
|---|
| 36 |  I (DELPTR) D
 | 
|---|
| 37 |  .;Follow pointer to DELETED OUTPATIENT ENCOUNTER file
 | 
|---|
| 38 |  .S NODE=$G(^SD(409.74,DELPTR,0))
 | 
|---|
| 39 |  .;Get pointer to PATIENT file
 | 
|---|
| 40 |  .S DFN=+$P(NODE,"^",2)
 | 
|---|
| 41 |  ;Bad pointer to PATIENT file
 | 
|---|
| 42 |  Q:('$D(^DPT(DFN,0))) 0
 | 
|---|
| 43 |  ;Get patient's name
 | 
|---|
| 44 |  S NODE=$G(^DPT(DFN,0))
 | 
|---|
| 45 |  S NAME=$P(NODE,"^",1)
 | 
|---|
| 46 |  ;No name on file
 | 
|---|
| 47 |  S:(NAME="") NAME="NAME NOT ON FILE (#"_DFN_")"
 | 
|---|
| 48 |  ;Done
 | 
|---|
| 49 |  Q DFN_"^"_NAME
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 | PAT4ERR(PTRERR) ;Return patient associated to entry in TRANSMITTED OUTPATIENT
 | 
|---|
| 52 |  ; ENCOUNTER ERROR file (#409.75)
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 |  ;Input  : PTRERR - Pointer to entry in TRANSMITTED OUTPATIENT
 | 
|---|
| 55 |  ;                  ENCOUNTER ERROR file (#409.75)
 | 
|---|
| 56 |  ;Output : DFN^Name - Patient that is associated to the error
 | 
|---|
| 57 |  ;                  DFN = Pointer to PATIENT file (#2)
 | 
|---|
| 58 |  ;                  Name = Patient's name
 | 
|---|
| 59 |  ;         0 - Error/bad input
 | 
|---|
| 60 |  ;Notes  : This call follows the link from the TRANSMITTED OUTPATIENT
 | 
|---|
| 61 |  ;         ENCOUNTER ERROR file (#409.75) to the TRANSMITTED OUTPATIENT
 | 
|---|
| 62 |  ;         ENCOUNTER file (#409.73) to the OUTPATIENT ENCOUNTER file
 | 
|---|
| 63 |  ;         (#409.68) [or DELETED OUTPATIENT ENCOUNTER file (#409.74)]
 | 
|---|
| 64 |  ;         to the PATIENT file (#2)
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 |  ;Check input
 | 
|---|
| 67 |  S PTRERR=+$G(PTRERR)
 | 
|---|
| 68 |  Q:('$D(^SD(409.75,PTRERR,0))) 0
 | 
|---|
| 69 |  ;Declare variables
 | 
|---|
| 70 |  N NODE,XMITPTR
 | 
|---|
| 71 |  ;Get pointer to TRANSMITTED OUTPATIENT ENCOUNTER file
 | 
|---|
| 72 |  S NODE=$G(^SD(409.75,PTRERR,0))
 | 
|---|
| 73 |  S XMITPTR=+$P(NODE,"^",1)
 | 
|---|
| 74 |  Q:('XMITPTR) 0
 | 
|---|
| 75 |  ;Return patient info
 | 
|---|
| 76 |  Q $$PAT4XMIT(XMITPTR)
 | 
|---|
| 77 |  ;
 | 
|---|
| 78 | GETREJ(OUTARR,SCREEN,DOTS) ;Return list of all patients/encounters in the
 | 
|---|
| 79 |  ; TRANSMITTED OUTPATIENT ENCOUNTER file (#409.73) that were rejected
 | 
|---|
| 80 |  ;
 | 
|---|
| 81 |  ;Input  : OUTARR - Array to store output in (full global reference)
 | 
|---|
| 82 |  ;                  Defaults to ^TMP("SCDX",$J)
 | 
|---|
| 83 |  ;         SCREEN - Flag denoting if entries should be screen
 | 
|---|
| 84 |  ;                  0 = Don't apply any screens (default)
 | 
|---|
| 85 |  ;                  1 = Screen out entries that are marked for [re]xmit
 | 
|---|
| 86 |  ;                  2 = Only return entries that are demographic rejects
 | 
|---|
| 87 |  ;                  3 = Apply screen #1 & #2
 | 
|---|
| 88 |  ;         DOTS - Flag denoting if dots (.) should be printed
 | 
|---|
| 89 |  ;                0 = Don't print dots whild building list (default)
 | 
|---|
| 90 |  ;                N = Print 1 dot for every N encounters found
 | 
|---|
| 91 |  ;Output : PATCNT ^ ENCCNT
 | 
|---|
| 92 |  ;           PATS = Number of patients that were found
 | 
|---|
| 93 |  ;           COUNT = Number of entries in TRANSMITTED OUTPATIENT
 | 
|---|
| 94 |  ;                   ENCOUNTER file (#409.73) that were found
 | 
|---|
| 95 |  ;         If entries are found, OUTARR() will be in the format
 | 
|---|
| 96 |  ;             OUTARR("NAME",NAME) = DFN ^ REJ
 | 
|---|
| 97 |  ;             OUTARR("DFN",DFN,XMITPTR) = NAME
 | 
|---|
| 98 |  ;         Where NAME = Patient's name
 | 
|---|
| 99 |  ;               DFN = Pointer to entry in PATIENT file (#2)
 | 
|---|
| 100 |  ;               REJ = Total number of encounters rejected for patient
 | 
|---|
| 101 |  ;               XMITPTR = Pointer to entry in TRANSMITTED OUTPATIENT
 | 
|---|
| 102 |  ;                         ENCOUNTER file (#409.73)
 | 
|---|
| 103 |  ;Notes  : It is the responsibility of the calling program to
 | 
|---|
| 104 |  ;         initialize (ie KILL) the output array
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 |  ;Check input
 | 
|---|
| 107 |  S OUTARR=$G(OUTARR)
 | 
|---|
| 108 |  S:(OUTARR="") OUTARR="^TMP(""SCDX"","_$J_")"
 | 
|---|
| 109 |  S SCREEN=+$G(SCREEN)
 | 
|---|
| 110 |  S DOTS=+$G(DOTS)
 | 
|---|
| 111 |  S:(DOTS<0) DOTS=0
 | 
|---|
| 112 |  ;Declare variables
 | 
|---|
| 113 |  N DFN,XMITPTR,PATCNT,ENCCNT,NAME,TMP,MARKED
 | 
|---|
| 114 |  S PATCNT=0
 | 
|---|
| 115 |  S ENCCNT=0
 | 
|---|
| 116 |  ;Loop through all encounters that have been rejected
 | 
|---|
| 117 |  S XMITPTR=""
 | 
|---|
| 118 |  F  S XMITPTR=+$O(^SD(409.75,"B",XMITPTR)) Q:('XMITPTR)  D
 | 
|---|
| 119 |  .;If applicable, screen out encounters marked for [re]transmission
 | 
|---|
| 120 |  .I ((SCREEN=1)!(SCREEN=3)) D  Q:(MARKED)
 | 
|---|
| 121 |  ..S TMP=$G(^SD(409.73,XMITPTR,0))
 | 
|---|
| 122 |  ..S MARKED=+$P(TMP,"^",4)
 | 
|---|
| 123 |  .;If applicable, screen out encounters that are not demographic rejects
 | 
|---|
| 124 |  .I ((SCREEN=2)!(SCREEN=3)) Q:'$$REJ4DEMO^SCDXUTL3(XMITPTR)
 | 
|---|
| 125 |  .;Get pointer to encounter's patient
 | 
|---|
| 126 |  .S TMP=$$PAT4XMIT(XMITPTR)
 | 
|---|
| 127 |  .S DFN=+$P(TMP,"^",1)
 | 
|---|
| 128 |  .S NAME=$P(TMP,"^",2)
 | 
|---|
| 129 |  .;Couldn't find patient - ignore
 | 
|---|
| 130 |  .Q:('DFN)
 | 
|---|
| 131 |  .;Increment patient count
 | 
|---|
| 132 |  .S:('$D(@OUTARR@("DFN",DFN))) PATCNT=PATCNT+1
 | 
|---|
| 133 |  .;Store patient & encounter in output array
 | 
|---|
| 134 |  .S @OUTARR@("DFN",DFN,XMITPTR)=NAME
 | 
|---|
| 135 |  .;Increment encounter counts
 | 
|---|
| 136 |  .S TMP=$G(@OUTARR@("NAME",NAME))
 | 
|---|
| 137 |  .S @OUTARR@("NAME",NAME)=DFN_"^"_(1+$P(TMP,"^",2))
 | 
|---|
| 138 |  .S ENCCNT=ENCCNT+1
 | 
|---|
| 139 |  .;Print dots ?
 | 
|---|
| 140 |  .I (DOTS) W:('(ENCCNT#DOTS)) "."
 | 
|---|
| 141 |  Q PATCNT_"^"_ENCCNT
 | 
|---|
| 142 |  ;
 | 
|---|
| 143 | XMIT4DFN(DFN,OUTARR) ;Return list of entries in TRANSMITTED OUTPATIENT
 | 
|---|
| 144 |  ; ENCOUNTER file (#409.73) for a given patient
 | 
|---|
| 145 |  ;
 | 
|---|
| 146 |  ;Input  : DFN - Pointer to entry in PATIENT file (#2)
 | 
|---|
| 147 |  ;         OUTARR - Array to store output in (full global reference)
 | 
|---|
| 148 |  ;                  Defaults to ^TMP("SCDX",$J)
 | 
|---|
| 149 |  ;Output : X - Number of entries in TRANSMITTED OUTPATIENT ENCOUNTER
 | 
|---|
| 150 |  ;             file (#409.73) that were found
 | 
|---|
| 151 |  ;         If entries are found, OUTARR() will be in the format
 | 
|---|
| 152 |  ;             OUTARR(DFN,XMITPTR) = ""
 | 
|---|
| 153 |  ;         Where XMITPTR = Pointer to entry in TRANSMITTED OUTPATIENT
 | 
|---|
| 154 |  ;                         ENCOUNTER file (#409.73)
 | 
|---|
| 155 |  ;Notes  : It is the responsibility of the calling program to
 | 
|---|
| 156 |  ;         initialize (ie KILL) the output array
 | 
|---|
| 157 |  ;
 | 
|---|
| 158 |  ;Check input
 | 
|---|
| 159 |  S DFN=+$G(DFN)
 | 
|---|
| 160 |  Q:('$D(^DPT(DFN,0))) 0
 | 
|---|
| 161 |  S OUTARR=$G(OUTARR)
 | 
|---|
| 162 |  S:(OUTARR="") OUTARR="^TMP(""SCDX"","_$J_")"
 | 
|---|
| 163 |  ;Declare variables
 | 
|---|
| 164 |  N ENCPTR,DELPTR,XMITPTR,COUNT
 | 
|---|
| 165 |  S COUNT=0
 | 
|---|
| 166 |  ;Find all entries in the OUTPATIENT ENCOUNTER file (#409.68) that
 | 
|---|
| 167 |  ;pertain to the given patient
 | 
|---|
| 168 |  S ENCPTR=""
 | 
|---|
| 169 |  F  S ENCPTR=+$O(^SCE("C",DFN,ENCPTR)) Q:('ENCPTR)  D
 | 
|---|
| 170 |  .;Find entry in TRANSMITTED OUTPATIENT ENCOUNTER file
 | 
|---|
| 171 |  .S XMITPTR=+$O(^SD(409.73,"AENC",ENCPTR,0))
 | 
|---|
| 172 |  .Q:('XMITPTR)
 | 
|---|
| 173 |  .;Store pointer in output array an increment counter
 | 
|---|
| 174 |  .S @OUTARR@(DFN,XMITPTR)=""
 | 
|---|
| 175 |  .S COUNT=COUNT+1
 | 
|---|
| 176 |  ;Find all entries in DELETED OUTPATIENT ENCOUNTER file (#409.74) that
 | 
|---|
| 177 |  ;pertain to the given patient
 | 
|---|
| 178 |  S DELPTR=""
 | 
|---|
| 179 |  F  S DELPTR=+$O(^SD(409.74,"PAT",DFN,DELPTR)) Q:('DELPTR)  D
 | 
|---|
| 180 |  .;Find entry in TRANSMITTED OUTPATIENT ENCOUNTER file
 | 
|---|
| 181 |  .S XMITPTR=+$O(^SD(409.73,"ADEL",DELPTR,0))
 | 
|---|
| 182 |  .Q:('XMITPTR)
 | 
|---|
| 183 |  .;Store pointer in output array an increment counter
 | 
|---|
| 184 |  .S @OUTARR@(DFN,XMITPTR)=""
 | 
|---|
| 185 |  .S COUNT=COUNT+1
 | 
|---|
| 186 |  Q COUNT
 | 
|---|