PXRMPTTR ;SLC/PKR - Routines for term print templates ;07/10/2009
;;2.0;CLINICAL REMINDERS;**4,6,12**;Feb 04, 2005;Build 73
;
;====================================================
DATE(FIND0,PIECE,FLDNUM,TITLE,RJC,PAD,FILENUM,FLG) ;Standard DATE
N DATE,TEXT
S DATE=$P($G(FIND0),U,PIECE)
I DATE'="" D
. S DATE=$$FMTE^XLFDT(DATE,"D")
. S TEXT=$$RJ^XLFSTR(TITLE,RJC,PAD)_" "_DATE
. W !,TEXT
Q
;
;====================================================
GENIEN(FINDING) ;Return internal entry number for findings.
N F0,IEN,PREFIX,ROOT,VPTR
S ROOT="^PXRMD(811.5,D0,20,FINDING,0)"
S F0=@ROOT
S VPTR=$P(F0,U,1)
S IEN=$P(VPTR,";",1)
S ROOT=$P(VPTR,";",2)
I '$D(PXRMFVPL) N PXRMFVPL D BLDRLIST^PXRMVPTR(811.52,.01,.PXRMFVPL)
S VPTR=PXRMFVPL(ROOT)
S PREFIX=$P(VPTR,U,4)
Q " (FI("_+FINDING_")="_PREFIX_"("_IEN_"))"
;
;====================================================
ENTRYNAM(VPTR) ;Given the variable pointer return the entry name. The
;variable pointer list contains the information necessary to do the
;look up.
N IEN,FILENUM,NAME,ROOT
S IEN=$P(VPTR,";",1)
S ROOT=$P(VPTR,";",2)
S FILENUM=$P(PXRMFVPL(ROOT),U,1)
S NAME=$$GET1^DIQ(FILENUM,IEN,.01,"","","")
Q NAME
;
;====================================================
PFIND ;Print the reminder term finding multiple.
N CFP,FIELD,FINDING,FIND0,FMTSTR,HFCAT,HFIEN,IND,NL,OUTPUT
N PAD,PXRMFVPL,RJC,SCNT,SIEN,STAT0,TEXT
;If called by a FileMan print, build the variable pointer list.
I '$D(PXRMFVPL) N PXRMFVPL D BLDRLIST^PXRMVPTR(811.52,.01,.PXRMFVPL)
S FMTSTR="18R^13L1^45L"
S PAD=" ",RJC=31
S FINDING=0
F S FINDING=$O(^PXRMD(811.5,D0,20,FINDING)) Q:+FINDING=0 D
. S FIND0=^PXRMD(811.5,D0,20,FINDING,0)
. S FIELD=$P(FIND0,U,1)
. S TEXT="^Finding Item:^"_$$ENTRYNAM(FIELD)_$$GENIEN(FINDING)
. D COLFMT^PXRMTEXT(FMTSTR,TEXT," ",.NL,.OUTPUT)
. W ! F IND=1:1:NL W !,OUTPUT(IND)
.;
. S TEXT=$$RJ^XLFSTR("Finding Type:",RJC,PAD)_" "_$$TFTYPE(FIELD)
. W !,TEXT
. I FIND0["AUTTHF" D
.. S HFIEN=$P($P(FIND0,U),";")
.. S HFCAT=$P($G(^AUTTHF(HFIEN,0)),U,3)
.. S HFCAT=$S(HFCAT="":"UNDEFINED",1:$P($G(^AUTTHF(HFCAT,0)),U,1))
.. S TEXT=$$RJ^XLFSTR("Health Factor Category:",RJC,PAD)_" "_HFCAT
.. W !,TEXT
.;
. S FIELD=$P(FIND0,U,4)
. I $L(FIELD)>0 D
.. S TEXT=$$RJ^XLFSTR("Match Frequency/Age:",RJC,PAD)_" "_$$GENFREQ^PXRMPTD2(FIND0)
.. W !,TEXT
.;
. D DATE(FIND0,8,9,"Beginning Date/Time:",RJC,PAD)
. D DATE(FIND0,11,12,"Ending Date/Time Date:",RJC,PAD)
. D SFDISP(FIND0,14,17,"Occurrence Count:",RJC,PAD)
. D SFDISP(FIND0,9,10,"Use Inactive Problems:",RJC,PAD)
. D SFDISP(FIND0,10,11,"Within Category Rank:",RJC,PAD)
. D SFDISP(FIND0,12,13,"MH Scale:",RJC,PAD)
. D SFDISP(FIND0,16,28,"Include Visit Data:",RJC,PAD)
. D SFDISP(FIND0,13,16,"Rx Type:",RJC,PAD)
. D SFDISP(FIND0,15,27,"Use Start Date:",RJC,PAD)
. I $D(^PXRMD(811.5,D0,20,FINDING,5,0))=1 D
.. S (SCNT,SIEN)=0
.. F S SIEN=$O(^PXRMD(811.5,D0,20,FINDING,5,SIEN)) Q:SIEN="" D
... S STAT0=$G(^PXRMD(811.5,D0,20,FINDING,5,SIEN,0))
... D STATUS(STAT0,"Status List:") S SCNT=SCNT+1
.;
. S FIND0=$G(^PXRMD(811.5,D0,20,FINDING,3))
. D SFDISP(FIND0,1,14,"Condition:",RJC,PAD)
. D SFDISP(FIND0,2,15,"Condition Case Sensitive:",RJC,PAD)
. D SFDISP(FIND0,3,18,"Use Status/Cond in Search:",RJC,PAD)
. I $G(^PXRMD(811.5,D0,20,FINDING,15))'="" D
.. S CFP=$$RJ^XLFSTR("Computed Finding Parameter:",RJC,PAD)
.. S CFP=CFP_" "_$G(^PXRMD(811.5,D0,20,FINDING,15))
.. W !,CFP
Q
;
;====================================================
SFDISP(FIND0,PIECE,FLDNUM,TITLE,RJC,PAD) ;Standard finding multiple
;field display.
N FIELD,TEXT
S FIELD=$P(FIND0,U,PIECE)
I $L(FIELD)>0 D
. S TEXT=$$RJ^XLFSTR(TITLE,RJC,PAD)
. S TEXT=TEXT_" "_$$EXTERNAL^DILFD(811.52,FLDNUM,"",FIELD,"")
. I FLDNUM=13 S TEXT=TEXT_"-"_$$SPECIAL^PXRMPTDF(FIND0,FIELD)
. W !,TEXT
Q
;
;====================================================
STATUS(STAT0,TITLE) ; Status display
I $L(STAT0)>0 D
. N STATUS
. I SCNT=0 S STATUS=$$RJ^XLFSTR(TITLE,RJC,PAD)
. I SCNT>0 S STATUS=$$RJ^XLFSTR("",RJC,PAD)
. S STATUS=STATUS_" "_STAT0
. W !,STATUS
Q
;
;====================================================
TFTYPE(VPTR) ;Return Term finding type
N ROOT,TFTYPE
S ROOT=$P(VPTR,";",2)
I '$D(PXRMFVPL) N PXRMFVPL D BLDRLIST^PXRMVPTR(811.52,.01,.PXRMFVPL)
S TFTYPE=$P(PXRMFVPL(ROOT),U,2)
Q TFTYPE
;
;====================================================
TRMIEN(FINDING) ;Return internal entry number for TERM findings.
N F0,IEN,PREFIX,ROOT,VPTR
S ROOT="^PXRMD(811.5,D0,20,FINDING,0)"
S F0=@ROOT
S VPTR=$P(F0,U,1)
S IEN=$P(VPTR,";",1)
S ROOT=$P(VPTR,";",2)
I '$D(PXRMFVPL) N PXRMFVPL D BLDRLIST^PXRMVPTR(811.52,.01,.PXRMFVPL)
S VPTR=PXRMFVPL(ROOT)
S PREFIX=$P(VPTR,U,4)
Q " (FI("_+FINDING_")="_PREFIX_"("_IEN_"))"
;
PXRMPTTR ;SLC/PKR - Routines for term print templates ;07/10/2009
+1 ;;2.0;CLINICAL REMINDERS;**4,6,12**;Feb 04, 2005;Build 73
+2 ;
+3 ;====================================================
DATE(FIND0,PIECE,FLDNUM,TITLE,RJC,PAD,FILENUM,FLG) ;Standard DATE
+1 NEW DATE,TEXT
+2 SET DATE=$PIECE($GET(FIND0),U,PIECE)
+3 IF DATE'=""
Begin DoDot:1
+4 SET DATE=$$FMTE^XLFDT(DATE,"D")
+5 SET TEXT=$$RJ^XLFSTR(TITLE,RJC,PAD)_" "_DATE
+6 WRITE !,TEXT
End DoDot:1
+7 QUIT
+8 ;
+9 ;====================================================
GENIEN(FINDING) ;Return internal entry number for findings.
+1 NEW F0,IEN,PREFIX,ROOT,VPTR
+2 SET ROOT="^PXRMD(811.5,D0,20,FINDING,0)"
+3 SET F0=@ROOT
+4 SET VPTR=$PIECE(F0,U,1)
+5 SET IEN=$PIECE(VPTR,";",1)
+6 SET ROOT=$PIECE(VPTR,";",2)
+7 IF '$DATA(PXRMFVPL)
NEW PXRMFVPL
DO BLDRLIST^PXRMVPTR(811.52,.01,.PXRMFVPL)
+8 SET VPTR=PXRMFVPL(ROOT)
+9 SET PREFIX=$PIECE(VPTR,U,4)
+10 QUIT " (FI("_+FINDING_")="_PREFIX_"("_IEN_"))"
+11 ;
+12 ;====================================================
ENTRYNAM(VPTR) ;Given the variable pointer return the entry name. The
+1 ;variable pointer list contains the information necessary to do the
+2 ;look up.
+3 NEW IEN,FILENUM,NAME,ROOT
+4 SET IEN=$PIECE(VPTR,";",1)
+5 SET ROOT=$PIECE(VPTR,";",2)
+6 SET FILENUM=$PIECE(PXRMFVPL(ROOT),U,1)
+7 SET NAME=$$GET1^DIQ(FILENUM,IEN,.01,"","","")
+8 QUIT NAME
+9 ;
+10 ;====================================================
PFIND ;Print the reminder term finding multiple.
+1 NEW CFP,FIELD,FINDING,FIND0,FMTSTR,HFCAT,HFIEN,IND,NL,OUTPUT
+2 NEW PAD,PXRMFVPL,RJC,SCNT,SIEN,STAT0,TEXT
+3 ;If called by a FileMan print, build the variable pointer list.
+4 IF '$DATA(PXRMFVPL)
NEW PXRMFVPL
DO BLDRLIST^PXRMVPTR(811.52,.01,.PXRMFVPL)
+5 SET FMTSTR="18R^13L1^45L"
+6 SET PAD=" "
SET RJC=31
+7 SET FINDING=0
+8 FOR
SET FINDING=$ORDER(^PXRMD(811.5,D0,20,FINDING))
IF +FINDING=0
QUIT
Begin DoDot:1
+9 SET FIND0=^PXRMD(811.5,D0,20,FINDING,0)
+10 SET FIELD=$PIECE(FIND0,U,1)
+11 SET TEXT="^Finding Item:^"_$$ENTRYNAM(FIELD)_$$GENIEN(FINDING)
+12 DO COLFMT^PXRMTEXT(FMTSTR,TEXT," ",.NL,.OUTPUT)
+13 WRITE !
FOR IND=1:1:NL
WRITE !,OUTPUT(IND)
+14 ;
+15 SET TEXT=$$RJ^XLFSTR("Finding Type:",RJC,PAD)_" "_$$TFTYPE(FIELD)
+16 WRITE !,TEXT
+17 IF FIND0["AUTTHF"
Begin DoDot:2
+18 SET HFIEN=$PIECE($PIECE(FIND0,U),";")
+19 SET HFCAT=$PIECE($GET(^AUTTHF(HFIEN,0)),U,3)
+20 SET HFCAT=$SELECT(HFCAT="":"UNDEFINED",1:$PIECE($GET(^AUTTHF(HFCAT,0)),U,1))
+21 SET TEXT=$$RJ^XLFSTR("Health Factor Category:",RJC,PAD)_" "_HFCAT
+22 WRITE !,TEXT
End DoDot:2
+23 ;
+24 SET FIELD=$PIECE(FIND0,U,4)
+25 IF $LENGTH(FIELD)>0
Begin DoDot:2
+26 SET TEXT=$$RJ^XLFSTR("Match Frequency/Age:",RJC,PAD)_" "_$$GENFREQ^PXRMPTD2(FIND0)
+27 WRITE !,TEXT
End DoDot:2
+28 ;
+29 DO DATE(FIND0,8,9,"Beginning Date/Time:",RJC,PAD)
+30 DO DATE(FIND0,11,12,"Ending Date/Time Date:",RJC,PAD)
+31 DO SFDISP(FIND0,14,17,"Occurrence Count:",RJC,PAD)
+32 DO SFDISP(FIND0,9,10,"Use Inactive Problems:",RJC,PAD)
+33 DO SFDISP(FIND0,10,11,"Within Category Rank:",RJC,PAD)
+34 DO SFDISP(FIND0,12,13,"MH Scale:",RJC,PAD)
+35 DO SFDISP(FIND0,16,28,"Include Visit Data:",RJC,PAD)
+36 DO SFDISP(FIND0,13,16,"Rx Type:",RJC,PAD)
+37 DO SFDISP(FIND0,15,27,"Use Start Date:",RJC,PAD)
+38 IF $DATA(^PXRMD(811.5,D0,20,FINDING,5,0))=1
Begin DoDot:2
+39 SET (SCNT,SIEN)=0
+40 FOR
SET SIEN=$ORDER(^PXRMD(811.5,D0,20,FINDING,5,SIEN))
IF SIEN=""
QUIT
Begin DoDot:3
+41 SET STAT0=$GET(^PXRMD(811.5,D0,20,FINDING,5,SIEN,0))
+42 DO STATUS(STAT0,"Status List:")
SET SCNT=SCNT+1
End DoDot:3
End DoDot:2
+43 ;
+44 SET FIND0=$GET(^PXRMD(811.5,D0,20,FINDING,3))
+45 DO SFDISP(FIND0,1,14,"Condition:",RJC,PAD)
+46 DO SFDISP(FIND0,2,15,"Condition Case Sensitive:",RJC,PAD)
+47 DO SFDISP(FIND0,3,18,"Use Status/Cond in Search:",RJC,PAD)
+48 IF $GET(^PXRMD(811.5,D0,20,FINDING,15))'=""
Begin DoDot:2
+49 SET CFP=$$RJ^XLFSTR("Computed Finding Parameter:",RJC,PAD)
+50 SET CFP=CFP_" "_$GET(^PXRMD(811.5,D0,20,FINDING,15))
+51 WRITE !,CFP
End DoDot:2
End DoDot:1
+52 QUIT
+53 ;
+54 ;====================================================
SFDISP(FIND0,PIECE,FLDNUM,TITLE,RJC,PAD) ;Standard finding multiple
+1 ;field display.
+2 NEW FIELD,TEXT
+3 SET FIELD=$PIECE(FIND0,U,PIECE)
+4 IF $LENGTH(FIELD)>0
Begin DoDot:1
+5 SET TEXT=$$RJ^XLFSTR(TITLE,RJC,PAD)
+6 SET TEXT=TEXT_" "_$$EXTERNAL^DILFD(811.52,FLDNUM,"",FIELD,"")
+7 IF FLDNUM=13
SET TEXT=TEXT_"-"_$$SPECIAL^PXRMPTDF(FIND0,FIELD)
+8 WRITE !,TEXT
End DoDot:1
+9 QUIT
+10 ;
+11 ;====================================================
STATUS(STAT0,TITLE) ; Status display
+1 IF $LENGTH(STAT0)>0
Begin DoDot:1
+2 NEW STATUS
+3 IF SCNT=0
SET STATUS=$$RJ^XLFSTR(TITLE,RJC,PAD)
+4 IF SCNT>0
SET STATUS=$$RJ^XLFSTR("",RJC,PAD)
+5 SET STATUS=STATUS_" "_STAT0
+6 WRITE !,STATUS
End DoDot:1
+7 QUIT
+8 ;
+9 ;====================================================
TFTYPE(VPTR) ;Return Term finding type
+1 NEW ROOT,TFTYPE
+2 SET ROOT=$PIECE(VPTR,";",2)
+3 IF '$DATA(PXRMFVPL)
NEW PXRMFVPL
DO BLDRLIST^PXRMVPTR(811.52,.01,.PXRMFVPL)
+4 SET TFTYPE=$PIECE(PXRMFVPL(ROOT),U,2)
+5 QUIT TFTYPE
+6 ;
+7 ;====================================================
TRMIEN(FINDING) ;Return internal entry number for TERM findings.
+1 NEW F0,IEN,PREFIX,ROOT,VPTR
+2 SET ROOT="^PXRMD(811.5,D0,20,FINDING,0)"
+3 SET F0=@ROOT
+4 SET VPTR=$PIECE(F0,U,1)
+5 SET IEN=$PIECE(VPTR,";",1)
+6 SET ROOT=$PIECE(VPTR,";",2)
+7 IF '$DATA(PXRMFVPL)
NEW PXRMFVPL
DO BLDRLIST^PXRMVPTR(811.52,.01,.PXRMFVPL)
+8 SET VPTR=PXRMFVPL(ROOT)
+9 SET PREFIX=$PIECE(VPTR,U,4)
+10 QUIT " (FI("_+FINDING_")="_PREFIX_"("_IEN_"))"
+11 ;