Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: TIURECL2

TIURECL2.m

Go to the documentation of this file.
  1. TIURECL2 ; SLC/MAM - Expand/collapse LM views ;1/22/01
  1. ;;1.0;TEXT INTEGRATION UTILITIES;**100**;Jun 20, 1997
  1. ; 7/6 Split TIURECL into TIURECL & TIURECL1, move RESOLVE to TIURECL1
  1. ; 7/10 Move INSID, INSADD, VEXREQ, ISSUB to TIURECL1
  1. ; 9/7 Move INSKIDS, INSADD & associated mods from TIURECL1 TO ECL2
  1. ;=======================================================================
  1. INSKIDS(TSTART,TIUDA,PRNTPFIX,SORTBY) ;Insert ID kids
  1. ;of parent TIUDA into array ^TMP("TMPLIST",$J) in SORTBY order
  1. ; Receives TSTART, TIUDA, PRNTPFIX, SORTBY
  1. ; TIUDA = ID parent
  1. ; PRNTPFIX = prefix of parent, updated for current expand action.
  1. ; SORTBY = "REFDT" or "TITLE"
  1. N KIDDATA,KIDDA,TEXT,FRSTPFIX,ORIGPFIX,NEWPFIX,KIDLIST,TIUK
  1. ; -- If ID parent has addenda at the parent level,
  1. ; as well as ID kids, then first insert addenda: --
  1. I $$HASADDEN^TIULC1(TIUDA) S TSTART=$$INSADD(TSTART,TIUDA,PRNTPFIX)
  1. ; -- Get list of ID kids in ref date or title order: --
  1. D GETIDKID(TIUDA,SORTBY)
  1. ; -- Set LIST(TSTART)=TEXT_U_KIDDA_U_NEWPFIX and
  1. ; ^TMP("TMPLIST",$J,"IDDATA",KIDDA)
  1. S TIUK=0
  1. F S TIUK=$O(^TMP("TIUIDKID",$J,TIUDA,TIUK)) Q:'TIUK D
  1. . S KIDDA=^TMP("TIUIDKID",$J,TIUDA,TIUK)
  1. . S TSTART=TSTART+1
  1. . S ^TMP("TMPLIST",$J,TSTART)=$$GETLINE(KIDDA,PRNTPFIX,TSTART,.KIDDATA)
  1. . S ^TMP("TMPLIST",$J,"IDDATA",KIDDA)=KIDDATA
  1. K ^TMP("TIUIDKID",$J)
  1. Q TSTART
  1. ;
  1. GETIDKID(TIUDA,SORTBY) ; Set ^TMP("TIUIDKID",$J,TIUDA,TIUK) = KIDDA,
  1. ; array of ID kids of TIUDA, in SORTBY order
  1. N KIDDA,REFDT,TITLE,TIUJ,LIST,TIUK
  1. S KIDDA=0,TIUJ=0
  1. F S KIDDA=$O(^TIU(8925,"GDAD",TIUDA,KIDDA)) Q:+KIDDA'>0 D
  1. . S TIUJ=TIUJ+1
  1. . S REFDT=$P(^TIU(8925,KIDDA,13),U)
  1. . I SORTBY="REFDT" S LIST("HOLDER",REFDT,TIUJ)=KIDDA
  1. . I SORTBY="TITLE" S TITLE=$$PNAME^TIULC1(+^TIU(8925,KIDDA,0)),LIST(TITLE,REFDT,TIUJ)=KIDDA
  1. ; -- Flatten the list: --
  1. S TITLE="",REFDT=0,TIUJ=0,TIUK=0
  1. F S TITLE=$O(LIST(TITLE)) Q:TITLE="" D
  1. . F S REFDT=$O(LIST(TITLE,REFDT)) Q:'REFDT D
  1. . . F S TIUJ=$O(LIST(TITLE,REFDT,TIUJ)) Q:'TIUJ D
  1. . . . S TIUK=TIUK+1
  1. . . . S ^TMP("TIUIDKID",$J,TIUDA,TIUK)=LIST(TITLE,REFDT,TIUJ)
  1. Q
  1. ;
  1. GETLINE(KIDDA,PRNTPFIX,LINENO,TIUGDATA) ; Return LINE=TEXT_U_KIDDA_U_NEWPFIX
  1. ; Find & pass back TIUGDATA
  1. N LINE,ORIGPFIX,NEWPFIX,TEXT,FRSTPFIX
  1. S ORIGPFIX=$$PREFIX^TIULA2(KIDDA)
  1. S FRSTPFIX=$$FRSTPFIX(PRNTPFIX)
  1. S TEXT=$$RESOLVE^TIURECL1(KIDDA,LINENO,FRSTPFIX,.TIUGDATA)
  1. S NEWPFIX=FRSTPFIX_ORIGPFIX
  1. S LINE=TEXT_U_KIDDA_U_NEWPFIX
  1. Q LINE
  1. ;
  1. FRSTPFIX(PRNTPFIX) ; Return first part of Prefix for Inserted addm
  1. ;or ID kid of parent.
  1. ; Receives PRNTPFIX; returns FRSTPFIX.
  1. ; PRNTPFIX = prefix of parent, updated for current expand action.
  1. ; -- Build first part of kid prefix using PRNTPFIX: --
  1. ; EX: if updated prefix of parent is " |_- ",
  1. ; then build FRSTPFIX from left to right:
  1. ; Take beginning spaces " ", keep the "|", replace the _
  1. ; with a space, replace INDicators (& the following space)
  1. ; with spaces, and tack on "|_" to get: " | |_"
  1. ; Prefix of kid is then FRSTPFIX_(Original prefix of kid).
  1. N INDLNGTH,INDSPACE,FRSTPFIX
  1. I PRNTPFIX["|_" S INDLNGTH=$L($P(PRNTPFIX,"|_",2)) I 1
  1. E S INDLNGTH=$L(PRNTPFIX)
  1. S INDSPACE="",$P(INDSPACE," ",INDLNGTH+1)=""
  1. I PRNTPFIX["|_" S FRSTPFIX=$P(PRNTPFIX,"|_")_"| "_INDSPACE_"|_" I 1
  1. E S FRSTPFIX=INDSPACE_"|_"
  1. Q FRSTPFIX
  1. ;
  1. INSADD(TSTART,TIUDA,PRNTPFIX) ;Insert addenda of parent TIUDA into ^TMP("TMPLIST",$J).
  1. ; Receives TSTART, TIUDA, PRNTPFIX
  1. ; PRNTPFIX = prefix of parent, updated for current expand action.
  1. N KIDDA,TEXT,FIRSTPFX,ORIGPFIX,NEWPFIX
  1. S KIDDA=0
  1. F S KIDDA=$O(^TIU(8925,"DAD",TIUDA,KIDDA)) Q:+KIDDA'>0 D
  1. . I '+$$ISADDNDM^TIULC1(+KIDDA) Q
  1. . S TSTART=TSTART+1
  1. . S ^TMP("TMPLIST",$J,TSTART)=$$GETLINE(KIDDA,PRNTPFIX,TSTART)
  1. Q TSTART