1 | CRHD2 ; CAIRO/CLC - GET DATA ITEMS FOR CHANGEOVER LIST ;08-Apr-2008 08:03;CLC
|
---|
2 | ;;1.0;CRHD;****;Jan 28, 2008;Build 19
|
---|
3 | ;=================================================================
|
---|
4 | CODESTS(CRHDRTN,CRHDSTR) ;CODE STATUS -using orders, try to find and orderable item for DNR, if not found look for a text order
|
---|
5 | ; by the name of DNRTITLE, title also set up as a p
|
---|
6 | ;DFN - patient internal entry number to Patient file
|
---|
7 | ;DNRTITLE - DNR order title if not defined by a parameter
|
---|
8 | ;DIVISION - the division user logged into
|
---|
9 | ;LEN - length of text to return for each line, default:18
|
---|
10 | ;DTFLG - return the start date and stop date for order default:yes
|
---|
11 | ;
|
---|
12 | N CRHDDFN,CRHDDNRT,CRHDDIV,CRHDLEN,CRHDX,CRHDY,CRHDCT,CRHDMDNR,CRHDQQFG
|
---|
13 | N CRHDDTFG,CRHDOCT,CRHDSR,CRHDO,CRHDT,CRHDQ,CRHDQ1,CRHDQX,CRHDTMP,CRHDQY,CRHDFLG
|
---|
14 | K CRHDRTN
|
---|
15 | S CRHDDFN=+CRHDSTR
|
---|
16 | S CRHDDNRT=$P(CRHDSTR,U,2)
|
---|
17 | S CRHDDIV=$P(CRHDSTR,U,3)
|
---|
18 | S CRHDLEN=$P(CRHDSTR,U,4)
|
---|
19 | I 'CRHDLEN S CRHDLEN=18
|
---|
20 | S CRHDDTFG=$P(CRHDSTR,U,5)
|
---|
21 | I CRHDDTFG="" S CRHDDTFG=1
|
---|
22 | S CRHDMDNR=+$P(CRHDSTR,U,6)
|
---|
23 | D ENT^CRHDDR(.CRHDO,CRHDDFN,.CRHDDNRT,.CRHDDIV,CRHDMDNR)
|
---|
24 | D ENT^CRHDDNR(.CRHDT,CRHDDFN,.CRHDDNRT,.CRHDDIV,CRHDMDNR)
|
---|
25 | S CRHDQ=0 F S CRHDQ=$O(CRHDO(CRHDQ)) Q:'CRHDQ I $P(CRHDO(CRHDQ),"~",1)&(CRHDO(CRHDQ)["~") S CRHDTMP($P(CRHDO(CRHDQ),"~",1),$P(CRHDO(CRHDQ),"~",2))="CRHDO^"_CRHDQ
|
---|
26 | S CRHDQ=0 F S CRHDQ=$O(CRHDT(CRHDQ)) Q:'CRHDQ I $P(CRHDT(CRHDQ),"~",1)&(CRHDT(CRHDQ)["~") S CRHDTMP($P(CRHDT(CRHDQ),"~",1),$P(CRHDT(CRHDQ),"~",2))="CRHDT^"_CRHDQ
|
---|
27 | S (CRHDCT,CRHDQQFG)=0
|
---|
28 | S CRHDQ=0 F CRHDI=1:1 S CRHDQ=$O(CRHDTMP(CRHDQ)) Q:'CRHDQ!(CRHDQQFG) S CRHDQ1=0 F S CRHDQ1=$O(CRHDTMP(CRHDQ,CRHDQ1)) Q:'CRHDQ1 D
|
---|
29 | .S CRHDQFLG=0
|
---|
30 | .I 'CRHDMDNR S CRHDQQFG=1
|
---|
31 | .S CRHDQX=$P(CRHDTMP(CRHDQ,CRHDQ1),"^",1),CRHDQY=$P(CRHDTMP(CRHDQ,CRHDQ1),"^",2)
|
---|
32 | .S CRHDQ2=CRHDQY-1,CRHDQFLG=0 F S CRHDQ2=$O(@CRHDQX@(CRHDQ2)) Q:'CRHDQ2!(CRHDQFLG) D
|
---|
33 | ..I (CRHDQ2'=CRHDQY)&(@CRHDQX@(CRHDQ2)["~") S CRHDQFLG=1 S:('CRHDMDNR)&(CRHDI>1) CRHDQQFG=1 Q
|
---|
34 | ..I (CRHDQ2'=CRHDQY)&(@CRHDQX@(CRHDQ2)["~") S CRHDQFLG=1 Q
|
---|
35 | ..S CRHDCT=CRHDCT+1
|
---|
36 | ..I @CRHDQX@(CRHDQ2)["~" S CRHDRTN(CRHDCT)=$P(@CRHDQX@(CRHDQ2),"~",3)
|
---|
37 | ..E S CRHDRTN(CRHDCT)=@CRHDQX@(CRHDQ2)
|
---|
38 | I $D(CRHDRTN) D
|
---|
39 | .S CRHDX=0,CRHDCT=1
|
---|
40 | .F S CRHDX=$O(CRHDRTN(CRHDX)) Q:'CRHDX D
|
---|
41 | ..I $L(CRHDRTN(CRHDX))>CRHDLEN D
|
---|
42 | ...F Q:$L(CRHDRTN(CRHDX))=0 S CRHDCT=CRHDCT+1,CRHDY(CRHDCT)=$E(CRHDRTN(CRHDX),1,CRHDLEN),CRHDRTN(CRHDX)=$E(CRHDRTN(CRHDX),CRHDLEN+1,9999)
|
---|
43 | ..E D
|
---|
44 | ...I CRHDRTN(CRHDX)["Stop Date" S CRHDY(CRHDCT)=CRHDY(CRHDCT)_" "_CRHDRTN(CRHDX) D
|
---|
45 | ....I $L(CRHDY(CRHDCT))>CRHDLEN S CRHDOCT=CRHDCT,CRHDSR=CRHDY(CRHDCT) F Q:$L(CRHDSR)=0 S CRHDY(CRHDCT)=$E(CRHDSR,1,CRHDLEN),CRHDSR=$E(CRHDSR,CRHDLEN+1,9999),CRHDOCT=CRHDOCT+1
|
---|
46 | ...E S CRHDCT=CRHDCT+1,CRHDY(CRHDCT)=CRHDRTN(CRHDX)
|
---|
47 | K CRHDRTN
|
---|
48 | M CRHDRTN=CRHDY
|
---|
49 | I CRHDCT>1 S CRHDRTN(1)=CRHDCT-1
|
---|
50 | I $G(CRHDRTN(2))="" S CRHDRTN(1)=1,CRHDRTN(2)="Code Status Not Found"
|
---|
51 | Q
|
---|
52 | NODETAM(CRHDY,CRHDDFN,CRHDCAT) ;GET ACTIVE MEDS WITHOUT THE DETAILS, FOR ACTIVE MEDS WITH DETAILS USE CRHDAM
|
---|
53 | ;CRHDCAT :I - inpatient
|
---|
54 | ; O - outpatient
|
---|
55 | N CRHDP1,CRHDP2,CRHDPP1,CRHDPP2,CRHDCT,CRHDN2,CRHDN3,CRHDRTN,CRHDSORT
|
---|
56 | N CRHDN
|
---|
57 | S CRHDCT=0
|
---|
58 | D COVER^ORWPS(.CRHDRTN,CRHDDFN)
|
---|
59 | I '$D(CRHDRTN) Q
|
---|
60 | S CRHDN=0
|
---|
61 | F S CRHDN=$O(CRHDRTN(CRHDN)) Q:'CRHDN D
|
---|
62 | .S CRHDP1=$P(CRHDRTN(CRHDN),"^",1)
|
---|
63 | .S CRHDPP1=$P(CRHDP1,";",1)
|
---|
64 | .S CRHDPP2=$P(CRHDP1,";",2)
|
---|
65 | .I CRHDCAT="O"&(CRHDPP2="O") D SORT
|
---|
66 | .I CRHDCAT="I"&(CRHDPP2="I") D SORT
|
---|
67 | D OUTPUT Q
|
---|
68 | Q
|
---|
69 | SORT ;
|
---|
70 | I $P(CRHDRTN(CRHDN),"^",4)'["ACTIVE" Q
|
---|
71 | S CRHDSORT($E(CRHDPP1,$L(CRHDPP1)),$P(CRHDRTN(CRHDN),"^",2),CRHDPP1)=""
|
---|
72 | Q
|
---|
73 | OUTPUT ;
|
---|
74 | S CRHDN=""
|
---|
75 | F S CRHDN=$O(CRHDSORT(CRHDN)) Q:CRHDN="" D
|
---|
76 | .S CRHDN2="" F S CRHDN2=$O(CRHDSORT(CRHDN,CRHDN2)) Q:CRHDN2="" D
|
---|
77 | ..S CRHDN3="" F S CRHDN3=$O(CRHDSORT(CRHDN,CRHDN2,CRHDN3)) Q:CRHDN3="" D
|
---|
78 | ...S CRHDCT=CRHDCT+1
|
---|
79 | ...I CRHDCAT="O"&(CRHDN="N") S CRHDY(CRHDN,CRHDCT)="NON-VA "_CRHDN2 Q
|
---|
80 | ...S CRHDY(CRHDN,CRHDCT)=CRHDN2
|
---|
81 | S CRHDY(0)=CRHDCT_"^"_CRHDCAT_$S(CRHDCAT="O":"UT",1:"N")_"PATIENT"
|
---|
82 | Q
|
---|
83 | TEMPDATA(CRHDRTN,CRHDFLDN,CRHDUSER,CRHDDFN,CRHDTXT) ;TEMPORARY DATA, DATA ONLY USE FOR A SHORT TIME FRAME
|
---|
84 | ;CRHDFLD - TEMP FIELD NAME
|
---|
85 | ;CRHDUSER - AUTHOR OF THE NOTE
|
---|
86 | ;if fld already has the author then this is 'WHO LAST EDITED'
|
---|
87 | ;CRHDDFN - Patient
|
---|
88 | ;TEXT - Text to be stored
|
---|
89 | N CRHDFDA,CRHDOUT,CRHDERR,CRHDFN,CRHDUPZ,CRHDUPZZ,CRHDPZZZ
|
---|
90 | K CRHDRTN,CRHDUPY
|
---|
91 | S CRHDFLDN=$$UP^XLFSTR(CRHDFLDN)
|
---|
92 | S CRHDUPY=$$CHK(CRHDFLDN,CRHDUSER,CRHDDFN)
|
---|
93 | S CRHDUPZ=$P(CRHDUPY,"^",2)
|
---|
94 | I CRHDUPZ="+1," S CRHDUPZZ="?+1,",CRHDPZZZ="?+2,"
|
---|
95 | E S CRHDUPZZ="?+2,"
|
---|
96 | I CRHDUPZ="+1," S CRHDUPZ=CRHDUPZZ,CRHDUPZZ=CRHDPZZZ D NEW
|
---|
97 | E D UPDATE(CRHDFLDN,CRHDUSER,CRHDDFN,.CRHDTXT)
|
---|
98 | I $D(CRHDERR) D Q
|
---|
99 | .S ^CRHDER($$NOW^XLFDT,"ERROR-UPDATING DATA")=CRHDFLDN_U_CRHDUSER_U_CRHDDFN
|
---|
100 | .M ^CRHDER($$NOW^XLFDT,"ERROR-UPDATING DATA")=CRHDTXT Q
|
---|
101 | .K CRHDERR,CRHDOUT,CRHDFDA
|
---|
102 | .S CRHDRTN(1)=0_"^ERROR SAVING DATA..."
|
---|
103 | E S CRHDRTN(1)=1_"^SAVE SUCCESSFUL..."
|
---|
104 | Q
|
---|
105 | NEW S CRHDFDA(183.21,CRHDUPZZ_CRHDUPZ,1)=CRHDUSER
|
---|
106 | S CRHDFDA(183.21,CRHDUPZZ_CRHDUPZ,2)=$$NOW^XLFDT
|
---|
107 | S CRHDFDA(183.21,CRHDUPZZ_CRHDUPZ,5)=0
|
---|
108 | D UPDATE(CRHDFLDN,CRHDUSER,CRHDDFN,.CRHDTXT)
|
---|
109 | I $D(CRHDERR) D
|
---|
110 | .S ^CRHDER($$NOW^XLFDT,"ERROR-ADDING DATA")=CRHDFLDN_U_CRHDUSER_U_CRHDDFN
|
---|
111 | .M ^CRHDER($$NOW^XLFDT,"ERROR-ADDING DATA")=CRHDTXT Q
|
---|
112 | .K CRHDERR,CRHDOUT,CRHDFDA
|
---|
113 | Q
|
---|
114 | UPDATE(CRHDFLD,CRHDUSER,CRHDDFN,CRHDTXT) ;
|
---|
115 | ;SEE NEWDATA
|
---|
116 | S CRHDFDA(183.2,"?+1,",.01)=CRHDFLD
|
---|
117 | S CRHDFDA(183.21,CRHDUPZZ_CRHDUPZ,.01)=CRHDDFN
|
---|
118 | S CRHDFDA(183.21,CRHDUPZZ_CRHDUPZ,3)=CRHDUSER
|
---|
119 | S CRHDFDA(183.21,CRHDUPZZ_CRHDUPZ,4)=$$NOW^XLFDT
|
---|
120 | D UPDATE^DIE("","CRHDFDA","CRHDOUT","CRHDERR")
|
---|
121 | S CRHDIEN=$G(CRHDOUT(1)),CRHDMIEN=$G(CRHDOUT(2))
|
---|
122 | L +^CRHD(183.2,CRHDIEN,1,CRHDMIEN):1 I '$T Q
|
---|
123 | I '$D(CRHDERR) D STORETXT(CRHDIEN,CRHDMIEN,.CRHDTXT)
|
---|
124 | L -^CRHD(183.2,CRHDIEN,1,CRHDMIEN)
|
---|
125 | Q
|
---|
126 | STORETXT(CRHDIEN,CRHDMIEN,CRHDTARY) ;store text to file
|
---|
127 | N CRHDTRG,CRHDFG,CRHDX,CRHDCT,CRHDLINE
|
---|
128 | Q:'CRHDIEN&('CRHDMIEN)
|
---|
129 | S CRHDTRG="CRHDTARY"
|
---|
130 | Q:'$D(@CRHDTRG)
|
---|
131 | ;D SAVEOLD(CRHDIEN,CRHDMIEN)
|
---|
132 | K ^CRHD(183.2,CRHDIEN,1,CRHDMIEN,"TEXT")
|
---|
133 | S ^CRHD(183.2,CRHDIEN,1,CRHDMIEN,"TEXT",0)="^^^^"_$$DT^XLFDT
|
---|
134 | S CRHDX=0 F CRHDLINE=0:1 S CRHDX=$O(@CRHDTRG@(CRHDX)) Q:'CRHDX
|
---|
135 | S (CRHDFG,CRHDX,CRHDCT)=0
|
---|
136 | F S CRHDX=$O(@CRHDTRG@(CRHDX)) Q:'CRHDX!(CRHDFG) D
|
---|
137 | .I $D(@CRHDTRG@(CRHDX,0)) D Q
|
---|
138 | ..M ^CRHD(183.2,CRHDIEN,1,CRHDMIEN,"TEXT")=@CRHDTRG
|
---|
139 | ..S $P(^CRHD(183.2,CRHDIEN,1,CRHDMIEN,"TEXT",0),"^",3,4)=CRHDLINE_"^"_CRHDLINE
|
---|
140 | ..S CRHDFG=1
|
---|
141 | .I $G(@CRHDTRG@(CRHDX))'="" D
|
---|
142 | ..S CRHDCT=CRHDCT+1
|
---|
143 | ..S ^CRHD(183.2,CRHDIEN,1,CRHDMIEN,"TEXT",CRHDCT,0)=@CRHDTRG@(CRHDX)
|
---|
144 | ..S $P(^CRHD(183.2,CRHDIEN,1,CRHDMIEN,"TEXT",0),"^",3,4)=CRHDCT_"^"_CRHDCT
|
---|
145 | Q
|
---|
146 | SAVEOLD(CRHDIEN,CRHDMIEN) ;
|
---|
147 | I $D(^CRHD(183.2,CRHDIEN,1,CRHDMIEN,"TEXT")) D
|
---|
148 | .K ^CRHD(183.2,CRHDIEN,1,CRHDMIEN,"ZOLD_TEXT")
|
---|
149 | .M ^CRHD(183.2,CRHDIEN,1,CRHDMIEN,"ZOLD_TEXT")=^CRHD(183.2,CRHDIEN,1,CRHDMIEN,"TEXT")
|
---|
150 | Q
|
---|
151 | CHK(CRHDFLDN,CRHDUSER,CRHDDFN) ;
|
---|
152 | N CRHDFLG,CRHDX,CRHDP ;FLG = 1 if record already exist
|
---|
153 | S CRHDFLG=0
|
---|
154 | S CRHDFN=183.2
|
---|
155 | S CRHDFLD=$O(^CRHD(CRHDFN,"B",CRHDFLDN,0))
|
---|
156 | I $D(^CRHD(CRHDFN,"C",+CRHDDFN,+CRHDFLD)) D
|
---|
157 | .S:CRHDFLD CRHDFLG=1
|
---|
158 | I CRHDFLG S CRHDFLG=CRHDFLG_"^"_CRHDFLD_","
|
---|
159 | E S CRHDFLG=CRHDFLG_"^"_"+1,"
|
---|
160 | Q CRHDFLG
|
---|
161 | XREF(CRHDIEN,CRHDMIEN) ;SET THE XREF FOR SPECIALTY AND TEAM
|
---|
162 | N CRHDTM,CRHDTSP,CRHDAUTH,CRHDPAT
|
---|
163 | S CRHDAUTH=$P($G(^CRHD(183.2,CRHDIEN,1,CRHDMIEN,0)),"^",2)
|
---|
164 | Q:'CRHDAUTH
|
---|
165 | S CRHDPAT=$P($G(^CRHD(183.2,CRHDIEN,1,CRHDMIEN,0)),"^",1)
|
---|
166 | ;do not set up reference if a private note
|
---|
167 | Q:+$P($G(^CRHD(183.2,CRHDIEN,1,CRHDMIEN,0)),"^",6)
|
---|
168 | S CRHDTM=$$GET^XPAR("USR.`"_CRHDAUTH,"ORLP DEFAULT TEAM",1,"I")
|
---|
169 | S CRHDTSP=$$GET^XPAR("USR.`"_CRHDAUTH,"ORLP DEFAULT SPECIALTY",1,"I")
|
---|
170 | S:+CRHDTM ^CRHD(183.2,"AC","TM",CRHDTM,CRHDPAT,CRHDIEN,CRHDMIEN)=""
|
---|
171 | S:+CRHDTSP ^CRHD(183.2,"AC","TSP",CRHDTSP,CRHDPAT,CRHDIEN,CRHDMIEN)=""
|
---|
172 | Q
|
---|
173 | KILXREF(CRHDIEN,CRHDMIEN) ;KILL XREF FOR SPECIALTY AND TEAM
|
---|
174 | N CRHDTM,CRHDTSP,CRHDAUTH,CRHDPAT
|
---|
175 | S CRHDAUTH=$P($G(^CRHD(183.2,CRHDIEN,1,CRHDMIEN,0)),"^",2)
|
---|
176 | Q:'CRHDAUTH
|
---|
177 | S CRHDPAT=$P($G(^CRHD(183.2,CRHDIEN,1,CRHDMIEN,0)),"^",1)
|
---|
178 | S CRHDTM=$$GET^XPAR("USR.`"_CRHDAUTH,"ORLP DEFAULT TEAM",1,"I")
|
---|
179 | S CRHDTSP=$$GET^XPAR("USR.`"_CRHDAUTH,"ORLP DEFAULT SPECIALTY",1,"I")
|
---|
180 | K:+CRHDTM ^CRHD(183.2,"AC","TM",CRHDTM,CRHDPAT,CRHDIEN,CRHDMIEN)
|
---|
181 | K:+CRHDTSP ^CRHD(183.2,"AC","TSP",CRHDTSP,CRHDPAT,CRHDIEN,CRHDMIEN)
|
---|
182 | Q
|
---|
183 | ONOFFPRV(CRHDPRIV,CRHDIEN,CRHDMIEN) ;ON/OFF PRIVATE NOTE
|
---|
184 | I 'CRHDPRIV D XREF(CRHDIEN,CRHDMIEN)
|
---|
185 | I +CRHDPRIV D KILXREF(CRHDIEN,CRHDMIEN)
|
---|
186 | Q
|
---|
187 | LOCK(CRHDRTN,CRHDDFN,CRHDFLDM) ;
|
---|
188 | N CRHDIEN,CRHDMIEN
|
---|
189 | S CRHDRTN=0
|
---|
190 | S CRHDFLDM=$$UP^XLFSTR(CRHDFLDM)
|
---|
191 | S CRHDIEN=$O(^CRHD(183.2,"B",CRHDFLDM,0))
|
---|
192 | S CRHDMIEN=$O(^CRHD(183.2,"C",+CRHDDFN,+CRHDIEN,0))
|
---|
193 | Q:'CRHDMIEN
|
---|
194 | L +^CRHD(183.2,CRHDIEN,1,CRHDMIEN):10 I '$T S CRHDRTN=1 ;_"^0^Another user is editing this task"
|
---|
195 | L -^CRHD(183.2,CRHDIEN,1,CRHDMIEN)
|
---|
196 | Q
|
---|