1 | SCRPMPSP ;ALB/PDR - Team APIs:ACPTTP ; AUG 1998
|
---|
2 | ;;5.3;Scheduling;**148,157,169,177**;AUG 13, 1993
|
---|
3 | ;
|
---|
4 | ACPTTP(DFN,SCTP,SCFIELDA,SCACT,FASIEN,SCERR,SCYESTM,SCMAINA) ;add/edit a patient to a position (pt TP assgn - #404.43
|
---|
5 | ; input:
|
---|
6 | ; DFN = pointer to PATIENT file (#2)
|
---|
7 | ; SCTP = pointer to TEAM POSTION file (#404.57) (DESTINATION POSITION)
|
---|
8 | ; SCFIELDA= array of extra field entries - scfielda('fld#')=value for 404.43
|
---|
9 | ; SCACT = date to activate [default=DT]
|
---|
10 | ; FASIEN = "FROM" position assignment IEN
|
---|
11 | ; SCERR = array NAME to store error messages.
|
---|
12 | ; [ex. ^TMP("ORXX",$J)]
|
---|
13 | ; SCYESTM = Should team assignment be made, if none active now?[1=YES]
|
---|
14 | ; SCMAINA= array of extra field entries for 404.42
|
---|
15 | ;
|
---|
16 | ; Output:
|
---|
17 | ; Returned = ien of 404.43^new?^404.42 ien (new entries only)^new?^Message
|
---|
18 | ; SCERR() = Array of DIALOG file messages(errors) .
|
---|
19 | ; Foramt:
|
---|
20 | ; Subscript: Sequential # from 1 to n
|
---|
21 | ; Piece Description
|
---|
22 | ; 1 IEN of DIALOG file
|
---|
23 | N SCESEQ,SCPARM,SCIEN,SC,HISTPTTP,SCFLD,SCTM,SCPTTMA,SCST,PATH
|
---|
24 | N SCPTTPA,SCTMFLDA,SCNEWTP,SCNEWTM,SCAPTDT,SCAPTTPO,SCAPTTPE,SCMESS
|
---|
25 | N SCLOCK,SCXLOCK,SCX
|
---|
26 | ;
|
---|
27 | ;
|
---|
28 | I '$$OKDATA D ERROR(1,FASIEN,5) G APTTPQ
|
---|
29 | ;
|
---|
30 | I '$D(^XTMP("SCMC POS REASGN")) D
|
---|
31 | . S ^XTMP("SCMC POS REASGN",0)=DT_U_DT_U_"POS REASGN PROCESS LOCK"
|
---|
32 | . Q
|
---|
33 | ;
|
---|
34 | S SCXLOCK=0
|
---|
35 | S SCLOCK="^XTMP(""SCMC POS REASGN"",DFN)"
|
---|
36 | I $D(@SCLOCK) D ERROR(10,FASIEN,7) G APTTPQ
|
---|
37 | S @SCLOCK=""
|
---|
38 | S SCXLOCK=1
|
---|
39 | H 1
|
---|
40 | ;
|
---|
41 | ;
|
---|
42 | D INITVARS
|
---|
43 | I '$$GETPLST D ERROR(2,FASIEN,10) G APTTPQ
|
---|
44 | ;
|
---|
45 | ;bp/cmf 177 new begin
|
---|
46 | S SCX=$$OKPREC5^SCMCLK(SCTP,SCACT)
|
---|
47 | I SCX<1 D ERROR($P(SCX,U,2),FASIEN,11) G APTTPQ
|
---|
48 | ;bp/cmf 177 new end
|
---|
49 | ;
|
---|
50 | ; Business rule processing
|
---|
51 | ;
|
---|
52 | ; case 1
|
---|
53 | I $$POSEXIST(.SCTM,SCTP,.SCPTTPA,.SCPTTMA) D D SETP(1) G APTTPQ
|
---|
54 | . ; destin pos asgn exists
|
---|
55 | . I '$$PCPCASN^SCRPM21U(FASIEN,SCTP) D D SETP(1.1) Q
|
---|
56 | .. ; not PC to PC pos reasgn
|
---|
57 | .. ;
|
---|
58 | .. ; update pos asgn
|
---|
59 | .. D UPDATPOS^SCRPM21U(.SCPTTPA,SCERR)
|
---|
60 | .. I 'SCPTTPA D ERROR(3,SCPTTPA,12) Q
|
---|
61 | .. ;
|
---|
62 | .. ; update tm asgn
|
---|
63 | .. I $$FUTMASN^SCRPM21U(SCPTTMA,SCACT)!$$FUTTMDIS^SCRPM21U(.SCPTTMA,SCACT) D Q:'SCPTTMA
|
---|
64 | ... D TMACTIV^SCRPM21U(.SCPTTMA,$$PCPOS)
|
---|
65 | ... I 'SCPTTMA D ERROR(4,SCPTTMA,20)
|
---|
66 | ... Q
|
---|
67 | .. ;
|
---|
68 | .. ; dschrg source pos
|
---|
69 | .. D DISPOS^SCRPM21U(FASIEN,.SCPTTPA)
|
---|
70 | .. I 'SCPTTPA D ERROR(5,SCPTTPA,30)
|
---|
71 | .. Q
|
---|
72 | . ;
|
---|
73 | . ; PC to PC pos reasgn
|
---|
74 | . N SCFLAG
|
---|
75 | . S SCFLAG=0
|
---|
76 | . N SCY
|
---|
77 | . S SCY=0
|
---|
78 | . F S SCY=$O(SCAPTTPO("SCTP",SCTM,SCTP,SCY)) Q:'SCY!(SCFLAG) D
|
---|
79 | .. S SCPTTPA=SCY
|
---|
80 | .. S SCPTTMA=$$GETPOSTM^SCRPM21U(SCPTTPA)
|
---|
81 | .. I '$D(^SCPT(404.43,SCPTTPA)) Q
|
---|
82 | .. S SCFLAG=$$DPOSPROB^SCRPM21U(SCPTTPA,SCACT)
|
---|
83 | .. I SCFLAG Q
|
---|
84 | .. I '$D(^SCPT(404.42,SCPTTMA)) Q
|
---|
85 | .. S SCFLAG=$$DTMPROB^SCRPM21U(SCPTTMA,SCACT)
|
---|
86 | .. Q
|
---|
87 | . Q:SCFLAG
|
---|
88 | . ;
|
---|
89 | . ; create new destin tm, pos asgns
|
---|
90 | . D CREATETM^SCRPM21U(DFN,$$DSTTEAM,SCACT,.SCPTTMA)
|
---|
91 | . I 'SCPTTMA D ERROR(6,SCPTTMA,40) Q
|
---|
92 | . D CREATPOS^SCRPM21U(.SCPTTPA,SCPTTMA)
|
---|
93 | . I 'SCPTTPA D ERROR(7,SCPTTPA,50) Q
|
---|
94 | . ;
|
---|
95 | . ; take care of source bookkeeping
|
---|
96 | . D XALLPOS^SCRPM21U(FASIEN,.SCPTTPA)
|
---|
97 | . I 'SCPTTMA D ERROR(8,SCPTTMA,60) Q
|
---|
98 | . D DISTEAM^SCRPM21U($$SRCTEAM)
|
---|
99 | . I 'SCPTTPA D ERROR(9,SCST,70) Q
|
---|
100 | . Q
|
---|
101 | ;
|
---|
102 | ; case 2
|
---|
103 | I $$TMEXIST^SCRPM21U(DFN,SCTM,SCACT,.SCPTTMA) D D SETP(2) G APTTPQ
|
---|
104 | . ; destin tm asgn exists
|
---|
105 | . I $$PCPCASN^SCRPM21U(FASIEN,SCTP) D D SETP(2.1) Q
|
---|
106 | .. ; PC to PC tm reassgn
|
---|
107 | .. ;
|
---|
108 | .. ; take care of destin bookkeeping
|
---|
109 | .. Q:$$DTMPROB^SCRPM21U(SCPTTMA,SCACT)
|
---|
110 | .. ;
|
---|
111 | .. ; create new destin tm, pos asgns
|
---|
112 | .. D CREATETM^SCRPM21U(DFN,$$DSTTEAM,SCACT,.SCPTTMA)
|
---|
113 | .. I 'SCPTTMA D ERROR(6,SCPTTMA,80) Q
|
---|
114 | .. D CREATPOS^SCRPM21U(.SCPTTPA,.SCPTTMA)
|
---|
115 | .. I 'SCPTTPA D ERROR(7,SCPTTPA,100) Q
|
---|
116 | .. ;
|
---|
117 | .. ; take care of source bookkeeping
|
---|
118 | .. D XALLPOS^SCRPM21U(FASIEN,.SCPTTPA)
|
---|
119 | .. I 'SCPTTMA D ERROR(8,SCPTTMA,105) Q
|
---|
120 | .. D DISTEAM^SCRPM21U($$SRCTEAM)
|
---|
121 | .. I 'SCPTTPA D ERROR(9,SCST,107) Q
|
---|
122 | .. Q
|
---|
123 | . ;
|
---|
124 | . ;not PC to PC tm reassgn
|
---|
125 | . ; update tm asgn
|
---|
126 | . I $$FUTMASN^SCRPM21U(.SCPTTMA,SCACT)!$$FUTTMDIS^SCRPM21U(.SCPTTMA,SCACT) D Q:'SCPTTMA
|
---|
127 | .. D TMACTIV^SCRPM21U(.SCPTTMA,$$PCPOS)
|
---|
128 | .. I 'SCPTTMA D ERROR(4,SCPTTMA,120)
|
---|
129 | .. Q
|
---|
130 | . ;
|
---|
131 | . ; create pos asgn
|
---|
132 | . D CREATPOS^SCRPM21U(.SCPTTPA,.SCPTTMA)
|
---|
133 | . I 'SCPTTPA D ERROR(7,SCPTTPA,130)
|
---|
134 | . ;
|
---|
135 | . ; dschrg source pos
|
---|
136 | . D DISPOS^SCRPM21U(FASIEN,.SCPTTPA)
|
---|
137 | . I 'SCPTTPA D ERROR(5,SCPTTPA,135)
|
---|
138 | . Q
|
---|
139 | ;
|
---|
140 | ; case 3
|
---|
141 | ; no destin asgn
|
---|
142 | I $$PCPCASN^SCRPM21U(FASIEN,SCTP) D D SETP(3.1) G APTTPQ
|
---|
143 | . ; PC to PC reasgn
|
---|
144 | . ;
|
---|
145 | . ; create new destin tm, pos asgns
|
---|
146 | . D CREATETM^SCRPM21U(DFN,$$DSTTEAM,SCACT,.SCPTTMA)
|
---|
147 | . I 'SCPTTMA D ERROR(6,SCPTTMA,140) Q
|
---|
148 | . D CREATPOS^SCRPM21U(.SCPTTPA,SCPTTMA)
|
---|
149 | . I 'SCPTTPA D ERROR(7,SCPTTPA,160) Q
|
---|
150 | . ;
|
---|
151 | . ; take care of source bookkeeping
|
---|
152 | . D XALLPOS^SCRPM21U(FASIEN,.SCPTTPA)
|
---|
153 | . I 'SCPTTPA D ERROR(8,SCPTTMA,180) Q
|
---|
154 | . D DISTEAM^SCRPM21U($$SRCTEAM)
|
---|
155 | . I 'SCPTTPA D ERROR(9,SCST,185) Q
|
---|
156 | . Q
|
---|
157 | ;
|
---|
158 | D SETP(3)
|
---|
159 | ; not PC to PC reasgn
|
---|
160 | ;
|
---|
161 | ; create new destin tm, pos asgns
|
---|
162 | D CREATETM^SCRPM21U(DFN,$$DSTTEAM,SCACT,.SCPTTMA)
|
---|
163 | I 'SCPTTMA D ERROR(6,SCPTTMA,187) G APTTPQ
|
---|
164 | D CREATPOS^SCRPM21U(.SCPTTPA,SCPTTMA)
|
---|
165 | I 'SCPTTPA D ERROR(7,SCPTTPA,190) G APTTPQ
|
---|
166 | ;
|
---|
167 | ; dschrg source pos
|
---|
168 | D DISPOS^SCRPM21U(FASIEN,.SCPTTPA)
|
---|
169 | I 'SCPTTPA D ERROR(5,SCPTTPA,200)
|
---|
170 | ;
|
---|
171 | APTTPQ ; All done
|
---|
172 | D SAVPARMS
|
---|
173 | I SCXLOCK=1 K @SCLOCK
|
---|
174 | Q +$G(SCPTTPA)_U_+$G(SCNEWTP)_U_+$G(SCPTTMA)_U_+$P($G(SCPTTMA),U,2)_U_$G(SCMESS)
|
---|
175 | ;
|
---|
176 | ;
|
---|
177 | OKDATA() ;setup/check variables
|
---|
178 | N SCOK
|
---|
179 | S SCOK=1
|
---|
180 | D INIT^SCAPMCU1(.SCOK)
|
---|
181 | IF '$D(^DPT(DFN,0))!('$D(^SCTM(404.57,SCTPTO,0))) D S SCOK=0
|
---|
182 | . S SCPARM("PATIENT")=DFN
|
---|
183 | . S SCPARM("POSITION")=SCTPTO
|
---|
184 | . D ERR^SCAPMCU1(SCESEQ,4045101,.SCPARM,"",SCERR)
|
---|
185 | S:'$G(SCACT) SCACT=DT
|
---|
186 | S:'$D(SCMAINA) SCMAINA="SC40443A"
|
---|
187 | Q SCOK
|
---|
188 | ;
|
---|
189 | INITVARS ; INITIALIZE LOCAL VARIABLES
|
---|
190 | S SCTM=$P($G(^SCTM(404.57,SCTP,0)),U,2) ; destin tm ien
|
---|
191 | S SCAPTDT("BEGIN")=SCACT
|
---|
192 | S SCAPTDT("END")=3990101
|
---|
193 | S SCAPTDT("INCL")=0
|
---|
194 | S SCST=$$GETPOSTM^SCRPM21U(FASIEN) ; source tm ien
|
---|
195 | S SCPTTMA=""
|
---|
196 | S SCMESS=""
|
---|
197 | K @SCERR
|
---|
198 | Q
|
---|
199 | ;
|
---|
200 | GETPLST() ; get patient position list
|
---|
201 | Q $$TPPT^SCAPMC(DFN,"SCAPTDT",,,,,0,"SCAPTTPO","SCAPTTPE")
|
---|
202 | ;
|
---|
203 | POSEXIST(SCTM,SCTP,POSAIEN,TMIEN) ;
|
---|
204 | ; if active pos asgn, return ien
|
---|
205 | N DISDT,SCX,SCY,SCFLAG
|
---|
206 | S TMIEN=""
|
---|
207 | S SCTM=+$P($G(^SCTM(404.57,SCTP,0)),U,2) ;ptr to 404.51
|
---|
208 | ;
|
---|
209 | S SCFLAG=0
|
---|
210 | S POSAIEN=0
|
---|
211 | ;
|
---|
212 | S SCX=0
|
---|
213 | F S SCX=$O(SCAPTTPO("SCTP",SCTM,SCTP,SCX)) Q:'SCX!(SCFLAG) D
|
---|
214 | . S SCY=$O(SCAPTTPO("SCTP",SCTM,SCTP,SCX,0))
|
---|
215 | . S DISDT=$P(SCAPTTPO(SCY),U,6)
|
---|
216 | . I DISDT=SCACT Q ;pos is discharged
|
---|
217 | . S TMIEN=$$GETPOSTM^SCRPM21U(SCX) ; tm asgn ien
|
---|
218 | . S DISDT=$P($G(^SCPT(404.42,TMIEN,0)),U,9)
|
---|
219 | . I DISDT,DISDT'>SCACT Q ;tm is discharged
|
---|
220 | . S SCFLAG=1
|
---|
221 | . S POSAIEN=SCX
|
---|
222 | . Q
|
---|
223 | ;
|
---|
224 | I SCFLAG Q POSAIEN
|
---|
225 | Q 0_U_$O(SCAPTTPO("SCTP",SCTM,SCTP,0))
|
---|
226 | ;
|
---|
227 | ERROR(TXT,IEN,ENUM) ; HANDLE ERRORS FOR REPORTING
|
---|
228 | I +TXT S TXT=$P($T(T+TXT),";;",2)
|
---|
229 | S SCMESS=" "_TXT_" [E#"_ENUM_"]"
|
---|
230 | ; NVS - use below for more detailed ien and path data
|
---|
231 | ;I $P(IEN,U,1)=0 S IEN=$P(IEN,U,2)
|
---|
232 | ;S SCMESS=TXT_" [(IEN="_IEN_") E#"_ENUM_" PTH:"_$G(PATH)_"]"
|
---|
233 | ;S ^TMP("PDR",$J,"POSREASGN",$H,DFN)=SCMESS
|
---|
234 | Q
|
---|
235 | ;
|
---|
236 | T ;;
|
---|
237 | 1 ;;Data Integrity error.;;
|
---|
238 | 2 ;;Unable to get positions list.;;
|
---|
239 | 3 ;;Unable to activate existing position.;;
|
---|
240 | 4 ;;Unable to activate existing team.;;
|
---|
241 | 5 ;;Unable to discharge source position.;;
|
---|
242 | 6 ;;Unable to create destination team.;;
|
---|
243 | 7 ;;Unable to create destination position.;;
|
---|
244 | 8 ;;Unable to discharge all positions for PC source team.;;
|
---|
245 | 9 ;;Unable to discharge PC source team.;;
|
---|
246 | 10 ;;Patient is being reassigned by another PCMM process.;;
|
---|
247 | ;;
|
---|
248 | ;
|
---|
249 | SAVPARMS ; save params for debugging
|
---|
250 | ; NVS - comment out the quit to save path/variable data
|
---|
251 | Q
|
---|
252 | N S,F,NVP
|
---|
253 | S S=""
|
---|
254 | S S=$O(^TMP("PDR",S),-1)+1 ; get next occurence
|
---|
255 | S ^TMP("PDR",S,$J,"INIT")=DFN_U_SCTP_U_SCACT_U_FASIEN_U_SCYESTM ; initial params passed in
|
---|
256 | S F="",NVP=""
|
---|
257 | F S F=$O(@SCFIELDA@(F)) Q:F="" S NVP=NVP_F_"="_@SCFIELDA@(F)_U ; Get the params passed in for new pos
|
---|
258 | S ^TMP("PDR",S,$J,"NPOS")=NVP
|
---|
259 | S F="",NVP=""
|
---|
260 | F S F=$O(@SCMAINA@(F)) Q:F="" S NVP=NVP_F_"="_@SCFIELDA@(F)_U ; Get the params passed in for new TEAM
|
---|
261 | S ^TMP("PDR",S,$J,"NTEAM")=NVP
|
---|
262 | S ^TMP("PDR",S,$J,"NASSGN")=$G(SCPTTPA)_U_$G(SCPTTMA)_U_$G(PATH)_U_$G(SCMESS)_U_$H ; conserve new pos and team assigns if present
|
---|
263 | Q
|
---|
264 | ;
|
---|
265 | SETP(BR) ; SET PATH INDICATOR FOR DEBUGGING
|
---|
266 | ; NVS - comment out the quit to save path/variable data
|
---|
267 | Q
|
---|
268 | S PATH=$G(PATH)_BR_"-"
|
---|
269 | Q
|
---|
270 | ;
|
---|
271 | SRCTEAM() ; return source tm ien
|
---|
272 | ; value set in INITVARS
|
---|
273 | Q SCST
|
---|
274 | ;
|
---|
275 | DSTTEAM() ; return destin tm ien
|
---|
276 | Q SCTM
|
---|
277 | ;
|
---|
278 | PCPOS() ; IS THIS A PC POSITION?
|
---|
279 | Q $G(@SCFIELDA@(.05),0)
|
---|
280 | ;
|
---|