1 | FHOMWOR ;Hines OIFO/RTK OUTPATIENT MEALS/HL7 MESSAGING ;10/21/03 10:15
|
---|
2 | ;;5.5;DIETETICS;**2,5**;Jan 28, 2005;Build 53
|
---|
3 | S FHDFN="",FHZ115="P"_DFN D ADD^FHOMDPA
|
---|
4 | I 'FHDFN S TXT="Outpatient not found" D GETOR^FHWOR,ERR Q
|
---|
5 | ;Decode FHMSG(3) - PV1
|
---|
6 | S FHX=$G(FHMSG(3))
|
---|
7 | I $E(FHX,1,3)'="PV1" S TXT="3rd msg not PV1" D GETOR^FHWOR,ERR Q
|
---|
8 | S FHLOC=$P($P(FHX,"|",4),U,1)
|
---|
9 | I FHLOC="" S TXT="Missing Location" D GETOR^FHWOR,ERR Q
|
---|
10 | S FHLOC=$O(^FH(119.6,"AL",FHLOC,""))
|
---|
11 | I 'FHLOC S TXT="Invalid Location" D GETOR^FHWOR,ERR Q
|
---|
12 | ;Decode FHMSG(4) - ORC
|
---|
13 | S FHX=$G(FHMSG(4))
|
---|
14 | I $E(FHX,1,3)'="ORC" S TXT="4th msg not ORC" D GETOR^FHWOR,ERR Q
|
---|
15 | S FHORN=$P(FHX,"|",3),FHORN=+FHORN,FILL=$P(FHX,"|",4)
|
---|
16 | S FHDUR=$P(FHX,"|",8),FHDOW=$P(FHDUR,U,2)
|
---|
17 | S DATE=$E($P(FHDUR,U,4),1,8) D CVT^FHWOR S STDT=DATE,FHOSTDT=STDT
|
---|
18 | S DATE=$P(FHDUR,U,5) D CVT^FHWOR S ENDT=DATE I ENDT'="" S ENDT=ENDT_.99
|
---|
19 | I ENDT="" S ENDT=9999999.99
|
---|
20 | S ACT=$P(FHX,"|",2) I ACT="CA"!(ACT="DC") D CANCEL Q
|
---|
21 | I ACT="NA" D NA Q
|
---|
22 | I ACT="SS" D OMSTAT^FHWORR Q
|
---|
23 | I ACT'="NW" S TXT="Action not NW, CA or DC" D GETOR^FHWOR,ERR Q
|
---|
24 | D NOW^%DTC S FHNOW=$P(%,".",1)
|
---|
25 | I STDT=""!(STDT<FHNOW) S TXT="Start Date not valid" D GETOR^FHWOR,ERR Q
|
---|
26 | I ENDT<STDT S TXT="End Date not valid" D GETOR^FHWOR,ERR Q
|
---|
27 | S FHPV=$P(FHX,"|",13),FHEFF=$P(FHX,"|",16)
|
---|
28 | I FHEFF="" S TXT="No effective date" D ERR Q
|
---|
29 | ;Decode FHMSG(5) - ODS/ODT
|
---|
30 | S FHX=$G(FHMSG(5))
|
---|
31 | S FHINST=$P(FHX,"|",4),FHBAG="N" I FHINST="bagged" S FHBAG="Y"
|
---|
32 | S FHSVCP=$P($P(FHX,"|",3),U,4)
|
---|
33 | I $E(FHX,1,3)="ODT" D HL7SET^FHOMRE1 Q ;EARLY/LATE
|
---|
34 | I $E(FHX,1,3)="OBR" D HL7SET^FHOMIP Q ;ISOLATION/PRECAUTION
|
---|
35 | I $E(FHX,1,3)'="ODS" S TXT="5th message not ODT or ODS as expected" D GETOR^FHWOR,ERR Q
|
---|
36 | S FHTYPC=$P(FHX,"|",2) I FHTYPC="ZE" D HL7SET^FHOMRT1 Q ;TUBEFEEDING
|
---|
37 | S FHDTX=$P(FHX,"|",4),FHDIET=$P(FHDTX,U,4),FHDTX=$E(FHDTX,4,$L(FHDTX))
|
---|
38 | S FHCOM=$P(FHX,"|",5),FHM3=$P(FHX,"|",3)
|
---|
39 | I $E(FHDTX,1,4)="FH-6" D HL7SET^FHOMRA1 Q ;ADDITIONAL ORDERS
|
---|
40 | S FHMEAL=$S(FHM3=1:"B",FHM3=3:"N",FHM3=5:"E",1:"")
|
---|
41 | I FHMEAL="" S TXT="Meal missing" D GETOR^FHWOR,ERR Q
|
---|
42 | I FHDIET="" S TXT="Missing diet" D GETOR^FHWOR,ERR Q
|
---|
43 | I '$D(^FH(111,FHDIET)) S TXT="Invalid diet" D GETOR^FHWOR,ERR Q
|
---|
44 | I FHTYPC="S" D SM ;SPECIAL MEAL REQUEST
|
---|
45 | I FHTYPC="D" D RM I $G(FHAIL)'="" Q ;RECURRING MEAL ORDER
|
---|
46 | D SEND^FHWOR Q
|
---|
47 | SM ; Special Meal Request
|
---|
48 | ; FHDFN,FHLOC set at top of FHOMWOR
|
---|
49 | D NOW^%DTC S FHNOW=%
|
---|
50 | S FHDUZ=$P($G(FHMSG(4)),"|",11),FHSTAT="P"
|
---|
51 | I FHDUZ'="",$D(^XUSEC("FHAUTH",FHDUZ)) S FHSTAT="A"
|
---|
52 | S FHQEL=1 D SETNODE^FHOMSR1
|
---|
53 | S FILL="S;"_FHSMID
|
---|
54 | Q
|
---|
55 | RM ;
|
---|
56 | ; Recurring orders from CPRS will only have ONE diet, not up to 5 like
|
---|
57 | ; for NonVA patients/inpatients therefore can set FHDIETX1-5 = NULL
|
---|
58 | ; FHDFN,FHLOC set at top of FHOMWOR
|
---|
59 | S FHMPNUM=$O(^FHPT(FHDFN,"OP","C",""),-1) I FHMPNUM="" S FHMPNUM=0
|
---|
60 | S FHMPNUM=FHMPNUM+1
|
---|
61 | S (FHAIL,FHRMBD,FHDIETX(1),FHDIETX(2),FHDIETX(3),FHDIETX(4),FHDIETX(5))=""
|
---|
62 | S (C,FHENDL)=0,STDTLP=STDT,FHDZ="" F Q:FHENDL=1 D
|
---|
63 | .S X=STDTLP D H^%DTC S:%Y=0 %Y=7 S FHDZ=FHDZ_%Y_"^",X1=STDTLP,X2=1
|
---|
64 | .D C^%DTC S STDTLP=X,C=C+1 I STDTLP>ENDT!(C>6) S FHENDL=1 Q
|
---|
65 | S FHDAYS="" F FHH=1:1:7 S FHPCE=$P(FHDOW,"~",FHH) Q:FHPCE="" D
|
---|
66 | .S FHD3=$E(FHPCE,3)
|
---|
67 | .I FHD3'>0,FHD3'<8 Q
|
---|
68 | .I FHDZ'[FHD3 Q
|
---|
69 | .S FHDAYS=FHDAYS_$E("MTWRFSX",FHD3)
|
---|
70 | I FHDAYS="",$E(STDT,1,7)'=$E(ENDT,1,7) S (TXT,FHAIL)="Day of week invalid or not within date range" D GETOR^FHWOR,ERR Q
|
---|
71 | I FHDAYS="",$E(STDT,1,7)=$E(ENDT,1,7) S X=$E(STDT,1,7) D DOW^%DTC S FHDAYS=$E("XMTWRFS",Y+1)
|
---|
72 | D SETNODE^FHOMRO1
|
---|
73 | S FILL="R;"_FHMPNUM_";"_STDT_";"_ENDT_";"_FHDAYS_";"_FHMEAL
|
---|
74 | Q
|
---|
75 | CANCEL ;Cancel outpatient orders
|
---|
76 | S FHENDT=ENDT,FHX=$G(FHMSG(4)),FILL=$P(FHX,"|",4),FHMPNUM=""
|
---|
77 | S FHORSAV=FHORN,FHILSAV=FILL,FHACTSV=ACT
|
---|
78 | S FHTYPE=$P(FILL,";",1) I FHTYPE="R" S FHMPNUM=$P(FILL,";",2)
|
---|
79 | I "AEIGSRT"'[FHTYPE S TXT="Invalid cancel code" D ERR Q
|
---|
80 | S X1=STDT,X2=-1 D C^%DTC S STDT1=X
|
---|
81 | I "AET"[FHTYPE F FHRMDT=STDT1:0 S FHRMDT=$O(^FHPT(FHDFN,"OP","B",FHRMDT)) Q:FHRMDT'>0!(FHRMDT>FHENDT) D
|
---|
82 | .F FHRNUM=0:0 S FHRNUM=$O(^FHPT(FHDFN,"OP","B",FHRMDT,FHRNUM)) Q:FHRNUM'>0 D
|
---|
83 | ..I FHTYPE="A" D CANAO^FHOMRC1 Q
|
---|
84 | ..I FHTYPE="E" D CANEL^FHOMRC1 Q
|
---|
85 | ..I FHTYPE="T" D CANTF^FHOMRC1 Q
|
---|
86 | I FHTYPE="R" F FHRNUM=0:0 S FHRNUM=$O(^FHPT(FHDFN,"OP","C",FHMPNUM,FHRNUM)) Q:FHRNUM'>0 S FHRMDT=$P($G(^FHPT(FHDFN,"OP",FHRNUM,0)),U,1) D CANRM^FHOMRC1,ASSOC^FHOMRC2
|
---|
87 | I FHTYPE="I" D CAN^FHOMIP
|
---|
88 | I FHTYPE="S" S FHSMID=$P(FILL,";",2),FHCDT=FHDFN_"^"_FHSMID D CAN^FHOMSC1,CNSMEL^FHOMRC2 ;cancel a SM and associated SM Late Tray
|
---|
89 | I FHTYPE="G" S FHSMID=$P(FILL,";",2),FHCDT=FHDFN_"^"_FHSMID D CNSMEL^FHOMRC2 ;cancel a SM Late Tray only
|
---|
90 | S FHORN=FHORSAV,FILL=FHILSAV,ACT=FHACTSV D CSEND^FHWOR Q
|
---|
91 | Q
|
---|
92 | NA ;Number assign for outpatient
|
---|
93 | S FILL=$P(FHX,"|",4)
|
---|
94 | S FHTYPE=$P(FILL,";",1) S (FHMPN,FHRNUM)=+$P(FILL,";",2)
|
---|
95 | D NA^FHOMWOR1
|
---|
96 | Q
|
---|
97 | ERR ;
|
---|
98 | K MSG D RMSH^FHWOR ;Sets MSG(1) & MSG(2)
|
---|
99 | S ACT="UA" I $P(FHMSG(4),"|",2)="CA" S ACT="U"_$E($P(FHMSG(4),"|",2),1)
|
---|
100 | S $P(MSG(3),"|",1,2)="ORC|"_ACT,$P(MSG(3),"|",3)=FHORN
|
---|
101 | S $P(MSG(3),"|",4)=$P(FHMSG(3),"|",4)
|
---|
102 | S $P(MSG(3),"|",13)=$P(FHMSG(3),"|",13)
|
---|
103 | S $P(MSG(3),"|",16)=$P(FHMSG(3),"|",16),$P(MSG(3),"|",17)=TXT
|
---|
104 | ;
|
---|
105 | ;W ! F RK=0:0 S RK=$O(MSG(RK)) Q:RK'>0 W !," MSG"_RK_"= ",MSG(RK)
|
---|
106 | ;F RK=0:0 S RK=$O(FHMSG(RK)) Q:RK'>0 W !,"FHMSG"_RK_"= ",FHMSG(RK)
|
---|
107 | ;W !!,"TXT=",TXT,!!
|
---|
108 | ;
|
---|
109 | D EVSEND^FHWOR Q
|
---|
110 | Q
|
---|