1 | HLUCM009 ;CIOFO-O/LJA - HL7/Capacity Mgt API-II ;2/25/03-08:50
|
---|
2 | ;;1.6;HEALTH LEVEL SEVEN;**103**;Oct 13, 1995
|
---|
3 | ;
|
---|
4 | IEN870(IEN772) ; Given 772 find 870...
|
---|
5 | N DATA,I773,I870,IEN
|
---|
6 | S DATA=$G(^HL(772,+IEN772,0))
|
---|
7 | ;
|
---|
8 | ; Logical Link field...
|
---|
9 | S IEN=$P(DATA,U,11) I IEN QUIT IEN ;->
|
---|
10 | ;
|
---|
11 | ; Related Event Protocol...
|
---|
12 | S IEN=$P(DATA,U,10),IEN=$P($G(^ORD(101,+IEN,770)),U,7) I IEN QUIT IEN ;->
|
---|
13 | ;
|
---|
14 | S I773=0
|
---|
15 | F S I773=$O(^HLMA("B",IEN772,I773)) Q:I773'>0 D QUIT:I870
|
---|
16 | . S I870=$P($G(^HLMA(+I773,0)),U,7)
|
---|
17 | I $G(I870) QUIT +I870 ;->
|
---|
18 | ;
|
---|
19 | QUIT ""
|
---|
20 | ;
|
---|
21 | MSGTYPE(IEN772) ; MSG or MSA's type...
|
---|
22 | N DEL,IN
|
---|
23 | S IN=$G(^HL(772,+IEN772,"IN",1,0)) QUIT:IN']"" "MSG" ;->
|
---|
24 | S DEL=$E(IN,4) QUIT:DEL']"" "MSG" ;->
|
---|
25 | S IN=$P(IN,DEL,2) QUIT:IN']"" "MSG" ;->
|
---|
26 | I $L(IN)=2,$E(IN)="C"!($E(IN)="A") QUIT IN ;->
|
---|
27 | QUIT "MSG"
|
---|
28 | ;
|
---|
29 | KILLS(WHEN) ; Kills of ^TMP data WHEN (START or END or ALL)
|
---|
30 | N DATA
|
---|
31 | ;
|
---|
32 | ; If ALL, set WHEN to include START and END...
|
---|
33 | S:WHEN="ALL" WHEN="STARTandEND"
|
---|
34 | ;
|
---|
35 | ; Always KILLs...
|
---|
36 | F DATA="ACTUAL","HLCHILD",$G(TOTALS)_"ERRTIME","HLOAD772","N","HLNMSP94","HLNMSPXRF","HLPARENT","HLRECNM","U","X" D
|
---|
37 | . KILL ^TMP(DATA,$J),^TMP($J,DATA)
|
---|
38 | ;
|
---|
39 | ; START-only KILLs...
|
---|
40 | I WHEN["START" D
|
---|
41 | . F DATA="HLUCMSTORE","RFAC",$G(TOTALS) D
|
---|
42 | . . QUIT:DATA']"" ;-> Sometimes TOTALS might not be defined
|
---|
43 | . . KILL ^TMP(DATA,$J),^TMP($J,DATA)
|
---|
44 | ;
|
---|
45 | ; END-only KILLs...
|
---|
46 | I WHEN["END" D
|
---|
47 | . KILL HLAPI
|
---|
48 | . ; Don't store any debug global data...
|
---|
49 | . I $G(^TMP($J,"HLUCM"))'="DEBUG GLOBAL" KILL ^TMP($J)
|
---|
50 | . F DATA="HL4","HLUCM","HLUCMDT" D
|
---|
51 | . . KILL ^TMP($J,DATA),^TMP(DATA,$J)
|
---|
52 | ;
|
---|
53 | QUIT
|
---|
54 | ;
|
---|
55 | SITESMSH(TXT) ; Return location pieces, slightly modified...
|
---|
56 | N DIV,P4,P6
|
---|
57 | S DIV=$E(TXT,4),P4=$P(TXT,DIV,4),P6=$P(TXT,DIV,6)
|
---|
58 | S P4=$S(P4?1.N1"~"!(P4?1.N):+P4,1:"")
|
---|
59 | S P6=$S(P6?1.N1"~"!(P6?1.N):+P6,1:"")
|
---|
60 | QUIT P4_U_P6
|
---|
61 | ;
|
---|
62 | MAILTYPE(MIEN) ; Is MSH in Mailman message local or remote...
|
---|
63 | N IEN,RECNO,TO,TOID,TYPE
|
---|
64 | S TYPE="L"
|
---|
65 | KILL ^TMP($J,"HLMAILTYPE")
|
---|
66 | D QD^XMXUTIL3(+MIEN,,,,,"^TMP($J,""HLMAILTYPE"")")
|
---|
67 | S RECNO=0
|
---|
68 | F S RECNO=$O(^TMP($J,"HLMAILTYPE","XMLIST",RECNO)) Q:RECNO'>0!(TYPE'="L") D
|
---|
69 | . S TO=$G(^TMP($J,"HLMAILTYPE","XMLIST",+RECNO,"TO"))
|
---|
70 | . S TOID=$G(^TMP($J,"HLMAILTYPE","XMLIST",+RECNO,"TO ID"))
|
---|
71 | . I TO["@"!(TOID="R") S TYPE="R"
|
---|
72 | KILL ^TMP($J,"HLMAILTYPE")
|
---|
73 | QUIT TYPE
|
---|
74 | ;
|
---|
75 | NMSPXRF ; Xref of namespaces that can be inferred. (If start with DG change to DG)
|
---|
76 | N I,T KILL ^TMP($J,"HLNMSPXRF") F I=2:1 S T=$T(NMSPXRF+I) Q:T'[";;" S T=$P(T,";;",2,99),^TMP($J,"HLNMSPXRF",$P(T,U))=$P(T,U,2)
|
---|
77 | ;;DG^DG
|
---|
78 | ;;GM^GM
|
---|
79 | ;;HEC^HEC
|
---|
80 | ;;IB^IB
|
---|
81 | ;;IVM^IVM
|
---|
82 | ;;LA^LA
|
---|
83 | ;;MPI^MPI
|
---|
84 | ;;OR^OR
|
---|
85 | ;;PR^PR
|
---|
86 | ;;PS^PS
|
---|
87 | ;;RG^RG
|
---|
88 | ;;ROR^ROR
|
---|
89 | ;;SC^SC
|
---|
90 | ;;VEI^VEIB
|
---|
91 | ;;XM^XMB
|
---|
92 | ;;XU^XU
|
---|
93 | ;;XW^XWB
|
---|
94 | Q
|
---|
95 | ;
|
---|
96 | ACCUMLAT(CATEGORY,TYPE,SORT,SUB1,SUB2,SUB3,SUB4) ; Generic accumulator
|
---|
97 | ;
|
---|
98 | I $G(SUB4)]"" D
|
---|
99 | . S TOTCURR=$G(^TMP(TOTALS,$J,CATEGORY,TYPE,SORT,SUB1,SUB2,SUB3,SUB4))
|
---|
100 | . D INCR^HLUCM001
|
---|
101 | . S ^TMP(TOTALS,$J,CATEGORY,TYPE,SORT,SUB1,SUB2,SUB3,SUB4)=TOTCURR
|
---|
102 | ;
|
---|
103 | S TOTCURR=$G(^TMP(TOTALS,$J,CATEGORY,TYPE,SORT,SUB1,SUB2,SUB3))
|
---|
104 | D INCR^HLUCM001
|
---|
105 | S ^TMP(TOTALS,$J,CATEGORY,TYPE,SORT,SUB1,SUB2,SUB3)=TOTCURR
|
---|
106 | ;
|
---|
107 | ; Totals level 2 for SUB...
|
---|
108 | S TOTCURR=$G(^TMP(TOTALS,$J,CATEGORY,TYPE,SORT,SUB1,SUB2))
|
---|
109 | D INCR^HLUCM001
|
---|
110 | S ^TMP(TOTALS,$J,CATEGORY,TYPE,SORT,SUB1,SUB2)=TOTCURR
|
---|
111 | ;
|
---|
112 | ; Totals level 1 for SUB...
|
---|
113 | S TOTCURR=$G(^TMP(TOTALS,$J,CATEGORY,TYPE,SORT,SUB1))
|
---|
114 | D INCR^HLUCM001
|
---|
115 | S ^TMP(TOTALS,$J,CATEGORY,TYPE,SORT,SUB1)=TOTCURR
|
---|
116 | ;
|
---|
117 | ; Total level TYPE/SORT...
|
---|
118 | S TOTCURR=$G(^TMP(TOTALS,$J,CATEGORY,TYPE,SORT))
|
---|
119 | D INCR^HLUCM001
|
---|
120 | S ^TMP(TOTALS,$J,CATEGORY,TYPE,SORT)=TOTCURR
|
---|
121 | ;
|
---|
122 | ; Total level TYPE
|
---|
123 | S TOTCURR=$G(^TMP(TOTALS,$J,CATEGORY,TYPE))
|
---|
124 | D INCR^HLUCM001
|
---|
125 | S ^TMP(TOTALS,$J,CATEGORY,TYPE)=TOTCURR
|
---|
126 | ;
|
---|
127 | ; Total level CATEGORY
|
---|
128 | ; [Don't subtotal here, for NMSP holds two different TYPEs, and
|
---|
129 | ; if totalled here, it would double count.]
|
---|
130 | ;
|
---|
131 | QUIT
|
---|
132 | ;
|
---|
133 | LOAD772S(IEN772,HLNMSP) ; Load list of related 772s... [HL*1.6*91]
|
---|
134 | ;
|
---|
135 | ; Warning!!! This call point will never load more than 20 entries...
|
---|
136 | ; Any more than that, and probably an error condition
|
---|
137 | ; exists.
|
---|
138 | ;
|
---|
139 | N ACKTO,CHILD,DATA,FAC,HL772,HLI,HLJ,HLK,HLN,HLPCKG,HLZZI,HOLDNMSP,I
|
---|
140 | N I772,I773,MSGID,NUM,PARENT,PCKG,PIEN,PROT,TOTNUM,VAL,X
|
---|
141 | ;
|
---|
142 | KILL HLNMSP
|
---|
143 | QUIT:$G(^HL(772,+$G(IEN772),0))']"" "" ;->
|
---|
144 | ;
|
---|
145 | S DATA=$G(^HL(772,+$G(IEN772),0)) QUIT:DATA']"" "" ;->
|
---|
146 | ;
|
---|
147 | ; Loop until no new entries found or more than 20 entries...
|
---|
148 | S NUM=$$LOADEM^HLUCM050(+IEN772,.HLNMSP)
|
---|
149 | ;
|
---|
150 | QUIT NUM
|
---|
151 | ;
|
---|
152 | HOLDTOT(IEN) ; Accumulate...
|
---|
153 | QUIT:$D(HOLDNMSP(IEN))!(TOTNUM>19) ;->
|
---|
154 | S HOLDNMSP(IEN)="",TOTNUM=TOTNUM+1
|
---|
155 | QUIT
|
---|
156 | ;
|
---|
157 | SETUP() ; Perform checks, which can return error conditions, and
|
---|
158 | ; set up variables for $$LOOP. This extrinsic function returns
|
---|
159 | ; "" if no errors, or the # errors found. (Note that error
|
---|
160 | ; details placed in ERRINFO(ERROR-REASON)="")
|
---|
161 | N NOERR
|
---|
162 | S NOERR=""
|
---|
163 | D SETDEF ; Set defaults for parameters, if not passed
|
---|
164 | D FINDWAY ; Find way NMSP and PROT parameters passed
|
---|
165 | D SETMORE^HLUCM003 ; Additional var sets based on parameters & "way"...
|
---|
166 | D ERRCHK^HLUCM003 ; Check for errors...
|
---|
167 | KILL ^TMP(TOTALS,$J) ; Clear out storage location...
|
---|
168 | QUIT NOERR
|
---|
169 | ;
|
---|
170 | SETDEF ; Set various defaults...
|
---|
171 | I '$D(PNMSP) S PNMSP=1
|
---|
172 | I '$D(IEN101) S IEN101=1
|
---|
173 | I $G(TOTALS)']"" S TOTALS="HLTOTALS"
|
---|
174 | S COND=$$UP^XLFSTR(COND)
|
---|
175 | S COND=$S($G(COND)="BOTH":COND,1:"EITHER") ; Default to EITHER matches, count it...
|
---|
176 | QUIT
|
---|
177 | ;
|
---|
178 | FINDWAY ; How were NMSP and PROT passed? By reference? (If so, return 1)
|
---|
179 | ; Passed by reference?
|
---|
180 | S NMSPTYPE=$S($G(PNMSP)']""&($O(PNMSP(""))]""):1,1:0) ; 1=YES
|
---|
181 | S PROTYPE=$S($G(IEN101)']""&($O(IEN101(""))]""):1,1:0) ; 1=YES
|
---|
182 | QUIT
|
---|
183 | ;
|
---|
184 | MSGID(MSGID) ; Search forward for MSA's to this MSGID...
|
---|
185 | N BIEN,CT,D,HOLD,I772,I773,MSA,X
|
---|
186 | ;
|
---|
187 | S X=$O(^HL(772,"C",MSGID,0)) I X S HOLD(X)=""
|
---|
188 | S X=$O(^HLMA("C",MSGID,0)) I X S X=+$G(^HLMA(+X,0)) I X S HOLD(X)=""
|
---|
189 | ;
|
---|
190 | Q
|
---|
191 | ;
|
---|
192 | ERRMOVE(IEN772) ; Move all associated data out of ^TMP's totaling arrays
|
---|
193 | N IEN772C,IEN772P
|
---|
194 | ;
|
---|
195 | ; Find parent message (because have to move ALL associated messages out)
|
---|
196 | QUIT:$G(^TMP($J,"HLUCM"))'="DEBUG GLOBAL" ;->
|
---|
197 | S IEN772P=$O(^TMP($J,"HLUCMSTORE","X",+IEN772,0))
|
---|
198 | I IEN772P'>0 S IEN772P=IEN772
|
---|
199 | ;
|
---|
200 | ; Loop thru all associated messages in unit...
|
---|
201 | S IEN772C=0
|
---|
202 | F S IEN772C=$O(^TMP($J,"HLUCMSTORE","U",IEN772P,IEN772C)) Q:'IEN772C D
|
---|
203 | . F SUB="C","E","O","X" D
|
---|
204 | . . MERGE ^TMP($J,"HLUCMSTORE","ERR",SUB,IEN772C)=^TMP($J,"HLUCMSTORE",SUB,IEN772C)
|
---|
205 | . . KILL ^TMP($J,"HLUCMSTORE",SUB,IEN772C)
|
---|
206 | ;
|
---|
207 | ; Maybe there is no X xref...
|
---|
208 | MERGE ^TMP($J,"HLUCMSTORE","ERR","E",+IEN772P)=^TMP($J,"HLUCMSTORE","E",+IEN772P)
|
---|
209 | KILL ^TMP($J,"HLUCMSTORE","E",+IEN772P)
|
---|
210 | ;
|
---|
211 | ; Finally, move the unit's data...
|
---|
212 | MERGE ^TMP($J,"HLUCMSTORE","ERR","U",IEN772P)=^TMP($J,"HLUCMSTORE","U",IEN772P)
|
---|
213 | KILL ^TMP($J,"HLUCMSTORE","U",IEN772P)
|
---|
214 | ;
|
---|
215 | Q
|
---|
216 | ;
|
---|
217 | EOR ;HLUCM009 - HL7/Capacity Mgt API-II ;2/25/03-08:50
|
---|