1 | SCMCTPU ;ALB/REW - Team Position Utilities ; 9 Jun 1995
|
---|
2 | ;;5.3;Scheduling;**41,130**;AUG 13, 1993
|
---|
3 | ;1
|
---|
4 | ACTPTTM(SCPTTM,SCDT) ;is the patient- team assignment currently active?
|
---|
5 | ; Used by computed field #300 (CURRENTLY ACTIVE?) OF file #404.57
|
---|
6 | ; Input:
|
---|
7 | ; SCPTTM - Pointer to Patient Team Assignment file -404.42
|
---|
8 | ; SCDT - Date to check for, Default=DT
|
---|
9 | ; Returns
|
---|
10 | ; status^status change date
|
---|
11 | ; status:
|
---|
12 | ; 1 if after effective date and before inactive date
|
---|
13 | ; 0 if not yet active or inactivated already
|
---|
14 | ; -1 if error
|
---|
15 | ;999
|
---|
16 | ;new code
|
---|
17 | N SCOK,STATUS,EFFDT,SCNODE
|
---|
18 | S:'$D(SCDT) SCDT=DT
|
---|
19 | S SCNODE=$G(^SCPT(404.42,+SCPTTM,0))
|
---|
20 | ;no act=-1,dt before act=0,no inact=1,dt after inact=0,o/w=1
|
---|
21 | Q $S(('$P(SCNODE,U,2)):-1,(SCDT<$P(SCNODE,U,2)):0,('$P(SCNODE,U,9)):1,(SCDT>$P(SCNODE,U,9)):0,1:1)
|
---|
22 | ;
|
---|
23 | ACTTP(SCTP,SCDT) ;is the team position currently active?
|
---|
24 | ; Used by computed field #300 (CURRENTLY ACTIVE?) OF file #404.57
|
---|
25 | ; Input:
|
---|
26 | ; SCTP - Pointer to Team Position file #404.57
|
---|
27 | ; SCDT - Date to check for, Default=DT
|
---|
28 | ; Returns
|
---|
29 | ; status^status change date
|
---|
30 | ; status:
|
---|
31 | ; 1 if after effective date and before inactive date
|
---|
32 | ; 0 if not yet active or inactivated
|
---|
33 | ; -1 if error
|
---|
34 | ;
|
---|
35 | ;new code
|
---|
36 | N SCX,STATUS,EFFDT
|
---|
37 | S:'$D(SCDT) SCDT=DT
|
---|
38 | S SCX=$$DATES^SCAPMCU1(404.59,SCTP,SCDT)
|
---|
39 | S STATUS=$P(SCX,U,1)
|
---|
40 | S EFFDT=$S(STATUS=0:$P(SCX,U,3),(STATUS=1):$P(SCX,U,2),1:"")
|
---|
41 | QTACTTP Q STATUS_U_EFFDT
|
---|
42 | ;
|
---|
43 | ITSCF(CRITERIA,REPORT,X) ;
|
---|
44 | ;Input transform for 404.93
|
---|
45 | ;CRITERIA - value of the .01 in 404.93 for entry DA
|
---|
46 | ;REPORT - value of the .02 in 404.93 for entry DA
|
---|
47 | ;X - value entered by user
|
---|
48 | ;X is killed if duplicate
|
---|
49 | ;
|
---|
50 | Q:'$G(DA)!'$D(X)
|
---|
51 | S:'$D(CRITERIA) CRITERIA=$P($G(^SD(404.93,DA,0)),U)
|
---|
52 | S:'$D(REPORT)#2 REPORT=$P($G(^SD(404.93,DA,0)),U,2)
|
---|
53 | I $D(^SD(404.93,"APRIM",CRITERIA,REPORT)) D
|
---|
54 | .D:'$G(DGQUIET) EN^DDIOL("Duplicate Criteria Not Allowed for Same Report","","?5")
|
---|
55 | .K X
|
---|
56 | Q
|
---|
57 | ;
|
---|
58 | AKEY(REPORT,SORT,X) ;
|
---|
59 | ;Input transform for 404.92
|
---|
60 | ;REPORT - value of the .01 in 404.92 for entry DA
|
---|
61 | ;SORT - value of the .02 in 404.92 for entry DA
|
---|
62 | ;X - value entered by user
|
---|
63 | ;X is killed if duplicate
|
---|
64 | ;
|
---|
65 | Q:'$G(DA)!'$D(X)
|
---|
66 | S:'$D(REPORT) REPORT=$P($G(^SD(404.92,DA,0)),U)
|
---|
67 | S:'$D(SORT)#2 SORT=$P($G(^SD(404.92,DA,0)),U,2)
|
---|
68 | I $D(^SD(404.92,"AKEY",REPORT,SORT)) D
|
---|
69 | .D:'$G(DGQUIET) EN^DDIOL("Duplicate SORT BY TEXT Not Allowed for Same Report","","?5")
|
---|
70 | .K X
|
---|
71 | Q
|
---|
72 | ;
|
---|
73 | IPTF(POSITION,TEAM,X) ;input transform for 404.57
|
---|
74 | ;kills x if duplicate
|
---|
75 | Q:'$G(DIUTIL)="VERIFY FIELDS"
|
---|
76 | Q:'$G(DA)!'$D(X)
|
---|
77 | S:'$D(POSITION) POSITION=$P($G(^SCTM(404.57,DA,0)),U,1)
|
---|
78 | S:'$D(TEAM)#2 TEAM=$P($G(^SCTM(404.57,DA,0)),U,2)
|
---|
79 | ;S:'$G(TEAM) TEAM=$O(^SCTM(404.51,"B",TEAM,0))
|
---|
80 | IF $D(^SCTM(404.57,"APRIMARY",POSITION,TEAM)) D
|
---|
81 | .D:'$G(DGQUIET) EN^DDIOL("Duplicate Team Positions Not Allowed","","?5")
|
---|
82 | .K X
|
---|
83 | Q
|
---|
84 | OKACTTP(SCNODE,ACTDT) ;input transform for position assigned date for 404.43
|
---|
85 | ;
|
---|
86 | N OK
|
---|
87 | S OK=1
|
---|
88 | ;must have input defined
|
---|
89 | IF '$D(SCNODE)#2!('$G(ACTDT)) S OK=0_U_"Bad input data" G QTOKAC
|
---|
90 | ;if inactivation exists must be after activation
|
---|
91 | S:$P(SCNODE,U,4)&($P(SCNODE,U,4)<ACTDT) OK=0_U_"Inactivation date is after this date"
|
---|
92 | ;position must be active during assignment activation
|
---|
93 | S:'$$ACTTP(+$P(SCNODE,U,2),ACTDT) OK=0_U_"Position Not active on this date"
|
---|
94 | S:1>$$ACTPTTM(+$P(SCNODE,U,1),ACTDT) OK=0_U_"No active Patient Team Assignment on this date"
|
---|
95 | QTOKAC Q OK
|
---|
96 | OKINTP(SCNODE,INACTDT) ;input transform for inactivation date for 404.43
|
---|
97 | ;
|
---|
98 | N OK
|
---|
99 | S OK=1
|
---|
100 | ;must have input defined
|
---|
101 | IF '$D(SCNODE)#2!('$G(INACTDT)) S OK=0 G QTOKIN
|
---|
102 | ;must have activation date
|
---|
103 | S:'$P(SCNODE,U,3) OK=0_U_"No activation date in Pt Team Assignment"
|
---|
104 | ;activation date can't be after inactivation
|
---|
105 | S:$P(SCNODE,U,3)>INACTDT OK=0_U_"Activation date is after this date"
|
---|
106 | ;inactivation must be during time when position is active
|
---|
107 | S:'$$ACTTP(+$P(SCNODE,U,2),INACTDT) OK=0_U_"Inactivation date must be when position is active"
|
---|
108 | QTOKIN Q OK
|
---|
109 | ;
|
---|
110 | OKTP(DA,SCX) ;used by team position field of 404.43
|
---|
111 | N OK,SCTM,SCPTTMA,SCNODE
|
---|
112 | S SCNODE=$G(^SCPT(404.43,DA,0))
|
---|
113 | S OK=1
|
---|
114 | ;must have input defined
|
---|
115 | IF '$D(SCNODE)#2!('$G(SCX)) S OK=0 G QTOKTP
|
---|
116 | S SCTM=$P($G(^SCTM(404.57,SCX,0)),U,2)
|
---|
117 | S SCPTTMA=$P(SCNODE,U,1)
|
---|
118 | S:$P($G(^SCPT(404.42,SCPTTMA,0)),U,3)'=SCTM OK=0_U_"Team Position Must be from Team in Pt Team Assignment"
|
---|
119 | QTOKTP Q OK
|
---|
120 | ;
|
---|
121 | OKROLE(DA,SCX) ;used by role .05 field of 404.43
|
---|
122 | N OK,SCNODE,SCPTTMA,SCPC
|
---|
123 | S SCNODE=$G(^SCPT(404.43,DA,0))
|
---|
124 | S OK=1
|
---|
125 | ;must have input defined
|
---|
126 | IF '$D(SCNODE)#2!('$D(SCX)) S OK=0_U_"Undefined Patient Team Data" G QTOKTP
|
---|
127 | S SCPTTMA=$P(SCNODE,U,1)
|
---|
128 | S:$P($G(^SCPT(404.42,SCPTTMA,0)),U,8)=1 SCPC=1
|
---|
129 | ;if not a pc team & role is a pc role - not ok
|
---|
130 | S:('$G(SCPC))&$G(SCX) OK=0_U_"PC Roles only allowed if Pt Team Assignment is for Primary Care"
|
---|
131 | QTOKRL Q OK
|
---|
132 | ;
|
---|
133 | USEUSR() ;should user class functionality be employed?
|
---|
134 | ; Returned [1=Use USR Class,0=Don't)
|
---|
135 | Q +$G(^SD(404.91,1,"PCMM"))
|
---|
136 | ;
|
---|
137 | ACCLIN(SC44,DATE) ;is clinic active on this date?
|
---|
138 | ; Return: 1=Yes,0=N0
|
---|
139 | N SCX
|
---|
140 | S SCX=+$G(^SC(+$G(SC44),"I"))
|
---|
141 | Q $S('SCX:1,(SCX>DATE):1,1:0)
|
---|