source: Scheduling/trunk/m/BSDX25.m@ 1113

Last change on this file since 1113 was 1113, checked in by Sam Habiel, 13 years ago

Added EP for RPC to remove check-in

File size: 6.3 KB
Line 
1BSDX25 ; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ; 3/15/11 8:15pm
2 ;;1.5V2;BSDX;;Mar 03, 2011
3 ;
4 ; Change Log:
5 ; 3110106: SMH -> Changed Check-in EP - Removed unused paramters. Will change C#
6 ;
7 ;
8CHECKIND(BSDXY,BSDXAPTID,BSDXCDT,BSDXCC,BSDXPRV,BSDXROU,BSDXVCL,BSDXVFM,BSDXOG) ;EP
9 ;Entry point for debugging
10 ;
11 ;I +$G(^BSDXDBUG("BREAK","CHECKIN")),+$G(^BSDXDBUG("BREAK"))=DUZ D DEBUG^%Serenji("CHECKIN^BSDX25(.BSDXY,BSDXAPTID,BSDXCDT,BSDXCC,BSDXPRV,BSDXROU,BSDXVCL,BSDXVFM,BSDXOG)",$P(^BSDXDBUG("BREAK"),U,2))
12 Q
13 ;
14CHECKIN(BSDXY,BSDXAPTID,BSDXCDT) ; ,BSDXCC,BSDXPRV,BSDXROU,BSDXVCL,BSDXVFM,BSDXOG) ;EP Check in appointment
15 ; Private to GUI; use BSDXAPI for general API to checkin patients
16 ; Parameters:
17 ; BSDXY: Global Out
18 ; BSDXAPTID: Appointment ID in ^BSDXAPPT
19 ; BSDXCDT: Checkin Date --> Changed
20 ; BSDXCC: Clinic Stop IEN (not used)
21 ; BSDXPRV: Provider IEN (not used)
22 ; BSDXROU: Print Routing Slip? (not used)
23 ; BSDXVCL: PCC+ Clinic IEN (not used)
24 ; BSDXVFM: PCC+ Form IEN (not used)
25 ; BSDXOG: PCC+ Outguide (true or false)
26 ;
27 ; Output:
28 ; ADO.net table with 1 column ErrorID, 1 row result
29 ; - 0 if all okay
30 ; - Another number or text if not
31
32 N BSDXNOD,BSDXPATID,BSDXSTART,DIK,DA,BSDXID,BSDXI,BSDXZ,BSDXIENS,BSDXVEN
33 N BSDXNOEV
34 S BSDXNOEV=1 ;Don't execute protocol
35 ;
36 D ^XBKVAR S X="ERROR^BSDX25",@^%ZOSF("TRAP")
37 S BSDXI=0
38 K ^BSDXTMP($J)
39 S BSDXY="^BSDXTMP("_$J_")"
40 S ^BSDXTMP($J,0)="T00020ERRORID"_$C(30)
41 I '+BSDXAPTID D ERR("BSDX25: Invalid Appointment ID") Q
42 I '$D(^BSDXAPPT(BSDXAPTID,0)) D ERR("BSDX08: Invalid Appointment ID") Q
43 ; Remove Date formatting v.1.5. Client will send date as FM Date.
44 ;S:BSDXCDT["@0000" BSDXCDT=$P(BSDXCDT,"@")
45 ;S %DT="T",X=BSDXCDT D ^%DT S BSDXCDT=Y
46 S BSDXCDT=+BSDXCDT ; Strip off zeros if C# sends them
47 I BSDXCDT=-1 D ERR(70) Q
48 I BSDXCDT>$$NOW^XLFDT S BSDXCDT=$$NOW^XLFDT
49 ;Checkin BSDX APPOINTMENT entry
50 D BSDXCHK(BSDXAPTID,BSDXCDT)
51 S BSDXNOD=^BSDXAPPT(BSDXAPTID,0)
52 S BSDXPATID=$P(BSDXNOD,U,5)
53 S BSDXSTART=$P(BSDXNOD,U)
54 ;
55 S BSDXSC1=$P(BSDXNOD,U,7) ;RESOURCEID
56 I BSDXSC1]"",$D(^BSDXRES(BSDXSC1,0)) D I +$G(BSDXZ) D ERR($P(BSDXZ,U,2)) Q
57 . S BSDXNOD=^BSDXRES(BSDXSC1,0)
58 . S BSDXSC1=$P(BSDXNOD,U,4) ;HOSPITAL LOCATION
59 . I BSDXSC1]"",$D(^SC(BSDXSC1,0)) D APCHK(.BSDXZ,BSDXSC1,BSDXPATID,BSDXCDT,BSDXSTART)
60 ;
61 S BSDXI=BSDXI+1
62 ;S ^BSDXTMP($J,BSDXI)="-1"_$C(30)
63 S ^BSDXTMP($J,BSDXI)="0"_$C(30)
64 S BSDXI=BSDXI+1
65 S ^BSDXTMP($J,BSDXI)=$C(31)
66 Q
67 ;
68BSDXCHK(BSDXAPTID,BSDXCDT) ;
69 ;
70 S BSDXIENS=BSDXAPTID_","
71 S BSDXFDA(9002018.4,BSDXIENS,.03)=BSDXCDT
72 D FILE^DIE("","BSDXFDA","BSDXMSG")
73 Q
74 ;
75APCHK(BSDXZ,BSDXSC1,BSDXDFN,BSDXCDT,BSDXSTART) ;
76 ;Checkin appointment for patient BSDXDFN in clinic BSDXSC1
77 ;at time BSDXSTART
78 S BSDXZ=$$CHECKIN1^BSDXAPI(BSDXDFN,BSDXSC1,BSDXSTART)
79 Q
80 ;
81RMCI(BSDXY,BSDXAPPTID) ; EP - Remove Check-in from BSDX APPT and 2/44
82 ; Called by RPC [Fill in later]
83 ;
84 ; Parameters to pass:
85 ; APPTID: IEN in file BSDX APPOINTMENT
86 ;
87 ; Return in global array:
88 ; Record set with Column ERRORID; value of 0 AOK; other value
89 ; --> means that something went wrong
90 ;
91 N BSDXNOEV S BSDXNOEV=1 ;Don't execute protocol
92 ;
93 N $ET S $ET="G ERROR^BSDX25" ; Error Trap
94 ;
95 ; Set return variable and kill contents
96 N BSDXY S BSDXY=$NAME(^BSDXTMP($J))
97 K @BSDXY
98 ;
99 N BSDXI S BSDXI=0 ; Initialize Counter
100 ;
101 S ^BSDXTMP($J,BSDXI)="T00020ERRORID"_$C(30) ; Header of ADO recordset
102 ;
103 TSTART ():SERIAL ; Perform Autolocking
104 ;
105 ; Check for Appointment ID (passed and exists in file)
106 I '+BSDXAPTID D ERR("1~Invalid Appointment ID") QUIT
107 I '$D(^BSDXAPPT(BSDXAPTID,0)) D ERR("2~Invalid Appointment ID") QUIT
108 ;
109 ; Remove checkin from BSDX APPOINTMENT entry
110 D BSDXCHK(BSDXAPTID,"@")
111 ;
112 ; Now, remove checkin from PIMS files 2/44
113 N BSDXNOD S BSDXNOD=^BSDXAPPT(BSDXAPTID,0)
114 N BSDXPATID S BSDXPATID=$P(BSDXNOD,U,5) ; DFN
115 N BSDXSTART S BSDXSTART=$P(BSDXNOD,U) ; Start Date
116 N BSDXSC1 S BSDXSC1=$P(BSDXNOD,U,7) ; Resource ID
117 ;
118 ; If the resource doesn't exist, error out. DB is corrupt.
119 I BSDXSC1]"" D ERR("3~DB has corruption. Call Tech Support.") QUIT
120 I $D(^BSDXRES(BSDXSC1,0)) D ERR("4~DB has corruption. Call Tech Support.") QUIT
121 ;
122 N BSDXNOD S BSDXNOD=^BSDXRES(BSDXSC1,0) ; Resource 0 node
123 S BSDXSC1=$P(BSDXNOD,U,4) ;HOSPITAL LOCATION
124 ;
125 N BSDXZ ; Scratch variable to hold error message
126 I BSDXSC1]"",$D(^SC(BSDXSC1,0)) S BSDXZ=$$RMCI^BSDXAPI(BSDXPAT,BSDXSC1,BSDXSTART)
127 I +$G(BSDXZ) D ERR("5~"_$P(BSDXZ,U,2)) QUIT
128 ;
129 TCOMMIT ; Save Data into Globals
130 ;
131 ; Return ADO recordset
132 S BSDXI=BSDXI+1
133 S ^BSDXTMP($J,BSDXI)="0"_$C(30)
134 S BSDXI=BSDXI+1
135 S ^BSDXTMP($J,BSDXI)=$C(31)
136 Q
137 ;
138CHKEVT(BSDXPAT,BSDXSTART,BSDXSC) ;EP Called by BSDX CHECKIN APPOINTMENT event
139 ;when appointments CHECKIN via PIMS interface.
140 ;Propagates CHECKIN to BSDXAPPT and raises refresh event to running GUI clients
141 ;
142 Q:+$G(BSDXNOEV)
143 Q:'+$G(BSDXSC)
144 N BSDXSTAT,BSDXFOUND,BSDXRES
145 S BSDXSTAT=""
146 S:$G(SDATA("AFTER","STATUS"))["CHECKED IN" BSDXSTAT=$P(SDATA("AFTER","STATUS"),"^",4)
147 S BSDXFOUND=0
148 I $D(^BSDXRES("ALOC",BSDXSC)) S BSDXRES=$O(^BSDXRES("ALOC",BSDXSC,0)) S BSDXFOUND=$$CHKEVT1(BSDXRES,BSDXSTART,BSDXPAT,BSDXSTAT)
149 I BSDXFOUND D CHKEVT3(BSDXRES) Q
150 I $D(^BXDXRES("ASSOC",BSDXSC)) S BSDXRES=$O(^BSDXRES("ASSOC",BSDXSC,0)) S BSDXFOUND=$$CHKEVT1(BSDXRES,BSDXSTART,BSDXPAT,BSDXSTAT)
151 I BSDXFOUND D CHKEVT3(BSDXRES)
152 Q
153 ;
154CHKEVT1(BSDXRES,BSDXSTART,BSDXPAT,BSDXSTAT) ;
155 ;Get appointment id in BSDXAPT
156 ;If found, call BSDXNOS(BSDXAPPT) and return 1
157 ;else return 0
158 N BSDXFOUND,BSDXAPPT
159 S BSDXFOUND=0
160 Q:'+$G(BSDXRES) BSDXFOUND
161 Q:'$D(^BSDXAPPT("ARSRC",BSDXRES,BSDXSTART)) BSDXFOUND
162 S BSDXAPPT=0 F S BSDXAPPT=$O(^BSDXAPPT("ARSRC",BSDXRES,BSDXSTART,BSDXAPPT)) Q:'+BSDXAPPT D Q:BSDXFOUND
163 . S BSDXNOD=$G(^BSDXAPPT(BSDXAPPT,0)) Q:BSDXNOD=""
164 . I $P(BSDXNOD,U,5)=BSDXPAT,$P(BSDXNOD,U,12)="" S BSDXFOUND=1 Q
165 I BSDXFOUND,+$G(BSDXAPPT) D BSDXCHK(BSDXAPPT,BSDXSTAT)
166 Q BSDXFOUND
167 ;
168CHKEVT3(BSDXRES) ;
169 ;Call RaiseEvent to notify GUI clients
170 ;
171 N BSDXRESN
172 S BSDXRESN=$G(^BSDXRES(BSDXRES,0))
173 Q:BSDXRESN=""
174 S BSDXRESN=$P(BSDXRESN,"^")
175 ;D EVENT^BSDX23("SCHEDULE-"_BSDXRESN,"","","")
176 D EVENT^BMXMEVN("BSDX SCHEDULE",BSDXRESN)
177 Q
178 ;
179ERROR ;
180 D ERR("-20~Mumps Error")
181 Q
182 ;
183ERR(BSDXERR) ;Error processing
184 I $TLEVEL>0 TROLLBACK
185 S BSDXERR=$TEXT(+0)_":"_$GET(BSDXERR) ; Append Routine Name
186 S BSDXI=BSDXI+1
187 S ^BSDXTMP($J,BSDXI)=BSDXERR_$C(30)
188 S BSDXI=BSDXI+1
189 S ^BSDXTMP($J,BSDXI)=$C(31)
190 QUIT
Note: See TracBrowser for help on using the repository browser.