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