1 | IBDF18A1 ;ALB/CJM/AAS - ENCOUNTER FORM - utilities for PCE ;12-AUG-94
|
---|
2 | ;;3.0;AUTOMATED INFO COLLECTION SYS;**34,38**;APR 24, 1997
|
---|
3 | ;
|
---|
4 | COPYLIST(LIST,ARY,COUNT) ;
|
---|
5 | ; -- copies the entries from LIST to @ARY, starting subscript at COUNT+1
|
---|
6 | ;
|
---|
7 | N SLCTN,NODE,NODE1,NODE2,TSUBCOL,GROUP,ORDER,HDR,PRNT
|
---|
8 | ;
|
---|
9 | D SUBCOL(LIST,.TSUBCOL) ;find the subcolumn containing the text
|
---|
10 | ;
|
---|
11 | S PRNT=""
|
---|
12 | F S PRNT=$O(^IBE(357.4,"APO",LIST,PRNT)) Q:PRNT="" D
|
---|
13 | . S GROUP=""
|
---|
14 | . F S GROUP=$O(^IBE(357.4,"APO",LIST,PRNT,GROUP)) Q:GROUP="" D
|
---|
15 | .. S HDR=$P($G(^IBE(357.4,GROUP,0)),"^")
|
---|
16 | .. I HDR="BLANK" S HDR=""
|
---|
17 | .. S COUNT=COUNT+1,@ARY@(COUNT)="^"_HDR
|
---|
18 | .. S ORDER=""
|
---|
19 | .. F S ORDER=$O(^IBE(357.3,"APO",LIST,GROUP,ORDER)) Q:ORDER="" D
|
---|
20 | ... S SLCTN=0
|
---|
21 | ... F S SLCTN=$O(^IBE(357.3,"APO",LIST,GROUP,ORDER,SLCTN)) Q:'SLCTN D
|
---|
22 | .... S NODE=$G(^IBE(357.3,SLCTN,0))
|
---|
23 | .... S NODE2=$G(^IBE(357.3,SLCTN,2))
|
---|
24 | .... S NODE1=$G(^IBE(357.3,SLCTN,1,+$O(^IBE(357.3,SLCTN,1,"B",+TSUBCOL,0)),0))
|
---|
25 | .... ; -- return placeholders as headers when use as subheader
|
---|
26 | .... ; is yes and quit
|
---|
27 | .... I $P(NODE,"^",2),$P(NODE,"^",7)=1 D Q
|
---|
28 | ..... S COUNT=COUNT+1,@ARY@(COUNT)="^"_$P(NODE,"^",6)
|
---|
29 | .... ;
|
---|
30 | .... I $P(NODE1,"^")=TSUBCOL,$L($P(NODE1,"^",2)) S COUNT=COUNT+1,@ARY@(COUNT)=$P(NODE,"^")_"^"_$P(NODE1,"^",2)_"^^^^"_$P(NODE2,"^")_"^"_$P(NODE2,"^",3)_"^"_$P(NODE2,"^",4)_"^"_$P(NODE2,"^",2)
|
---|
31 | .... D MODLIST
|
---|
32 | Q
|
---|
33 | ;
|
---|
34 | SUBCOL(LIST,TSUBCOL) ; -- finds the subcolumn containing the text
|
---|
35 | ; -- TSUBCOL passed by reference - used to return the subcolumn
|
---|
36 | ; LIST is the selection list to search
|
---|
37 | ;
|
---|
38 | ; -- refering to the data returned by the package interface,
|
---|
39 | ; piece 2 is usually the description
|
---|
40 | ;
|
---|
41 | N PI,SC
|
---|
42 | S TSUBCOL="",SC=0
|
---|
43 | S PI=$P($G(^IBE(357.6,+$P($G(^IBE(357.2,+LIST,0)),"^",11),0)),"^")
|
---|
44 | ;
|
---|
45 | F S SC=$O(^IBE(357.2,LIST,2,SC)) Q:'SC D
|
---|
46 | .Q:$P($G(^IBE(357.2,LIST,2,SC,0)),"^",4)=2 ;is a marking area
|
---|
47 | .I $P($G(^IBE(357.2,LIST,2,SC,0)),"^",5)=2 S TSUBCOL=$P(^(0),"^") Q
|
---|
48 | .I TSUBCOL="",$P($G(^IBE(357.2,LIST,2,SC,0)),"^",5)>2 S TSUBCOL=$P(^(0),"^") Q ; -- see if other than data piece two is text subcolumn
|
---|
49 | .;
|
---|
50 | .; -- utility for selecting blanks is exception
|
---|
51 | .I TSUBCOL="",PI="IBDF UTILITY FOR SELECTING BLANKS",$P($G(^IBE(357.2,LIST,2,SC,0)),"^",5)=1 S TSUBCOL=$P(^(0),"^") Q
|
---|
52 | Q
|
---|
53 | ;
|
---|
54 | F2(ARY) ; -- filter cpt code array to find only codes beginning with 992 and asssicated headers
|
---|
55 | ; -- Copy filtered array to from ibdtmp( to @ary@(
|
---|
56 | ;
|
---|
57 | N NODE,IBQUIT,COUNT
|
---|
58 | S (COUNT,IBQUIT)=0
|
---|
59 | ;
|
---|
60 | ;I INTRFACE'="DG SELECT CPT PROCEDURE CODES" S @ARY=IBDTMP K IBDTMP
|
---|
61 | ;
|
---|
62 | S NODE="" F S NODE=$O(IBDTMP(NODE),-1) Q:NODE="" I $E(IBDTMP(NODE),1,3)=992 D ;Q:IBQUIT ;comment out the q:ibquit if want from more than 1 list
|
---|
63 | .;
|
---|
64 | .S @ARY@(NODE)=IBDTMP(NODE),COUNT=COUNT+1 ;this is bottom of list
|
---|
65 | .;
|
---|
66 | .; -- process from bottom of list to header
|
---|
67 | .F S NODE=$O(IBDTMP(NODE),-1) Q:NODE="" D Q:IBQUIT
|
---|
68 | ..S IBQUIT=0
|
---|
69 | ..I $E(IBDTMP(NODE),1,3)=992 S @ARY@(NODE)=IBDTMP(NODE),COUNT=COUNT+1
|
---|
70 | ..I $P(IBDTMP(NODE),"^",1)="" S @ARY@(NODE)=IBDTMP(NODE),IBQUIT=1,COUNT=COUNT+1
|
---|
71 | I COUNT S @ARY@(0)=COUNT
|
---|
72 | Q
|
---|
73 | ;
|
---|
74 | URH ; -- UnReferenced Headers (removal)
|
---|
75 | ; if a header doesn't have any data under it, then remove the header
|
---|
76 | N X,HDR
|
---|
77 | S X=0 F S X=$O(@ARY@(X)) Q:'X D
|
---|
78 | .I '$D(HDR),$P(@ARY@(X),"^",1)="" S HDR=X Q ;find a header
|
---|
79 | .I $P(@ARY@(X),"^",1)="" K HDR Q ; is item under header
|
---|
80 | .; -- patch 34 check if piece one below = null instead of positive
|
---|
81 | .I $D(HDR),$P(@ARY@(X),"^",1)="" K @ARY@(HDR) S COUNT=COUNT-1,HDR=X ;hdr doesn't have any items, kill hdr node and reset header to next header
|
---|
82 | .;I $D(HDR),$P(@ARY@(X),"^",1) K @ARY@(HDR) S COUNT=COUNT-1,HDR=X ;hdr doesn't have any items, kill hdr node and reset header to next header
|
---|
83 | I $D(HDR) S X=$O(@ARY@(""),-1) I $P(@ARY@(X),"^",1)="" K @ARY@(X) S COUNT=COUNT-1,HDR=X ;last item in list is a header
|
---|
84 | Q
|
---|
85 | MODLIST ; return all CPT Modifiers if defined
|
---|
86 | ;
|
---|
87 | Q:$G(MODIFIER)'=1
|
---|
88 | N MCOUNT,MOD
|
---|
89 | Q:'$D(^IBE(357.3,SLCTN,3))
|
---|
90 | S MCOUNT=0
|
---|
91 | F MOD=0:0 S MOD=$O(^IBE(357.3,SLCTN,3,MOD)) Q:'MOD D
|
---|
92 | . S MCOUNT=MCOUNT+1
|
---|
93 | . S @ARY@(COUNT,"MODIFIER",MCOUNT)=$G(^IBE(357.3,SLCTN,3,MOD,0))
|
---|
94 | S:MCOUNT>0 @ARY@(COUNT,"MODIFIER",0)=MCOUNT
|
---|
95 | Q
|
---|