| 1 | SCDXUTL ;ALB/JLU;Utility routine for ambcare project;4/26/96 | 
|---|
| 2 | ;;5.3;Scheduling;**44,78,132**;5/1/96 | 
|---|
| 3 | ; | 
|---|
| 4 | DATE(DATE) ;this entry point will accept a date and return whether the new or old Scheduling Visits file limitations are to be used. | 
|---|
| 5 | ;INPUTS  -  a date in FM format to be compared to the ambcare start | 
|---|
| 6 | ;           date parameter, | 
|---|
| 7 | ;OUTPUTS -  1 for using the new structure | 
|---|
| 8 | ;           0 for using the old structure | 
|---|
| 9 | ; | 
|---|
| 10 | N PAR,ANS | 
|---|
| 11 | S PAR=$P($G(^SD(404.91,1,"AMB")),U,2) ;get parameter date | 
|---|
| 12 | I 'PAR S ANS=0 G QT | 
|---|
| 13 | I DATE<PAR S ANS=0 G QT ;if date passed in older than parameter us old | 
|---|
| 14 | S ANS=1 | 
|---|
| 15 | QT Q ANS | 
|---|
| 16 | ; | 
|---|
| 17 | FMDATE() ;this entry point returns the FM date from the parameter of | 
|---|
| 18 | ;whether to use the new or old structure. | 
|---|
| 19 | Q $P($G(^SD(404.91,1,"AMB")),U,2) | 
|---|
| 20 | ; | 
|---|
| 21 | CLOSED(DATE) ;this entry point accepts a date, compares it to the close out | 
|---|
| 22 | ;date and returns whether the close out period is up. | 
|---|
| 23 | ;INPUTS  - a date in FM format to be compared to the close out date | 
|---|
| 24 | ;          parameter. | 
|---|
| 25 | ;OUTPUTS - 1 for close out period is over | 
|---|
| 26 | ;          0 for still being able to close out | 
|---|
| 27 | ; | 
|---|
| 28 | N PAR,ANS | 
|---|
| 29 | S PAR=$P($G(^SD(404.91,1,"AMB")),U,3) ;gets close out parameter | 
|---|
| 30 | I 'PAR S ANS=0 G CQT | 
|---|
| 31 | I DATE<PAR S ANS=0 G CQT ;if date is after close out date parameter 1. | 
|---|
| 32 | S ANS=1 | 
|---|
| 33 | CQT Q ANS | 
|---|
| 34 | ; | 
|---|
| 35 | CLOSEFM() ;this entry point returns the close out date parameter in FM format. | 
|---|
| 36 | Q $P($G(^SD(404.91,1,"AMB")),U,3) | 
|---|
| 37 | ; | 
|---|
| 38 | INPATENC(PTR,PTR2) ;ALB/JRP - Determine if an Outpatient Encounter | 
|---|
| 39 | ; is for an inpatient appointment | 
|---|
| 40 | ; | 
|---|
| 41 | ;Input  : PTR - Pointer to one of the following files: | 
|---|
| 42 | ;               *  TRANSMITTED OUTPATIENT ENCOUNTER file (#409.73) | 
|---|
| 43 | ;               *  OUTPATIENT ENCOUNTER file (#409.68) | 
|---|
| 44 | ;               *  DELETED OUTPATIENT ENCOUNTER file (#409.74) | 
|---|
| 45 | ;         PTR2 - Denotes which file PTR points to | 
|---|
| 46 | ;                0 = TRANSMITTED OUTPATIENT ENCOUNTER file (Default) | 
|---|
| 47 | ;                1 = OUTPATIENT ENCOUNTER file | 
|---|
| 48 | ;                2 = DELETED OUTPATIENT ENCOUNTER file | 
|---|
| 49 | ;Output : 0 - Encounter is not an inpatient appointment | 
|---|
| 50 | ;         1 - Encounter is an inpatient appointment | 
|---|
| 51 | ;Notes  : 0 is returned if a valid pointer is not passed or the | 
|---|
| 52 | ;         entry in the TRANSMITTED OUTPATIENT ENCOUNTER file does | 
|---|
| 53 | ;         not point to a valid entry in the OUTPATIENT ENCOUNTER | 
|---|
| 54 | ;         file or DELETED OUTPATIENT ENCOUNTER file | 
|---|
| 55 | ; | 
|---|
| 56 | ;Check input | 
|---|
| 57 | S PTR=+$G(PTR) | 
|---|
| 58 | Q:('PTR) 0 | 
|---|
| 59 | S PTR2=+$G(PTR2) | 
|---|
| 60 | S:((PTR2<0)!(PTR2>2)) PTR2=0 | 
|---|
| 61 | I ('PTR) Q:('$D(^SD(409.73,PTR,0))) 0 | 
|---|
| 62 | I (PTR2=1) Q:('$D(^SCE(PTR,0))) 0 | 
|---|
| 63 | I (PTR2=2) Q:('$D(^SD(409.74,PTR,0))) 0 | 
|---|
| 64 | ;Declare variables | 
|---|
| 65 | N ZERONODE,STATPTR,STATUS | 
|---|
| 66 | ;Passed pointer to TRANSMITTED OUTPATIENT ENCOUNTER file | 
|---|
| 67 | ; Convert to pointer to [DELETED] OUTPATIENT ENCOUNTER file | 
|---|
| 68 | ; Quit if it can't be converted | 
|---|
| 69 | I ('PTR2) D  Q:('PTR) 0 | 
|---|
| 70 | .S ZERONODE=$G(^SD(409.73,PTR,0)) | 
|---|
| 71 | .S PTR=+$P(ZERONODE,"^",2) | 
|---|
| 72 | .;Entry is for an outpatient encounter | 
|---|
| 73 | .I (PTR) S PTR2=1 Q | 
|---|
| 74 | .;Entry is for a deleted outpatient encounter | 
|---|
| 75 | .S PTR=+$P(ZERONODE,"^",3) | 
|---|
| 76 | .S PTR2=2 | 
|---|
| 77 | ;Get zero node of [deleted] encounter | 
|---|
| 78 | S ZERONODE=$G(^SCE(PTR,0)) | 
|---|
| 79 | S:(PTR2=2) ZERONODE=$G(^SD(409.74,PTR,1)) | 
|---|
| 80 | ;Get pointer to appointment status | 
|---|
| 81 | S STATPTR=+$P(ZERONODE,"^",12) | 
|---|
| 82 | Q:('STATPTR) 0 | 
|---|
| 83 | ;Get zero node of appointment status | 
|---|
| 84 | S ZERONODE=$G(^SD(409.63,STATPTR,0)) | 
|---|
| 85 | ;Get abbreviation for appointment status | 
|---|
| 86 | S STATUS=$P(ZERONODE,"^",2) | 
|---|
| 87 | ;Inpatient appointments have an abbreviation of 'I' | 
|---|
| 88 | Q:(STATUS="I") 1 | 
|---|
| 89 | ;Not an inpatient appointment | 
|---|
| 90 | Q 0 | 
|---|
| 91 | ; | 
|---|
| 92 | DATECHK() ;this function call returns whether to require diag/prov based | 
|---|
| 93 | ;on the date function call and whether the post init has run. | 
|---|
| 94 | ;there are no inout variables. | 
|---|
| 95 | ; | 
|---|
| 96 | ;a 1 if after 10/1 or the post init has been run to require diag etc. | 
|---|
| 97 | ;a 0 if not to require yet | 
|---|
| 98 | ; | 
|---|
| 99 | N DATE,ANS | 
|---|
| 100 | S ANS=$$DATE(DT) I ANS G DATECHKQ | 
|---|
| 101 | I $P(^SD(404.91,1,"AMB"),U,7) S ANS=1 G DATECHKQ | 
|---|
| 102 | S ANS=0 | 
|---|
| 103 | DATECHKQ Q ANS | 
|---|
| 104 | ; | 
|---|
| 105 | OCCA(CLN) ;This function call returns whether or not the clinic is | 
|---|
| 106 | ;considered an occasion of service, based upon file 409.45. | 
|---|
| 107 | ; | 
|---|
| 108 | ;CLN is the clinic in question | 
|---|
| 109 | ; | 
|---|
| 110 | ;a 1 if this clinic is an occasion of service clinic | 
|---|
| 111 | ;a 0 if not | 
|---|
| 112 | ; | 
|---|
| 113 | N SCP,SC,ANS | 
|---|
| 114 | I '$D(^SC(CLN,0)) S ANS=0 G OCCAQ | 
|---|
| 115 | S SCP=$P(^SC(CLN,0),U,7) | 
|---|
| 116 | I 'SCP S ANS=0 G OCCAQ | 
|---|
| 117 | I '$D(^DIC(40.7,SCP,0)) S ANS=0 G OCCAQ | 
|---|
| 118 | S SC=$P(^DIC(40.7,SCP,0),U,2) | 
|---|
| 119 | I 'SC S ANS=0 G OCCAQ | 
|---|
| 120 | I '$O(^SD(409.45,"B",SC,"")) S ANS=0 G OCCAQ | 
|---|
| 121 | I "117^118^119^120^121^123^124^125^126^128^152^165^170^999"[SC S ANS=0 G OCCAQ | 
|---|
| 122 | S ANS=1 | 
|---|
| 123 | OCCAQ Q ANS | 
|---|