| 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 | 
|---|