1 | SDAM2 ;ALB/MJK - Appt Mgt (cont); 8/18/05 12:10pm ; Compiled April 16, 2007 09:43:32
|
---|
2 | ;;5.3;Scheduling;**250,296,327,478,446**;Aug 13, 1993;Build 77
|
---|
3 | ;
|
---|
4 | CI ; -- protocol SDAM APPT CHECK IN entry pt
|
---|
5 | ; input: VALMY := array entries
|
---|
6 | ;
|
---|
7 | N %,SDI,SDAT,VALMY,SDAMCIDT,SDCIACT
|
---|
8 | D SEL^VALM2 S SDI=0,SDCIACT=""
|
---|
9 | D NOW^%DTC S SDAMCIDT=$P(%,".")_"."_$E($P(%,".",2)_"0000",1,4)
|
---|
10 | F S SDI=$O(VALMY(SDI)) Q:'SDI I $D(^TMP("SDAMIDX",$J,SDI)) K SDAT D
|
---|
11 | .S SDAT=^TMP("SDAMIDX",$J,SDI)
|
---|
12 | .W !,^TMP("SDAM",$J,+SDAT,0)
|
---|
13 | .D:VALMCC SELECT^VALM10(+SDAT,1)
|
---|
14 | .D ONE($P(SDAT,U,2),$P(SDAT,U,4),$P(SDAT,U,3),$P(SDAT,U,5),0,SDAMCIDT)
|
---|
15 | .D:VALMCC SELECT^VALM10(+SDAT,0)
|
---|
16 | S VALMBCK=$S(VALMCC:"",1:"R")
|
---|
17 | Q
|
---|
18 | ;
|
---|
19 | ONE(DFN,SDCL,SDT,SDDA,SDASK,SDAMCIDT) ; -- check in one appt
|
---|
20 | ; input: DFN := ifn of patient
|
---|
21 | ; SDCL := clinic#
|
---|
22 | ; SDT := appt d/t
|
---|
23 | ; SDDA := ifn in ^SC multiple or null
|
---|
24 | ; SDASK := ask d/t of ci always [1|yes or 0|no]
|
---|
25 | ; SDAMCIDT := ci date/time [optional]
|
---|
26 | ;
|
---|
27 | I $D(XRTL) D T0^%ZOSV
|
---|
28 | S:'SDDA SDDA=$$FIND(DFN,SDT,SDCL)
|
---|
29 | I 'SDDA W !!,*7,"You cannot check in this appointment." D PAUSE^VALM1 G ONEQ
|
---|
30 | N SDATA,SDCIHDL,X S SDATA=SDDA_U_DFN_U_SDT_U_SDCL,SDCIHDL=$$HANDLE^SDAMEVT(1)
|
---|
31 | D BEFORE^SDAMEVT(.SDATA,DFN,SDT,SDCL,SDDA,SDCIHDL)
|
---|
32 | I '$D(^SD(409.63,"ACI",1,+SDATA("BEFORE","STATUS"))) W !!,*7,"You cannot check in this appointment." D PAUSE^VALM1 G ONEQ
|
---|
33 | ; *** mt blocking removed
|
---|
34 | ;S X="EASMTCHK" X ^%ZOSF("TEST") I $T,$G(EASACT)'="W",$$MT^EASMTCHK(DFN,"","C",SDT) D PAUSE^VALM1 G ONEQ
|
---|
35 | I $P(SDT,".")>DT W !!,*7,"It is too soon to check in this appointment." D PAUSE^VALM1 G ONEQ
|
---|
36 | S:'$D(^SC(SDCL,"S",0)) ^(0)="^44.001DA^^"
|
---|
37 | S DR="",X=$G(^SC(SDCL,"S",SDT,1,SDDA,"C"))
|
---|
38 | I +X S DR=309
|
---|
39 | ; -- already co'ed
|
---|
40 | I DR="",$P(X,U,3) D
|
---|
41 | .S DR="309//"
|
---|
42 | .I $P(^SC(SDCL,0),U,24)!(SDASK) S DR=DR_$$FTIME^VALM1($P(X,U,3)) Q
|
---|
43 | .S DR=DR_"//^S X="_$P(X,U,3)
|
---|
44 | ;
|
---|
45 | I DR="",$P(^SC(SDCL,0),U,24)!(SDASK) S DR="309//"_$S(SDAMCIDT:$$FTIME^VALM1(SDAMCIDT),1:"NOW")
|
---|
46 | I DR="" S DR="309///"_$S(SDAMCIDT:"/"_SDAMCIDT,1:"NOW")
|
---|
47 | S DA(2)=SDCL,DA(1)=SDT,DA=SDDA,DIE="^SC("_DA(2)_",""S"","_DA(1)_",1," D ^DIE
|
---|
48 | D AFTER^SDAMEVT(.SDATA,DFN,SDT,SDCL,SDDA,SDCIHDL)
|
---|
49 | I '$P(SDATA("AFTER","STATUS"),U,4),'$P(SDATA("BEFORE","STATUS"),U,4) W !?8,*7,"...appointment has not been checked in" D PAUSE^VALM1
|
---|
50 | I SDATA("BEFORE","STATUS")'=SDATA("AFTER","STATUS") D
|
---|
51 | .I $P(SDATA("AFTER","STATUS"),U,4),'$P(SDATA("BEFORE","STATUS"),U,4) W !?8,"...checked in ",$$FTIME^VALM1($P(SDATA("AFTER","STATUS"),U,4))
|
---|
52 | .I $D(SDCIACT) D
|
---|
53 | ..S Y=SDATA("AFTER","STATUS"),Y1=$P(Y,U,4),Y=$P(Y,U,3)
|
---|
54 | ..I $P(SDATA("BEFORE","STATUS"),U,3)'=Y D UPD($$LOWER^VALM1(Y),"STAT",+SDAT,1),UPD("","TIME",+SDAT,1)
|
---|
55 | ..I $P(SDATA("AFTER","STATUS"),U,3)["CHECKED IN" D UPD($S($P(Y1,".")=DT:$$TIME^SDAM1($P(Y1,".",2)),1:" "),"TIME",+SDAT,1)
|
---|
56 | .D EVT^SDAMEVT(.SDATA,4,0,SDCIHDL) ; 4 := ci evt , 0 := interactive mode
|
---|
57 | I $D(XRT0) S XRTN="SDAM2" D T1^%ZOSV
|
---|
58 | ONEQ K DA,DIE,DR,DQ,DE,Y,Y1 Q
|
---|
59 | ;
|
---|
60 | ;
|
---|
61 | FIND(DFN,SDT,SDCL) ; -- return appt ifn for pat
|
---|
62 | ; input: DFN := ifn of pat.
|
---|
63 | ; SDT := appt d/t
|
---|
64 | ; SDCL := ifn of clinic
|
---|
65 | ; output: [returned] := ifn if pat has appt on date/time
|
---|
66 | ;
|
---|
67 | N Y
|
---|
68 | S Y=0 F S Y=$O(^SC(SDCL,"S",SDT,1,Y)) Q:'Y I $D(^(Y,0)),DFN=+^(0),$D(^DPT(+DFN,"S",SDT,0)),$$VALID(DFN,SDCL,SDT,Y) S CNSTLNK=$P($G(^SC(SDCL,"S",SDT,1,Y,"CONS")),U) K:CNSTLNK="" CNSTLNK Q ;SD/478
|
---|
69 | Q Y
|
---|
70 | ;
|
---|
71 | UPD(TEXT,FLD,LINE,SAVE) ; -- update data for screen
|
---|
72 | D FLDTEXT^VALM10(LINE,FLD,TEXT)
|
---|
73 | D:VALMCC CNTRL^VALM10(LINE,$P(VALMDDF(FLD),U,2),$P(VALMDDF(FLD),U,3),IOINHI,IOINORM,+$G(SAVE))
|
---|
74 | Q
|
---|
75 | ;
|
---|
76 | MAKE ; -- make appt action
|
---|
77 | N ORACTION,ORVP,XQORQUIT,SDAMERR
|
---|
78 | D FULL^VALM1
|
---|
79 | W !!,VALMHDR(1)
|
---|
80 | D ^SDM
|
---|
81 | I '$D(SDAMERR) D BLD^SDAM
|
---|
82 | I $D(SDAMERR) D PAUSE^VALM1
|
---|
83 | D SDM^SDKILL S VALMBCK="R"
|
---|
84 | Q
|
---|
85 | ;
|
---|
86 | WI ; -- walk-in visit action
|
---|
87 | S VALMBCK="R"
|
---|
88 | D FULL^VALM1
|
---|
89 | I SDAMTYP="P" I $$CL^SDAMWI(SDFN) D BLD^SDAM1
|
---|
90 | I SDAMTYP="C" I $$PT^SDAMWI(SDCLN) D BLD^SDAM3
|
---|
91 | ;evaluate wait list ;SD/327
|
---|
92 | EWLCHK ;check if patient has any open EWL entries (SD/372)
|
---|
93 | ;CLN expected as clinic IEN
|
---|
94 | I '$D(DFN) Q
|
---|
95 | Q:'$D(SDT)
|
---|
96 | K ^TMP($J,"SDAMA301"),^TMP($J,"APPT")
|
---|
97 | N SD S SD=SDT
|
---|
98 | I '$D(SC) S SC=+$G(CLN)
|
---|
99 | ;
|
---|
100 | K ^TMP($J,"SDAMA301"),^TMP($J,"APPT")
|
---|
101 | W:$D(IOF) @IOF D APPT^SDWLEVAL(DFN,SD,SC)
|
---|
102 | Q:'$D(^TMP($J,"APPT"))
|
---|
103 | N SDEV D EN^SDWLEVAL(DFN,.SDEV) I SDEV,$L(SDEV(1))>0 D
|
---|
104 | .K ^TMP("SDWLPL",$J),^TMP($J,"SDWLPL")
|
---|
105 | .D INIT^SDWLPL(DFN,"M")
|
---|
106 | .Q:'$D(^TMP($J,"SDWLPL"))
|
---|
107 | .D LIST^SDWLPL("M",DFN)
|
---|
108 | .F Q:'$D(^TMP($J,"SDWLPL")) N SDR D ANSW^SDWLEVAL(1,.SDR) I 'SDR D LIST^SDWLPL("M",DFN) D
|
---|
109 | ..F N SDR D ANSW^SDWLEVAL(0,.SDR) Q:'$D(^TMP($J,"SDWLPL")) I 'SDR W !,"MUST ENTER A REASON NOT TO DISPOSITION MATCHED EWL ENTRY",!
|
---|
110 | I $D(^TMP($J,"APPT")) N SDEV D EN^SDWLEVAL(DFN,.SDEV) I SDEV,$L(SDEV(1))>0 D
|
---|
111 | .Q:'$D(^TMP($J,"SDWLPL")) D ASKREM^SDWLEVAL S SDCTN=1 ;display and process selected open EWL entries
|
---|
112 | .Q
|
---|
113 | Q
|
---|
114 | ;
|
---|
115 | DATE ; -- change date range
|
---|
116 | S VALMB=SDBEG D RANGE^VALM11
|
---|
117 | I $S('VALMBEG:1,SDBEG'=VALMBEG:0,1:SDEND=VALMEND) W !!,"Date range was not changed." D PAUSE^VALM1 S VALMBCK="" G DATEQ
|
---|
118 | S SDBEG=VALMBEG,SDEND=VALMEND
|
---|
119 | I SDAMTYP="P" D BLD^SDAM1
|
---|
120 | I SDAMTYP="C" D BLD^SDAM3
|
---|
121 | S VALMBCK="R"
|
---|
122 | DATEQ K VALMB,VALMBEG,VALMEND Q
|
---|
123 | ;
|
---|
124 | INP(DFN,VDATE) ; -- determine inpat status ; dom is not an inpat appt
|
---|
125 | N SDINP,VAINDT,VADMVT
|
---|
126 | S SDINP="",VAINDT=VDATE D ADM^VADPT2 G INPQ:'VADMVT
|
---|
127 | I $P(^DG(43,1,0),U,21),$P($G(^DIC(42,+$P($G(^DGPM(VADMVT,0)),U,6),0)),U,3)="D" G INPQ
|
---|
128 | S SDINP="I"
|
---|
129 | INPQ Q SDINP
|
---|
130 | ;
|
---|
131 | VALID(DFN,SDCL,SDT,SDDA) ; -- return valid appt.
|
---|
132 | ; **NOTE: For speed consideration the ^SC and ^DPT nodes must be
|
---|
133 | ; check to see they exist prior to calling this entry point.
|
---|
134 | ; input: DFN := ifn of pat.
|
---|
135 | ; SDT := appt d/t
|
---|
136 | ; SDCL := ifn of clinic
|
---|
137 | ; SDDA := ifn of appt
|
---|
138 | ; output: [returned] := 1 for valid appt., 0 for not valid
|
---|
139 | Q $S($P(^SC(SDCL,"S",SDT,1,SDDA,0),U,9)'="C":1,$P(^DPT(DFN,"S",SDT,0),U,2)["C":1,1:0)
|
---|