| 1 | SCRPRAC2 ;ALB/CMM - Practitioner Demographics continued ; 29 Jun 99  04:11PM
 | 
|---|
| 2 |  ;;5.3;Scheduling;**41,177**;AUG 13, 1993
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;Practitioner Demographics Report
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | GATHER(PARRAY,PRAC) ;
 | 
|---|
| 7 |  ;get practitioner data
 | 
|---|
| 8 |  N ANODE,TIEN,PNAME,POS,STROL,USCL,TNAME,MAX,PHONE,ASSIGN,ROOM,SERV
 | 
|---|
| 9 |  N NODE,PIEN,CNAME,PCLASS,PRCP,PRCPCNT,SCLN,SCI,NXT,PRCPCT,PRCPOS
 | 
|---|
| 10 |  N PRCPTE,SCDT,SCRATCH
 | 
|---|
| 11 |  S NXT=0
 | 
|---|
| 12 |  F  S NXT=$O(@PARRAY@(NXT)) Q:NXT=""!(NXT'?.N)  D
 | 
|---|
| 13 |  .S (PNAME,PHONE,SERV,ROOM)=""
 | 
|---|
| 14 |  .D PINFO(PRAC,.PNAME,.PHONE,.ROOM,.SERV)
 | 
|---|
| 15 |  .;get provider name, office phone, room, service/section, person class
 | 
|---|
| 16 |  .;
 | 
|---|
| 17 |  .S ANODE=$G(@PARRAY@(NXT))
 | 
|---|
| 18 |  .Q:ANODE=""
 | 
|---|
| 19 |  .S PIEN=+$P(ANODE,"^") ;position ien
 | 
|---|
| 20 |  .;
 | 
|---|
| 21 |  .;Get precepted provider information
 | 
|---|
| 22 |  .S PRCPCNT=0
 | 
|---|
| 23 |  .S SCDT="SCDT",(SCDT("BEGIN"),SCDT("END"))="DT",SCDT("INCL")=0
 | 
|---|
| 24 |  .K ^TMP("SCRATCH",$J),^TMP("SCRATCH1",$J) S SCI="^TMP(""SCRATCH1"",$J)"
 | 
|---|
| 25 |  .S SCI=$$PRECHIS^SCMCLK(PIEN,.SCDT,SCI),SCI=0
 | 
|---|
| 26 |  .F  S SCI=$O(^TMP("SCRATCH1",$J,SCI)) Q:'SCI  D
 | 
|---|
| 27 |  ..N SCPRCD,SCTP
 | 
|---|
| 28 |  ..S SCPRCD=^TMP("SCRATCH1",$J,SCI),SCTP=$P(SCPRCD,U,3)
 | 
|---|
| 29 |  ..S PRCPTE=$P(SCPRCD,U,2) S:'$L(PRCPTE) PRCPTE="[unknown]"
 | 
|---|
| 30 |  ..S PRCPOS=$P($G(SCRATCH(1)),U,4)
 | 
|---|
| 31 |  ..S PRCPCT=$$PCPOSCNT^SCAPMCU1(SCTP,DT,0)
 | 
|---|
| 32 |  ..S PRCPCNT=PRCPCNT+PRCPCT
 | 
|---|
| 33 |  ..S ^TMP("SCRATCH",$J,PRCPTE,SCTP)=PRCPOS_U_PRCPCT
 | 
|---|
| 34 |  ..Q
 | 
|---|
| 35 |  .;
 | 
|---|
| 36 |  .S POS=$P(ANODE,"^",2) ;position name
 | 
|---|
| 37 |  .S STROL=$P(ANODE,"^",8) ;standard role name
 | 
|---|
| 38 |  .S USCL=$P(ANODE,"^",10) ;user class name
 | 
|---|
| 39 |  .S NODE=$G(^SCTM(404.57,PIEN,0))
 | 
|---|
| 40 |  .S MAX=$P(NODE,"^",8) ;max patient assignments to position
 | 
|---|
| 41 |  .S ASSIGN=+$$PCPOSCNT^SCAPMCU1(PIEN,DT,0) ;assigned patients
 | 
|---|
| 42 |  .S CNAME=$P($G(^SC(+$P(NODE,U,9),0)),U) ;associated clinic
 | 
|---|
| 43 |  .;
 | 
|---|
| 44 |  .;Get preceptor
 | 
|---|
| 45 |  .S PRCP=$P($$OKPREC2^SCMCLK(PIEN,DT),U,2)
 | 
|---|
| 46 |  .;
 | 
|---|
| 47 |  .S TIEN=+$P(ANODE,"^",3) ;team ien
 | 
|---|
| 48 |  .S TNAME=$P($G(^SCTM(404.51,TIEN,0)),"^") ;team name
 | 
|---|
| 49 |  .;
 | 
|---|
| 50 |  .;Set array for output
 | 
|---|
| 51 |  .S SCLN=0
 | 
|---|
| 52 |  .D SET1("Name",PNAME),SET2("Serv./Sect.",SERV)
 | 
|---|
| 53 |  .D SET1("Team",TNAME),SET2("Position",POS)
 | 
|---|
| 54 |  .D SET1("Role",STROL),SET2("User Class",USCL)
 | 
|---|
| 55 |  .D SET1("Room",ROOM),SET2("Pts. Allowed",MAX)
 | 
|---|
| 56 |  .D SET1("Phone",PHONE),SET2("Pts. Assigned",ASSIGN)
 | 
|---|
| 57 |  .I $L($G(PRCP)) D SET3(1,"Preceptor: "_PRCP)
 | 
|---|
| 58 |  .D SET3(4,"Assoc.")
 | 
|---|
| 59 |  .D SET3(4,"Clinic: "_CNAME)
 | 
|---|
| 60 |  .I $L(PCLASS(1)) D
 | 
|---|
| 61 |  ..D SET3(4,"Person"),SET3(5,"Class: "_PCLASS(1)) D
 | 
|---|
| 62 |  ..I $L(PCLASS(2)) D SET3(15,PCLASS(2)) D
 | 
|---|
| 63 |  ...I $L(PCLASS(3)) D SET3(18,PCLASS(3))
 | 
|---|
| 64 |  ...Q
 | 
|---|
| 65 |  ..Q
 | 
|---|
| 66 |  .Q:'$D(^TMP("SCRATCH",$J))
 | 
|---|
| 67 |  .D SET3(1,"")
 | 
|---|
| 68 |  .D SET4("Precepted Provider","Precepted Position","Pts. Precepted")
 | 
|---|
| 69 |  .S SCI="",$P(SCI,"-",31)="" D SET4(SCI,SCI,$E(SCI,1,14))
 | 
|---|
| 70 |  .S PRCPTE="" F  S PRCPTE=$O(^TMP("SCRATCH",$J,PRCPTE)) Q:PRCPTE=""  D
 | 
|---|
| 71 |  ..S SCTP=0 F  S SCTP=$O(^TMP("SCRATCH",$J,PRCPTE,SCTP)) Q:'SCTP  D
 | 
|---|
| 72 |  ...S PRCPOS=^TMP("SCRATCH",$J,PRCPTE,SCTP)
 | 
|---|
| 73 |  ...S PRCPCT=+$P(PRCPOS,U,2),PRCPOS=$P(PRCPOS,U)
 | 
|---|
| 74 |  ...D SET4(PRCPTE,PRCPOS,PRCPCT_"  ")
 | 
|---|
| 75 |  ...Q
 | 
|---|
| 76 |  ..Q
 | 
|---|
| 77 |  .D SET3(1,"") S SCI="  Total precepted patients: "_PRCPCNT
 | 
|---|
| 78 |  .S $E(SCI,37)=$J(("Total assigned/precepted patients: "_(PRCPCNT+ASSIGN)),42)
 | 
|---|
| 79 |  .D SET3(1,SCI)
 | 
|---|
| 80 |  .K ^TMP("SCRATCH",$J),^TMP("SCRATCH1",$J)
 | 
|---|
| 81 |  .Q
 | 
|---|
| 82 |  Q
 | 
|---|
| 83 |  ;
 | 
|---|
| 84 | SET1(LABEL,VALUE) ;Set output line
 | 
|---|
| 85 |  S SCLN=SCLN+1
 | 
|---|
| 86 |  S @STORE@(PNAME,PIEN,SCLN)=$J(LABEL,9)_": "_$E(VALUE,1,26)
 | 
|---|
| 87 |  Q
 | 
|---|
| 88 |  ;
 | 
|---|
| 89 | SET2(LABEL,VALUE) ;Set second column of output line
 | 
|---|
| 90 |  S $E(@STORE@(PNAME,PIEN,SCLN),40)=$J(LABEL,13)_": "_$E(VALUE,1,26)
 | 
|---|
| 91 |  Q
 | 
|---|
| 92 |  ;
 | 
|---|
| 93 | SET3(COL,VALUE) ;Set output line
 | 
|---|
| 94 |  N SCX
 | 
|---|
| 95 |  S SCLN=SCLN+1,SCX="",$E(SCX,COL)=$E(VALUE,1,(80-(COL-1)))
 | 
|---|
| 96 |  S @STORE@(PNAME,PIEN,SCLN)=SCX
 | 
|---|
| 97 |  Q
 | 
|---|
| 98 |  ;
 | 
|---|
| 99 | SET4(V1,V2,V3) ;Set output line
 | 
|---|
| 100 |  S SCLN=SCLN+1,V1="  "_V1,$E(V1,35)=V2,$E(V1,67)=$J(V3,14)
 | 
|---|
| 101 |  S @STORE@(PNAME,PIEN,SCLN)=V1
 | 
|---|
| 102 |  Q
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 | PINFO(VAE,PRACT,OPH,ROOM,SERV) ;
 | 
|---|
| 105 |  ;practitioner information form new person file
 | 
|---|
| 106 |  S PRACT=$P($G(^VA(200,VAE,0)),"^") ;practitioner name
 | 
|---|
| 107 |  S OPH=$P($G(^VA(200,VAE,.13)),"^",2) ;office phone
 | 
|---|
| 108 |  S ROOM=$P($G(^VA(200,VAE,.14)),"^") ;room
 | 
|---|
| 109 |  S SERV=$P($G(^VA(200,VAE,5)),"^") ;service/section ien
 | 
|---|
| 110 |  S SERV=$P($G(^DIC(49,+SERV,0)),"^") ;service/section name
 | 
|---|
| 111 |  S PCLASS=$$GET^XUA4A72(VAE) ;Person class
 | 
|---|
| 112 |  N SCI F SCI=1,2,3 S PCLASS(SCI)=$P(PCLASS,U,(SCI+1))
 | 
|---|
| 113 |  Q
 | 
|---|