1 | FHOMRO1 ;Hines OIFO/RTK RECURRING MEALS ORDER EDIT ;2/04/03 14:05
|
---|
2 | ;;5.5;DIETETICS;**1,2,5**;Jan 28, 2005;Build 53
|
---|
3 | ;
|
---|
4 | S FHDIET="" F FHDX=1:1:5 S FHDIETX(FHDX)=""
|
---|
5 | S FHMSG1="R" D ^FHOMDPA I FHDFN="" Q
|
---|
6 | I '$D(^FHPT(FHDFN,0)) W !!,"UNKNOWN SELECTION !" Q
|
---|
7 | D NOW^%DTC S X1=$E(%,1,7),X2=-1 D C^%DTC S FHNOW=X D CHECK
|
---|
8 | I FHEXST=1 D ORDEDT,END Q
|
---|
9 | D ORDER,END Q
|
---|
10 | ORDEDT ;
|
---|
11 | W !!,"This person has an existing outpatient diet order."
|
---|
12 | K DIR S DIR(0)="SBO^E:Edit;O:New Order"
|
---|
13 | S DIR("A")="Edit the existing diet or order another one" D ^DIR
|
---|
14 | Q:$D(DIRUT)
|
---|
15 | I Y="O" D ORDER Q
|
---|
16 | I Y="E" D EDIT Q
|
---|
17 | Q
|
---|
18 | ORDER ;
|
---|
19 | W ! D OUTLOC^FHOMUTL I FHLOC="" D EXMSG^FHOMUTL Q
|
---|
20 | W ! D RMBED^FHOMUTL
|
---|
21 | DIETORD ;
|
---|
22 | I $P($G(^FH(119.6,FHLOC,1)),U,4)="Y" D MULTDT D:FHDIETX(1)="" EXMSG^FHOMUTL Q:FHDIETX(1)="" D DATE Q
|
---|
23 | D DIETLST^FHOMUTL I FHDEF="" W !!,"NO DEFAULT OUTPATIENT DIET SET!!",! Q
|
---|
24 | S FHDEF=$P($G(^FH(111,FHDEF,0)),U,1)
|
---|
25 | K DIC S DIC="^FH(111,",DIC("A")="Select DIET NAME: ",DIC(0)="AEMQZ"
|
---|
26 | S DIC("B")=FHDEF,DIC("S")="I $D(FHDIETS(+Y))" D ^DIC
|
---|
27 | I $D(DUOUT) D EXMSG^FHOMUTL Q
|
---|
28 | I Y=-1 D EXMSG^FHOMUTL Q
|
---|
29 | S FHDIET=+Y
|
---|
30 | DATE ;
|
---|
31 | K DIR S DIR("A")="Select Start Date: ",DIR(0)="DAO^DT" D ^DIR
|
---|
32 | I $D(DIRUT) D EXMSG^FHOMUTL Q
|
---|
33 | S (FHOSTDT,STDT)=Y S Y=STDT D DD^%DT W " ",Y
|
---|
34 | S FHMAX=$P($G(^FH(119.6,FHLOC,1)),U,2) I FHMAX="" S FHMAX=999
|
---|
35 | D NOW^%DTC S FHTODAY=$E(%,1,7),X1=FHTODAY,X2=FHMAX D C^%DTC S FHCUT=X
|
---|
36 | K DIR S DIR("A")="Select End Date: ",DIR(0)="DAO^"_STDT_":"_FHCUT D ^DIR
|
---|
37 | I $D(DIRUT) D EXMSG^FHOMUTL Q
|
---|
38 | S ENDT=Y S Y=ENDT D DD^%DT W " ",Y
|
---|
39 | DAYS ;
|
---|
40 | S FHIFLG=0 D SHDAYS
|
---|
41 | K DIR S DIR("A")="Select Days of Week: ",DIR(0)="FAO"
|
---|
42 | D ^DIR I $D(DIRUT) D EXMSG^FHOMUTL Q
|
---|
43 | S FHDAYS=Y D DAYCHK I FHIFLG=1 D DAYS Q
|
---|
44 | K DIR S DIR("A")="Select MEAL: "
|
---|
45 | S DIR(0)="SAO^B:Breakfast;N:Noon;E:Evening"
|
---|
46 | D ^DIR I $D(DIRUT) D EXMSG^FHOMUTL Q
|
---|
47 | S FHMEAL=Y W !
|
---|
48 | I STDT=DT S X=DT D H^%DTC I FHDAYS[$E("XMTWRFS",%Y+1) D CHECKSM I FHSMYES=1 D MSG1 S X1=STDT,X2=1 D C^%DTC S STDT=X I X>ENDT Q
|
---|
49 | K DIR S DIR("A")="Is this correct?: ",DIR(0)="YA",DIR("B")="Y" D ^DIR
|
---|
50 | S CONT=Y I CONT'=1 D EXMSG^FHOMUTL Q
|
---|
51 | S STDTMP=STDT,FHTDTMP=FHTODAY I STDT=DT D CHK1^FHOMRO2
|
---|
52 | D SETNODE,UPD100
|
---|
53 | I FHSETFLG=0 W !!!?5,"No meals ordered!",! Q
|
---|
54 | S FHMSG1="R" D OKMSG^FHOMUTL
|
---|
55 | S FHLTFLG=0 I STDTMP=FHTDTMP D CHK2^FHOMRO2
|
---|
56 | I FHLTFLG=1 F FHRNUM=0:0 S FHRNUM=$O(^FHPT(FHDFN,"OP","B",FHTODAY,FHRNUM)) Q:FHRNUM'>0 D
|
---|
57 | .I $P($G(^FHPT(FHDFN,"OP",FHRNUM,0)),U,4)'=FHMEAL Q
|
---|
58 | .I $P($G(^FHPT(FHDFN,"OP",FHRNUM,0)),U,15)="C" Q
|
---|
59 | .S FHEL="L",FHRMDT=FHTODAY D ORD^FHOMRE1
|
---|
60 | Q
|
---|
61 | SETNODE ;
|
---|
62 | S FHMPNUM=$O(^FHPT(FHDFN,"OP","C",""),-1),FHADSFF=0 I FHMPNUM="" S FHMPNUM=0
|
---|
63 | S FHMPNUM=FHMPNUM+1,FHSETFLG=0
|
---|
64 | K ODAYS S CCC=0,X1=STDT,X2=-1 D C^%DTC S STDT=X
|
---|
65 | S ENDL=0 F Q:ENDL=1 D
|
---|
66 | .S CCC=CCC+1,X1=STDT,X2=1 D C^%DTC S STDT=X
|
---|
67 | .I STDT>ENDT S ENDL=1 Q
|
---|
68 | .S X=STDT D DOW^%DTC
|
---|
69 | .I FHDAYS[$E("XMTWRFS",Y+1) S ODAYS(STDT)=STDT D SET
|
---|
70 | .Q
|
---|
71 | S FHACT="O",FHOPTY="R" D SETORX^FHOMRO2 ;creates RM events
|
---|
72 | I $G(FHDPATT)="",FHDIET'="@" S FHDPATT=FHDIET_"^^^^"
|
---|
73 | D SOSFFP^FHOMRO2 ;created diet related SO's, SF's, FP's
|
---|
74 | D SOEVNT^FHSPED ;creates so events
|
---|
75 | D SFEVNT^FHNO7 ;creates sf events
|
---|
76 | Q
|
---|
77 | SET ;
|
---|
78 | S FHPREVML=0 D PREV I FHPREVML=1 Q
|
---|
79 | S FHSETFLG=1
|
---|
80 | ;I $O(^FHPT(FHDFN,"OP","B",STDT,FHRNUM)) Q:FHRNUM'>0 D
|
---|
81 | D CPRSO^FHSPED ;check previous SO
|
---|
82 | D CPRSF^FHNO7 ;check previous SF
|
---|
83 | S Y=STDT K DIC,DO S DA(1)=FHDFN,DIC="^FHPT("_DA(1)_",""OP"","
|
---|
84 | S DIC(0)="L" ;,DIC("P")=$P(^DD(115,16,0),U,2),X=+Y,DINUM=X
|
---|
85 | D FILE^DICN I Y=-1 Q
|
---|
86 | K DIE S DA(1)=FHDFN,DIE="^FHPT("_DA(1)_",""OP"","
|
---|
87 | S FHORN=$S($G(FHORN)="":"",1:FHORN),DA=+Y
|
---|
88 | S DR="1////^S X=FHDIET;2////^S X=FHLOC;2.5////^S X=FHRMBD;3////^S X=FHMEAL;5////^S X=FHMPNUM;6////^S X=FHDIETX(1);7////^S X=FHDIETX(2);8////^S X=FHDIETX(3);9////^S X=FHDIETX(4);10////^S X=FHDIETX(5);.05////^S X=FHORN;24.5////^S X=DUZ" D ^DIE
|
---|
89 | S ADM=DA
|
---|
90 | D PPRSO^FHSPED ;process previous SO automatically to the new Recurring meal entry.
|
---|
91 | D PPRSF^FHNO7 ;process previous SF automatically.
|
---|
92 | Q
|
---|
93 | MULTDT ;
|
---|
94 | S FHDPATT="",FHDIET="@" F FHDX=1:1:5 S FHDIETX(FHDX)="@"
|
---|
95 | D ^FHOMRO3 I $O(FHDI(0))="" F FHDX=1:1:5 S FHDIETX(FHDX)="" Q
|
---|
96 | S FHDX=0 F FHD0=0:0 S FHD0=$O(FHDI(FHD0)) Q:FHD0="" S FHDX=FHDX+1,FHDIETX(FHDX)=$P(FHDI(FHD0),"^",1),FHDPATT=FHDPATT_FHDIETX(FHDX)_"^"
|
---|
97 | Q
|
---|
98 | SHDAYS ;
|
---|
99 | W !!," Mon Tues Wed Thur Fri Sat Sun"
|
---|
100 | W !," M T W R F S X"
|
---|
101 | W !!,"Enter string of characters for desired days of week: e.g., MWF",!
|
---|
102 | Q
|
---|
103 | DAYCHK ;
|
---|
104 | S X=FHDAYS D TR^FH S FHDAYS=X
|
---|
105 | S X1="" F K=1:1 S Z=$E(FHDAYS,K) Q:Z=""!(FHIFLG=1) D
|
---|
106 | .I X1[Z S FHIFLG=1 Q
|
---|
107 | .I "MTWRFSX"'[Z S FHIFLG=1 Q
|
---|
108 | .S X1=X1_Z Q
|
---|
109 | I FHIFLG=1 W !!,"Please enter the desired days of the week.",!
|
---|
110 | Q
|
---|
111 | PREV ;
|
---|
112 | F FHRNUM=0:0 S FHRNUM=$O(^FHPT(FHDFN,"OP","B",STDT,FHRNUM)) Q:FHRNUM'>0!(FHPREVML=1) D
|
---|
113 | .I $P($G(^FHPT(FHDFN,"OP",FHRNUM,0)),U,4)'=FHMEAL Q
|
---|
114 | .I $P($G(^FHPT(FHDFN,"OP",FHRNUM,0)),U,15)="C" Q
|
---|
115 | .D PATNAME^FHOMUTL S FHPREDT=$$FMTE^XLFDT(STDT,"P") I $G(FHHL7)'=1 D
|
---|
116 | ..W !!?3,FHPTNM," ALREADY HAS A "
|
---|
117 | ..W $S(FHMEAL="B":"BREAKFAST",FHMEAL="N":"NOON",1:"EVENING")
|
---|
118 | ..W " MEAL ORDERED FOR ",FHPREDT
|
---|
119 | .S FHPREVML=1
|
---|
120 | Q
|
---|
121 | CHECK ;
|
---|
122 | S FHEXST=0 I $O(^FHPT(FHDFN,"OP","B",FHNOW)) D
|
---|
123 | .F FHRMDT=FHNOW:0 S FHRMDT=$O(^FHPT(FHDFN,"OP","B",FHRMDT)) Q:FHRMDT'>0 F FHRNUM=0:0 S FHRNUM=$O(^FHPT(FHDFN,"OP","B",FHRMDT,FHRNUM)) Q:FHRNUM'>0 I $P($G(^FHPT(FHDFN,"OP",FHRNUM,0)),U,15)'="C" S FHEXST=1
|
---|
124 | Q
|
---|
125 | CHECKSM ; Check if the OP has an existing SM for this date/meal
|
---|
126 | S FHSMYES=0
|
---|
127 | F FHZ=DT:0 S FHZ=$O(^FHPT(FHDFN,"SM","B",FHZ)) Q:FHZ'>0 D
|
---|
128 | .I $P($G(^FHPT(FHDFN,"SM",FHZ,0)),U,9)'=FHMEAL Q
|
---|
129 | .I $P($G(^FHPT(FHDFN,"SM",FHZ,0)),U,2)="C" Q
|
---|
130 | .I $P($G(^FHPT(FHDFN,"SM",FHZ,0)),U,2)="D" Q
|
---|
131 | .S FHSMYES=1
|
---|
132 | Q
|
---|
133 | MSG1 ;
|
---|
134 | W !!,"This patient already has a Special Meal ordered for "
|
---|
135 | S DTP=DT D DTP^FH W DTP," "
|
---|
136 | W $S(FHMEAL="B":"Breakfast",FHMEAL="N":"Noon",1:"Evening"),! H 1 Q
|
---|
137 | ;
|
---|
138 | END ;Kill local variables before exiting
|
---|
139 | D KILL^FHOMRO2
|
---|
140 | Q
|
---|
141 | ;
|
---|
142 | EDIT ;
|
---|
143 | D NOW^%DTC S STDT=$E(%,1,7),FHDTRLE=%
|
---|
144 | D DISP^FHOMRR1
|
---|
145 | EDT1 K DIR S DIR(0)="NAO^1:"_NUM,DIR("A")="Edit Which Order? " D ^DIR
|
---|
146 | Q:$D(DIRUT)
|
---|
147 | S ORDNUM=Y,Y=$P(FHLIST(ORDNUM),U,2) D DD^%DT W !,Y,!
|
---|
148 | S DA=$P(FHLIST(ORDNUM),U,1),DA(1)=FHDFN,DIE="^FHPT("_DA(1)_",""OP"","
|
---|
149 | I $P($G(^FHPT(FHDFN,"OP",DA,0)),U,15)="C" W !!?3,"The selected order has been cancelled!",! D EDT1 Q
|
---|
150 | S FHLPT=$P($G(^FHPT(FHDFN,"OP",DA,0)),U,3),FHMEAL=$P($G(^FHPT(FHDFN,"OP",DA,0)),U,4)
|
---|
151 | D OUTLOC I FHLOC="" D UPXMSG^FHOMUTL Q
|
---|
152 | I $P($G(^FH(119.6,FHLOC,1)),U,4)="Y" D MULTDT D:FHDIETX(1)="" UPXMSG^FHOMUTL Q:FHDIETX(1)="" S FHDIET="@" D SETEDT Q
|
---|
153 | D DIETLST^FHOMUTL I FHDEF="" W !!,"NO DEFAULT OUTPATIENT DIET SET!!",! Q
|
---|
154 | S FHDEF2=$P($G(^FHPT(FHDFN,"OP",DA,0)),U,2) I FHDEF2'="" S FHDEF=$P($G(^FH(111,FHDEF2,0)),U,1)
|
---|
155 | K DIC S DIC="^FH(111,",DIC("A")="Select DIET NAME: ",DIC(0)="AEMQZ"
|
---|
156 | S DIC("B")=FHDEF,DIC("S")="I FHSPDTS[$P(^(0),U)" D ^DIC
|
---|
157 | I $D(DUOUT) D UPXMSG^FHOMUTL Q
|
---|
158 | I Y=-1 D UPXMSG^FHOMUTL Q
|
---|
159 | S FHDIET=+Y F FHDX=1:1:5 S FHDIETX(FHDX)="@"
|
---|
160 | SETEDT ;
|
---|
161 | W ! S FHZDA=DA,DR="2////^S X=FHLOC;1////^S X=FHDIET;6////^S X=FHDIETX(1);7////^S X=FHDIETX(2);8////^S X=FHDIETX(3);9////^S X=FHDIETX(4);10////^S X=FHDIETX(5);25////^S X=FHDTRLE;24.5////^S X=DUZ"
|
---|
162 | D ^DIE,UPDMSG^FHOMUTL,ED100
|
---|
163 | Q
|
---|
164 | OUTLOC ;Prompt for outpatient location - screen for ONLY Outpatient Locations
|
---|
165 | S FHLOC="",FHOUT="O"
|
---|
166 | K DIC S DIC="^FH(119.6,",DIC(0)="AEQZ",DIC("B")=FHLPT
|
---|
167 | S DIC("A")="Select OUTPATIENT LOCATION: "
|
---|
168 | S DIC("S")="I $P(^(0),U,3)=FHOUT" D ^DIC
|
---|
169 | Q:$D(DUOUT) I Y=-1 Q
|
---|
170 | S FHLOC=+Y I '$D(^FH(119.6,FHLOC,"L")) S FHLOC="" W !!,"The selected location does not have an Associated Hospital Location."
|
---|
171 | Q
|
---|
172 | UPD100 ;Backdoor message to update file #100 with a new RM order
|
---|
173 | Q:'$$PATCH^XPDUTL("OR*3.0*215") ;must have CPRSv26 for O.M. backdoor
|
---|
174 | Q:'DFN K MSG D MSHOM^FHOMUTL ;Sets MSG(1), MSG(2) & MSG(3) for OM
|
---|
175 | K N1 S FHODAYS=""
|
---|
176 | F N=1:1:7 S FH1=$E(FHDAYS,N) Q:FH1="" S M=$F("MTWRFSX",FH1)-1,N1(M)=""
|
---|
177 | F N=0:0 S N=$O(N1(N)) Q:N'>0 S FHODAYS=FHODAYS_"~QJ"_N
|
---|
178 | S FHODAYS=$E(FHODAYS,2,999)
|
---|
179 | S FHOMEAL=$S(FHMEAL="B":1,FHMEAL="N":3,FHMEAL="E":5,1:"")
|
---|
180 | I FHDIET'="@" S FHODNM=$P($G(^FH(111,FHDIET,0)),U,1)
|
---|
181 | S FHOSTDT=$$FMTHL7^XLFDT(FHOSTDT),FHOENDT=$$FMTHL7^XLFDT(ENDT)
|
---|
182 | S FHOTDAY=$$FMTHL7^XLFDT(FHTODAY)
|
---|
183 | S FILL="R;"_FHMPNUM_";"_FHOSTDT_";"_ENDT_";"_FHDAYS_";"_FHMEAL
|
---|
184 | S MSG(4)="ORC|SN||"_FILL_"^FH||||^"_FHODAYS_"^^"_FHOSTDT_"^"_FHOENDT_"||||||||"_FHOTDAY
|
---|
185 | I FHDIET'="@" S MSG(5)="ODS|D|"_FHOMEAL_"|^^^"_FHDIET_"^"_FHODNM_"^99FHD|"
|
---|
186 | I FHDIET="@" D
|
---|
187 | .F N=0:0 S N=$O(FHDIETX(N)) Q:N'>0 Q:FHDIETX(N)="" S FHODNM=$P($G(^FH(111,FHDIETX(N),0)),U,1),MSG(N+4)="ODS|D|"_FHOMEAL_"|^^^"_FHDIETX(N)_"^"_FHODNM_"^99FHD|"
|
---|
188 | D EVSEND^FHWOR
|
---|
189 | Q
|
---|
190 | ED100 ;Backdoor message to update file #100 with an edited RM order
|
---|
191 | Q:'$$PATCH^XPDUTL("OR*3.0*215") ;must have CPRSv26 for O.M. backdoor
|
---|
192 | Q:'DFN K MSG D MSHOM^FHOMUTL ;Sets MSG(1), MSG(2) & MSG(3) for OM
|
---|
193 | S (FHOSTDT,FHOENDT)=$P($G(^FHPT(FHDFN,"OP",FHZDA,0)),U,1)
|
---|
194 | S FHOSTDT=$$FMTHL7^XLFDT(FHOSTDT),FHOENDT=$$FMTHL7^XLFDT(FHOENDT)
|
---|
195 | S FILL="RMEDIT;"_FHZDA,FHORN=$P($G(^FHPT(FHDFN,"OP",FHZDA,0)),U,12)
|
---|
196 | S FHODNM=$P($G(^FH(111,FHDIET,0)),U,1)
|
---|
197 | S FHOMEAL=$S(FHMEAL="B":1,FHMEAL="N":3,FHMEAL="E":5,1:"")
|
---|
198 | S MSG(4)="ORC|XX|"_FHORN_"^OR|"_FILL_"^FH||||^^^"_FHOSTDT_"^"_FHOENDT_"||||||||"
|
---|
199 | S MSG(5)="ODS|D|"_FHOMEAL_"|^^^"_FHDIET_"^"_FHODNM_"^99FHD|"
|
---|
200 | D EVSEND^FHWOR
|
---|
201 | Q
|
---|