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