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

BEHOPTP3.m

Go to the documentation of this file.
  1. BEHOPTP3 ;MSC/IND/MGH - Patient List Management ;30-Mar-2012 19:10;DU
  1. ;;1.1;BEH COMPONENTS;**004004,004008**;Mar 20, 2007
  1. ;=================================================================
  1. ; Call logic to manage team lists
  1. MANAGE(DATA,LIST,ACTION,NAME,VAL) ;
  1. D EXEC(12)
  1. Q
  1. ; Execute logic at specified node
  1. EXEC(NODE) ;
  1. N $ET
  1. S $ET="",@$$TRAP^CIAUOS("EXECERR^BEHOPTPL")
  1. X $G(^BEHOPT(90460.03,+LIST,NODE))
  1. Q
  1. ; List management API
  1. MAN2(DATA,LIST,ACTION,NAME,VAL) ;EP
  1. S DATA=""
  1. I ACTION="S"!(ACTION="P")!(ACTION="D") S DATA(1)=$$VALIDATE(NAME)
  1. I ACTION="C" S DATA=$$VALIDATE(NAME,1)
  1. Q:DATA(1)
  1. I ACTION="T" D GETTEAM(.DATA) Q
  1. I ACTION="P" D GETLST(.DATA,NAME) Q
  1. I ACTION="C" D CRLST(.DATA,NAME) Q
  1. I ACTION="S" D SETLST(.DATA,NAME,.VAL) Q
  1. I ACTION="D" D DELETE(.DATA,NAME) Q
  1. S DATA(1)="-1^Unknown action"
  1. Q
  1. ;Return the list of providers for this list
  1. GETLST(DATA,NAME) ;EP
  1. N CNT,IEN,PRV,QUALS,DATE,PAT
  1. K DATA
  1. S DATA(1)="^No Users found.",(CNT,IEN)=0
  1. S DATE="TODAY",DATE=$$DT^CIAU(DATE)
  1. S TEAM=$$GETIEN(NAME)
  1. I '$D(^OR(100.21,TEAM,0)) S DATA(1)="^Not a valid team." Q
  1. F S IEN=$O(^OR(100.21,TEAM,1,IEN)) Q:'IEN S PRV=+$G(^(IEN,0)) D
  1. .S X=$$ACTIVE^BEHOUSCX(PRV,DATE)
  1. .I X=1 S CNT=CNT+1,DATA(CNT)=PRV_U_$P(^VA(200,PRV,0),U)_U_"U"
  1. .I X=0 S CNT=CNT+1,DATA(CNT)=PRV_"*"_U_$P(^VA(200,PRV,0),U)_U_"U"
  1. S IEN=0 F S IEN=$O(^OR(100.21,TEAM,10,IEN)) Q:'IEN S PAT=+$G(^(IEN,0)) D
  1. .S CNT=CNT+1,DATA(CNT)=PAT_U_$P(^DPT(PAT,0),U)_U_"M"
  1. Q
  1. ; Validate list name
  1. VALIDATE(NAME,DUP) ;
  1. N L
  1. S NAME=$$TRIM^CIAU(NAME),L=$L(NAME),DUP=+$G(DUP)
  1. Q:L<3!(L>30) "-1^List name must be 3-30 characters in length."
  1. Q:NAME'?.(1A,1N,1"_",1" ") "-1^List name contains invalid characters."
  1. I DUP,$$GETIEN(NAME) Q "-1^List name already exists."
  1. I 'DUP,'$$GETIEN(NAME) Q "-1^List name not found."
  1. Q ""
  1. CRLST(DATA,NAME) ;EP Create a new team list
  1. N DATE,FNUM,FDA,IEN
  1. K DATA
  1. S DATE="TODAY",DATE=$$DT^CIAU(DATE)
  1. S FNUM=100.21
  1. S FDA=$NA(FDA(FNUM,"+1,"))
  1. S @FDA@(.01)=NAME
  1. S @FDA@(.1)=$$UPPER(NAME)
  1. S @FDA@(1)="TM"
  1. S @FDA@(1.6)=DUZ
  1. S @FDA@(1.65)=DATE
  1. S @FDA@(1.7)="Y"
  1. S DATA(1)=$$UPDATE^BGOUTL(.FDA,"",.IEN)
  1. S:'DATA(1) DATA(1)=IEN(1)
  1. I $D(IEN(1)) D
  1. .S FDA=$NA(FDA(100.212,"+1,"_IEN(1)_","))
  1. .S @FDA@(.01)=DUZ
  1. .D UPDATE^DIE("","FDA","IEN","ERR")
  1. Q
  1. ; Set List
  1. SETLST(DATA,NAME,VAL) ;EP
  1. N TEAM,FDA,FNUM,ERR,IEN,CNTU,CNTM,NUM
  1. K DATA
  1. Q:'$L(NAME)
  1. S TEAM=$$GETIEN(NAME)
  1. S CNTU=0,CNTM=0
  1. I '$D(^OR(100.21,TEAM,0)) S DATA(1)="^Not a valid team." Q
  1. D DELLST(.DATA,NAME)
  1. S NUM="" F S NUM=$O(VAL(NUM)) Q:NUM="" D
  1. .I $P(VAL(NUM),U,3)="U" D
  1. ..K FDA,IEN,ERR
  1. ..S FDA=$NA(FDA(100.212,"+1,"_TEAM_","))
  1. ..S @FDA@(.01)=$P(VAL(NUM),U,1)
  1. ..D UPDATE^DIE("","FDA","IEN","ERR")
  1. .I $P(VAL(NUM),U,3)="M" D
  1. ..K FDA,IEN,ERR
  1. ..S FDA=$NA(FDA(100.2101,"+1,"_TEAM_","))
  1. ..S @FDA@(.01)=$P(VAL(NUM),U,1)_";DPT("
  1. ..D UPDATE^DIE("","FDA","IEN","ERR")
  1. Q
  1. GETIEN(NAME) ;Get the IEN of the list
  1. N IEN
  1. S IEN="" S IEN=$O(^OR(100.21,"B",NAME,IEN))
  1. Q IEN
  1. DELLST(DATA,NAME) ;EP
  1. N TEAM,FDA,FNUM,PRV,DA,DIK,MEM
  1. Q:'$L(NAME)
  1. S TEAM=$$GETIEN(NAME)
  1. S DATA=0
  1. I '$D(^OR(100.21,TEAM,0)) S DATA(1)="^Not a valid team." Q
  1. S PRV=0 F S PRV=$O(^OR(100.21,TEAM,1,PRV)) Q:PRV="" D
  1. .S DA(1)=TEAM,DA=PRV
  1. .S DIK="^OR(100.21,DA(1),1,"
  1. .S:DA DATA=$$DELETE^BGOUTL(DIK,.DA)
  1. S MEM=0 F S MEM=$O(^OR(100.21,TEAM,10,MEM)) Q:MEM="" D
  1. .S DA(1)=TEAM,DA=MEM
  1. .S DIK="^OR(100.21,DA(1),10,"
  1. .S:DA DATA=$$DELETE^BGOUTL(DIK,.DA)
  1. I DATA="" S DATA=0
  1. Q DATA
  1. DELETE(DATA,NAME) ;Delete entire team
  1. N FNUM,IEN
  1. K DATA
  1. Q:'$L(NAME)
  1. S TEAM=$$GETIEN(NAME)
  1. S FNUM=100.21,IEN=TEAM
  1. S DATA=$$DELETE^BGOUTL(FNUM,IEN)
  1. Q
  1. GETTEAM(DATA) ;Get the teams with this user
  1. N CNT,IEN,X
  1. S (CNT,IEN)=0
  1. F S IEN=$O(^OR(100.21,"C",DUZ,IEN)) Q:'IEN D
  1. .S X=$G(^OR(100.21,IEN,0))
  1. .S:$P(X,U,2)="TM" CNT=CNT+1,DATA(CNT)=IEN_U_X
  1. Q
  1. UPPER(X) ; Convert lower case X to UPPER CASE
  1. Q $TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")