| 1 | SDAPIAP ;ALB/MJK - Outpatient API/Appointments ; 22 FEB 1994 11:30 am | 
|---|
| 2 | ;;5.3;Scheduling;**27,132**;08/13/93 | 
|---|
| 3 | ; | 
|---|
| 4 | EN(DFN,SDT,SDCL,SDUZ,SDMODE,SDVIEN) ; -- check api for appts | 
|---|
| 5 | N SDDA,SDOE | 
|---|
| 6 | S SDOE=0 | 
|---|
| 7 | ; -- verify that check-out can occur | 
|---|
| 8 | D CHECK(DFN,SDT,SDCL,.SDDA) I $$ERRCHK^SDAPIER() G ENQ | 
|---|
| 9 | ; | 
|---|
| 10 | ; -- file check-out data ; get encount ien | 
|---|
| 11 | S SDOE=$$FILE(DFN,SDT,SDCL,SDUZ,SDDA,SDMODE,$G(SDVIEN)) | 
|---|
| 12 | ; | 
|---|
| 13 | ENQ Q SDOE | 
|---|
| 14 | ; | 
|---|
| 15 | CHECK(DFN,SDT,SDCL,SDDA) ; -- check if event can occur/allowed | 
|---|
| 16 | N SDATA,STATUS | 
|---|
| 17 | ; -- error if appt node doesn't exist | 
|---|
| 18 | S SDATA=$G(^DPT(DFN,"S",SDT,0)) | 
|---|
| 19 | I SDATA="" D ERRFILE^SDAPIER(100,SDT_U_DFN) G CHECKQ | 
|---|
| 20 | ; | 
|---|
| 21 | ; -- error if different clinic | 
|---|
| 22 | I +SDATA'=SDCL D ERRFILE^SDAPIER(101,+SDATA_U_SDCL) G CHECKQ | 
|---|
| 23 | ; | 
|---|
| 24 | ; -- error if no slot for appt | 
|---|
| 25 | S SDDA=$$FIND^SDAM2(DFN,SDT,SDCL) I 'SDDA D ERRFILE^SDAPIER(102,SDT_U_SDCL) G CHECKQ | 
|---|
| 26 | ; | 
|---|
| 27 | ; -- get appt status data | 
|---|
| 28 | S STATUS=$$STATUS^SDAM1(DFN,SDT,SDCL,SDATA,SDDA) | 
|---|
| 29 | ; | 
|---|
| 30 | ; -- error if current status won't allow checking-out | 
|---|
| 31 | I '$D(^SD(409.63,"ACO",1,+STATUS)) D ERRFILE^SDAPIER(103,$P(STATUS,";",2)) G CHECKQ | 
|---|
| 32 | ; | 
|---|
| 33 | ; -- warning if already checked-out | 
|---|
| 34 | I $P(STATUS,";",2)="CHECKED OUT" D ERRFILE^SDAPIER(1100) | 
|---|
| 35 | ; | 
|---|
| 36 | ; -- error if appt date if after today | 
|---|
| 37 | I SDT>(DT+.2359) D ERRFILE^SDAPIER(104,SDT) G CHECKQ | 
|---|
| 38 | CHECKQ Q | 
|---|
| 39 | ; | 
|---|
| 40 | FILE(DFN,SDT,SDCL,SDUZ,SDDA,SDMODE,SDVIEN) ; -- file data | 
|---|
| 41 | N SDATA,SDHDL,SDOE,SDCOMPF,SDLOG | 
|---|
| 42 | S SDOE="" | 
|---|
| 43 | ; | 
|---|
| 44 | ; -- setup event driver data | 
|---|
| 45 | D BEFORE^SDCO1(.SDATA,DFN,SDT,SDCL,SDDA,.SDHDL) | 
|---|
| 46 | ; | 
|---|
| 47 | ; -- set elig for appt | 
|---|
| 48 | D ELIG^SDCO1(DFN,SDT,SDCL,SDDA) ; may need to expand | 
|---|
| 49 | ; | 
|---|
| 50 | ; -- get encounter ien ; error if none returned | 
|---|
| 51 | S SDOE=$$GETAPT^SDVSIT2(DFN,SDT,SDCL,$G(SDVIEN)) | 
|---|
| 52 | I 'SDOE D ERRFILE^SDAPIER(110) G FILEQ | 
|---|
| 53 | ; | 
|---|
| 54 | ; -- time stamp check-out and log data | 
|---|
| 55 | D DT(DFN,SDT,SDCL,SDDA,$G(@SDROOT@("DATE/TIME"))) | 
|---|
| 56 | D LOGDATA(SDOE) | 
|---|
| 57 | ; | 
|---|
| 58 | ; -- process data | 
|---|
| 59 | D FILE^SDAPICO(SDOE,SDUZ) | 
|---|
| 60 | ; | 
|---|
| 61 | ; -- update check-out completion | 
|---|
| 62 | D EN^SDCOM(SDOE,SDMODE,SDHDL,.SDCOMPF) | 
|---|
| 63 | ; | 
|---|
| 64 | ; -- set visit change flag for event driver | 
|---|
| 65 | D CHANGE^SDAMEVT4(.SDHDL,$P($G(^SCE(SDOE,0)),U,8),$G(@SDROOT@("VISIT CHANGE FLAGS"))) | 
|---|
| 66 | ; | 
|---|
| 67 | ; -- get after values and invoke event driver | 
|---|
| 68 | D AFTER^SDAMEVT(.SDATA,DFN,SDT,SDCL,SDDA,SDHDL) | 
|---|
| 69 | D EVT^SDAMEVT(.SDATA,5,SDMODE,SDHDL) | 
|---|
| 70 | ; | 
|---|
| 71 | ; -- cleanup event driver vars | 
|---|
| 72 | D CLEAN^SDAMEVT(SDHDL) | 
|---|
| 73 | ; | 
|---|
| 74 | FILEQ Q SDOE | 
|---|
| 75 | ; | 
|---|
| 76 | DT(DFN,SDT,SDCL,SDDA,SDCODT) ; -- time stamp check out date | 
|---|
| 77 | ; -- NOTE: this code duplicates at DT^SDCO1 but silent | 
|---|
| 78 | N %DT,DR,SDCIDT,X,DIE,DA | 
|---|
| 79 | S:'$D(^SC(SDCL,"S",0)) ^(0)="^44.001DA^^" | 
|---|
| 80 | S X=$G(^SC(SDCL,"S",SDT,1,SDDA,"C")),SDCIDT=+X | 
|---|
| 81 | ;IF $P(X,U,3) G DTQ | 
|---|
| 82 | S DR="" IF $G(SDCODT) S DR="303R////"_$S(SDCODT<SDCIDT:SDCIDT,1:SDCODT) | 
|---|
| 83 | IF DR]"" D DIE^SDCO1(SDCL,SDT,SDDA,DR) | 
|---|
| 84 | DTQ Q | 
|---|
| 85 | ; | 
|---|
| 86 | LOGDATA(SDOE,SDLOG) ; -- log user, date/time and other data | 
|---|
| 87 | N DIE,DA,DR,Y,X | 
|---|
| 88 | S SDLOG("USER")=$S(+$G(SDUZ):+SDUZ,1:$G(DUZ)) ; -- editing user | 
|---|
| 89 | S SDLOG("DATE/TIME")=$$NOW^XLFDT()            ; -- last edited | 
|---|
| 90 | S DIE="^SCE(",DA=SDOE,DR="[SD ENCOUNTER LOG]" D ^DIE | 
|---|
| 91 | Q | 
|---|
| 92 | ; | 
|---|