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

PXRMDEV.m

Go to the documentation of this file.
  1. PXRMDEV ;SLC/PKR - This is a driver for testing Clinical Reminders. ;03/12/2013
  1. ;;2.0;CLINICAL REMINDERS;**4,6,11,16,18,24,26**;Feb 04, 2005;Build 404
  1. ;
  1. ;==================================================
  1. CMOUT(PXRHM,NL,OUTPUT) ;Do formatted Clinical Maintenance output.
  1. N DUE,DUECOL,HIST,LAST,LASTCOL,LNUM,RIEN,RNAME,STATUS,STATCOL
  1. N TEMP,TEXT,TYPE
  1. S TEXT=$S(PXRHM=0:"Due Now ",PXRHM=1:"Summary ",PXRHM=5:"Maintenance ",PXRHM=55:"Order Check ",1:"")
  1. S NL=NL+1,OUTPUT(NL)="",NL=NL+1,OUTPUT(NL)=""
  1. S NL=NL+1,OUTPUT(NL)=TEXT_"Output:"
  1. S RIEN=$O(^TMP("PXRHM",$J,""))
  1. S RNAME=$O(^TMP("PXRHM",$J,RIEN,""))
  1. S TEMP=$G(^TMP("PXRHM",$J,RIEN,RNAME))
  1. S STATUS=$P(TEMP,U,1)
  1. S DUE=$$DDATE^PXRMDATE($P(TEMP,U,2))
  1. S LAST=$$DDATE^PXRMDATE($P(TEMP,U,3))
  1. S STATCOL=41-($L(STATUS)/2)
  1. S DUECOL=53-($L(DUE)/2)
  1. S LASTCOL=67-($L(LAST)/2)
  1. S NL=NL+1,OUTPUT(NL)="",NL=NL+1,OUTPUT(NL)=""
  1. S TEXT=$$REPEAT^XLFSTR(" ",36)_"--STATUS-- --DUE DATE-- --LAST DONE--"
  1. S NL=NL+1,OUTPUT(NL)=TEXT
  1. S TEXT=RNAME_$$REPEAT^XLFSTR(" ",(STATCOL-$L(RNAME)))_STATUS
  1. S TEXT=TEXT_$$REPEAT^XLFSTR(" ",(DUECOL-$L(TEXT)))_DUE
  1. S TEXT=TEXT_$$REPEAT^XLFSTR(" ",(LASTCOL-$L(TEXT)))_LAST
  1. S NL=NL+1,OUTPUT(NL)=TEXT
  1. S LNUM=0
  1. F S LNUM=$O(^TMP("PXRHM",$J,RIEN,RNAME,"TXT",LNUM)) Q:LNUM="" D
  1. . S NL=NL+1,OUTPUT(NL)=^TMP("PXRHM",$J,RIEN,RNAME,"TXT",LNUM)
  1. Q
  1. ;
  1. ;==================================================
  1. DEB ;Prompt for patient and reminder by name input component.
  1. N DATE,DFN,DIC,DIR,DIROUT,DTOUT,DUOUT,HASFF,HASTERM,IND
  1. N PXRHM,PXRMFFSS,PXRMITEM,PXRMTDEB,X,Y
  1. S DIC=2,DIC("A")="Select Patient: "
  1. S DIC(0)="AEQMZ"
  1. GPAT1 D ^DIC
  1. I $D(DIROUT)!$D(DIRUT) Q
  1. I $D(DTOUT)!$D(DUOUT) Q
  1. S DFN=+$P(Y,U,1)
  1. I DFN=-1 G GPAT1
  1. S DIC=811.9,DIC("A")="Select Reminder: "
  1. GREM1 D ^DIC
  1. I $D(DIROUT)!$D(DIRUT) Q
  1. I $D(DTOUT)!$D(DUOUT) Q
  1. S PXRMITEM=+$P(Y,U,1)
  1. I PXRMITEM=-1 G GREM1
  1. S DIR(0)="LA"_U_"0"
  1. S DIR("A")="Enter component number 0, 1, 5, 12, 55: "
  1. D ^DIR
  1. I $D(DIROUT)!$D(DIRUT) Q
  1. I $D(DTOUT)!$D(DUOUT) Q
  1. I X="" S X=5
  1. S PXRHM=X
  1. S DIR(0)="DA^"_0_"::ETX"
  1. S DIR("A")="Enter date for reminder evaluation: "
  1. S DIR("B")=$$FMTE^XLFDT($$DT^XLFDT,"D")
  1. S DIR("PRE")="S X=$$DCHECK^PXRMDATE(X) K:X=-1 X"
  1. W !
  1. D ^DIR K DIR
  1. I $D(DIROUT)!$D(DIRUT) Q
  1. I $D(DTOUT)!$D(DUOUT) Q
  1. S DATE=Y
  1. S (HASFF,HASTERM,PXRMFFSS,PXRMTDEB)=0
  1. I $D(^PXD(811.9,PXRMITEM,25,"B")) S HASFF=1
  1. I HASFF S PXRMFFSS=$$ASKYN^PXRMEUT("N","Display step-by-step function finding evaluation","","")
  1. I $D(^PXD(811.9,PXRMITEM,20,"E","PXRMD(811.5,")) S HASTERM=1
  1. I 'HASTERM D
  1. . S IND=0
  1. . F S IND=+$O(^PXD(811.9,PXRMITEM,20,"EDEP",IND)) Q:IND=0 D
  1. .. I $D(^PXD(811.9,PXRMITEM,20,"EDEP",IND,"PXRMD(811.5,")) S HASTERM=1
  1. I HASTERM S PXRMTDEB=$$ASKYN^PXRMEUT("N","Display all term findings","","")
  1. D DOREM(DFN,PXRMITEM,PXRHM,DATE)
  1. Q
  1. ;
  1. ;==================================================
  1. DEV ;Prompt for patient and reminder by name and evaluation date.
  1. N DATE,DFN,DIC,DIROUT,DIRUT,DTOUT,DUOUT,HASFF,HASTERM,IND
  1. N PXRHM,PXRMFFSS,PXRMITEM,PXRMTDEB,REF,X,Y
  1. S DIC=2,DIC("A")="Select Patient: "
  1. S DIC(0)="AEQMZ"
  1. GPAT2 D ^DIC
  1. I $D(DIROUT)!$D(DIRUT) Q
  1. I $D(DTOUT)!$D(DUOUT) Q
  1. S DFN=+$P(Y,U,1)
  1. I DFN=-1 G GPAT2
  1. S DIC=811.9,DIC("A")="Select Reminder: "
  1. GREM2 D ^DIC
  1. I $D(DIROUT)!$D(DIRUT) Q
  1. I $D(DTOUT)!$D(DUOUT) Q
  1. S PXRMITEM=+$P(Y,U,1)
  1. I PXRMITEM=-1 G GREM2
  1. S PXRHM=5
  1. S DIR(0)="DA^"_0_"::ETX"
  1. S DIR("A")="Enter date for reminder evaluation: "
  1. S DIR("B")=$$FMTE^XLFDT($$DT^XLFDT,"D")
  1. S DIR("PRE")="S X=$$DCHECK^PXRMDATE(X) K:X=-1 X"
  1. W !
  1. D ^DIR K DIR
  1. I $D(DIROUT)!$D(DIRUT) Q
  1. I $D(DTOUT)!$D(DUOUT) Q
  1. S DATE=Y
  1. S (HASFF,HASTERM,PXRMFFSS,PXRMTDEB)=0
  1. I $D(^PXD(811.9,PXRMITEM,25,"B")) S HASFF=1
  1. I HASFF S PXRMFFSS=$$ASKYN^PXRMEUT("N","Display step-by-step function finding evaluation","","")
  1. I $D(^PXD(811.9,PXRMITEM,20,"E","PXRMD(811.5,")) S HASTERM=1
  1. I 'HASTERM D
  1. . S IND=0
  1. . F S IND=+$O(^PXD(811.9,PXRMITEM,20,"EDEP",IND)) Q:IND=0 D
  1. .. I $D(^PXD(811.9,PXRMITEM,20,"EDEP",IND,"PXRMD(811.5,")) S HASTERM=1
  1. I HASTERM S PXRMTDEB=$$ASKYN^PXRMEUT("N","Display all term findings","","")
  1. D DOREM(DFN,PXRMITEM,PXRHM,DATE)
  1. Q
  1. ;
  1. ;==================================================
  1. DOREM(DFN,PXRMITEM,PXRHM,DATE) ;Do the reminder
  1. N BOP,DEFARR,FIEVAL,FINDING,IND,JND,NL,NOUT,OUTPUT,PNAME
  1. N PXRMDEBG,PXRMDEFS,PXRMID
  1. N REF,TEXTOUT,TFIEVAL,TTEXT,X
  1. ;This is a debugging run so set PXRMDEBG.
  1. S NL=0,PXRMDEBG=1
  1. D DEF^PXRMLDR(PXRMITEM,.DEFARR)
  1. I +$G(DATE)=0 D EVAL^PXRM(DFN,.DEFARR,PXRHM,1,.FIEVAL)
  1. I +$G(DATE)>0 D EVAL^PXRM(DFN,.DEFARR,PXRHM,1,.FIEVAL,DATE)
  1. ;
  1. I $D(^TMP(PXRMID,$J,"FFDEB")) M FIEVAL=^TMP(PXRMID,$J,"FFDEB") K ^TMP(PXRMID,$J,"FFDEB")
  1. ;
  1. S TTEXT=^PXD(811.9,PXRMITEM,0)
  1. S PNAME=$P(TTEXT,U,2)
  1. I PNAME="" S PNAME=$P(TTEXT,U,1)
  1. S NL=NL+1,OUTPUT(NL)="Reminder: "_PNAME
  1. S NL=NL+1,OUTPUT(NL)="Patient: "_$$GET1^DIQ(2,DFN,.01)
  1. S NL=NL+1,OUTPUT(NL)=" "
  1. S NL=NL+1,OUTPUT(NL)="The elements of the FIEVAL array are:"
  1. S REF="FIEVAL"
  1. D ACOPY^PXRMUTIL(REF,"TTEXT()")
  1. S IND=0
  1. F S IND=$O(TTEXT(IND)) Q:IND="" D
  1. . I $L(TTEXT(IND))<79 S NL=NL+1,OUTPUT(NL)=TTEXT(IND) Q
  1. . D FORMATS^PXRMTEXT(1,79,TTEXT(IND),.NOUT,.TEXTOUT)
  1. . F JND=1:1:NOUT S NL=NL+1,OUTPUT(NL)=TEXTOUT(JND)
  1. ;
  1. I $G(PXRMFFSS) D
  1. . N FFN,STEP
  1. . S NL=NL+1,OUTPUT(NL)="",NL=NL+1,OUTPUT(NL)=""
  1. . S NL=NL+1,OUTPUT(NL)="Step-by-step function finding evaluation:"
  1. . S FFN=""
  1. . F S FFN=$O(^TMP("PXRMFFSS",$J,FFN)) Q:FFN="" D
  1. .. S NL=NL+1,OUTPUT(NL)=""
  1. .. S NL=NL+1,OUTPUT(NL)=" Function finding "_FFN_"="_FIEVAL(FFN)
  1. .. D FORMATS^PXRMTEXT(1,79,$P(FIEVAL(FFN,"DETAIL"),U,2),.NOUT,.TEXTOUT)
  1. .. F JND=1:1:NOUT S NL=NL+1,OUTPUT(NL)=TEXTOUT(JND)
  1. .. S NL=NL+1,OUTPUT(NL)=" = "_^TMP("PXRMFFSS",$J,FFN,0)
  1. .. S NL=NL+1,OUTPUT(NL)="Step Result"
  1. .. S STEP=0
  1. .. F S STEP=$O(^TMP("PXRMFFSS",$J,FFN,STEP)) Q:STEP="" D
  1. ... S NL=NL+1,OUTPUT(NL)=$$RJ^XLFSTR(STEP_".",4," ")_" "_^TMP("PXRMFFSS",$J,FFN,STEP)
  1. . K ^TMP("PXRMFFSS",$J)
  1. I $G(PXRMTDEB) D
  1. . S NL=NL+1,OUTPUT(NL)="",NL=NL+1,OUTPUT(NL)=""
  1. . S NL=NL+1,OUTPUT(NL)="Term findings:"
  1. . S REF="TFIEVAL"
  1. . S FINDING=0
  1. . F S FINDING=$O(^TMP("PXRMTDEB",$J,FINDING)) Q:FINDING="" D
  1. .. K TFIEVAL M TFIEVAL(FINDING)=^TMP("PXRMTDEB",$J,FINDING)
  1. .. S NL=NL+1,OUTPUT(NL)="Finding "_FINDING_":"
  1. .. K TTEXT
  1. .. D ACOPY^PXRMUTIL(REF,"TTEXT()")
  1. .. S IND=0
  1. .. F S IND=$O(TTEXT(IND)) Q:IND="" S NL=NL+1,OUTPUT(NL)=TTEXT(IND)
  1. . K ^TMP("PXRMTDEB",$J)
  1. ;
  1. I $D(^TMP(PXRMID,$J)) D
  1. . S NL=NL+1,OUTPUT(NL)="",NL=NL+1,OUTPUT(NL)=""
  1. . S NL=NL+1,OUTPUT(NL)="The elements of the ^TMP(PXRMID,$J) array are:"
  1. . S REF="^TMP(PXRMID,$J)"
  1. . K TTEXT
  1. . D ACOPY^PXRMUTIL(REF,"TTEXT()")
  1. . S IND=0
  1. . F S IND=$O(TTEXT(IND)) Q:IND="" S NL=NL+1,OUTPUT(NL)=TTEXT(IND)
  1. . K ^TMP(PXRMID,$J)
  1. ;
  1. I $D(^TMP("PXRHM",$J)) D
  1. . S NL=NL+1,OUTPUT(NL)="",NL=NL+1,OUTPUT(NL)=""
  1. . S NL=NL+1,OUTPUT(NL)="The elements of the ^TMP(""PXRHM"",$J) array are:"
  1. . S REF="^TMP(""PXRHM"",$J)"
  1. . K TTEXT
  1. . D ACOPY^PXRMUTIL(REF,"TTEXT()")
  1. . S IND=0
  1. . F S IND=$O(TTEXT(IND)) Q:IND="" S NL=NL+1,OUTPUT(NL)=TTEXT(IND)
  1. ;
  1. I $D(^TMP("PXRHM",$J)) D CMOUT(PXRHM,.NL,.OUTPUT)
  1. I $D(^TMP("PXRMMHVC",$J)) D MHVOUT(PXRHM,.NL,.OUTPUT)
  1. K ^TMP("PXRM",$J),^TMP("PXRHM",$J),^TMP("PXRMMHVC",$J)
  1. S BOP=$$BORP^PXRMUTIL("P")
  1. I BOP="B" D
  1. . S X="IORESET"
  1. . D ENDR^%ZISS
  1. . D BROWSE^DDBR("OUTPUT","NR","Reminder Test")
  1. . W IORESET
  1. . D KILL^%ZISS
  1. I BOP="P" D GPRINT^PXRMUTIL("OUTPUT")
  1. Q
  1. ;
  1. ;==================================================
  1. MHVOUT(PXRHM,NL,OUTPUT) ;Do formatted MHV combined output.
  1. N DUE,DUECOL,HIST,LAST,LASTCOL,LNUM,RIEN,RNAME
  1. N STATUS,STATCOL,TEMP,TEXT,TYPE
  1. S NL=NL+1,OUTPUT(NL)="",NL=NL+1,OUTPUT(NL)=""
  1. S NL=NL+1,OUTPUT(NL)="MHV Summary and Detailed Output:"
  1. S RIEN=$O(^TMP("PXRMMHVC",$J,""))
  1. S TEMP=^TMP("PXRMMHVC",$J,RIEN,"STATUS")
  1. S STATUS=$P(TEMP,U,1)
  1. S DUE=$$DDATE^PXRMDATE($P(TEMP,U,2))
  1. S LAST=$$DDATE^PXRMDATE($P(TEMP,U,3))
  1. S STATCOL=41-($L(STATUS)/2)
  1. S DUECOL=53-($L(DUE)/2)
  1. S LASTCOL=67-($L(LAST)/2)
  1. S RNAME=$P(^PXD(811.9,RIEN,0),U,3)
  1. I RNAME="" S RNAME=$P(^PXD(811.9,RIEN,0),U,1)
  1. S TEXT=$$REPEAT^XLFSTR(" ",36)_"--STATUS-- --DUE DATE-- --LAST DONE--"
  1. S NL=NL+1,OUTPUT(NL)=TEXT
  1. S TEXT=RNAME_$$REPEAT^XLFSTR(" ",(STATCOL-$L(RNAME)))_STATUS
  1. S TEXT=TEXT_$$REPEAT^XLFSTR(" ",(DUECOL-$L(TEXT)))_DUE
  1. S TEXT=TEXT_$$REPEAT^XLFSTR(" ",(LASTCOL-$L(TEXT)))_LAST
  1. S NL=NL+1,OUTPUT(NL)=TEXT
  1. I '$D(^TMP("PXRMMHVC",$J)) Q
  1. I (PXRHM=11)!(PXRHM=12) D
  1. .; W !!,"---------- Detailed Output ----------"
  1. . S NL=NL+1,OUTPUT(NL)="---------- Detailed Output ----------"
  1. . S LNUM=0
  1. . F S LNUM=$O(^TMP("PXRMMHVC",$J,RIEN,"DETAIL",LNUM)) Q:LNUM="" D
  1. .. S NL=NL+1,OUTPUT(NL)=^TMP("PXRMMHVC",$J,RIEN,"DETAIL",LNUM)
  1. I (PXRHM=10)!(PXRHM=12) D
  1. . S NL=NL+1,OUTPUT(NL)="",NL=NL+1,OUTPUT(NL)=""
  1. . S NL=NL+1,OUTPUT(NL)="---------- Summary Output ----------"
  1. . S LNUM=0
  1. . F S LNUM=$O(^TMP("PXRMMHVC",$J,RIEN,"SUMMARY",LNUM)) Q:LNUM="" D
  1. .. S NL=NL+1,OUTPUT(NL)=^TMP("PXRMMHVC",$J,RIEN,"SUMMARY",LNUM)
  1. Q
  1. ;