Changeset 1460 for Scheduling/trunk/m/BSDXAPI.m
- Timestamp:
- Jun 25, 2012, 8:54:59 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Scheduling/trunk/m/BSDXAPI.m
r1456 r1460 1 BSDXAPI ; IHS/ANMC/LJF & VW/SMH - SCHEDULING APIs ; 6/2 2/12 4:25pm1 BSDXAPI ; IHS/ANMC/LJF & VW/SMH - SCHEDULING APIs ; 6/25/12 6:13pm 2 2 ;;1.7T1;BSDX;;Aug 31, 2011;Build 18 3 3 ; Licensed under LGPL … … 44 44 ; for Baby foxes hallucinations. 45 45 ; S RESULT=$$MAKE1^BSDXAPI(23435,33,(3 or 4),3091220.221159,30,"I see Baby foxes") 46 N BSDR 46 47 S BSDR("PAT")=DFN ;DFN 47 48 S BSDR("CLN")=CLIN ;Hosp Loc IEN … … 108 109 ; 109 110 ; add appt to file 44. This adds it to the FIRST subfile (Appointment) 110 N DIC,DA,Y,X,DD,DO,DLAYGO 111 N DIC,DA,Y,X,DD,DO,DLAYGO,DINUM 111 112 I '$D(^SC(BSDR("CLN"),"S",0)) S ^SC(BSDR("CLN"),"S",0)="^44.001DA^^" 112 113 I '$D(^SC(BSDR("CLN"),"S",BSDR("ADT"),0)) D I Y<1 Q 1_U_"Error adding date to file 44: Clinic="_BSDR("CLN")_" Date="_BSDR("ADT") … … 202 203 ; for appt at Dec 20, 2009 @ 10:11:59 203 204 ; S RESULT=$$CHECKIN1^BSDXAPI(23435,33,3091220.221159) 205 N BSDR 204 206 S BSDR("PAT")=DFN ;DFN 205 207 S BSDR("CLN")=CLIN ;Hosp Loc IEN … … 238 240 ; 239 241 ; remember before status 240 NEW SDATA,DFN,SDT,SDCL,SDDA,SDCIHDL 242 NEW SDATA,DFN,SDT,SDCL,SDDA,SDCIHDL,SDMODE 241 243 S DFN=BSDR("PAT"),SDT=BSDR("ADT"),SDCL=BSDR("CLN"),SDMODE=2,SDDA=IEN 242 244 S SDCIHDL=$$HANDLE^SDAMEVT(1),SDATA=SDDA_U_DFN_U_SDT_U_SDCL … … 264 266 ; because foxes come out during bad weather. 265 267 ; S RESULT=$$CANCEL1^BSDXAPI(23435,33,"PC",3091220.221159,1,"Afraid of foxes") 268 N BSDR 266 269 S BSDR("PAT")=DFN 267 270 S BSDR("CLN")=CLIN … … 292 295 ; = 1^message: error and reason 293 296 ; 297 ; Okay to Cancel? Call Cancel Check. 294 298 N BSDXCANCK S BSDXCANCK=$$CANCELCK(.BSDR) 295 299 I BSDXCANCK Q BSDXCANCK … … 297 301 ; BSDX 1.5 3110125 298 302 ; UJO/SMH - Add ability to remove check-in if the patient is checked in 299 ; I $$CI(BSDR("PAT"),BSDR("CLN"),BSDR("ADT"),IEN) Q 1_U_"Patient already checked in; cannot cancel until checkin deleted: Patient="_BSDR("PAT")_" Clinic="_BSDR("CLN")_" Appt="_BSDR("ADT") 300 ; Remove check-in if the patient is checked in. 301 N BSDXRESULT S BSDXRESULT=0 ; Result; should be zero if success; -1 + message if failure 302 NEW IEN S IEN=$$SCIEN(BSDR("PAT"),BSDR("CLN"),BSDR("ADT")) 303 I $$CI(BSDR("PAT"),BSDR("CLN"),BSDR("ADT"),IEN) SET BSDXRESULT=$$RMCI(BSDR("PAT"),BSDR("CLN"),BSDR("ADT")) 304 I BSDXRESULT Q BSDXRESULT 305 ; NB: Failure point 1: we fail here nothing has happened yet 303 ; VEN/SMH on 3120625/v1.7 - PIMS doesn't care if patient is already checked in 304 ; Lets you remove appointment anyways! Not like RPMS. 305 ; Plus... deleting checkin affects S node on 44, which is DELETED anyways! 306 306 ; 307 307 ; remember before status 308 NEW SDATA,DFN,SDT,SDCL,SDDA,SDCPHDL 308 NEW SDATA,DFN,SDT,SDCL,SDDA,SDCPHDL,SDMODE 309 309 S DFN=BSDR("PAT"),SDT=BSDR("ADT"),SDCL=BSDR("CLN"),SDMODE=2,SDDA=IEN 310 310 S SDCPHDL=$$HANDLE^SDAMEVT(1),SDATA=SDDA_U_DFN_U_SDT_U_SDCL 311 311 D BEFORE^SDAMEVT(.SDATA,DFN,SDT,SDCL,SDDA,SDCPHDL) 312 ; NB: Here only globals are set. Nothing else.312 ; NB: Here only ^TMP globals are set with before values. 313 313 ; 314 314 ; get user who made appt and date appt made from ^SC … … 318 318 S DATE=$P($G(^SC(SDCL,"S",SDT,1,IEN,0)),U,7) 319 319 ; 320 ; update file 2 info 321 NEW DIE,DA,DR 322 S DIE="^DPT("_DFN_",""S"",",DA(1)=DFN,DA=SDT 323 S DR="3///"_BSDR("TYP")_";14///`"_BSDR("USR")_";15///"_BSDR("CDT")_";16///`"_BSDR("CR")_";19///`"_USER_";20///"_DATE 324 S:$G(BSDR("NOT"))]"" DR=DR_";17///"_$E(BSDR("NOT"),1,160) 325 D ^DIE 326 ; Failure point 2: If we fail here, it means that the check-in was removed; 327 ; but the appointment wasn't cancelled. 328 ; To roll back, we should restore the check-in. However, I would rather not 329 ; do that. This code will only fail if there's something wrong in the DB. 330 ; (deleted field for example). If I try to restore the check-in, I just 331 ; may excercerbate the problem. 332 ; 333 ; delete data in ^SC 320 ; update file 2 info --old code 321 ;NEW DIE,DA,DR 322 ;S DIE="^DPT("_DFN_",""S"",",DA(1)=DFN,DA=SDT 323 ;S DR="3///"_BSDR("TYP")_";14///`"_BSDR("USR")_";15///"_BSDR("CDT")_";16///`"_BSDR("CR")_";19///`"_USER_";20///"_DATE 324 ;S:$G(BSDR("NOT"))]"" DR=DR_";17///"_$E(BSDR("NOT"),1,160) 325 ;D ^DIE 326 N BSDXIENS S BSDXIENS=SDT_","_DFN_"," 327 N BSDXFDA 328 S BSDXFDA(2.98,BSDXIENS,3)=BSDR("TYP") 329 S BSDXFDA(2.98,BSDXIENS,14)=BSDR("USR") 330 S BSDXFDA(2.98,BSDXIENS,15)=BSDR("CDT") 331 S BSDXFDA(2.98,BSDXIENS,16)=BSDR("CR") 332 S BSDXFDA(2.98,BSDXIENS,19)=USER 333 S BSDXFDA(2.98,BSDXIENS,20)=DATE 334 S:$G(BSDR("NOT"))]"" BSDXFDA(2.98,BSDXIENS,17)=$E(BSDR("NOT"),1,160) 335 N BSDXERR 336 D FILE^DIE("","BSDXFDA","BSDXERR") 337 I $D(BSDXERR) Q 1_U_"Cannot cancel appointment in File 2" 338 ; Failure point 1: If we fail here, nothing has happened yet. 339 ; No rollback needed in ^BSDXAPPT 340 ; 341 ; delete data in ^SC -- this does not (typically) fail. Fileman won't stop 334 342 NEW DIK,DA 335 343 S DIK="^SC("_BSDR("CLN")_",""S"","_BSDR("ADT")_",1," 336 344 S DA(2)=BSDR("CLN"),DA(1)=BSDR("ADT"),DA=IEN 337 345 D ^DIK 338 ; Failure point 3: If we fail here, we need to restore the cancel date, 339 ; and possibly, the check-in. 340 ; 341 ; call event driver 346 ; Failure point 2: not expected to happen here 347 ; 348 ; call event driver -- point of no return 342 349 D CANCEL^SDAMEVT(.SDATA,DFN,SDT,SDCL,SDDA,SDMODE,SDCPHDL) 343 350 Q 0 … … 378 385 ; 379 386 ; Move my variables into the ones used by SDAPIs (just a convenience) 380 NEW SDATA,DFN,SDT,SDCL,SDDA,SDCIHDL 387 NEW SDATA,DFN,SDT,SDCL,SDDA,SDCIHDL,SDMODE 381 388 S DFN=PAT,SDT=DATE,SDCL=CLINIC,SDMODE=2,SDDA=$$SCIEN(DFN,SDCL,SDT) 382 389 ; … … 389 396 ; remove check-in using filer. 390 397 N BSDXIENS S BSDXIENS=SDDA_","_DATE_","_CLINIC_"," 398 N BSDXFDA 391 399 S BSDXFDA(44.003,BSDXIENS,309)="@" ; CHECKED-IN 392 400 S BSDXFDA(44.003,BSDXIENS,302)="@" ; CHECK IN USER … … 397 405 ; 398 406 ; set after status 399 S SDDA=$$SCIEN(DFN,SDCL,SDT)407 ; S SDDA=$$SCIEN(DFN,SDCL,SDT) ;smh -why is this here? SDDA won't change. 400 408 S SDCIHDL=$$HANDLE^SDAMEVT(1),SDATA=SDDA_U_DFN_U_SDT_U_SDCL 401 409 D AFTER^SDAMEVT(.SDATA,DFN,SDT,SDCL,SDDA,SDCIHDL) … … 437 445 ; 0 if okay 438 446 ; -1 if failure 447 ; 448 ; ERROR SIMULATION 449 I $G(BSDXSIMERR1) QUIT "-1~Simulated Error" 450 ; 439 451 N SCIEN S SCIEN=$$SCIEN(PAT,CLINIC,DATE) ; ien of appt in ^SC 440 452 I SCIEN<1 QUIT 0 ; Appt cancelled; cancelled appts rm'ed from file 44 441 453 N BSDXIENS S BSDXIENS=SCIEN_","_DATE_","_CLINIC_"," 442 S BSDXFDA(44.003,BSDXIENS,3)=$E(NOTE,1,150)454 N BSDXFDA S BSDXFDA(44.003,BSDXIENS,3)=$E(NOTE,1,150) 443 455 N BSDXERR 444 456 D FILE^DIE("","BSDXFDA","BSDXERR")
Note:
See TracChangeset
for help on using the changeset viewer.