| 1 | SCDXFU03 ;ALB/JRP - AMBULATORY CARE FILE UTILITIES;01-JUL-1996
 | 
|---|
| 2 |  ;;5.3;Scheduling;**44,110,121,126,128**;AUG 13, 1993
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | DELXMIT(PTR,PTR2) ;Delete entry in TRANSMITTED OUTPATIENT ENCOUNTER
 | 
|---|
| 5 |  ; file (#409.73)
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  ;Input  : PTR - Pointer to entry in one of the following files
 | 
|---|
| 8 |  ;               *  TRANSMITTED OUTPATIENT ENCOUNTER file (#409.73)
 | 
|---|
| 9 |  ;               *  OUTPATIENT ENCOUNTER file (#409.68)
 | 
|---|
| 10 |  ;               *  DELETED OUTPATIENT ENCOUNTER file (#409.74)
 | 
|---|
| 11 |  ;         PTR2 - Denotes which file PTR points to
 | 
|---|
| 12 |  ;                0 = TRANSMITTED OUTPATIENT ENCOUNTER file (Default)
 | 
|---|
| 13 |  ;                1 = OUTPATIENT ENCOUNTER file
 | 
|---|
| 14 |  ;                2 = DELETED OUTPATIENT ENCOUNTER file
 | 
|---|
| 15 |  ;Output : 0 - Success
 | 
|---|
| 16 |  ;        -1 - Unable to delete entry
 | 
|---|
| 17 |  ;Note   : Success (0) is returned when a valid pointer to the
 | 
|---|
| 18 |  ;         specified file is not passed or an entry in the
 | 
|---|
| 19 |  ;         TRANSMITTED OUTPATIENT ENCOUNTER file can not be found
 | 
|---|
| 20 |  ;         (Deleting an entry that doesn't exist is successful)
 | 
|---|
| 21 |  ;       : If the TRANSMITTED OUTPATIENT ENCOUNTER points to an entry
 | 
|---|
| 22 |  ;         in the DELETED OUTPATIENT ENCOUNTER file, the DELETED
 | 
|---|
| 23 |  ;         OUTPATIENT ENCOUNTER will also be deleted
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 |  ;Check input
 | 
|---|
| 26 |  S PTR=+$G(PTR)
 | 
|---|
| 27 |  S PTR2=+$G(PTR2)
 | 
|---|
| 28 |  S:((PTR2<0)!(PTR2>2)) PTR2=0
 | 
|---|
| 29 |  ;Declare variables
 | 
|---|
| 30 |  N DIK,DA,X,Y,DIC,XMITPTR,DELPTR
 | 
|---|
| 31 |  ;Get pointer to TRANSMITTED OUTPATIENT ENCOUNTER file
 | 
|---|
| 32 |  S XMITPTR=PTR
 | 
|---|
| 33 |  S:(PTR2=1) XMITPTR=+$O(^SD(409.73,"AENC",PTR,0))
 | 
|---|
| 34 |  S:(PTR2=2) XMITPTR=+$O(^SD(409.73,"ADEL",PTR,0))
 | 
|---|
| 35 |  ;Entry in TRANSMITTED OUTPATIENT ENCOUNTER file doesn't exist - success
 | 
|---|
| 36 |  Q:('$D(^SD(409.73,XMITPTR,0))) 0
 | 
|---|
| 37 |  ;Delete all entries in TRANSMITTED OUTPATIENT ENCOUNTER ERROR file
 | 
|---|
| 38 |  ; (#409.75) that refer to entry being deleted
 | 
|---|
| 39 |  D DELAERR^SCDXFU02(XMITPTR)
 | 
|---|
| 40 |  ;Delete all entries in ACRP Transmission History file (#409.77)
 | 
|---|
| 41 |  D DELAHIST^SCDXFU10(XMITPTR)
 | 
|---|
| 42 |  ;Delete entry in DELETED OUTPATIENT ENCOUNTER file (#409.74)
 | 
|---|
| 43 |  S DELPTR=+$$XMIT4DEL^SCDXFU11(XMITPTR)
 | 
|---|
| 44 |  S:(DELPTR>0) X=$$DELDEL^SCDXFU02(DELPTR)
 | 
|---|
| 45 |  ;Delete entry
 | 
|---|
| 46 |  S DIK="^SD(409.73,"
 | 
|---|
| 47 |  S DA=XMITPTR
 | 
|---|
| 48 |  D ^DIK
 | 
|---|
| 49 |  ;Done
 | 
|---|
| 50 |  Q 0
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 | XMITDATA(XMITPTR,XMITDATE,MID,BID) ;Store transmission data for entry in
 | 
|---|
| 53 |  ; TRANSMITTED OUTPATIENT ENCOUNTER file (#409.73)
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 |  ;Input  : XMITPTR - Pointer to entry in TRANSMITTED OUTPATIENT
 | 
|---|
| 56 |  ;                   ENCOUNTER file (#409.73)
 | 
|---|
| 57 |  ;         XMITDATE - FileMan ate/time entry was transmitted to National
 | 
|---|
| 58 |  ;                    Patient Care Database (Defaults to NOW)
 | 
|---|
| 59 |  ;         MID - Message Control ID used when entry was transmitted
 | 
|---|
| 60 |  ;               to National Patient Care Database
 | 
|---|
| 61 |  ;         BID - Batch Control ID used when entry was transmitted
 | 
|---|
| 62 |  ;               to National Patient Care Database
 | 
|---|
| 63 |  ;Output : None
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 |  ;Check input
 | 
|---|
| 66 |  S XMITPTR=+$G(XMITPTR)
 | 
|---|
| 67 |  Q:('$D(^SD(409.73,XMITPTR)))
 | 
|---|
| 68 |  S XMITDATE=+$G(XMITDATE)
 | 
|---|
| 69 |  S:('XMITDATE) XMITDATE="NOW"
 | 
|---|
| 70 |  S MID=$G(MID)
 | 
|---|
| 71 |  S BID=$G(BID)
 | 
|---|
| 72 |  ;Declare variables
 | 
|---|
| 73 |  N DIE,DA,DR,DIDEL,X,Y,DIC
 | 
|---|
| 74 |  ;Store transmission data
 | 
|---|
| 75 |  S DIE="^SD(409.73,"
 | 
|---|
| 76 |  S DA=XMITPTR
 | 
|---|
| 77 |  S DR="11///^S X=XMITDATE;12///^S X=MID;13///^S X=BID"
 | 
|---|
| 78 |  D ^DIE
 | 
|---|
| 79 |  ;Done
 | 
|---|
| 80 |  Q
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 | ACKDATA(XMITPTR,ACKDATE,ACKCODE) ;Store acknowledgement data for entry
 | 
|---|
| 83 |  ; in TRANSMITTED OUTPATIENT ENCOUNTER file (#409.73)
 | 
|---|
| 84 |  ;
 | 
|---|
| 85 |  ;Input  : XMITPTR - Pointer to entry in TRANSMITTED OUTPATIENT
 | 
|---|
| 86 |  ;                   ENCOUNTER file (#409.73)
 | 
|---|
| 87 |  ;         ACKDATE - FileMan date/time acknowledgement from National
 | 
|---|
| 88 |  ;                   Patient Care Database was received (Defaults to NOW)
 | 
|---|
| 89 |  ;         ACKCODE - Denotes type of acknowledgement received
 | 
|---|
| 90 |  ;                   A = Transmission was accepted (DEFAULT)
 | 
|---|
| 91 |  ;                   R = Transmission was rejected
 | 
|---|
| 92 |  ;                   E = Error
 | 
|---|
| 93 |  ;Output : None
 | 
|---|
| 94 |  ;
 | 
|---|
| 95 |  ;Check input
 | 
|---|
| 96 |  S XMITPTR=+$G(XMITPTR)
 | 
|---|
| 97 |  Q:('$D(^SD(409.73,XMITPTR)))
 | 
|---|
| 98 |  S ACKDATE=+$G(ACKDATE)
 | 
|---|
| 99 |  S:('ACKDATE) ACKDATE="NOW"
 | 
|---|
| 100 |  S ACKCODE=$G(ACKCODE)
 | 
|---|
| 101 |  S:("ARE"'[ACKCODE) ACKCODE="A"
 | 
|---|
| 102 |  ;Declare variables
 | 
|---|
| 103 |  N DIE,DA,DR,DIDEL,X,Y,DIC
 | 
|---|
| 104 |  ;Store acknowledgement data
 | 
|---|
| 105 |  S DIE="^SD(409.73,"
 | 
|---|
| 106 |  S DA=XMITPTR
 | 
|---|
| 107 |  S DR="14///^S X=ACKDATE;15////^S X=ACKCODE"
 | 
|---|
| 108 |  D ^DIE
 | 
|---|
| 109 |  ;Done
 | 
|---|
| 110 |  Q
 | 
|---|
| 111 |  ;
 | 
|---|
| 112 | XMITED(ENCPTR) ;Determine if Outpatient Encounter was ever transmitted to the
 | 
|---|
| 113 |  ; National Patient Care Database
 | 
|---|
| 114 |  ;
 | 
|---|
| 115 |  ;Input  : ENCPTR - Pointer to Outpatient Encounter
 | 
|---|
| 116 |  ;Output : DateTime - Date of last transmission (FileMan format)
 | 
|---|
| 117 |  ;         0 - Encounter never transmitted
 | 
|---|
| 118 |  ;Notes  : Zero (0) will be returned on bad input
 | 
|---|
| 119 |  ;
 | 
|---|
| 120 |  ;Check input
 | 
|---|
| 121 |  S ENCPTR=+$G(ENCPTR)
 | 
|---|
| 122 |  Q:('ENCPTR) 0
 | 
|---|
| 123 |  ;Declare variables
 | 
|---|
| 124 |  N XMITPTR,XMITDATE,XMITHIST
 | 
|---|
| 125 |  S XMITHIST=$NA(^TMP("SCDXFU03",$J,"XMITED"))
 | 
|---|
| 126 |  K @XMITHIST
 | 
|---|
| 127 |  ;Find entry in transmission file (#409.73)
 | 
|---|
| 128 |  S XMITPTR=+$O(^SD(409.73,"AENC",ENCPTR,0))
 | 
|---|
| 129 |  Q:('XMITPTR) 0
 | 
|---|
| 130 |  Q:('$D(^SD(409.73,XMITPTR,0))) 0
 | 
|---|
| 131 |  ;Get transmission history
 | 
|---|
| 132 |  S XMITDATE=$$HST4XMIT^SCDXFU13(XMITPTR,XMITHIST,1)
 | 
|---|
| 133 |  ;Get last transmission date/time
 | 
|---|
| 134 |  S XMITDATE=+$O(@XMITHIST@(""),-1)
 | 
|---|
| 135 |  ;Clean up and return date/time of last transmission
 | 
|---|
| 136 |  K @XMITHIST
 | 
|---|
| 137 |  Q XMITDATE
 | 
|---|
| 138 |  ;
 | 
|---|
| 139 | ACCEPTED(ENCPTR) ;Determine if Outpatient Encounter was ever accepted
 | 
|---|
| 140 |  ; by the National Patient Care Database (i.e. ACK = Accept)
 | 
|---|
| 141 |  ;
 | 
|---|
| 142 |  ;Input  : ENCPTR - Pointer to Outpatient Encounter
 | 
|---|
| 143 |  ;Output : DateTime - Date/time of last successfull ack (FileMan)
 | 
|---|
| 144 |  ;         0 - Encounter never accepted
 | 
|---|
| 145 |  ;Notes  : Zero (0) will be returned on bad input
 | 
|---|
| 146 |  ;
 | 
|---|
| 147 |  ;Check input
 | 
|---|
| 148 |  S ENCPTR=+$G(ENCPTR)
 | 
|---|
| 149 |  Q:('ENCPTR) 0
 | 
|---|
| 150 |  ;Declare variables
 | 
|---|
| 151 |  N XMITPTR,ACKDATE,ACKHIST
 | 
|---|
| 152 |  S ACKHIST=$NA(^TMP("SCDXFU03",$J,"ACCEPTED"))
 | 
|---|
| 153 |  K @ACKHIST
 | 
|---|
| 154 |  ;Find entry in transmission file (#409.73)
 | 
|---|
| 155 |  S XMITPTR=+$O(^SD(409.73,"AENC",ENCPTR,0))
 | 
|---|
| 156 |  Q:('XMITPTR) 0
 | 
|---|
| 157 |  Q:('$D(^SD(409.73,XMITPTR,0))) 0
 | 
|---|
| 158 |  ;Get acknowledgement history
 | 
|---|
| 159 |  S ACKDATE=$$HST4XMIT^SCDXFU13(XMITPTR,ACKHIST,2)
 | 
|---|
| 160 |  ;Search history for last ack with code of ACCEPT
 | 
|---|
| 161 |  S ACKDATE=""
 | 
|---|
| 162 |  F  S ACKDATE=+$O(@ACKHIST@(ACKDATE),-1) Q:('ACKDATE)  Q:($P($G(@ACKHIST@(ACKDATE)),"^",3)="A")
 | 
|---|
| 163 |  ;Clean up and return date/time of last successfull ack
 | 
|---|
| 164 |  K @ACKHIST
 | 
|---|
| 165 |  Q ACKDATE
 | 
|---|
| 166 |  ;
 | 
|---|
| 167 | VIDCNT(VSITID,EXCLUDE) ;Determine the number of parent Outpatient
 | 
|---|
| 168 |  ; Encounters that have the given Visit ID
 | 
|---|
| 169 |  ;
 | 
|---|
| 170 |  ;Input  : VSITID - Visit ID to check for (NOT THE POINTER TO 9000010)
 | 
|---|
| 171 |  ;         EXCLUDE - Encounter to optionally exclude from count
 | 
|---|
| 172 |  ;Output : N - Number of parent encounters found
 | 
|---|
| 173 |  ;Notes  : Stand alone add/edits are considered a parent encounter
 | 
|---|
| 174 |  ;       : Zero (0) is returned if the Visit ID is not valid
 | 
|---|
| 175 |  ;
 | 
|---|
| 176 |  ;Check input
 | 
|---|
| 177 |  S VSITID=$G(VSITID)
 | 
|---|
| 178 |  Q:(VSITID="") 0
 | 
|---|
| 179 |  S EXCLUDE=+$G(EXCLUDE)
 | 
|---|
| 180 |  S:('$D(^SCE(EXCLUDE,0))) EXCLUDE=0
 | 
|---|
| 181 |  ;Declare variables
 | 
|---|
| 182 |  N ENCPTR,VSITPTR,COUNT
 | 
|---|
| 183 |  ;Get pointer to Visit
 | 
|---|
| 184 |  S VSITPTR=$$VID2IEN^VSIT(VSITID)
 | 
|---|
| 185 |  Q:(VSITPTR<1) 0
 | 
|---|
| 186 |  ;Count parent encounters for visit
 | 
|---|
| 187 |  S COUNT=0
 | 
|---|
| 188 |  S ENCPTR=0
 | 
|---|
| 189 |  F  S ENCPTR=+$O(^SCE("AVSIT",VSITPTR,ENCPTR)) Q:('ENCPTR)  D
 | 
|---|
| 190 |  .;Bad entry in x-ref
 | 
|---|
| 191 |  .Q:('$D(^SCE(ENCPTR,0)))
 | 
|---|
| 192 |  .;Exclude input encounter
 | 
|---|
| 193 |  .Q:(ENCPTR=EXCLUDE)
 | 
|---|
| 194 |  .;Screen out children
 | 
|---|
| 195 |  .Q:(+$P($G(^SCE(ENCPTR,0)),"^",6))
 | 
|---|
| 196 |  .;Increment count
 | 
|---|
| 197 |  .S COUNT=COUNT+1
 | 
|---|
| 198 |  Q COUNT
 | 
|---|