1 | FHWOR2 ; HISC/NCA - HL7 Diet Order ;11/22/00 11:05
|
---|
2 | ;;5.5;DIETETICS;;Jan 28, 2005
|
---|
3 | S (DATE,D1)=SDT I DATE="" S TXT="No Start Date." D ERR^FHWOR Q
|
---|
4 | D NOW^%DTC D CVT^FHWOR S D1=DATE
|
---|
5 | S (DATE,D2)=EDT
|
---|
6 | I DATE D CVT^FHWOR S D2=DATE
|
---|
7 | I D2,D1>D2 S TXT="Wrong Stop Date." D ERR^FHWOR Q
|
---|
8 | S DATE=NOW D CVT^FHWOR S NOW=DATE
|
---|
9 | S FHRDER=+FHORN
|
---|
10 | I D1<% S D1=%
|
---|
11 | K DI S N1=0 F K=5:1 S X=$G(FHMSG(K)) Q:X="" D
|
---|
12 | .I $E(X,1,3)'="ODS" S TXT="Msg Error." Q
|
---|
13 | .S TYP=$E($P(X,"|",2),2) I TYP="" S TXT="No Type of Service." Q
|
---|
14 | .I "TCD"'[TYP S TXT="Wrong Type of Tray." Q
|
---|
15 | .S DIET=$P(X,"|",4),Y=$P(DIET,"^",4),FILE=$P(DIET,"^",6),COM=$E($P(X,"|",5),1,80)
|
---|
16 | .I $E(FILE,1,5)'="99FHD" S TXT="Msg Error." Q
|
---|
17 | .S PREC=$P($G(^FH(111,+Y,0)),"^",4) I $D(DI(PREC)) S TXT="Msg Error." Q
|
---|
18 | .S N1=N1+1,DI(PREC)=Y_"^"_$G(^FH(111,+Y,0)) Q
|
---|
19 | I TXT'="" D ERR^FHWOR Q
|
---|
20 | I N1>1 D I CHK S TXT="Can not order REGULAR with another Diet." D ERR^FHWOR Q
|
---|
21 | .S CHK=0 F D0=0:0 S D0=$O(DI(D0)) Q:D0="" I +DI(D0)=1 S CHK=1 Q
|
---|
22 | I N1>5 S TXT="Can not order more than 5 Diets." D ERR^FHWOR Q
|
---|
23 | S D4=0,FHOR="^^^^",FHEVTX="",N1=0 F D0=0:0 S D0=$O(DI(D0)) Q:D0<1 S N1=N1+1,$P(FHOR,"^",N1)=+DI(D0),FHEVTX=FHEVTX_", "_$P(DI(D0),"^",8) S:$P(DI(D0),"^",7)="Y" D4=1
|
---|
24 | S FHLD=""
|
---|
25 | I '$O(^FH(111.1,"AB",FHOR,0)),$P($G(^FH(119.9,1,4)),"^",2)="Y" S EVT="M^O^^No Diet Pattern ("_$E(FHEVTX,3,999)_")" D ^FHORX
|
---|
26 | ; Process PROC
|
---|
27 | D PROC^FHORD1
|
---|
28 | S CAN=$$CANCEL^ORCDFH(FHRDER)
|
---|
29 | I CAN S FHTF=$P($G(^FHPT(FHDFN,"A",ADM,0)),"^",4) D:FHTF ORCAN^FHWOR5 K FHRDER
|
---|
30 | K FHRDER G KIL
|
---|
31 | CAN ; Process Cancel or Discontinue
|
---|
32 | S FHORD=$P(FILL,";",3) I 'FHORD D CSEND^FHWOR Q
|
---|
33 | D GADM^FHWORR
|
---|
34 | S FHREA=$P(DATA,"|",17),FHREA=$P(FHREA,"^",5) I FHREA="Discharge" D DIS^FHWOR4,CSEND^FHWOR K FHREA Q
|
---|
35 | D NC
|
---|
36 | D CSEND^FHWOR
|
---|
37 | D KIL^FHORD3 Q
|
---|
38 | NC ; Cancel Diet Order
|
---|
39 | D NOW^%DTC S NOW=% S OLD=""
|
---|
40 | I '$D(^FHPT(FHDFN,"A",+ADM,"DI",+FHORD,0)) Q
|
---|
41 | I $P($G(^FHPT(FHDFN,"A",ADM,"DI",+FHORD,0)),"^",19)'="" Q
|
---|
42 | S NSTR=0 F KK=0:0 S KK=$O(^FHPT(FHDFN,"A",ADM,"AC",KK)) Q:KK<1!(KK'<NOW) S NSTR=KK
|
---|
43 | F KK=NSTR-.000001:0 S KK=$O(^FHPT(FHDFN,"A",ADM,"AC",KK)) Q:KK<1 I $P(^(KK,0),"^",2)=FHORD G F1
|
---|
44 | Q
|
---|
45 | F1 D T0^FHORD3
|
---|
46 | Q
|
---|
47 | DO ; Code Diet Orders
|
---|
48 | K MSG S FILL=$G(FHNEW)
|
---|
49 | S SDT=D1,DATE1="" D SET
|
---|
50 | ; Code MSH, PID, and PV1
|
---|
51 | D MSH^FHWOR
|
---|
52 | ; code ORC
|
---|
53 | S MSG(4)="ORC|SN||"_FILL_"^FH||||^^^"_SDT_"^"_DATE1_"|||"_DUZ_"||"_DUZ_"|||"_DATE
|
---|
54 | ; Code ODS
|
---|
55 | F A1=5:1 S A2=$P(FHOR,"^",A1-4) Q:'A2 D
|
---|
56 | .;S MSG(A1)="ODS|ZT||^^^"_A2_"^"_$P($G(^FH(111,+A2,0)),"^",1)_"^99FHD" Q
|
---|
57 | .I $G(TYP)="" S TYP="T"
|
---|
58 | .S MSG(A1)="ODS|Z"_TYP_"||^^^"_A2_"^"_$P($G(^FH(111,+A2,0)),"^",1)_"^99FHD" Q
|
---|
59 | K DATE,DATE1,FILL,FHWRD,HOSP,RM,SITE,SDT,VAL
|
---|
60 | Q
|
---|
61 | SET ; Set Date/Time in HL7 format
|
---|
62 | S:SDT SDT=$$FMTHL7^XLFDT(SDT)
|
---|
63 | S:NOW DATE=$$FMTHL7^XLFDT(NOW)
|
---|
64 | S:D2 DATE1=$$FMTHL7^XLFDT(D2) S:'DATE1 DATE1=""
|
---|
65 | Q
|
---|
66 | KIL ; Kill
|
---|
67 | G KIL^FHORD1
|
---|
68 | CODE ; Code Cancel/Discontinue Diet Order Status Change
|
---|
69 | K MSG N ACT,FILL S FILL=$G(FHMSG1) S ACT=$S(FHSTS=6:"IP",FHSTS=8:"SC",FHSTS=1:"DC",1:"") Q:ACT="" D SITE^FH
|
---|
70 | ; code MSH
|
---|
71 | S MSG(1)="MSH|^~\&|DIETETICS|"_SITE(1)_"|||||"_$S($D(FHORR):"ORR",1:"ORM")
|
---|
72 | ; code PID
|
---|
73 | S MSG(2)="PID|||"_DFN_"||"_$P($G(^DPT(DFN,0)),"^",1)
|
---|
74 | ; code ORC
|
---|
75 | S DATE=$S(FHDAT'="":$P(FHDAT,"^",1),1:"")
|
---|
76 | I DATE S DATE=$$FMTHL7^XLFDT(DATE) S $P(FHDAT,"^",1)=DATE
|
---|
77 | S DATE=$S(FHDAT'="":$P(FHDAT,"^",2),1:"")
|
---|
78 | I DATE S DATE=$$FMTHL7^XLFDT(DATE) S $P(FHDAT,"^",2)=DATE
|
---|
79 | S MSG(3)="ORC|"_$S($D(FHORR):"SR",1:"SC")_"|"_FHORN_"^OR|"_FILL_"^FH||"_ACT
|
---|
80 | I FHDAT'="" S MSG(3)=MSG(3)_"||^^^"_FHDAT
|
---|
81 | I ACT="DC" S MSG(3)=MSG(3)_"|||"_$S($D(FHPV):FHPV,1:"")_"||"_$S($D(FHPV):FHPV,1:"")
|
---|
82 | K ACT,DATE,FHORR,FILL,SITE,WKDAYS Q
|
---|
83 | NA ; OE/RR Number Assign
|
---|
84 | S FHORD=+$P(FILL,";",3) S:ADM'=$P(FILL,";",2) ADM=$P(FILL,";",2)
|
---|
85 | S $P(^FHPT(FHDFN,"A",ADM,"DI",FHORD,0),"^",14)=+FHORN Q
|
---|
86 | EL ; Late Trays HL7 to OE/RR
|
---|
87 | K MSG S WKDAYS="",(EDT,SDT)=DTE
|
---|
88 | S ITVL="ONCE",WKD="",SERV="L"
|
---|
89 | S FILL="E"_";"_ADM_";;"_SDT_";"_EDT_";"_WKD_";"_MEAL_";"_TIM_";"_BAG
|
---|
90 | D SET^FHWOR3
|
---|
91 | ; Code MSH, PID, and PV1
|
---|
92 | D MSH^FHWOR
|
---|
93 | ; code ORC
|
---|
94 | S MSG(4)="ORC|SN||"_FILL_"^FH||||^"_ITVL_"^^"_SDT_"^"_EDT_"|||"_DUZ_"||"_DUZ_"|||"_NOW
|
---|
95 | ; code ODT
|
---|
96 | S MSG(5)="ODT|"_$S(SERV="E":"EARLY",1:"LATE")_"|^^^"_MEAL_SERV_NUM_"^^99FHS|"_$S(BAG="Y":"bagged",1:"")
|
---|
97 | K FHWARD,FILL,HOSP,ITVL,FHORN,RM,SITE,WARD,WKDAYS,Z
|
---|
98 | Q
|
---|