1 | SCRPO4 ;BP-CIOFO/KEITH - Historical Provider Position Assignment Listing (cont.) ; 9/3/99 12:52pm
|
---|
2 | ;;5.3;Scheduling;**177**;AUG 13, 1993
|
---|
3 | ;
|
---|
4 | BPRPA(SCPASS,SCDIV,SCTEAM,SCPOS,SCLINIC,SCFMT) ;Evaluate provider position assignment information
|
---|
5 | ;Input: SCPASS=provider position assignment information
|
---|
6 | ; string from $$PRTP^SCAPMC
|
---|
7 | ;Input: SCDIV=division^ifn
|
---|
8 | ;Input: SCTEAM=team^ifn
|
---|
9 | ;Input: SCPOS=team position^ifn
|
---|
10 | ;Input: SCLINIC=associated clinic^ifn (if one exists)
|
---|
11 | ;Input: SCFMT=report format (detail or summary)
|
---|
12 | ;
|
---|
13 | ;evaluate assignment/gather data
|
---|
14 | N SCI,SCTP0,SCPC,SCMAX,SCACT,SCINAC,SCARR,ERR,SCPTD,SCPTPA0,SCX
|
---|
15 | N DFN,SCPCA,SCNPCA,SCOSL,SCPPC,SCPNPC,SCPPOSD,SCPACT,SCPINAC,SCDT2
|
---|
16 | N SCPPTD,SCPPTPA0,SCPROV,SCPTP0,SCY
|
---|
17 | Q:+SCPASS'>0 ;invalid provider ifn
|
---|
18 | ;not a selected provider
|
---|
19 | I $O(^TMP("SC",$J,"ASPR",0)),'$D(^TMP("SC",$J,"ASPR",+SCPASS)) Q
|
---|
20 | S SCPROV=$P(SCPASS,U,2)_U_$P(SCPASS,U) ;provider name^ifn
|
---|
21 | S SCTP0=$G(^SCTM(404.57,+$P(SCPASS,U,3),0)) Q:'$L(SCTP0)
|
---|
22 | S SCPC=$S($P(SCTP0,U,4)=1:"YES",1:"NO") Q:'$$SPCAT(SCPC) ;pc? y/n
|
---|
23 | S SCMAX=+$P(SCTP0,U,8) ;maximum patients
|
---|
24 | ;adjust dates if necessary
|
---|
25 | S SCACT=$P(SCPASS,U,9),SCINAC=$P(SCPASS,U,10)
|
---|
26 | M SCDT=^TMP("SC",$J,"DTR") S SCDT="SCDT"
|
---|
27 | I SCACT>SCDT("BEGIN") S SCDT("BEGIN")=SCACT
|
---|
28 | I SCINAC,SCINAC<SCDT("END") S SCDT("END")=SCINAC
|
---|
29 | S SCARR="^TMP(""SCARR"",$J,2)" K @SCARR,^TMP("SCARR",$J,3)
|
---|
30 | S SCI=$$PTTP^SCAPMC($P(SCPOS,U,2),.SCDT,SCARR,"ERR")
|
---|
31 | ;count patients assigned to the provider
|
---|
32 | S SCI=0 F S SCI=$O(^TMP("SCARR",$J,2,SCI)) Q:'SCI D
|
---|
33 | .S SCPTD=^TMP("SCARR",$J,2,SCI),DFN=+SCPTD Q:DFN'>0
|
---|
34 | .S SCPTPA0=$G(^SCPT(404.43,+$P(SCPTD,U,3),0)) Q:'$L(SCPTPA0)
|
---|
35 | .S SCX=$S($P(SCPTPA0,U,5)>0:"PC",1:"NPC")
|
---|
36 | .S ^TMP("SCARR",$J,3,SCX,DFN)=""
|
---|
37 | .Q
|
---|
38 | S (SCPCA,DFN)=0 F S DFN=$O(^TMP("SCARR",$J,3,"PC",DFN)) Q:'DFN D
|
---|
39 | .S SCPCA=SCPCA+1
|
---|
40 | .Q
|
---|
41 | S (SCNPCA,DFN)=0 F S DFN=$O(^TMP("SCARR",$J,3,"NPC",DFN)) Q:'DFN D
|
---|
42 | .S SCNPCA=SCNPCA+1
|
---|
43 | .Q
|
---|
44 | ;jlu added 4 to clean up array 9/8/99
|
---|
45 | F SCI=2,3,4 K ^TMP("SCARR",$J,SCI)
|
---|
46 | S SCOSL=SCMAX-SCPCA-SCNPCA S:SCOSL<0 SCOSL=0 ;open slots
|
---|
47 | ;count precepted patients
|
---|
48 | S (SCPPC,SCPNPC)=0,SCI=$$PRECHIS^SCMCLK($P(SCPOS,U,2),.SCDT,SCARR)
|
---|
49 | N SCPPOS S SCI=0 F S SCI=$O(^TMP("SCARR",$J,2,SCI)) Q:'SCI D
|
---|
50 | .S SCPPOSD=^TMP("SCARR",$J,2,SCI),SCPPOS=$P(SCPPOSD,U,3) Q:'SCPPOS
|
---|
51 | .S SCPACT=$P(SCPPOSD,U,14),SCPINAC=$P(SCPPOSD,U,15)
|
---|
52 | .Q:'SCPACT S:SCPINAC<1 SCPINAC=9999999
|
---|
53 | .S SCPPOS(SCPPOS,SCPACT,SCPINAC)=""
|
---|
54 | .Q
|
---|
55 | S SCPPOS=0 F S SCPPOS=$O(SCPPOS(SCPPOS)) Q:'SCPPOS D
|
---|
56 | .S SCPACT=0 F S SCPACT=$O(SCPPOS(SCPPOS,SCPACT)) Q:'SCPACT D
|
---|
57 | ..S SCPINAC=0 F S SCPINAC=$O(SCPPOS(SCPPOS,SCPACT,SCPINAC)) Q:'SCPINAC D
|
---|
58 | ..;adjust dates again
|
---|
59 | ..M SCDT2=SCDT S SCDT2="SCDT2"
|
---|
60 | ..I SCPACT>SCDT2("BEGIN") S SCDT2("BEGIN")=SCPACT
|
---|
61 | ..I SCPINAC<SCDT2("END") S SCDT2("END")=SCINAC
|
---|
62 | ..N SCARR S SCARR="^TMP(""SCARR"",$J,3)" K @SCARR,^TMP("SCARR",$J,4)
|
---|
63 | ..;get patients assigned to precepted position
|
---|
64 | ..S SCI=$$PTTP^SCAPMC(SCPPOS,.SCDT2,SCARR,"ERR")
|
---|
65 | ..S SCI=0 F S SCI=$O(^TMP("SCARR",$J,3,SCI)) Q:'SCI D
|
---|
66 | ...S SCPPTD=^TMP("SCARR",$J,3,SCI) Q:'+SCPPTD
|
---|
67 | ...S SCPPTPA0=$G(^SCPT(404.43,+$P(SCPPTD,U,3),0)) Q:'$L(SCPPTPA0)
|
---|
68 | ...S SCX=$S($P(SCPPTPA0,U,5)>0:"PC",1:"NPC")
|
---|
69 | ...S ^TMP("SCARR",$J,4,SCX,+SCPPTD)=""
|
---|
70 | ...Q
|
---|
71 | ..Q
|
---|
72 | .Q
|
---|
73 | ;bp/djb Positions that have been precepted should show zero in
|
---|
74 | ; the Precepted Patients column.
|
---|
75 | ;Old code begin
|
---|
76 | ;S (SCPPC,DFN)=0 F S DFN=$O(^TMP("SCARR",$J,4,"PC",DFN)) Q:'DFN D
|
---|
77 | ;.S SCPPC=SCPPC+1
|
---|
78 | ;.Q
|
---|
79 | ;S (SCPNPC,DFN)=0 F S DFN=$O(^TMP("SCARR",$J,4,"NPC",DFN)) Q:'DFN D
|
---|
80 | ;.S SCPNPC=SCPNPC+1
|
---|
81 | ;.Q
|
---|
82 | ;Old code end
|
---|
83 | ;New code begin
|
---|
84 | S (SCPPC,SCPNPC)=0 ;Initialize to zero.
|
---|
85 | ;Only count DFNs if position hasn't been precepted.
|
---|
86 | I '$D(^SCTM(404.53,"B",$P(SCPOS,"^",2))) D ;
|
---|
87 | . S DFN=0
|
---|
88 | . F S DFN=$O(^TMP("SCARR",$J,4,"PC",DFN)) Q:'DFN S SCPPC=SCPPC+1
|
---|
89 | . S DFN=0
|
---|
90 | . F S DFN=$O(^TMP("SCARR",$J,4,"NPC",DFN)) Q:'DFN S SCPNPC=SCPNPC+1
|
---|
91 | ;New code end
|
---|
92 | ;
|
---|
93 | ;set data string
|
---|
94 | S SCX=$E($P(SCPROV,U),1,19)_U_$E($P(SCPOS,U),1,18)_U_SCPC
|
---|
95 | S SCX=SCX_U_$E($P(SCTEAM,U),1,19)_U_$E($P(SCLINIC,U),1,17)
|
---|
96 | S SCX=SCX_U_SCMAX_U_SCPCA_U_SCNPCA_U_SCOSL_U_SCPPC_U_SCPNPC
|
---|
97 | ;Set sort values
|
---|
98 | I SCFMT="D" F SCI=1:1:5 S SCS=$P($G(^TMP("SC",$J,"SORT",SCI)),U,3) D
|
---|
99 | .I $L(SCS) S SCY=@SCS S:'$L(SCY) SCY="~~~"
|
---|
100 | .S:'$L(SCS) SCY="~~~" S SCS(SCI)=SCY
|
---|
101 | .Q
|
---|
102 | ;Set report detail global
|
---|
103 | I SCFMT="D" D LSET(.SCS,SCX)
|
---|
104 | ;
|
---|
105 | ;Set report summary global
|
---|
106 | I SCPC="YES" S ^TMP("SCRPT",$J,0,0,"PC")="",^TMP("SCRPT",$J,0,SCDIV,"PC")="",^TMP("SCRPT",$J,0,SCDIV,1,SCTEAM,"PC")=""
|
---|
107 | S SCX=$P(SCX,U,6,11) F SCI=1:1:6 D
|
---|
108 | .S $P(^TMP("SCRPT",$J,0,0),U,SCI)=$P($G(^TMP("SCRPT",$J,0,0)),U,SCI)+$P(SCX,U,SCI)
|
---|
109 | .S $P(^TMP("SCRPT",$J,0,SCDIV),U,SCI)=$P($G(^TMP("SCRPT",$J,0,SCDIV)),U,SCI)+$P(SCX,U,SCI)
|
---|
110 | .S $P(^TMP("SCRPT",$J,0,SCDIV,1,SCTEAM),U,SCI)=$P($G(^TMP("SCRPT",$J,0,SCDIV,1,SCTEAM)),U,SCI)+$P(SCX,U,SCI)
|
---|
111 | Q
|
---|
112 | ;
|
---|
113 | LSET(SCS,SCX) ;Set report line
|
---|
114 | ;Input: SCS=array of sort values
|
---|
115 | ;Input: SCX=data strin
|
---|
116 | N SCI,SCN,SCL
|
---|
117 | S SCN=$G(^TMP("SCRPT",$J,1,SCS(1),SCS(2),SCS(3))) I 'SCN D
|
---|
118 | .S ^TMP("SCRPT",$J,1)=$G(^TMP("SCRPT",$J,1))+1
|
---|
119 | .S SCN=^TMP("SCRPT",$J,1)
|
---|
120 | .S ^TMP("SCRPT",$J,1,SCS(1),SCS(2),SCS(3))=SCN
|
---|
121 | .Q
|
---|
122 | S ^TMP("SCRPT",$J,2)=$G(^TMP("SCRPT",$J,2))+1
|
---|
123 | S SCL=^TMP("SCRPT",$J,2)
|
---|
124 | S ^TMP("SCRPT",$J,2,SCN,SCS(4),SCS(5),SCL)=SCX
|
---|
125 | Q
|
---|
126 | ;
|
---|
127 | SPCAT(SCPC) ;selected pc assignment type?
|
---|
128 | ;Input: SCPC= possible primary care? YES/NO
|
---|
129 | Q:$E(^TMP("SC",$J,"ATYPE"))="B" 1
|
---|
130 | I $E(SCPC)="N" Q $E(^TMP("SC",$J,"ATYPE"))="N"
|
---|
131 | I $E(SCPC)="Y" Q $E(^TMP("SC",$J,"ATYPE"))="P"
|
---|
132 | Q 0
|
---|