| 1 | TIURECL2 ; SLC/MAM - Expand/collapse LM views ;1/22/01 | 
|---|
| 2 | ;;1.0;TEXT INTEGRATION UTILITIES;**100**;Jun 20, 1997 | 
|---|
| 3 | ; 7/6 Split TIURECL into TIURECL & TIURECL1, move RESOLVE to TIURECL1 | 
|---|
| 4 | ; 7/10 Move INSID, INSADD, VEXREQ, ISSUB to TIURECL1 | 
|---|
| 5 | ; 9/7 Move INSKIDS, INSADD & associated mods from TIURECL1 TO ECL2 | 
|---|
| 6 | ;======================================================================= | 
|---|
| 7 | INSKIDS(TSTART,TIUDA,PRNTPFIX,SORTBY) ;Insert ID kids | 
|---|
| 8 | ;of parent TIUDA into array ^TMP("TMPLIST",$J) in SORTBY order | 
|---|
| 9 | ;  Receives TSTART, TIUDA, PRNTPFIX, SORTBY | 
|---|
| 10 | ;       TIUDA = ID parent | 
|---|
| 11 | ;    PRNTPFIX = prefix of parent, updated for current expand action. | 
|---|
| 12 | ;      SORTBY = "REFDT" or "TITLE" | 
|---|
| 13 | N KIDDATA,KIDDA,TEXT,FRSTPFIX,ORIGPFIX,NEWPFIX,KIDLIST,TIUK | 
|---|
| 14 | ; -- If ID parent has addenda at the parent level, | 
|---|
| 15 | ;    as well as ID kids, then first insert addenda: -- | 
|---|
| 16 | I $$HASADDEN^TIULC1(TIUDA) S TSTART=$$INSADD(TSTART,TIUDA,PRNTPFIX) | 
|---|
| 17 | ; -- Get list of ID kids in ref date or title order: -- | 
|---|
| 18 | D GETIDKID(TIUDA,SORTBY) | 
|---|
| 19 | ; -- Set LIST(TSTART)=TEXT_U_KIDDA_U_NEWPFIX and | 
|---|
| 20 | ;    ^TMP("TMPLIST",$J,"IDDATA",KIDDA) | 
|---|
| 21 | S TIUK=0 | 
|---|
| 22 | F  S TIUK=$O(^TMP("TIUIDKID",$J,TIUDA,TIUK)) Q:'TIUK  D | 
|---|
| 23 | . S KIDDA=^TMP("TIUIDKID",$J,TIUDA,TIUK) | 
|---|
| 24 | . S TSTART=TSTART+1 | 
|---|
| 25 | . S ^TMP("TMPLIST",$J,TSTART)=$$GETLINE(KIDDA,PRNTPFIX,TSTART,.KIDDATA) | 
|---|
| 26 | . S ^TMP("TMPLIST",$J,"IDDATA",KIDDA)=KIDDATA | 
|---|
| 27 | K ^TMP("TIUIDKID",$J) | 
|---|
| 28 | Q TSTART | 
|---|
| 29 | ; | 
|---|
| 30 | GETIDKID(TIUDA,SORTBY) ; Set ^TMP("TIUIDKID",$J,TIUDA,TIUK) = KIDDA, | 
|---|
| 31 | ; array of ID kids of TIUDA, in SORTBY order | 
|---|
| 32 | N KIDDA,REFDT,TITLE,TIUJ,LIST,TIUK | 
|---|
| 33 | S KIDDA=0,TIUJ=0 | 
|---|
| 34 | F  S KIDDA=$O(^TIU(8925,"GDAD",TIUDA,KIDDA)) Q:+KIDDA'>0  D | 
|---|
| 35 | . S TIUJ=TIUJ+1 | 
|---|
| 36 | . S REFDT=$P(^TIU(8925,KIDDA,13),U) | 
|---|
| 37 | . I SORTBY="REFDT" S LIST("HOLDER",REFDT,TIUJ)=KIDDA | 
|---|
| 38 | . I SORTBY="TITLE" S TITLE=$$PNAME^TIULC1(+^TIU(8925,KIDDA,0)),LIST(TITLE,REFDT,TIUJ)=KIDDA | 
|---|
| 39 | ; -- Flatten the list: -- | 
|---|
| 40 | S TITLE="",REFDT=0,TIUJ=0,TIUK=0 | 
|---|
| 41 | F  S TITLE=$O(LIST(TITLE)) Q:TITLE=""  D | 
|---|
| 42 | . F  S REFDT=$O(LIST(TITLE,REFDT)) Q:'REFDT  D | 
|---|
| 43 | . . F  S TIUJ=$O(LIST(TITLE,REFDT,TIUJ)) Q:'TIUJ  D | 
|---|
| 44 | . . . S TIUK=TIUK+1 | 
|---|
| 45 | . . . S ^TMP("TIUIDKID",$J,TIUDA,TIUK)=LIST(TITLE,REFDT,TIUJ) | 
|---|
| 46 | Q | 
|---|
| 47 | ; | 
|---|
| 48 | GETLINE(KIDDA,PRNTPFIX,LINENO,TIUGDATA) ; Return LINE=TEXT_U_KIDDA_U_NEWPFIX | 
|---|
| 49 | ; Find & pass back TIUGDATA | 
|---|
| 50 | N LINE,ORIGPFIX,NEWPFIX,TEXT,FRSTPFIX | 
|---|
| 51 | S ORIGPFIX=$$PREFIX^TIULA2(KIDDA) | 
|---|
| 52 | S FRSTPFIX=$$FRSTPFIX(PRNTPFIX) | 
|---|
| 53 | S TEXT=$$RESOLVE^TIURECL1(KIDDA,LINENO,FRSTPFIX,.TIUGDATA) | 
|---|
| 54 | S NEWPFIX=FRSTPFIX_ORIGPFIX | 
|---|
| 55 | S LINE=TEXT_U_KIDDA_U_NEWPFIX | 
|---|
| 56 | Q LINE | 
|---|
| 57 | ; | 
|---|
| 58 | FRSTPFIX(PRNTPFIX) ; Return first part of Prefix for Inserted addm | 
|---|
| 59 | ;or ID kid of parent. | 
|---|
| 60 | ;    Receives PRNTPFIX; returns FRSTPFIX. | 
|---|
| 61 | ;    PRNTPFIX = prefix of parent, updated for current expand action. | 
|---|
| 62 | ; -- Build first part of kid prefix using PRNTPFIX: -- | 
|---|
| 63 | ;    EX: if updated prefix of parent is "  |_- ", | 
|---|
| 64 | ;        then build FRSTPFIX from left to right: | 
|---|
| 65 | ;        Take beginning spaces "  ", keep the "|", replace the _ | 
|---|
| 66 | ;        with a space, replace INDicators (& the following space) | 
|---|
| 67 | ;        with spaces, and tack on "|_" to get: "  |   |_" | 
|---|
| 68 | ;     Prefix of kid is then FRSTPFIX_(Original prefix of kid). | 
|---|
| 69 | N INDLNGTH,INDSPACE,FRSTPFIX | 
|---|
| 70 | I PRNTPFIX["|_" S INDLNGTH=$L($P(PRNTPFIX,"|_",2)) I 1 | 
|---|
| 71 | E  S INDLNGTH=$L(PRNTPFIX) | 
|---|
| 72 | S INDSPACE="",$P(INDSPACE," ",INDLNGTH+1)="" | 
|---|
| 73 | I PRNTPFIX["|_" S FRSTPFIX=$P(PRNTPFIX,"|_")_"| "_INDSPACE_"|_" I 1 | 
|---|
| 74 | E  S FRSTPFIX=INDSPACE_"|_" | 
|---|
| 75 | Q FRSTPFIX | 
|---|
| 76 | ; | 
|---|
| 77 | INSADD(TSTART,TIUDA,PRNTPFIX) ;Insert addenda of parent TIUDA into ^TMP("TMPLIST",$J). | 
|---|
| 78 | ;  Receives TSTART, TIUDA, PRNTPFIX | 
|---|
| 79 | ;    PRNTPFIX = prefix of parent, updated for current expand action. | 
|---|
| 80 | N KIDDA,TEXT,FIRSTPFX,ORIGPFIX,NEWPFIX | 
|---|
| 81 | S KIDDA=0 | 
|---|
| 82 | F  S KIDDA=$O(^TIU(8925,"DAD",TIUDA,KIDDA)) Q:+KIDDA'>0  D | 
|---|
| 83 | . I '+$$ISADDNDM^TIULC1(+KIDDA) Q | 
|---|
| 84 | . S TSTART=TSTART+1 | 
|---|
| 85 | . S ^TMP("TMPLIST",$J,TSTART)=$$GETLINE(KIDDA,PRNTPFIX,TSTART) | 
|---|
| 86 | Q TSTART | 
|---|