1 | SDRPA08 ;BP-OIFO/OWAIN,ESW - Patient Appointment Data Compilation ; 9/10/04 9:41am
|
---|
2 | ;;5.3;Scheduling;**290,333,349,376**;AUG 13, 1993
|
---|
3 | ;This program generates appointment data into ^TMP("SDDPT",$J to be used by HL7 builder
|
---|
4 | Q
|
---|
5 | ;
|
---|
6 | APPT(DFN,SDADT,SDDM,SDCL,SDSTAT) ;
|
---|
7 | ;SDDM - HL7 format of creation date
|
---|
8 | ;SDSTAT - string from SDRPA05
|
---|
9 | N ARRAY,SDCLNM,SDSTOP,SDSTOP1,SDCSTOP,SDCSTOP1,SDINST,SDFAC,SDSDDT,SDCDT,SDARF,SDARDT,SDENRO,SDNAVA,SD6A,SD8A,SD8RD
|
---|
10 | N SDNEW,SDSCHED,SDCHKOUT,SDPRVSEQ,SDCNT,SDSCE,SDSTOPD,SDCSTOPD
|
---|
11 | D GETS^DIQ(44,SDCL_",",".01;3;8;99;2503","I","ARRAY") ; GETS called to try to improve efficiency.
|
---|
12 | S SDCLNM=$G(ARRAY(44,SDCL_",",.01,"I")) ; Clinic name.
|
---|
13 | S SDSTOP1=$G(ARRAY(44,SDCL_",",8,"I")) ; DSS identifier of clinic.
|
---|
14 | S SDSTOP=$$GET1^DIQ(40.7,SDSTOP1_",",1,"I")
|
---|
15 | S SDSTOPD=$$GET1^DIQ(40.7,SDSTOP1_",",.01,"I") ;description
|
---|
16 | S SDCSTOP1=$G(ARRAY(44,SDCL_",",2503,"I")) ; DSS credit stop of clinic.
|
---|
17 | S SDCSTOP="",SDCSTOPD=""
|
---|
18 | I SDCSTOP1>0 S SDCSTOP=$$GET1^DIQ(40.7,SDCSTOP1_",",1,"I"),SDCSTOPD=$$GET1^DIQ(40.7,SDCSTOP1_",",.01,"I")
|
---|
19 | S SDINST=$G(ARRAY(44,SDCL_",",3,"I")) ; Institution
|
---|
20 | S SDFAC=$S(SDINST="":"",1:$$GET1^DIQ(4,SDINST_",",99,"I")) ; Station
|
---|
21 | I SDFAC="" S SDDIV=$$GET1^DIQ(44,SDCL_",",3.5,"I") D
|
---|
22 | .I SDDIV'="" S SDINST=$$GET1^DIQ(40.8,SDDIV_",",.07,"I") I SDINST'="" D
|
---|
23 | ..S SDFAC=$S(SDINST="":"",1:$$GET1^DIQ(4,SDINST_",",99,"I")) ; Station
|
---|
24 | .I SDDIV="" S SDFAC=$P($$SITE^VASITE(,),"^",3)
|
---|
25 | ;
|
---|
26 | ;N SEQ S SEQ=0 F S SEQ=$O(^SC(SDCL,"S",SDADT,1,SEQ)) Q:+SEQ'=SEQ I $P(^SC(SDCL,"S",SDADT,1,SEQ,0),"^")=DFN Q
|
---|
27 | ;S SDCHKOUT=$$DTCONV($$GET1^DIQ(44.003,SEQ_","_SDADT_","_SDCL_",",303,"I")) ; Checked out date.
|
---|
28 | S SDCHKOUT=""
|
---|
29 | I $P(SDSTAT,"^",5)'="" S SDCHKOUT=$$DTCONV($P(SDSTAT,"^",5))
|
---|
30 | S SD8RD=""
|
---|
31 | I $P(SDSTAT,"^",7)'="" S SD8RD=$$DTCONV($P(SDSTAT,"^",7))
|
---|
32 | S SDSDDT=$$DTCONV($$GET1^DIQ(2.98,SDADT_","_DFN_",",27,"I")) ; desired date
|
---|
33 | S SDCDT=$$GET1^DIQ(2.98,SDADT_","_DFN_",",15,"I") ; Cancellation date.
|
---|
34 | S SDARF=$S($$GET1^DIQ(2.98,SDADT_","_DFN_",",25,"I")="A":"A",1:"") ; Auto-rebook flag.
|
---|
35 | S SDARDT=$$DTCONV($$GET1^DIQ(2.98,SDADT_","_DFN_",",12,"I")) ; Auto-rebook date.
|
---|
36 | S SDNAVA=$$GET1^DIQ(2.98,SDADT_","_DFN_",",26,"I") ; Next available appointment indicator.
|
---|
37 | I SDNAVA=0 D
|
---|
38 | .I SDARF="A" S SDNAVA=4
|
---|
39 | .E S SDNAVA=5
|
---|
40 | I SDNAVA="" S SDNAVA=6
|
---|
41 | S SDNEW=$$NEWAT(DFN,SDADT,SDSTOP1,SDCSTOP1,SDFAC) ; New to facility/clinic flag.
|
---|
42 | ;
|
---|
43 | S SD6A=$P(SDSTAT,"^",3) S SD8A=$P(SDSTAT,"^",4)
|
---|
44 | S ^TMP("SDDPT",$J,DFN,SDADT)=$$DTCONV(SDADT)_"^"_SDDM_"^"_SDSDDT_"^^"_SDNAVA_"^"_SDCHKOUT_"^"_$$DTCONV(SDCDT)_"^^"_SDARDT
|
---|
45 | S ^TMP("SDDPT",$J,DFN,SDADT)=^TMP("SDDPT",$J,DFN,SDADT)_"^"_SDNEW_"^^"_SDCL_"^"_SDCLNM_"^"_SDSTOP_"^"_SDCSTOP_"^"_SDFAC
|
---|
46 | S ^TMP("SDDPT",$J,DFN,SDADT,"SCH")=$P(SDSTAT,U,1,6)_U_SD8RD
|
---|
47 | S ^TMP("SDDPT",$J,DFN,SDADT,"STDC")=SDSTOPD_"^"_SDCSTOPD
|
---|
48 | ; Outpatient classification.
|
---|
49 | S SDSCE=$$GET1^DIQ(2.98,SDADT_","_DFN_",",21,"I")
|
---|
50 | I SDSCE'="" D EN^VAFHLZCL(DFN,SDSCE,"1,2,3","","^","^TMP(""SDDPT"",$J,DFN,SDADT,""ZCL"")")
|
---|
51 | ;get patient class
|
---|
52 | D GETAPPT^SDAMA201(DFN,"12",,SDADT,SDADT) N SDPATCL D K ^TMP($J,"SDAMA201")
|
---|
53 | .S SDPATCL=$G(^TMP($J,"SDAMA201","GETAPPT",1,12))
|
---|
54 | .I SDPATCL="" D
|
---|
55 | ..I SDSCE'="" N SDVST S SDVST=$$GET1^DIQ(409.68,SDSCE_",",.05,"I") D
|
---|
56 | ...I SDVST S SDPATCL=$$GET1^DIQ(9000010,SDVST_",",15002,"I")
|
---|
57 | ...S SDPATCL=$S(SDPATCL=1:"I",SDPATCL=0:"O",1:"U")
|
---|
58 | ..I SDSCE="" S SDPATCL="U"
|
---|
59 | .S $P(^TMP("SDDPT",$J,DFN,SDADT),"^",4)=SDPATCL
|
---|
60 | ; Get providers for clinic.
|
---|
61 | N SDPROV S (SDPRVSEQ,SDCNT)=0,SDPROV=""
|
---|
62 | N PROVID
|
---|
63 | F S SDPRVSEQ=$O(^SC(SDCL,"PR",SDPRVSEQ)) Q:+SDPRVSEQ'=SDPRVSEQ!(SDCNT>10) D
|
---|
64 | .S SDCNT=SDCNT+1,PROVID=$$GET1^DIQ(44.1,SDPRVSEQ_","_SDCL_",",.01,"I")
|
---|
65 | .S ^TMP("SDDPT",$J,DFN,SDADT,"ROL",SDCNT)="ROL^"_SDCNT_"^"_PROVID_"^"_$$GET1^DIQ(200,PROVID_",",.01,"I")
|
---|
66 | .Q
|
---|
67 | Q
|
---|
68 | NEWAT(DFN,SDADT,SDSTOP1,SDCSTOP1,SDFAC) ; New to facility/clinic flag.
|
---|
69 | N OK,SDADT0,SDFAC1,SDDIV
|
---|
70 | S OK=0,SDADT0=SDADT
|
---|
71 | F S SDADT=$O(^DPT(DFN,"S",SDADT),-1) Q:'SDADT Q:$$GT24(SDADT,SDADT0) D Q:OK
|
---|
72 | .N SDCL,SDDIV,ARRAY
|
---|
73 | .S SDCL=$$GET1^DIQ(2.98,SDADT_","_DFN_",",.01,"I")
|
---|
74 | .Q:$$GET1^DIQ(44,SDCL_",",8,"I")'=SDSTOP1
|
---|
75 | .Q:$$GET1^DIQ(44,SDCL_",",2503,"I")'=SDCSTOP1
|
---|
76 | .D GETS^DIQ(44,SDCL_",","3","I","ARRAY")
|
---|
77 | .S SDINST=$G(ARRAY(44,SDCL_",",3,"I")) ; Institution
|
---|
78 | .S SDFAC1=$S(SDINST="":"",1:$$GET1^DIQ(4,SDINST_",",99,"I")) ; Facility.
|
---|
79 | .I SDFAC1="" S SDDIV=$$GET1^DIQ(44,SDCL_",",3.5,"I") I SDDIV'="" D
|
---|
80 | ..S SDINST=$$GET1^DIQ(40.8,SDDIV_",",.07,"I") I SDINST'="" D
|
---|
81 | ...S SDFAC1=$S(SDINST="":"",1:$$GET1^DIQ(4,SDINST_",",99,"I")) ; Facility.
|
---|
82 | .I SDFAC1="" D
|
---|
83 | ..I SDDIV'="" S SDFAC1=$P($$SITE^VASITE(,SDDIV),"^",3) Q
|
---|
84 | ..S SDFAC1=$P($$SITE^VASITE(,),"^",3)
|
---|
85 | .I SDFAC1=SDFAC S OK=3
|
---|
86 | .Q
|
---|
87 | I OK Q OK
|
---|
88 | S SDADT=SDADT0
|
---|
89 | F S SDADT=$O(^DPT(DFN,"S",SDADT),-1) Q:'SDADT Q:$$GT24(SDADT,SDADT0) D Q:OK
|
---|
90 | .N SDCL,SDDIV,ARRAY
|
---|
91 | .S SDCL=$$GET1^DIQ(2.98,SDADT_","_DFN_",",.01,"I")
|
---|
92 | .Q:$$GET1^DIQ(44,SDCL_",",8,"I")'=SDSTOP1
|
---|
93 | .D GETS^DIQ(44,SDCL_",","3","I","ARRAY")
|
---|
94 | .S SDINST=$G(ARRAY(44,SDCL_",",3,"I")) ; Institution
|
---|
95 | .S SDFAC1=$S(SDINST="":"",1:$$GET1^DIQ(4,SDINST_",",99,"I")) ; Facility.
|
---|
96 | .I SDFAC1="" S SDDIV=$$GET1^DIQ(44,SDCL_",",3.5,"I") I SDDIV'="" D
|
---|
97 | ..S SDINST=$$GET1^DIQ(40.8,SDDIV_",",.07,"I") I SDINST'="" D
|
---|
98 | ...S SDFAC1=$S(SDINST="":"",1:$$GET1^DIQ(4,SDINST_",",99,"I")) ; Facility.
|
---|
99 | .I SDFAC1="" D
|
---|
100 | ..I SDDIV'="" S SDFAC1=$P($$SITE^VASITE(,SDDIV),"^",3) Q
|
---|
101 | ..S SDFAC1=$P($$SITE^VASITE(,),"^",3)
|
---|
102 | .I $E(SDFAC1,1,3)=$E(SDFAC,1,3) S OK=2
|
---|
103 | .Q
|
---|
104 | I OK Q OK
|
---|
105 | S OK=1 Q OK
|
---|
106 | ;
|
---|
107 | GT24(DATE1,DATE2) ; Are two dates greater than 24 months apart?
|
---|
108 | ; DATE1 should be before DATE2.
|
---|
109 | ; If they are not in that order, they are swapped anyway.
|
---|
110 | N MONTHS,TEMP
|
---|
111 | I DATE1>DATE2 S TEMP=DATE1,DATE1=DATE2,DATE2=TEMP
|
---|
112 | S MONTHS=$E(DATE2,2,3)-$E(DATE1,2,3)*12+$E(DATE2,4,5)-$E(DATE1,4,5)
|
---|
113 | Q MONTHS>24
|
---|
114 | DPT(DFN,SDCE) ;
|
---|
115 | ; Extrinsic. Returns boolean, 0: ^TMP("SDDPT",$J,DFN) not created; 1: created.
|
---|
116 | ;
|
---|
117 | N SDNAMEL,SDNAMEF,SDNAMEM,SDNAMES,SDNAME,NAME,DOB,SSN,SSNP,SDSC,ICN,SDADT,SDSCP,ARRAY,SDDCE
|
---|
118 | S SDDCE=$$GET1^DIQ(2,DFN_",",27.01,"I") ; Current enrollment. Required elsewhere.
|
---|
119 | S:SDDCE="" SDCE="" I SDDCE>0 S SDCE=$$GET1^DIQ(27.11,SDDCE_",",.07,"I") ; Enrollment priority
|
---|
120 | Q:$D(^TMP("SDDPT",$J,DFN)) 1
|
---|
121 | D GETS^DIQ(2,DFN_",",".301;.302;991.01","I","ARRAY") ; GETS called to try to improve efficiency.
|
---|
122 | S SDSC=$G(ARRAY(2,DFN_",",.301,"I")) ; Service connected.
|
---|
123 | S SDSCP=$G(ARRAY(2,DFN_",",.302,"I")) ; Service connected percentage.
|
---|
124 | S ICN=$$GETICN^MPIF001(DFN) ; Integration Control Number.
|
---|
125 | I +ICN<0 S ICN="" ;
|
---|
126 | D DEM^VADPT ;VADM array as output of this call
|
---|
127 | S (SDNAMEL,SDNAMEF,SDNAMEM,SDNAMES,SDNAME,NAME(1))=""
|
---|
128 | S NAME=$$GETNAME(DFN)
|
---|
129 | S DOB=$$DTCONV($P($G(VADM(3)),"^")) ; Date of birth.
|
---|
130 | S (SSN,SSNP)="" S SSN=$P($G(VADM(2)),"^") I SSN["P" S SSNP="P",SSN=$E(SSN,1,9) ; Social security number.
|
---|
131 | Q:$E(SSN,1,5)="00000" 0 ; Exclude test patients.
|
---|
132 | ;
|
---|
133 | S ^TMP("SDDPT",$J,DFN)=ICN_"^"_SSN_SSNP_"^"_NAME_"^"_DOB_"^"_$E(SDSC)_"^"_SDSCP_"^"_SDCE
|
---|
134 | Q 1
|
---|
135 | DTCONV(DT) ; Date conversion.
|
---|
136 | ; CYYMMDD -> CCYYMMDD
|
---|
137 | ; CYYMMDD.H{HMMSS} -> CCYYMMDDHHMM
|
---|
138 | I DT?7N Q DT+17E6
|
---|
139 | Q:DT?7N1"."1.6N DT\1+17E6_$E(DT#1+1*1E4,2,5)
|
---|
140 | Q ""
|
---|
141 | GETNAME(NMID) ; Name in HL7 format.
|
---|
142 | N SDNAME,NAME,SDNAMEL,SDNAMF,SDNAMEM,SDNAMES,SDNAMEF
|
---|
143 | S SDNAME("FILE")=2,SDNAME("IENS")=NMID,SDNAME("FIELD")=.01
|
---|
144 | S NAME(1)=$$HLNAME^XLFNAME(.SDNAME,"","^")
|
---|
145 | S SDNAMEL=$P($G(NAME(1)),"^"),SDNAMEF=$P($G(NAME(1)),"^",2),SDNAMEM=$P($G(NAME(1)),"^",3),SDNAMES=$P($G(NAME(1)),"^",4)
|
---|
146 | Q SDNAMEL_"^"_SDNAMEF_"^"_SDNAMEM_" "_SDNAMES
|
---|
147 | Q
|
---|