Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: SCMCRT1

SCMCRT1.m

Go to the documentation of this file.
SCMCRT1 ;ALB/SCK - TEAM PROFILE REPORT ; 10/30/95
 ;;5.3;Scheduling;**41**;AUG 13, 1993
 ;;1T1;Primary Care Management Module
 ;
 ;  Routine for collecting Team information for the 
 ;  Team Profile report
 ;
START(SCTS,SCPS,SCTEAMS,SCBRK) ;
 ;  SCTS  = Team Status
 ;  SCPS = Positon status
 ;  SCBRK  = Page break as team changes
 ;  
 ;   Status values:
 ;        1   Show active only
 ;        0   Show inactive only
 ;       -1   Show all
 ;       10   Selected Teams
 ;
 ;  SCTEAMS = List of teams to print
 ;   
 N SCTM,SCTMIEN,SCI,SCDTRNG,SCERMSG,SCRTN
 K ^TMP("PCMTP")
 S SCDTRNG=""
 ;
 IF $G(SCTS)=10,$G(SCTEAMS)=0 D  G CONT
 . S SCTM=""
 . F  S SCTM=$O(SCTEAMS(SCTM)) Q:SCTM=""  D
 .. D BLD(SCTM)
 ;
 S SCTM=""
 F  S SCTM=$O(^SCTM(404.51,"B",SCTM)) Q:SCTM=""  D
 . S SCTMIEN="",SCTMIEN=$O(^SCTM(404.51,"B",SCTM,SCTMIEN))
 . Q:'$$TEAMOK(SCTS,SCTMIEN)
 . D BLD(SCTMIEN)
 ;
CONT ;
 D TMRPT^SCMCRT1A(SCBRK)
 Q
 ;
TEAMOK(SCACT,SCIEN) ; function to check teams current status against
 ;  the requested status
 ;
 ;  SCACT - See status values above
 ;  SCIEN - IEN value for the team in 404.51
 ;
 ;  Returns 0 if team does not meet requested  status, 
 ;          1 if team does meet the requested status.
 ;
 ;
 N SCRTN,SCOK,SCER
 S SCOK=1
 G:SCACT<0 TEAMOKQ
 IF '+$$ACTHIST^SCAPMCU1(404.58,SCIEN,"SCDTRNG","SCER") S SCOK=0
TEAMOKQ Q (SCOK)
 ;
POSTOK(SCPACT,SCIEN) ;  function to check a positions current status against
 ;   against the requested status
 ;
 ;    SCPACT  - See status values above
 ;    SCIEN   - Ien value for the position in the 404.57 file
 ;
 ;    Returns  0 if position does not meet requested status
 ;             1 if position does meet the status
 ;
 N SCOK,SCER
 S SCOK=1
 G:SCPACT<0 POSTOKQ
 IF '+$$ACTHIST^SCAPMCU1(404.59,SCIEN,"SCDTRNG","SCER") S SCOK=0
POSTOKQ Q (SCOK)
 ;
BLD(SCIEN) ;  Build entry for the team profile in ^TMP("PCMTP",$J)
 ;
 ;  Team information is on the zero node.  The format is the same
 ;    as for the zero node in file #404.51
 ;
 ;  The team description (WP field nodes) are on the "D" node.
 ;  The teams positions are on individual "P" nodes, by name.
 ;  Format is position ien^standard role (external)^primary care^
 ;    max patients allowed^active status.
 ;
 N SCTNODE,II,SCPNODE,SCPIEN
 S SCTNODE=$G(^SCTM(404.51,SCIEN,0))
 Q:$D(SCTNODE)=0
 ;
 ;   Loop thru all the teams in file 404.51 and build the zero node
 ;   for the requested teams
 ;
 S ^TMP("PCMTP",$J,SCIEN,0)=SCTNODE
 IF $D(^SCTM(404.51,SCIEN,"D")) D
 . S II=0
 . F  S II=$O(^SCTM(404.51,SCIEN,"D",II)) Q:II=""  D
 .. S ^TMP("PCMTP",$J,SCIEN,"D",II)=$G(^SCTM(404.51,SCIEN,"D",II,0))
 ;
 ;   For each team, loop thru all the team positions, and build
 ;   nodes for each position that matches the requested status
 ;
 S SCPIEN=""
 F  S SCPIEN=$O(^SCTM(404.57,"C",SCIEN,SCPIEN)) Q:SCPIEN=""  D
 . Q:'$$POSTOK(SCPS,SCPIEN)
 . S SCPNODE=$G(^SCTM(404.57,SCPIEN,0))
 . 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)
 ;
 IF $D(^TMP("PCMTP",$J,SCIEN,"P"))=0 S ^TMP("PCMTP",$J,SCIEN,"P","NO POSITIONS")=""
 Q
 ;
ACTPOS(SCIEN) ;  Returns the active status of the position for the
 ;  date range of the report.
 ;
 N SCSTAT,SCER
 S SCTAT=$$ACTHIST^SCAPMCU1(404.59,SCIEN,"SCDTRNG","SCER")
 Q +SCTAT
 ;
ROLE(SCIEN) ;   Returns the standard role for a position in external format
 ;
 N SCROLE
 S SCROLE="NO STANDARD ROLE"
 G:$G(SCIEN)="" ROLEQ
 S SCROLE=$P($G(^SD(403.46,SCIEN,0)),U)
ROLEQ Q SCROLE
 ;
CARE(SCC) ;  Returns Yes if the position can provide primary care, No
 ;  if the position cannot.
 ;
 N STAT
 S STAT="NO"
 S:SCC=1 STAT="YES"
CAREQ Q STAT
 ;
QSTART ;
 D START(SCTMS,SCPOS,.SCTEAMS,SCBRK)
 Q