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

BPXRMREF.m

Go to the documentation of this file.
  1. BPXRMREF ; IHS/MSC/MGH - Handle Refusal findings. ;16-Aug-2013 12:38;DU
  1. ;;2.0;CLINICAL REMINDERS;**1001**;Feb 04 2005;Build 21
  1. ;
  1. ;Entries in the refuals file can be used in findings for the EHR reminder terms
  1. ;=======================================================================
  1. EVALFI(DFN,DEFARR,ENODE,FIEVAL) ;Evaluate refusal findings.
  1. N ITEM,INVDATE,REFTYP,FINDING,FIEVT
  1. S ITEM=""
  1. F S ITEM=$O(DEFARR("E",ENODE,ITEM)) Q:ITEM="" D
  1. . S FINDING=""
  1. . F S FINDING=$O(DEFARR("E",ENODE,ITEM,FINDING)) Q:+FINDING=0 D
  1. ..M FINDPA=DEFARR(20,FINDING)
  1. ..K FIEVT
  1. ..D FIEVAL(DFN,ITEM,FINDING,.FINDPA,.FIEVT)
  1. ..M FIEVAL(FINDING)=FIEVT
  1. ..S FIEVAL(FINDING,"FINDING")=$P(FINDPA(0),U,1)
  1. Q
  1. ;
  1. ;=======================================================================
  1. EVALTERM(DFN,FINDING,TERMIEN,TFIEVAL) ;Evaluate refusal terms.
  1. N REFIEN,FIND0,FIND3,INVDATE,LFIEVAL,TFIND0,TFIND3,TFINDING
  1. F S ITEM=$O(TERMARR("E",ENODE,ITEM)) Q:+ITEM=0 D
  1. . S TFINDING=""
  1. . F S TFINDING=$O(TERMARR("E",ENODE,ITEM,TFINDING)) Q:+TFINDING=0 D
  1. .. K FIEVT,PFINDPA,TFINDPA
  1. .. M TFINDPA=TERMARR(20,TFINDING)
  1. ..;Set the finding parameters.
  1. .. D SPFINDPA^PXRMTERM(.FINDPA,.TFINDPA,.PFINDPA)
  1. .. D FIEVAL(DFN,ITEM,.PFINDPA,.FIEVT)
  1. .. M TFIEVAL(TFINDING)=FIEVT
  1. .. S TFIEVAL(TFINDING,"FINDING")=$P(TFINDPA(0),U,1)
  1. Q
  1. ;
  1. ;=======================================================================
  1. FIEVAL(DFN,ITEM,FINDING,PFINDPA,FIEVAL) ;
  1. N CONVAL,DATE,IEN,IND,USESTRT,RSLT,TEMP,VALID,VIEN,FIEN,FINISHED,INVDATE
  1. ;Set finding to zero to start
  1. ;Set the finding search parameters.
  1. N NFOUND,NGET,NOCC,NP,SDIR,SAVE,SSFIND,COND,CASESEN,UCIFS,ICOND,VSLIST
  1. N NP,DAS,IND
  1. D SSPAR^PXRMUTIL(PFINDPA(0),.NOCC,.BDT,.EDT)
  1. D SCPAR^PXRMCOND(.PFINDPA,.CASESEN,.COND,.UCIFS,.ICOND,.VSLIST)
  1. S SDIR=$S(NOCC<0:+1,1:-1)
  1. S NOCC=$S(NOCC<0:-NOCC,1:NOCC)
  1. S NGET=$S(UCIFS:50,1:NOCC)
  1. S SSFIND=0,USESTRT=0
  1. S REFTYP=$P($G(DEFARR(20,FINDING,0)),";",1)
  1. D FPDAT(DFN,REFTYP,NGET,SDIR,BDT,EDT,.NFOUND,.FLIST)
  1. ;If there is a type of refusal to be examined (and there should be),evaluate it
  1. ;If there is no condition, then the first finging of this type is sufficient
  1. ;If there is a condition for this finding evaluate it.
  1. I NFOUND=0 S FIEVAL=0 Q
  1. S NP=0
  1. S SAVE=0
  1. F IND=1:1:NFOUND Q:NP=NOCC D
  1. . S DAS=$P(FLIST(IND),U,1)
  1. . D GETDATA(DAS,.FIEVD)
  1. . S COND=$G(FIEVD("RESULT"))
  1. . I COND="" S SAVE=1
  1. . E S CONVAL=$$COND(CASESEN,ICOND,.FIEVD)
  1. . I +CONVAL S SAVE=1
  1. . I SAVE D
  1. .. S NP=NP+1
  1. .. S FIEVAL(NP)=CONVAL
  1. .. I COND'="" S FIEVAL(NP,"CONDITION")=CONVAL
  1. .. S FIEVAL(NP,"DAS")=$P(FLIST(IND),U,1)
  1. .. S FIEVAL(NP,"DATE")=$P(FLIST(IND),U,2)
  1. .. M FIEVAL(NP)=FIEVD
  1. .. I $G(PXRMDEBG) M FIEVAL(NP,"CSUB")=FIEVD
  1. ;Save the finding result.
  1. D SFRES^PXRMUTIL(SDIR,NP,.FIEVAL)
  1. S FIEVAL("FILE NUMBER")=9000022
  1. Q
  1. ;=======================================================================
  1. FPDAT(DFN,REFTYP,NGET,SDIR,BDT,EDT,NFOUND,FLIST) ;Find pt data
  1. N DAS,DATE,DONE,EDTT,FIEN
  1. S EDTT=$S(EDT[".":EDT+.0000001,1:EDT+.240001)
  1. S (FINISHED,NFOUND)=0
  1. S DATE=$S(SDIR=+1:BDT-.000001,1:EDTT)
  1. S FIEN="" F S FIEN=$O(^AUPNPREF("AC",DFN,FIEN)) Q:FIEN="" D
  1. .S TEMP=$G(^AUPNPREF(FIEN,0))
  1. .Q:REFTYP'=$P(TEMP,U,1)
  1. .Q:$P(TEMP,U,3)<BDT
  1. .Q:$P(TEMP,U,3)>EDTT
  1. .S NFOUND=NFOUND+1
  1. .S FLIST(NFOUND)=FIEN_U_DATE
  1. Q
  1. ;===========================================================
  1. GETDATA(DAS,FIEVD) ;Get refusal data
  1. N TEMP
  1. S TEMP=^AUPNPREF(DAS,0)
  1. S FIEVD("TYPE")=$P(TEMP,U,1)
  1. S FIEVD("DATE")=$P(TEMP,U,3)
  1. S FIEVD("RESULT")=$P(TEMP,U,4)
  1. S FIEVD("POINTER")=$P(TEMP,U,6)
  1. Q
  1. ;============================================================
  1. COND(CASESEN,ICOND,FIEVD) ;Check condition for refusal name
  1. N V,CONVAL,BPXFIND,BPXTYPE,BPXTEST,BPXFILE,TERM
  1. S V=FIEVD("RESULT")
  1. S V=$TR(V," ","~")
  1. I 'CASESEN D
  1. .S ICOND=$$UP^XLFSTR(ICOND)
  1. .S V=$$UP^XLFSTR(V)
  1. X ICOND
  1. S CONVAL=$T
  1. I CONVAL=0 D
  1. .;CHECK FOR A REMINDER TERM
  1. .S ICOND=$P(ICOND,"=",2)
  1. .Q:ICOND=""
  1. .S ICOND=$TR(ICOND,"""","")
  1. .S TERM="" S TERM=$O(^PXRMD(811.5,"B",ICOND,TERM))
  1. .Q:TERM=""
  1. .S BPXFIND=0 F S BPXFIND=$O(^PXRMD(811.5,TERM,20,BPXFIND)) Q:BPXFIND="" D
  1. ..S BPXTYPE=$P($G(^PXRMD(811.5,TERM,20,BPXFIND,0)),U,1)
  1. ..S BPXTEST=$P(BPXTYPE,";",1),BPXFILE=$P(BPXTYPE,";",2)
  1. ..I $G(FIEVD("POINTER"))=BPXTEST S CONVAL=1
  1. Q CONVAL
  1. ;============================================================
  1. MHVOUT(INDENT,IFIEVAL,NLINES,TEXT) ;Produce the MHV output
  1. N EM,FIEN,IND,JND,NAME,NOUT,PNAME,RESULT,TEMP,TEXTOUT,VDATE
  1. S FIEN=$P(IFIEVAL("FINDING"),";",1)
  1. S TEMP=^AUPNPREF(FIEN,0)
  1. S PNAME=$P(TEMP,U,1)
  1. S PNAME=$P(^AUTTREFT(PNAME,0),U,1)
  1. S NAME=$$INSCHR^PXRMEXLC(INDENT," ")_"Refusal Type: "_PNAME_" = "
  1. S IND=0
  1. F S IND=+$O(IFIEVAL(IND)) Q:IND=0 D
  1. . S RESULT=$G(IFIEVAL(IND,"RESULT"))
  1. . I RESULT'="" S RESULT=$$EXTERNAL^DILFD(9000022,.04,"",RESULT,.EM)
  1. . S VDATE=IFIEVAL(IND,"DATE")
  1. . S TEMP=NAME_RESULT_" ("_$$EDATE^PXRMDATE(VDATE)_")"
  1. . D FORMATS^PXRMTEXT(INDENT+2,PXRMRM,TEMP,.NOUT,.TEXTOUT)
  1. . F JND=1:1:NOUT S NLINES=NLINES+1,TEXT(NLINES)=TEXTOUT(JND)
  1. S NLINES=NLINES+1,TEXT(NLINES)=""
  1. Q
  1. ;============================================================
  1. OUTPUT(INDENT,IFIEVAL,NLINES,TEXT) ;Produce the clinical
  1. ;maintenance output.
  1. N REFIEN,EM,FIEN,IND,PNAME,RSLT,TEMP,VDATE
  1. S FIEN=$P(IFIEVAL("FINDING"),";",1)
  1. S PNAME=$P(^AUTTREFT(FIEN,0),U,1)
  1. S NLINES=NLINES+1
  1. S TEXT(NLINES)=$$INSCHR^PXRMEXLC(INDENT," ")_"Refusal Type: "_PNAME
  1. S IND=0
  1. F S IND=+$O(IFIEVAL(IND)) Q:IND=0 D
  1. . S VDATE=IFIEVAL(IND,"DATE")
  1. . S TEMP=$$EDATE^PXRMDATE(VDATE)
  1. . S RESULT=$G(IFIEVAL(IND,"RESULT"))
  1. . I RESULT'="" D
  1. .. S TEMP=TEMP_" Service not done - "
  1. .. S TEMP=TEMP_$$EXTERNAL^DILFD(9000022,.04,"",RESULT,.EM)
  1. . D FORMATS^PXRMTEXT(INDENT+2,PXRMRM,TEMP,.NOUT,.TEXTOUT)
  1. . F JND=1:1:NOUT S NLINES=NLINES+1,TEXT(NLINES)=TEXTOUT(JND)
  1. S NLINES=NLINES+1,TEXT(NLINES)=""
  1. Q
  1. ;=======================================================================