SCMCWAIT ;ALB/SCK - Broker Utilities for Placement on Wait List ; 30 Oct 2002 3:42 PM ; Compiled May 25, 2007 09:07:17 ;;5.3;Scheduling;**264,297,446**;AUG 13, 1993;Build 77 ; Q ; WAIT(SCOK,SC) ; Place patient on wait list ; 'SC BLD PAT CLN LIST' ; ;M ^JDS=SC N COMMENT,SDTM,SDCNT,SDINS,SDINTR,SDMTM,SDREJ,SDWLIN S TEAM=$G(SC("TEAM")),POS=$G(SC("POSITION")),DFN=$G(SC("DFN")),COMMENT=$G(SC("COMMENT")),SC=$G(SC("SC")) S SDWLIN=+$P($G(^SCTM(404.51,+$G(TEAM),0)),U,7),SDINTR=$G(SC("SDINTR")),SDREJ=$G(SC("SDREJ")),SDMTM=$G(SC("SDMTM")) ; check if transfer and if multiple teams in institution S SDCNT=0,SDINTR="",SDREJ="",SDMTM="",SDCC=TEAM ;identify INTRA-transfer ;- is patient assigned to PC provider? I 'POS&TEAM D PCPVER(DFN,.SDTM) D ; return current PCP team or 0 .I SDTM I $P($G(^SCTM(404.51,SDTM,0)),U,7)'=SDWLIN S SDINTR=1 ; inter transfer ; different institution .I 'SDTM S SDINS="" F S SDINS=$O(^SCTM(404.51,"AINST",SDINS)) Q:SDINS="" I SDINS'=SDWLIN D Q:SDREJ ..;check available PCMM teams in other institutions and if so set up rejection flag ..N SDT S SDCNT=0,SDT="" ..F S SDT=$O(^SCTM(404.51,"AINST",SDINS,SDT)) Q:SDT="" D Q:SDREJ ...I $$ACTTM^SCMCTMU(SDT)&($P($G(^SCTM(404.51,SDT,0)),U,5))&'$P($G(^SCTM(404.51,SDT,0)),U,10) D ...N SCTMCT S SCTMCT=$$TEAMCNT^SCAPMCU1(SDT) ;currently assigned ...N SCTMMAX S SCTMMAX=$P($$GETEAM^SCAPMCU3(SDT),"^",8) ;maximum set ...I SCTMCT1 S SDMTM=1 S SDCC="" F S SDCC=$O(TEAM(SDCC)) Q:SDCC="" N DR,Y D WT Q I SDCNT'>1 D WT Q WT N RES D INPUT^SDWLRP1(.RES,DFN_U_$S(POS:2,1:1)_U_SDCC_U_$S(POS:POS_U_DUZ,1:U_DUZ)_U_COMMENT_U_SC_U_SDINTR_U_SDREJ_U_SDMTM) I RES S SDWLRES=RES ; 446 Q WAITS(DFN,TEAM,POS,SC) ; PLACE PATIENT ON WAIT LIST N SDCC,SDTEAM,SDINTR,SDMTM,SDREJ,SDWLIN,SDWLRES S SDTEAM=$G(TEAM) ; check if transfer and if multiple teams in institution S SDCNT=0,SDINTR="",SDREJ="",SDMTM="" I 'POS&TEAM D .S SDWLIN=$P($G(^SCTM(404.51,TEAM,0)),U,7) .;- is patient assigned to PC provider? I 'POS&TEAM D PCPVER(DFN,.SDTM) D ; return current PCP team or 0 .I SDTM I $P($G(^SCTM(404.51,SDTM,0)),U,7)'=SDWLIN S SDINTR=1 ; inter transfer ; different institution .I 'SDTM S SDINS="" F S SDINS=$O(^SCTM(404.51,"AINST",SDINS)) Q:SDINS="" I SDINS'=SDWLIN D Q:SDREJ ..;check available PCMM teams in other institutions and if so set up rejection flag ..N SDT S SDCNT=0,SDT="" ..F S SDT=$O(^SCTM(404.51,"AINST",SDINS,SDT)) Q:SDT="" D Q:SDREJ ...I $$ACTTM^SCMCTMU(SDT)&($P($G(^SCTM(404.51,SDT,0)),U,5))&'$P($G(^SCTM(404.51,SDT,0)),U,10) D ...N SCTMCT S SCTMCT=$$TEAMCNT^SCAPMCU1(SDT) ;currently assigned ...N SCTMMAX S SCTMMAX=$P($$GETEAM^SCAPMCU3(SDT),"^",8) ;maximum set ...I SCTMCT1 S SDMTM=1 S SDCC="" F S SDCC=$O(TEAM(SDCC)) Q:SDCC="" S TEAM=SDCC N DR,Y S SDWLRES=$$WMT I SDCNT'>1 N DR,Y S SDWLRES=$$WMT S TEAM=$G(SDTEAM) Q $G(SDWLRES) WMT() N RES D INPUT^SDWLRP1(.RES,DFN_U_$S(POS:2,1:1)_U_TEAM_U_$S(POS:POS_U_DUZ,1:U_DUZ)_"^^"_SC_U_SDINTR_U_SDREJ_U_SDMTM) I $G(RES) D .N DA,DIE,DIK,DR,OK .S SDWLRES=RES ; 446 .S OK=0,DA=+$P(RES,U,2),DIE="^SDWL(409.3,",DR="25;S OK=1" .D ^DIE .I 'OK S DIK=DIE D ^DIK W !,"Wait list entry deleted" S RES=0 Q $G(RES) TEAMRM(DFN,TEAM) ; N SDTM D PCPVER(DFN,.SDTM) I 'SDTM D CLONE(DFN,TEAM) Q ;not PC panel assignment I SDTM'=TEAM D CLONE(DFN,TEAM) Q ;TEAM IS NOT PCP ;close EWL entries only if assignment to PC panel, not necessarily to a team N I F I=0:0 S I=$O(^SDWL(409.3,"B",+$G(DFN),I)) Q:'I S A=$G(^SDWL(409.3,I,0)) D .I 12'[$P(A,U,5) Q .;I $P(A,U,6)'=$G(TEAM) Q .I $G(^SDWL(409.3,I,"DIS")) Q .;INACTIVATE I .N FDA S FDA(409.3,I_",",21)="SA" .S FDA(409.3,I_",",19)=DT,FDA(409.3,I_",",23)="C" .S FDA(409.3,I_",",20)=DUZ .D UPDATE^DIE("","FDA") Q POSRM(TEAMP,POS) ; ; S DFN=+$G(^SCPT(404.42,+$G(TEAMP),0)) N SDTM D PCPVER(DFN,.SDTM) I 'SDTM D CLONE(DFN,TEAMP,POS) Q ;not PC panel assignment I SDTM'=TEAMP D CLONE(DFN,TEAMP,POS) Q I $G(POS) I '$P($G(^SCPT(404.43,+POS,0)),U,5) Q ;not pc I '$P($G(^SCPT(404.42,+$G(TEAMP),0)),U,8) Q ;not pc ;S ^JDS("TEAMP")=TEAMP,^JDS("POS")=POS,^JDS("DFN")=DFN N I F I=0:0 S I=$O(^SDWL(409.3,"B",+$G(DFN),I)) Q:'I S A=$G(^SDWL(409.3,I,0)) D .I 12'[$P(A,U,5) Q .;I $P(A,U,7)'=$G(POS) Q .I $G(^SDWL(409.3,I,"DIS")) Q .N FDA S FDA(409.3,I_",",21)="SA",FDA(409.3,I_",",23)="C" .S FDA(409.3,I_",",19)=DT .S FDA(409.3,I_",",20)=DUZ .D FILE^DIE("","FDA") .;INACTIVATE Q CLONE(DFN,TEAM,POS) ;clean one entry only or two if position N I,SDONE S SDONE=0 F I=0:0 S I=$O(^SDWL(409.3,"B",+$G(DFN),I)) Q:'I S A=$G(^SDWL(409.3,I,0)) D Q:SDONE .I 12'[$P(A,U,5) Q .I $P(A,U,5)=1 I $P(A,U,6)'=$G(TEAM) Q .I $P(A,U,5)=2 I $P(A,U,6)'=$G(POS) Q .I $G(^SDWL(409.3,I,"DIS")) Q .;INACTIVATE I .N FDA S FDA(409.3,I_",",21)="SA" .S FDA(409.3,I_",",19)=DT,FDA(409.3,I_",",23)="C" .S FDA(409.3,I_",",20)=DUZ .D UPDATE^DIE("","FDA") .S SDONE=1 Q PCPVER(DFN,SDTM) ;verify if PCP assignment S SDTM=0 ; return 0 if no PCP assignment K ^TMP("SDPCP",$J) N SDATE,SDPCP N SDI F SDI="BEGIN","END" S SDATE(SDI)=DT S SDATE="SDATE",SDPCP="^TMP(""SDPCP"",$J)" ; N SDI S SDI=$$GETALL^SCAPMCA(DFN,.SDATE,SDPCP) N SDII S SDII=0 F S SDII=$O(^TMP("SDPCP",$J,DFN,"PCPOS",SDII)) Q:'SDII D .N SDX S SDX=^TMP("SDPCP",$J,DFN,"PCPOS",SDII) .I +$P(SDX,U,7)'=2 Q ;PCP role .I +$P(SDX,U,6)>0&(+$P(SDX,U,6)