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
|
---|