[613] | 1 | SDAPIAE0 ;ALB/MJK - Outpatient API/Standalone Add/Edits ; 22 FEB 1994 11:30 am
|
---|
| 2 | ;;5.3;Scheduling;**27,78,97,132**;08/13/93
|
---|
| 3 | ;
|
---|
| 4 | EN(DFN,SDT,SDCL,SDUZ,SDMODE,SDVIEN) ; -- check api for appts
|
---|
| 5 | N SDOE
|
---|
| 6 | S SDOE=0
|
---|
| 7 | ;
|
---|
| 8 | ; -- verify that check-out can occur
|
---|
| 9 | D CHECK(DFN,SDT,SDCL) I $$ERRCHK^SDAPIER() G ENQ
|
---|
| 10 | ;
|
---|
| 11 | ; -- file check-out data and get back ien
|
---|
| 12 | S SDOE=$$FILE(SDVIEN,SDUZ,SDMODE)
|
---|
| 13 | ;
|
---|
| 14 | ENQ Q SDOE
|
---|
| 15 | ;
|
---|
| 16 | CHECK(DFN,SDT,SDCL) ; -- check if event can occur/allowed
|
---|
| 17 | ;
|
---|
| 18 | ; -- error if appt date if after today
|
---|
| 19 | I SDT>(DT+.24) D ERRFILE^SDAPIER(104,SDT) G CHECKQ
|
---|
| 20 | CHECKQ Q
|
---|
| 21 | ;
|
---|
| 22 | FILE(SDVIEN,SDUZ,SDMODE) ; -- file data & return iens
|
---|
| 23 | N SDHDL,SDOE,SDOE0,SDOEP,SDX,DR,DIE,SDDR,DA,SDCOMPF,SDLOG,SDAEVT
|
---|
| 24 | ;
|
---|
| 25 | S SDHDL=$$HANDLE^SDAMEVT(2)
|
---|
| 26 | ;
|
---|
| 27 | ; -- get encounter ien ; error if none returned
|
---|
| 28 | S SDOE=+$O(^SCE("AVSIT",SDVIEN,0))
|
---|
| 29 | ;
|
---|
| 30 | ; -- setup event driver data for existing encounter
|
---|
| 31 | IF SDOE D BEFORE^SDAMEVT2(SDOE,SDHDL)
|
---|
| 32 | ;
|
---|
| 33 | ; -- get encounter / set appt type if not set
|
---|
| 34 | IF 'SDOE D G:'SDOE FILEQ
|
---|
| 35 | . S SDOE=$$GETAE^SDVSIT2(SDVIEN,$G(@SDROOT@("APPT TYPE")))
|
---|
| 36 | . IF 'SDOE D ERRFILE^SDAPIER(110) Q
|
---|
| 37 | . S SDOE0=$G(^SCE(SDOE,0)),SDAEVT=6 ; -- add a/e event
|
---|
| 38 | . Q:$P(SDOE0,U,10) ; -- quit if appt type set
|
---|
| 39 | . S SDLOG("CG")=1 ; -- set computer generated?
|
---|
| 40 | . S SDX=$$TYPE(SDOE,$P(SDOE0,U,6)) ; -- determine appt type
|
---|
| 41 | . S SDLOG("APPT TYPE")=+SDX ; -- set appt type
|
---|
| 42 | . S:+SDX=10 SDLOG("REASON")=$P(SDX,U,2) ; -- set reason
|
---|
| 43 | ;
|
---|
| 44 | ; -- log user, date/time and standalone specific data
|
---|
| 45 | D LOGDATA^SDAPIAP(SDOE,.SDLOG)
|
---|
| 46 | ;
|
---|
| 47 | ; -- process data
|
---|
| 48 | D FILE^SDAPICO(SDOE,SDUZ)
|
---|
| 49 | ;
|
---|
| 50 | ; -- update co if deletion occurred
|
---|
| 51 | IF SDOE,'$$CHK^SDCOM(SDOE) D COMDT^SDCODEL(SDOE,0)
|
---|
| 52 | ;
|
---|
| 53 | ; -- update check-out completion
|
---|
| 54 | D EN^SDCOM(SDOE,SDMODE,SDHDL,.SDCOMPF)
|
---|
| 55 | ;
|
---|
| 56 | ; -- set visit change flag for event driver
|
---|
| 57 | D CHANGE^SDAMEVT4(.SDHDL,$P($G(^SCE(SDOE,0)),U,8),$G(@SDROOT@("VISIT CHANGE FLAGS")))
|
---|
| 58 | ;
|
---|
| 59 | ; -- get after values and invoke event driver
|
---|
| 60 | D EVT^SDAMEVT2(SDOE,$G(SDAEVT,7),SDHDL)
|
---|
| 61 | ;
|
---|
| 62 | ; -- cleanup event driver vars
|
---|
| 63 | D CLEAN^SDAMEVT(SDHDL)
|
---|
| 64 | FILEQ Q SDOE
|
---|
| 65 | ;
|
---|
| 66 | TYPE(SDOE,SDOEP) ; -- Get Appt Type
|
---|
| 67 | ; Input: SDOE - Outpatient Encounter pointer
|
---|
| 68 | ; SDOEP - Outpatient Parent Encounter pointer
|
---|
| 69 | ; Output: Appointment Type ^ reason for computer generated
|
---|
| 70 | ;
|
---|
| 71 | N SDD,SDD1,SDI,SDCP,SDOE0,SDATE,X1,X2,X,VAERR,VAEL,SDX,SDQ,SDATYPE
|
---|
| 72 | S SDCP=0
|
---|
| 73 | ;
|
---|
| 74 | ;--If SDOEP exists, use its appointment type
|
---|
| 75 | IF $G(SDOEP) S SDATYPE=$P($G(^SCE(SDOEP,0)),U,10) IF SDATYPE G TYPEQ
|
---|
| 76 | ;
|
---|
| 77 | ;--search last 3 days + today in Outpatient Encounter file
|
---|
| 78 | S SDOE0=$G(^SCE(SDOE,0)),SDATE=$P(+SDOE0,".")
|
---|
| 79 | S X1=SDATE,X2="-3" D C^%DTC S SDD1=X,SDD=SDD1-.1 K X,%H,X1,X2
|
---|
| 80 | F S SDD=$O(^SCE("ADFN",DFN,SDD)) Q:'SDD!($P(SDD,".")>SDATE)!(SDCP) D
|
---|
| 81 | . S SDI=0
|
---|
| 82 | . F S SDI=$O(^SCE("ADFN",SDD,SDI)) Q:'SDI!(SDCP) IF $P($G(^SCE(SDI,0)),U,10)=1 S SDCP=1
|
---|
| 83 | ;
|
---|
| 84 | ;;search last 3 days + today in Patient File
|
---|
| 85 | I 'SDCP S SDD=SDD1-.1 F S SDD=$O(^DPT(DFN,"S",SDD)) Q:SDD'>0!(SDCP)!($P(SDD,".")>SDATE) IF $P($G(^(SDD,0)),U,16)=1 S SDCP=1
|
---|
| 86 | ;
|
---|
| 87 | I SDCP S SDATYPE=10 G TYPEQ
|
---|
| 88 | ;
|
---|
| 89 | ;if no comp and pen appts, try to determine based on eligibility
|
---|
| 90 | S SDATYPE=0 D ELIG^VADPT
|
---|
| 91 | I VAERR!'$G(VAEL(1)) S SDATYPE=10 G TYPEQ
|
---|
| 92 | S VAEL(1)=$P(^DIC(8,+VAEL(1),0),U,9)
|
---|
| 93 | S SDFLAG=$S(+VAEL(1)=9:8,+VAEL(1)=13:7,+VAEL(1)=14:4,1:0)
|
---|
| 94 | ; *** rebuild Elig array from VAEL(1,#) using pointers to MAS ELIGIBILITY CODE File,
|
---|
| 95 | ; #8.1, Check for SHARING AGREEMENT (9), COLLATERAL OF VET. (13) or EMPLOYEE (14)
|
---|
| 96 | ;
|
---|
| 97 | I $D(VAEL(1))=11 D G:$G(SDQ) TYPEQ
|
---|
| 98 | . N ELG
|
---|
| 99 | . S SDX=0 F S SDX=$O(VAEL(1,SDX)) Q:'SDX D
|
---|
| 100 | .. S ELG(+$P($G(^DIC(8,+VAEL(1,SDX),0)),U,9))=""
|
---|
| 101 | . I $D(ELG(9))!($D(ELG(13)))!($D(ELG(14)))!SDFLAG S SDATYPE=10,SDQ=1
|
---|
| 102 | ;
|
---|
| 103 | S SDATYPE=$S($D(VAEL(1))=1&(SDFLAG):SDFLAG,1:9)
|
---|
| 104 | ;
|
---|
| 105 | ; -- Appointment Type ^ reason for computer generated
|
---|
| 106 | TYPEQ Q SDATYPE_U_$S(SDCP:2,SDATYPE=10:1,1:"")
|
---|
| 107 | ;
|
---|