[613] | 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 | ;
|
---|