| 1 | SCMCRT1 ;ALB/SCK - TEAM PROFILE REPORT ; 10/30/95
 | 
|---|
| 2 |  ;;5.3;Scheduling;**41**;AUG 13, 1993
 | 
|---|
| 3 |  ;;1T1;Primary Care Management Module
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ;  Routine for collecting Team information for the 
 | 
|---|
| 6 |  ;  Team Profile report
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 | START(SCTS,SCPS,SCTEAMS,SCBRK) ;
 | 
|---|
| 9 |  ;  SCTS  = Team Status
 | 
|---|
| 10 |  ;  SCPS = Positon status
 | 
|---|
| 11 |  ;  SCBRK  = Page break as team changes
 | 
|---|
| 12 |  ;  
 | 
|---|
| 13 |  ;   Status values:
 | 
|---|
| 14 |  ;        1   Show active only
 | 
|---|
| 15 |  ;        0   Show inactive only
 | 
|---|
| 16 |  ;       -1   Show all
 | 
|---|
| 17 |  ;       10   Selected Teams
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  ;  SCTEAMS = List of teams to print
 | 
|---|
| 20 |  ;   
 | 
|---|
| 21 |  N SCTM,SCTMIEN,SCI,SCDTRNG,SCERMSG,SCRTN
 | 
|---|
| 22 |  K ^TMP("PCMTP")
 | 
|---|
| 23 |  S SCDTRNG=""
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 |  IF $G(SCTS)=10,$G(SCTEAMS)=0 D  G CONT
 | 
|---|
| 26 |  . S SCTM=""
 | 
|---|
| 27 |  . F  S SCTM=$O(SCTEAMS(SCTM)) Q:SCTM=""  D
 | 
|---|
| 28 |  .. D BLD(SCTM)
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 |  S SCTM=""
 | 
|---|
| 31 |  F  S SCTM=$O(^SCTM(404.51,"B",SCTM)) Q:SCTM=""  D
 | 
|---|
| 32 |  . S SCTMIEN="",SCTMIEN=$O(^SCTM(404.51,"B",SCTM,SCTMIEN))
 | 
|---|
| 33 |  . Q:'$$TEAMOK(SCTS,SCTMIEN)
 | 
|---|
| 34 |  . D BLD(SCTMIEN)
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 | CONT ;
 | 
|---|
| 37 |  D TMRPT^SCMCRT1A(SCBRK)
 | 
|---|
| 38 |  Q
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 | TEAMOK(SCACT,SCIEN) ; function to check teams current status against
 | 
|---|
| 41 |  ;  the requested status
 | 
|---|
| 42 |  ;
 | 
|---|
| 43 |  ;  SCACT - See status values above
 | 
|---|
| 44 |  ;  SCIEN - IEN value for the team in 404.51
 | 
|---|
| 45 |  ;
 | 
|---|
| 46 |  ;  Returns 0 if team does not meet requested  status, 
 | 
|---|
| 47 |  ;          1 if team does meet the requested status.
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 |  ;
 | 
|---|
| 50 |  N SCRTN,SCOK,SCER
 | 
|---|
| 51 |  S SCOK=1
 | 
|---|
| 52 |  G:SCACT<0 TEAMOKQ
 | 
|---|
| 53 |  IF '+$$ACTHIST^SCAPMCU1(404.58,SCIEN,"SCDTRNG","SCER") S SCOK=0
 | 
|---|
| 54 | TEAMOKQ Q (SCOK)
 | 
|---|
| 55 |  ;
 | 
|---|
| 56 | POSTOK(SCPACT,SCIEN) ;  function to check a positions current status against
 | 
|---|
| 57 |  ;   against the requested status
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 |  ;    SCPACT  - See status values above
 | 
|---|
| 60 |  ;    SCIEN   - Ien value for the position in the 404.57 file
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 |  ;    Returns  0 if position does not meet requested status
 | 
|---|
| 63 |  ;             1 if position does meet the status
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 |  N SCOK,SCER
 | 
|---|
| 66 |  S SCOK=1
 | 
|---|
| 67 |  G:SCPACT<0 POSTOKQ
 | 
|---|
| 68 |  IF '+$$ACTHIST^SCAPMCU1(404.59,SCIEN,"SCDTRNG","SCER") S SCOK=0
 | 
|---|
| 69 | POSTOKQ Q (SCOK)
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 | BLD(SCIEN) ;  Build entry for the team profile in ^TMP("PCMTP",$J)
 | 
|---|
| 72 |  ;
 | 
|---|
| 73 |  ;  Team information is on the zero node.  The format is the same
 | 
|---|
| 74 |  ;    as for the zero node in file #404.51
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 |  ;  The team description (WP field nodes) are on the "D" node.
 | 
|---|
| 77 |  ;  The teams positions are on individual "P" nodes, by name.
 | 
|---|
| 78 |  ;  Format is position ien^standard role (external)^primary care^
 | 
|---|
| 79 |  ;    max patients allowed^active status.
 | 
|---|
| 80 |  ;
 | 
|---|
| 81 |  N SCTNODE,II,SCPNODE,SCPIEN
 | 
|---|
| 82 |  S SCTNODE=$G(^SCTM(404.51,SCIEN,0))
 | 
|---|
| 83 |  Q:$D(SCTNODE)=0
 | 
|---|
| 84 |  ;
 | 
|---|
| 85 |  ;   Loop thru all the teams in file 404.51 and build the zero node
 | 
|---|
| 86 |  ;   for the requested teams
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 |  S ^TMP("PCMTP",$J,SCIEN,0)=SCTNODE
 | 
|---|
| 89 |  IF $D(^SCTM(404.51,SCIEN,"D")) D
 | 
|---|
| 90 |  . S II=0
 | 
|---|
| 91 |  . F  S II=$O(^SCTM(404.51,SCIEN,"D",II)) Q:II=""  D
 | 
|---|
| 92 |  .. S ^TMP("PCMTP",$J,SCIEN,"D",II)=$G(^SCTM(404.51,SCIEN,"D",II,0))
 | 
|---|
| 93 |  ;
 | 
|---|
| 94 |  ;   For each team, loop thru all the team positions, and build
 | 
|---|
| 95 |  ;   nodes for each position that matches the requested status
 | 
|---|
| 96 |  ;
 | 
|---|
| 97 |  S SCPIEN=""
 | 
|---|
| 98 |  F  S SCPIEN=$O(^SCTM(404.57,"C",SCIEN,SCPIEN)) Q:SCPIEN=""  D
 | 
|---|
| 99 |  . Q:'$$POSTOK(SCPS,SCPIEN)
 | 
|---|
| 100 |  . S SCPNODE=$G(^SCTM(404.57,SCPIEN,0))
 | 
|---|
| 101 |  . S ^TMP("PCMTP",$J,SCIEN,"P",$P(SCPNODE,U))=SCPIEN_"^"_$$ROLE($P(SCPNODE,U,3))_"^"_$$CARE($P(SCPNODE,U,4))_"^"_+$P(SCPNODE,U,8)_"^"_$$ACTPOS(SCPIEN)
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 |  IF $D(^TMP("PCMTP",$J,SCIEN,"P"))=0 S ^TMP("PCMTP",$J,SCIEN,"P","NO POSITIONS")=""
 | 
|---|
| 104 |  Q
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 | ACTPOS(SCIEN) ;  Returns the active status of the position for the
 | 
|---|
| 107 |  ;  date range of the report.
 | 
|---|
| 108 |  ;
 | 
|---|
| 109 |  N SCSTAT,SCER
 | 
|---|
| 110 |  S SCTAT=$$ACTHIST^SCAPMCU1(404.59,SCIEN,"SCDTRNG","SCER")
 | 
|---|
| 111 |  Q +SCTAT
 | 
|---|
| 112 |  ;
 | 
|---|
| 113 | ROLE(SCIEN) ;   Returns the standard role for a position in external format
 | 
|---|
| 114 |  ;
 | 
|---|
| 115 |  N SCROLE
 | 
|---|
| 116 |  S SCROLE="NO STANDARD ROLE"
 | 
|---|
| 117 |  G:$G(SCIEN)="" ROLEQ
 | 
|---|
| 118 |  S SCROLE=$P($G(^SD(403.46,SCIEN,0)),U)
 | 
|---|
| 119 | ROLEQ Q SCROLE
 | 
|---|
| 120 |  ;
 | 
|---|
| 121 | CARE(SCC) ;  Returns Yes if the position can provide primary care, No
 | 
|---|
| 122 |  ;  if the position cannot.
 | 
|---|
| 123 |  ;
 | 
|---|
| 124 |  N STAT
 | 
|---|
| 125 |  S STAT="NO"
 | 
|---|
| 126 |  S:SCC=1 STAT="YES"
 | 
|---|
| 127 | CAREQ Q STAT
 | 
|---|
| 128 |  ;
 | 
|---|
| 129 | QSTART ;
 | 
|---|
| 130 |  D START(SCTMS,SCPOS,.SCTEAMS,SCBRK)
 | 
|---|
| 131 |  Q
 | 
|---|