[613] | 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 | ;
|
---|