PXRMSINQ ;SLC/PKR - Reminder simple inquiry routines ;03/14/2013
 ;;2.0;CLINICAL REMINDERS;**26**;Feb 04, 2005;Build 404
 ;===================================
BROWSE(FILENUM,FLDLIST,IEN) ;Display the details of an entry using the
 ;FileMan Browser.
 I '$$FIND1^DIC(FILENUM,"","AQU",IEN) Q
 N BOP,NL,OUTPUT,TITLE,X
 D GETTEXT(FILENUM,FLDLIST,IEN,.NL,.OUTPUT)
 S BOP=$$BORP^PXRMUTIL("B")
 I BOP="B" D
 . S X="IORESET"
 . D ENDR^%ZISS
 . S TITLE=$$GET1^DID(FILENUM,"","","NAME")_" INQUIRY for IEN="_IEN
 . D BROWSE^DDBR("OUTPUT","NR",TITLE)
 . W IORESET
 . D KILL^%ZISS
 I BOP="P" D GPRINT^PXRMUTIL("OUTPUT")
 Q
 ;
 ;===================================
CLBROWSE(FILENUM,FLDLIST,IEN) ;Display the details of an entry's Change
 ;Log using the FileMan Browser.
 I '$$FIND1^DIC(FILENUM,"","AQU",IEN) Q
 N BOP,NL,OUTPUT,TITLE,X
 D GETEH(FILENUM,FLDLIST,IEN,.NL,.OUTPUT)
 S BOP=$$BORP^PXRMUTIL("B")
 I BOP="B" D
 . S X="IORESET"
 . D ENDR^%ZISS
 . S TITLE=$$GET1^DID(FILENUM,"","","NAME")_" Change Log for IEN="_IEN
 . D BROWSE^DDBR("OUTPUT","NR",TITLE)
 . W IORESET
 . D KILL^%ZISS
 I BOP="P" D GPRINT^PXRMUTIL("OUTPUT")
 Q
 ;
 ;===================================
GETEH(FILENUM,FLDLST,IEN,NL,OUTPUT) ;Get the edit history.
 N IND,NLINES,TEXT
 D GETTEXT(FILENUM,FLDLST,IEN,.NLINES,.TEXT)
 I '$D(TEXT) S OUTPUT(1)="No edits have been made." Q
 S NL=0
 F IND=2:1:NLINES  D
 . I TEXT(IND)["Edit Date:" D  Q
 .. I NL>0 S NL=NL+1,OUTPUT(NL)=" "
 .. S NL=NL+1,OUTPUT(NL)=TEXT(IND+1)_" on"_$P(TEXT(IND),"Edit Date:",2)
 .. S IND=IND+1
 . I TEXT(IND)["Edit Comments" Q
 . S NL=NL+1,OUTPUT(NL)=TEXT(IND)
 Q
 ;
 ;===================================
GETTEXT(FILENUM,FLDLIST,IEN,NL,OUTPUT) ;Get the requested contents of an entry.
 ;FILENUM - file number
 ;IEN - internal entry number
 ;OUTPUT - array where text is returned.
 ;FLDLIST - a semicolon separated list of fields to include in the
 ;output. A piece can be a single field number, a range of fields
 ;in the form FM:FN, or a multiple in the form FN*. Each piece will
 ;be preceeded by a blank line. Example: ".01;10;15*;100:102"
 ;This will get the .01, a blank line and field 10, a blank line
 ;followed by the contents of multiple 15, a blank line followed by
 ;the contents of fields 100 through 102. 
 ;text in OUTPUT.
 N DIQOUT,IENS,IND,INDENT,FIELD,FLABEL,FLDIND,FLDNUM,FNUM,JND
 N MSG,MULT,NIN,NOUT,TEMP,TEXTIN,TEXTOUT,TITLE,WPF
 S NL=0
 F FLDIND=1:1:$L(FLDLIST,";") D
 . S FLDNUM=$P(FLDLIST,";",FLDIND)
 . K DIQOUT
 . D GETS^DIQ(FILENUM,IEN,FLDNUM,"N","DIQOUT","MSG")
 . I $D(DIQOUT)=0 Q
 .;Preceed each group of fields with a blank line.
 . I NL>0 S NL=NL+1,OUTPUT(NL)=" "
 . S FNUM="",MULT=0
 . F  S FNUM=$O(DIQOUT(FNUM)) Q:FNUM=""  D
 .. I FNUM'=FILENUM D
 ... S MULT=1
 ...;DBIA #4768
 ... S TEXTIN=$$TITLE^XLFSTR($O(^DD(FNUM,0,"NM","")))
 ... D FORMATS^PXRMTEXT(1,80,TEXTIN,.NOUT,.TEXTOUT)
 ... F IND=1:1:NOUT S NL=NL+1,OUTPUT(NL)=TEXTOUT(IND)
 .. S IENS=""
 .. F  S IENS=$O(DIQOUT(FNUM,IENS)) Q:IENS=""  D
 ... S FIELD=""
 ... F  S FIELD=$O(DIQOUT(FNUM,IENS,FIELD)) Q:FIELD=""  D
 .... S FLABEL=$$GET1^DID(FNUM,FIELD,"","LABEL")
 .... S FLABEL=$$TITLE^XLFSTR(FLABEL)
 ....;Check for a word-processing field.
 .... S TEMP=DIQOUT(FNUM,IENS,FIELD)
 .... S WPF=$S(TEMP["DIQOUT":1,1:0)
 .... I WPF D  Q
 ..... S NL=NL+1,OUTPUT(NL)=FLABEL_":"
 ..... S JND=0
 .....;Do not format word-processing fields so the original is displayed.
 ..... F  S JND=$O(DIQOUT(FNUM,IENS,FIELD,JND)) Q:JND=""  S NL=NL+1,OUTPUT(NL)=DIQOUT(FNUM,IENS,FIELD,JND)
 .... S TEXTIN=$$TITLE^XLFSTR(FLABEL)_": "_DIQOUT(FNUM,IENS,FIELD)
 .... S INDENT=$S(MULT:2,1:1)
 .... D FORMATS^PXRMTEXT(INDENT,80,TEXTIN,.NOUT,.TEXTOUT)
 .... F IND=1:1:NOUT S NL=NL+1,OUTPUT(NL)=TEXTOUT(IND)
 Q
 ;
 ;===================================
LMBROWSE(FILENUM,FLDLIST,IEN) ;Display the details of an entry using the
 ;FileMan Browser. For use by a ListManager application.
 I '$$FIND1^DIC(FILENUM,"","AQU",IEN) Q
 N BOP,NL,OUTPUT,TITLE
 D GETTEXT(FILENUM,FLDLIST,IEN,.NL,.OUTPUT)
 D FULL^VALM1
 S BOP=$$BORP^PXRMUTIL("B")
 I BOP="B" D
 . S TITLE=$$GET1^DID(FILENUM,"","","NAME")_" INQUIRY for IEN="_IEN
 . D BROWSE^DDBR("OUTPUT","NR",TITLE)
 I BOP="P" D
 . D GPRINT^PXRMUTIL("OUTPUT")
 . S VALMBCK="R"
 Q
 ;
 ;===================================
LMCLBROW(FILENUM,FLDLIST,IEN) ;Display the details of an entry's edit history
 ;using the FileMan Browser. For use by a ListManager application.
 I '$$FIND1^DIC(FILENUM,"","AQU",IEN) Q
 N BOP,NL,OUTPUT,TITLE
 D GETEH(FILENUM,FLDLIST,IEN,.NL,.OUTPUT)
 D FULL^VALM1
 S BOP=$$BORP^PXRMUTIL("B")
 I BOP="B" D
 . S TITLE=$$GET1^DID(FILENUM,"","","NAME")_" Change Log for IEN="_IEN
 . D BROWSE^DDBR("OUTPUT","NR",TITLE)
 I BOP="P" D
 . D GPRINT^PXRMUTIL("OUTPUT")
 . S VALMBCK="R"
 Q
 ;
 ;===================================
TEST(FILENUM,IEN) ;Test driver.
 N FLDLIST
 I FILENUM=801 S FLDLIST=".01;10;15*;20*;30*;100:102"
 I FILENUM=803 S FLDLIST=".01:15;30*;40*;45*;50*;100:102"
 I FILENUM=803.2 S FLDLIST=".01:5;20:24;100:102"
 I FILENUM=810.9 S FLDLIST=".01;1;40.7*;44*;100:102"
 D BROWSE(FILENUM,FLDLIST,IEN)
 Q
 ;
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPXRMSINQ   5201     printed  Sep 23, 2025@19:25:09                                                                                                                                                                                                    Page 2
PXRMSINQ  ;SLC/PKR - Reminder simple inquiry routines ;03/14/2013
 +1       ;;2.0;CLINICAL REMINDERS;**26**;Feb 04, 2005;Build 404
 +2       ;===================================
BROWSE(FILENUM,FLDLIST,IEN) ;Display the details of an entry using the
 +1       ;FileMan Browser.
 +2        IF '$$FIND1^DIC(FILENUM,"","AQU",IEN)
               QUIT 
 +3        NEW BOP,NL,OUTPUT,TITLE,X
 +4        DO GETTEXT(FILENUM,FLDLIST,IEN,.NL,.OUTPUT)
 +5        SET BOP=$$BORP^PXRMUTIL("B")
 +6        IF BOP="B"
               Begin DoDot:1
 +7                SET X="IORESET"
 +8                DO ENDR^%ZISS
 +9                SET TITLE=$$GET1^DID(FILENUM,"","","NAME")_" INQUIRY for IEN="_IEN
 +10               DO BROWSE^DDBR("OUTPUT","NR",TITLE)
 +11               WRITE IORESET
 +12               DO KILL^%ZISS
               End DoDot:1
 +13       IF BOP="P"
               DO GPRINT^PXRMUTIL("OUTPUT")
 +14       QUIT 
 +15      ;
 +16      ;===================================
CLBROWSE(FILENUM,FLDLIST,IEN) ;Display the details of an entry's Change
 +1       ;Log using the FileMan Browser.
 +2        IF '$$FIND1^DIC(FILENUM,"","AQU",IEN)
               QUIT 
 +3        NEW BOP,NL,OUTPUT,TITLE,X
 +4        DO GETEH(FILENUM,FLDLIST,IEN,.NL,.OUTPUT)
 +5        SET BOP=$$BORP^PXRMUTIL("B")
 +6        IF BOP="B"
               Begin DoDot:1
 +7                SET X="IORESET"
 +8                DO ENDR^%ZISS
 +9                SET TITLE=$$GET1^DID(FILENUM,"","","NAME")_" Change Log for IEN="_IEN
 +10               DO BROWSE^DDBR("OUTPUT","NR",TITLE)
 +11               WRITE IORESET
 +12               DO KILL^%ZISS
               End DoDot:1
 +13       IF BOP="P"
               DO GPRINT^PXRMUTIL("OUTPUT")
 +14       QUIT 
 +15      ;
 +16      ;===================================
GETEH(FILENUM,FLDLST,IEN,NL,OUTPUT) ;Get the edit history.
 +1        NEW IND,NLINES,TEXT
 +2        DO GETTEXT(FILENUM,FLDLST,IEN,.NLINES,.TEXT)
 +3        IF '$DATA(TEXT)
               SET OUTPUT(1)="No edits have been made."
               QUIT 
 +4        SET NL=0
 +5        FOR IND=2:1:NLINES
               Begin DoDot:1
 +6                IF TEXT(IND)["Edit Date:"
                       Begin DoDot:2
 +7                        IF NL>0
                               SET NL=NL+1
                               SET OUTPUT(NL)=" "
 +8                        SET NL=NL+1
                           SET OUTPUT(NL)=TEXT(IND+1)_" on"_$PIECE(TEXT(IND),"Edit Date:",2)
 +9                        SET IND=IND+1
                       End DoDot:2
                       QUIT 
 +10               IF TEXT(IND)["Edit Comments"
                       QUIT 
 +11               SET NL=NL+1
                   SET OUTPUT(NL)=TEXT(IND)
               End DoDot:1
 +12       QUIT 
 +13      ;
 +14      ;===================================
GETTEXT(FILENUM,FLDLIST,IEN,NL,OUTPUT) ;Get the requested contents of an entry.
 +1       ;FILENUM - file number
 +2       ;IEN - internal entry number
 +3       ;OUTPUT - array where text is returned.
 +4       ;FLDLIST - a semicolon separated list of fields to include in the
 +5       ;output. A piece can be a single field number, a range of fields
 +6       ;in the form FM:FN, or a multiple in the form FN*. Each piece will
 +7       ;be preceeded by a blank line. Example: ".01;10;15*;100:102"
 +8       ;This will get the .01, a blank line and field 10, a blank line
 +9       ;followed by the contents of multiple 15, a blank line followed by
 +10      ;the contents of fields 100 through 102. 
 +11      ;text in OUTPUT.
 +12       NEW DIQOUT,IENS,IND,INDENT,FIELD,FLABEL,FLDIND,FLDNUM,FNUM,JND
 +13       NEW MSG,MULT,NIN,NOUT,TEMP,TEXTIN,TEXTOUT,TITLE,WPF
 +14       SET NL=0
 +15       FOR FLDIND=1:1:$LENGTH(FLDLIST,";")
               Begin DoDot:1
 +16               SET FLDNUM=$PIECE(FLDLIST,";",FLDIND)
 +17               KILL DIQOUT
 +18               DO GETS^DIQ(FILENUM,IEN,FLDNUM,"N","DIQOUT","MSG")
 +19               IF $DATA(DIQOUT)=0
                       QUIT 
 +20      ;Preceed each group of fields with a blank line.
 +21               IF NL>0
                       SET NL=NL+1
                       SET OUTPUT(NL)=" "
 +22               SET FNUM=""
                   SET MULT=0
 +23               FOR 
                       SET FNUM=$ORDER(DIQOUT(FNUM))
                       if FNUM=""
                           QUIT 
                       Begin DoDot:2
 +24                       IF FNUM'=FILENUM
                               Begin DoDot:3
 +25                               SET MULT=1
 +26      ;DBIA #4768
 +27                               SET TEXTIN=$$TITLE^XLFSTR($ORDER(^DD(FNUM,0,"NM","")))
 +28                               DO FORMATS^PXRMTEXT(1,80,TEXTIN,.NOUT,.TEXTOUT)
 +29                               FOR IND=1:1:NOUT
                                       SET NL=NL+1
                                       SET OUTPUT(NL)=TEXTOUT(IND)
                               End DoDot:3
 +30                       SET IENS=""
 +31                       FOR 
                               SET IENS=$ORDER(DIQOUT(FNUM,IENS))
                               if IENS=""
                                   QUIT 
                               Begin DoDot:3
 +32                               SET FIELD=""
 +33                               FOR 
                                       SET FIELD=$ORDER(DIQOUT(FNUM,IENS,FIELD))
                                       if FIELD=""
                                           QUIT 
                                       Begin DoDot:4
 +34                                       SET FLABEL=$$GET1^DID(FNUM,FIELD,"","LABEL")
 +35                                       SET FLABEL=$$TITLE^XLFSTR(FLABEL)
 +36      ;Check for a word-processing field.
 +37                                       SET TEMP=DIQOUT(FNUM,IENS,FIELD)
 +38                                       SET WPF=$SELECT(TEMP["DIQOUT":1,1:0)
 +39                                       IF WPF
                                               Begin DoDot:5
 +40                                               SET NL=NL+1
                                                   SET OUTPUT(NL)=FLABEL_":"
 +41                                               SET JND=0
 +42      ;Do not format word-processing fields so the original is displayed.
 +43                                               FOR 
                                                       SET JND=$ORDER(DIQOUT(FNUM,IENS,FIELD,JND))
                                                       if JND=""
                                                           QUIT 
                                                       SET NL=NL+1
                                                       SET OUTPUT(NL)=DIQOUT(FNUM,IENS,FIELD,JND)
                                               End DoDot:5
                                               QUIT 
 +44                                       SET TEXTIN=$$TITLE^XLFSTR(FLABEL)_": "_DIQOUT(FNUM,IENS,FIELD)
 +45                                       SET INDENT=$SELECT(MULT:2,1:1)
 +46                                       DO FORMATS^PXRMTEXT(INDENT,80,TEXTIN,.NOUT,.TEXTOUT)
 +47                                       FOR IND=1:1:NOUT
                                               SET NL=NL+1
                                               SET OUTPUT(NL)=TEXTOUT(IND)
                                       End DoDot:4
                               End DoDot:3
                       End DoDot:2
               End DoDot:1
 +48       QUIT 
 +49      ;
 +50      ;===================================
LMBROWSE(FILENUM,FLDLIST,IEN) ;Display the details of an entry using the
 +1       ;FileMan Browser. For use by a ListManager application.
 +2        IF '$$FIND1^DIC(FILENUM,"","AQU",IEN)
               QUIT 
 +3        NEW BOP,NL,OUTPUT,TITLE
 +4        DO GETTEXT(FILENUM,FLDLIST,IEN,.NL,.OUTPUT)
 +5        DO FULL^VALM1
 +6        SET BOP=$$BORP^PXRMUTIL("B")
 +7        IF BOP="B"
               Begin DoDot:1
 +8                SET TITLE=$$GET1^DID(FILENUM,"","","NAME")_" INQUIRY for IEN="_IEN
 +9                DO BROWSE^DDBR("OUTPUT","NR",TITLE)
               End DoDot:1
 +10       IF BOP="P"
               Begin DoDot:1
 +11               DO GPRINT^PXRMUTIL("OUTPUT")
 +12               SET VALMBCK="R"
               End DoDot:1
 +13       QUIT 
 +14      ;
 +15      ;===================================
LMCLBROW(FILENUM,FLDLIST,IEN) ;Display the details of an entry's edit history
 +1       ;using the FileMan Browser. For use by a ListManager application.
 +2        IF '$$FIND1^DIC(FILENUM,"","AQU",IEN)
               QUIT 
 +3        NEW BOP,NL,OUTPUT,TITLE
 +4        DO GETEH(FILENUM,FLDLIST,IEN,.NL,.OUTPUT)
 +5        DO FULL^VALM1
 +6        SET BOP=$$BORP^PXRMUTIL("B")
 +7        IF BOP="B"
               Begin DoDot:1
 +8                SET TITLE=$$GET1^DID(FILENUM,"","","NAME")_" Change Log for IEN="_IEN
 +9                DO BROWSE^DDBR("OUTPUT","NR",TITLE)
               End DoDot:1
 +10       IF BOP="P"
               Begin DoDot:1
 +11               DO GPRINT^PXRMUTIL("OUTPUT")
 +12               SET VALMBCK="R"
               End DoDot:1
 +13       QUIT 
 +14      ;
 +15      ;===================================
TEST(FILENUM,IEN) ;Test driver.
 +1        NEW FLDLIST
 +2        IF FILENUM=801
               SET FLDLIST=".01;10;15*;20*;30*;100:102"
 +3        IF FILENUM=803
               SET FLDLIST=".01:15;30*;40*;45*;50*;100:102"
 +4        IF FILENUM=803.2
               SET FLDLIST=".01:5;20:24;100:102"
 +5        IF FILENUM=810.9
               SET FLDLIST=".01;1;40.7*;44*;100:102"
 +6        DO BROWSE(FILENUM,FLDLIST,IEN)
 +7        QUIT 
 +8       ;