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

PXRMFNFT.m

Go to the documentation of this file.
  1. PXRMFNFT ; SLC/PKR - Process found/not found text. ;05/21/2010
  1. ;;2.0;CLINICAL REMINDERS;**4,12,16**;Feb 04, 2005;Build 119
  1. ;
  1. ;===================================================
  1. AGE(DFN,DEFARR,FIEVAL,NTXT) ;Output the age match/no match
  1. ;text.
  1. N CTIUO,FI,IC,LC,NIN,NLINES,TEXT,TEXTIN
  1. I '$D(FIEVAL("AGE")) Q
  1. S NLINES=0
  1. S IC=""
  1. F S IC=$O(FIEVAL("AGE",IC)) Q:IC="" D
  1. . S FI=$S(FIEVAL("AGE",IC):1,1:2)
  1. . S NIN=$P(DEFARR(7,IC,3),U,FI)
  1. . I +NIN=0 Q
  1. . K TEXTIN
  1. .;If CTIUO is true the text contains a TIU object.
  1. . S CTIUO=$S(NIN["T":1,1:0)
  1. . I CTIUO D
  1. .. N VSTR S VSTR=""
  1. ..;TIU expansion expects the trailing 0, i.e. TEXTIN(N,0).
  1. .. F LC=1:1:+NIN S TEXTIN(LC)=^PXD(811.9,PXRMITEM,7,IC,FI,LC,0)
  1. .. S NIN=NIN+1,TEXTIN(NIN)="\\"
  1. .. D FNFTXTO(1,NIN,.TEXTIN,DFN,VSTR,.NLINES,.TEXT)
  1. . I 'CTIUO D
  1. .. F LC=1:1:NIN S TEXTIN(LC)=^PXD(811.9,PXRMITEM,7,IC,FI,LC,0)
  1. .. S NIN=NIN+1,TEXTIN(NIN)="\\"
  1. .. D FNFTXTR(1,NIN,.TEXTIN,.NLINES,.TEXT)
  1. D COPYTXT^PXRMOUTU(.NTXT,NLINES,.TEXT)
  1. Q
  1. ;
  1. ;===================================================
  1. FINDING(INDENT,DFN,FINDING,IFIEVAL,NLINES,TEXT) ;Output the finding found/not
  1. ;found text.
  1. N CTIUO,FI,LC,NIN,NODE,TEMP,TEXTIN
  1. S FI=$S(IFIEVAL:1,1:2)
  1. S NODE=$S(FINDING["FF":25,1:20)
  1. S TEMP=$G(DEFARR(NODE,FINDING,6))
  1. S NIN=$P(TEMP,U,FI)
  1. I +NIN=0 Q
  1. I FINDING["FF" S FINDING=$P(FINDING,"FF",2)
  1. S CTIUO=$S(NIN["T":1,1:0)
  1. I CTIUO D
  1. . S NIN=+NIN
  1. . N VSTR
  1. . F LC=1:1:+NIN S TEXTIN(LC)=^PXD(811.9,PXRMITEM,NODE,FINDING,FI,LC,0)
  1. . I $D(IFIEVAL("VISIT")) D
  1. .. N TEMP,VDATE,VLOC,VSC
  1. .. S TEMP=^AUPNVSIT(IFIEVAL("VISIT"),0)
  1. .. S VDATE=$P(TEMP,U,1)
  1. .. S VLOC=$P(TEMP,U,22)
  1. .. S VSC=$P(TEMP,U,7)
  1. .. S VSTR=VLOC_";"_VDATE_";"_VSC
  1. . E S VSTR=""
  1. . S NIN=NIN+1,TEXTIN(NIN)="\\"
  1. . D FNFTXTO(INDENT,NIN,.TEXTIN,DFN,VSTR,.NLINES,.TEXT)
  1. I 'CTIUO D
  1. . F LC=1:1:NIN S TEXTIN(LC)=^PXD(811.9,PXRMITEM,NODE,FINDING,FI,LC,0)
  1. . S NIN=NIN+1,TEXTIN(NIN)="\\"
  1. . D FNFTXTR(INDENT,NIN,.TEXTIN,.NLINES,.TEXT)
  1. Q
  1. ;
  1. ;===================================================
  1. FNFTXTO(INDENT,NIN,TEXTIN,DFN,VSTR,NLINES,TEXT) ;Load found/not found text
  1. ;that contains TIU objects.
  1. N IND,INOBJECT,JND,OLINE,NEWLINE,NOL,NOUT,NUML,TA,TEXTOUT,TIN
  1. ;Make sure this works if it is being called a part of an object.
  1. I $D(^TMP("TIUBOIL",$J)) D
  1. . K ^TMP("PXRMTIUBOIL",$J)
  1. . M ^TMP("PXRMTIUBOIL",$J)=^TMP("TIUBOIL",$J)
  1. . S INOBJECT=1
  1. E S INOBJECT=0
  1. S NUML=0
  1. F IND=1:1:NIN D
  1. . I TEXTIN(IND)'["|" S NUML=NUML+1,TIN(NUML)=TEXTIN(IND) Q
  1. . S NEWLINE=$S(TEXTIN(IND)["|_\\":"\\",1:"")
  1. . S OLINE(1,0)=$S(NEWLINE'="":$$STRREP^PXRMUTIL(TEXTIN(IND),"_\\",""),1:TEXTIN(IND))
  1. . K ^TMP("TIUBOIL",$J)
  1. . D BLRPLT^TIUSRVD(.TA,"",DFN,VSTR,"OLINE")
  1. . S NOL=$P(^TMP("TIUBOIL",$J,0),U,3)
  1. . F JND=1:1:NOL S NUML=NUML+1,TIN(NUML)=^TMP("TIUBOIL",$J,JND,0)_NEWLINE
  1. D FORMAT^PXRMTEXT(INDENT,PXRMRM,NUML,.TIN,.NOUT,.TEXTOUT)
  1. F LC=1:1:NOUT S NLINES=NLINES+1,TEXT(NLINES)=TEXTOUT(LC)
  1. K ^TMP("TIUBOIL",$J)
  1. I INOBJECT M ^TMP("TIUBOIL",$J)=^TMP("PXRMTIUBOIL",$J) K ^TMP("PXRMTIUBOIL",$J)
  1. Q
  1. ;
  1. ;===================================================
  1. FNFTXTR(INDENT,NIN,TEXTIN,NLINES,TEXT) ;Load regular found/not found text
  1. ;that does not contain TIU objects.
  1. N JND,NOUT,TEXTOUT
  1. D FORMAT^PXRMTEXT(INDENT,PXRMRM,NIN,.TEXTIN,.NOUT,.TEXTOUT)
  1. F JND=1:1:NOUT S NLINES=NLINES+1,TEXT(NLINES)=TEXTOUT(JND)
  1. Q
  1. ;
  1. ;===================================================
  1. LOGIC(DFN,LOGSTR,LOGTYPE,TTYPE,DEFARR,NTXT) ;Output the detailed
  1. ;logic found/not found text.
  1. I LOGSTR="" Q
  1. N CTIUO,FI,LC,NIN,NLINES,SUB,TEXT,TEXTIN
  1. I TTYPE="S" S NIN=$S(LOGTYPE="PCL":DEFARR(72),LOGTYPE="RES":DEFARR(77),1:0)
  1. E S NIN=$S(LOGTYPE="PCL":DEFARR(62),LOGTYPE="RES":DEFARR(67),1:0)
  1. I NIN="" Q
  1. S FI=$P(LOGSTR,U,1)
  1. S NIN=$S(FI=1:$P(NIN,U,1),FI=0:$P(NIN,U,2),1:0)
  1. I +NIN=0 Q
  1. I TTYPE="S" D
  1. . I LOGTYPE="PCL",FI=1 S SUB=70
  1. . I LOGTYPE="PCL",FI=0 S SUB=71
  1. . I LOGTYPE="RES",FI=1 S SUB=75
  1. . I LOGTYPE="RES",FI=0 S SUB=76
  1. E D
  1. . I LOGTYPE="PCL",FI=1 S SUB=60
  1. . I LOGTYPE="PCL",FI=0 S SUB=61
  1. . I LOGTYPE="RES",FI=1 S SUB=65
  1. . I LOGTYPE="RES",FI=0 S SUB=66
  1. S NLINES=0
  1. S CTIUO=$S(NIN["T":1,1:0)
  1. I CTIUO D
  1. . N VSTR S VSTR=""
  1. . F LC=1:1:+NIN S TEXTIN(LC)=^PXD(811.9,PXRMITEM,SUB,LC,0)
  1. . S NIN=NIN+1,TEXTIN(NIN)="\\"
  1. . D FNFTXTO(1,NIN,.TEXTIN,DFN,VSTR,.NLINES,.TEXT)
  1. I 'CTIUO D
  1. . F LC=1:1:NIN S TEXTIN(LC)=^PXD(811.9,PXRMITEM,SUB,LC,0)
  1. . S NIN=NIN+1,TEXTIN(NIN)="\\"
  1. . D FNFTXTR(1,NIN,.TEXTIN,.NLINES,.TEXT)
  1. D COPYTXT^PXRMOUTU(.NTXT,NLINES,.TEXT)
  1. Q
  1. ;
  1. ;===================================================
  1. SNMLA(RIEN) ;Set the number of match lines for the age match text.
  1. N IND,JND,LC,MATCHLC,NPIPE,RES,WMSG
  1. S IND=0
  1. F S IND=+$O(^PXD(811.9,RIEN,7,IND)) Q:IND=0 D
  1. .;Age match text
  1. . S (JND,LC,NPIPE)=0
  1. . F S JND=$O(^PXD(811.9,RIEN,7,IND,1,JND)) Q:JND="" D
  1. .. S NPIPE=NPIPE+$L(^PXD(811.9,RIEN,7,IND,1,JND,0),"|")-1
  1. .. S LC=LC+1
  1. . S MATCHLC=LC
  1. . I (NPIPE#2)=1 D
  1. .. S WMSG="match text for age range "_IND
  1. .. D TIUOBJW(WMSG,NPIPE)
  1. . I NPIPE>1 S MATCHLC=MATCHLC_"T"
  1. .;Age no match text
  1. . S (JND,LC,NPIPE)=0
  1. . F S JND=$O(^PXD(811.9,RIEN,7,IND,2,JND)) Q:JND="" D
  1. .. S NPIPE=NPIPE+$L(^PXD(811.9,RIEN,7,IND,2,JND,0),"|")-1
  1. .. S LC=LC+1
  1. . I (NPIPE#2)=1 D
  1. .. S WMSG="no match text for age range "_IND
  1. .. D TIUOBJW(WMSG,NPIPE)
  1. . I NPIPE>1 S LC=LC_"T"
  1. . S ^PXD(811.9,RIEN,7,IND,3)=MATCHLC_U_LC
  1. Q
  1. ;
  1. ;===================================================
  1. SNMLF(RIEN,NODE) ;Set the number of found lines for the found text.
  1. ;For regular and functional findings.
  1. N IND,JND,LC,NNAME,NFL,NPIPE,RES,WMSG
  1. S NNAME=$S(NODE=20:"finding",NODE=25:"function finding",1:"?")
  1. S IND=0
  1. F S IND=+$O(^PXD(811.9,RIEN,NODE,IND)) Q:IND=0 D
  1. .;Found text
  1. . S (JND,LC,NPIPE)=0
  1. . F S JND=$O(^PXD(811.9,RIEN,NODE,IND,1,JND)) Q:JND="" D
  1. .. S NPIPE=NPIPE+$L(^PXD(811.9,RIEN,NODE,IND,1,JND,0),"|")-1
  1. .. S LC=LC+1
  1. . S NFL=LC
  1. . I (NPIPE#2)=1 D
  1. .. S WMSG="found text for "_NNAME_" "_IND
  1. .. D TIUOBJW(WMSG,NPIPE)
  1. . I NPIPE>1 S NFL=NFL_"T"
  1. .;Not found text
  1. . S (JND,LC,NPIPE)=0
  1. . F S JND=$O(^PXD(811.9,RIEN,NODE,IND,2,JND)) Q:JND="" D
  1. .. S NPIPE=NPIPE+$L(^PXD(811.9,RIEN,NODE,IND,2,JND,0),"|")-1
  1. .. S LC=LC+1
  1. . I (NPIPE#2)=1 D
  1. .. S WMSG="not found text for "_NNAME_" "_IND
  1. .. D TIUOBJW(WMSG,NPIPE)
  1. . I NPIPE>1 S LC=LC_"T"
  1. . S ^PXD(811.9,RIEN,NODE,IND,6)=NFL_U_LC
  1. Q
  1. ;
  1. ;===================================================
  1. SNMLL(RIEN) ;Set the number of lines for the logic found/not found
  1. ;text. Append a "T" to the number of lines if the text contains
  1. ;a TIU object.
  1. N CSTR,IND,LC,NPIPE,RES,SUB,TTYPE
  1. ;SUB=60 General cohort found text
  1. ;SUB=61 General cohort not found text
  1. ;SUB=65 General resolution found text
  1. ;SUB=66 General resolution not found text
  1. ;SUB=70 Summary cohort found text
  1. ;SUB=71 Summary cohort not found text
  1. ;SUB=75 Summary resolution found text
  1. ;SUB=76 Summary resolution not found text
  1. F SUB=60,61,65,66,70,71,75,76 D
  1. . S (IND,LC,NPIPE)=0
  1. . F S IND=$O(^PXD(811.9,RIEN,SUB,IND)) Q:IND="" D
  1. .. S NPIPE=NPIPE+$L(^PXD(811.9,RIEN,SUB,IND,0),"|")-1
  1. .. S LC=LC+1
  1. . I (NPIPE#2)=1 D
  1. .. I SUB=60 S TTYPE="general cohort found text"
  1. .. I SUB=61 S TTYPE="general cohort not found text"
  1. .. I SUB=65 S TTYPE="general resolution found text"
  1. .. I SUB=66 S TTYPE="general resolution not found text"
  1. .. I SUB=70 S TTYPE="summary cohort found text"
  1. .. I SUB=71 S TTYPE="summary cohort not found text"
  1. .. I SUB=75 S TTYPE="summary resolution found text"
  1. .. I SUB=76 S TTYPE="summary resolution not found text"
  1. .. D TIUOBJW(TTYPE,NPIPE)
  1. . I NPIPE>1 S LC=LC_"T"
  1. . I SUB=60 S CSTR=LC
  1. . I SUB=61 S ^PXD(811.9,RIEN,62)=CSTR_U_LC
  1. . I SUB=65 S CSTR=LC
  1. . I SUB=66 S ^PXD(811.9,RIEN,67)=CSTR_U_LC
  1. . I SUB=70 S CSTR=LC
  1. . I SUB=71 S ^PXD(811.9,RIEN,72)=CSTR_U_LC
  1. . I SUB=75 S CSTR=LC
  1. . I SUB=76 S ^PXD(811.9,RIEN,77)=CSTR_U_LC
  1. Q
  1. ;
  1. ;===================================================
  1. TIUOBJW(WMSG,NPIPE) ;Odd number of "|" characters in text, issue
  1. ;a warning that TIU OBJ expansion will not work.
  1. N TEXT
  1. S TEXT(1)=""
  1. S TEXT(2)="Warning, "_WMSG_" has "_NPIPE_" ""|"" characters."
  1. S TEXT(3)="Because this is an odd number, TIU Object expansion will not work."
  1. D MES^XPDUTL(.TEXT)
  1. Q
  1. ;