| 1 | IBDFQSL2 ;ALB/CJM/AAS/MAF - ENCOUNTER FORM - Quick selection edit (cont.);12-Jun-95
 | 
|---|
| 2 |  ;;3.0;AUTOMATED INFO COLLECTION SYS;**34**;APR 24, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | GETLST(FORM,BLOCK,LIST,INTRFACE,ARY,FILTER,COUNT) ; -- returns any specified selection list for a clinic
 | 
|---|
| 5 |  ; -- input    FORM = ien of entry in 357
 | 
|---|
| 6 |  ;            BLOCK = ien of entry in 357.1
 | 
|---|
| 7 |  ;             LIST = ien of entry in 357.2
 | 
|---|
| 8 |  ;         INTRFACE = name of selection list in package interface file
 | 
|---|
| 9 |  ;              ARY = name of array to return list in
 | 
|---|
| 10 |  ;           FILTER = predefined filters (optional, default = 1)
 | 
|---|
| 11 |  ;                                       1 = must be selection list
 | 
|---|
| 12 |  ;                                       2 = only visit cpts on list
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  ; -- output  The format of the returned array is as follows
 | 
|---|
| 15 |  ;         @ARY@(0) = count of array element (0 of nothing found)
 | 
|---|
| 16 |  ;         @ARY@(1) = ^group header
 | 
|---|
| 17 |  ;         @ARY@(2) = problem ien or cpt or icd code^user defined text
 | 
|---|
| 18 |  ;         @ARY@(3) = problem ien or cpt or icd code^used defined text
 | 
|---|
| 19 |  ;         @ARY@(k) = ^next group header
 | 
|---|
| 20 |  ;       @ARY@(k+1) = problem ien or cpt or icd code^user define text
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 |  Q:'FORM!('BLOCK)!('LIST)!('INTRFACE)
 | 
|---|
| 23 |  N OLDARY,IBDTMP
 | 
|---|
| 24 |  S COUNT=$G(COUNT,0)
 | 
|---|
| 25 |  I $G(FILTER)<1 S FILTER=1 ;default value=1
 | 
|---|
| 26 |  I FILTER>1 S OLDARY=ARY,ARY="IBDTMP"
 | 
|---|
| 27 |  S @ARY@(0)=+$G(@ARY@(0))
 | 
|---|
| 28 |  D COPYLIST(LIST,ARY,.COUNT)
 | 
|---|
| 29 |  S @ARY@(0)=COUNT
 | 
|---|
| 30 |  I FILTER=2 D F2^IBDF18A1(OLDARY)
 | 
|---|
| 31 |  Q
 | 
|---|
| 32 |  ;
 | 
|---|
| 33 | COPYLIST(LIST,ARY,COUNT) ;copies the entries from LIST to @ARY, starting subscript at COUNT+1
 | 
|---|
| 34 |  ;
 | 
|---|
| 35 |  N SLCTN,SUBCOL,TEXT,IEN,NODE,TSUBCOL,NODE,GROUP,ORDER,HDR,GRPORDR
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 |  D SUBCOL^IBDF18A1(LIST,.TSUBCOL) ;find the subcolumn containing the text
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 |  S GRPORDR=""
 | 
|---|
| 40 |  F  S GRPORDR=$O(^IBE(357.4,"APO",LIST,GRPORDR)) Q:GRPORDR=""  D
 | 
|---|
| 41 |  .S GROUP=0
 | 
|---|
| 42 |  .F  S GROUP=$O(^IBE(357.4,"APO",LIST,GRPORDR,GROUP)) Q:'GROUP  D
 | 
|---|
| 43 |  ..S HDR=$P($G(^IBE(357.4,GROUP,0)),"^") ;I HDR="BLANK" S HDR=""  If don't want to print BLANK group
 | 
|---|
| 44 |  ..S COUNT=COUNT+1,@ARY@(COUNT)="^"_HDR_"^^^"_GROUP_"^"_GRPORDR
 | 
|---|
| 45 |  ..S ORDER=""
 | 
|---|
| 46 |  ..F  S ORDER=$O(^IBE(357.3,"APO",LIST,GROUP,ORDER)) Q:ORDER=""  D
 | 
|---|
| 47 |  ...S SLCTN=0
 | 
|---|
| 48 |  ...F  S SLCTN=$O(^IBE(357.3,"APO",LIST,GROUP,ORDER,SLCTN)) Q:'SLCTN  D
 | 
|---|
| 49 |  ....S NODE=$G(^IBE(357.3,SLCTN,0))
 | 
|---|
| 50 |  ....S IEN=$P(NODE,"^")
 | 
|---|
| 51 |  ....S SUBCOL=$O(^IBE(357.3,SLCTN,1,"B",+TSUBCOL,0))
 | 
|---|
| 52 |  ....;
 | 
|---|
| 53 |  ....I 'SUBCOL D  Q  ;placeholders
 | 
|---|
| 54 |  .....S TEXT=$S($P(NODE,"^",6)?1E.E:$P(NODE,"^",6),1:"BLANK")
 | 
|---|
| 55 |  .....S COUNT=COUNT+1
 | 
|---|
| 56 |  .....S @ARY@(COUNT)=" "_"^"_TEXT_"^"_LIST_"^"_SLCTN_"^"_GROUP_"^"_ORDER Q
 | 
|---|
| 57 |  ....;
 | 
|---|
| 58 |  ....S NODE=$G(^IBE(357.3,SLCTN,1,SUBCOL,0))
 | 
|---|
| 59 |  ....S:$P(NODE,"^")=TSUBCOL TEXT=$P(NODE,"^",2)
 | 
|---|
| 60 |  ....;
 | 
|---|
| 61 |  ....I $L(TEXT) S COUNT=COUNT+1,@ARY@(COUNT)=IEN_"^"_TEXT_"^"_LIST_"^"_SLCTN_"^"_GROUP_"^"_ORDER Q
 | 
|---|
| 62 |  Q
 | 
|---|