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

PXRMIOPT.m

Go to the documentation of this file.
  1. PXRMIOPT ;SLC/PKR - Computed finding in/out patient status. ;02/06/2019
  1. ;;2.0;CLINICAL REMINDERS;**42**;Feb 04, 2005;Build 245
  1. ;
  1. ;====================
  1. IOPT(DFN,NGET,BDT,EDT,NFOUND,TEST,DATE,FIDATA,TEXT) ;Routine for the computed
  1. ;finding VA-INPATIENT/OUTPATIENT FINDINGS.
  1. N ABBR,ABLIST,DEFARR,FIEN,FIEVAL,FILENUM,FIMOD,FIMODS,FIMODV
  1. N FINDING,INOUT,ROOT,TFINDING
  1. ;
  1. S TFINDING=$P(TEST,U,1)
  1. S INOUT=$P(TEST,U,2)
  1. S FIMODS=$P(TEST,U,3)
  1. I INOUT="" S INOUT="INP"
  1. S (NFOUND,TEST)=0
  1. I TFINDING="" Q
  1. I (INOUT'="INP"),(INOUT'="OUT") Q
  1. ;
  1. S ABBR=$P(TFINDING,".",1),FINDING=$P(TFINDING,".",2)
  1. D BLDALIST^PXRMVPTR(811.902,.01,.ABLIST)
  1. I '$D(ABLIST(ABBR)) Q
  1. S FILENUM=$P(ABLIST(ABBR),U,1)
  1. S FIEN=+$$FIND1^DIC(FILENUM,"","ABX",FINDING)
  1. I FIEN=0 Q
  1. S ROOT=$P($$ROOT^DILFD(FILENUM),U,2)
  1. S DEFARR(20,1,0)=FIEN_";"_ROOT
  1. S $P(DEFARR(20,1,0),U,9)=BDT
  1. S $P(DEFARR(20,1,0),U,11)=EDT
  1. S $P(DEFARR(20,1,0),U,14)=NGET
  1. ;For health factors, Within Category Rank defaults to 0.
  1. S $P(DEFARR(20,1,0),U,10)=0
  1. ;If a Finding Modifier was passed set it.
  1. I FIMODS'="" D
  1. . S FIMOD=$P(FIMODS,":",1)
  1. . S FIMODV=$P(FIMODS,":",2)
  1. . I FIMOD="USE INACTIVE PROBLEMS" S $P(DEFARR(20,1,0),U,9)=FIMODV
  1. . I FIMOD="WITHIN CATEGORY RANK" S $P(DEFARR(20,1,0),U,10)=FIMODV
  1. . I FIMOD="MH SCALE" S $P(DEFARR(20,1,0),U,12)=FIMODV
  1. . I FIMOD="RX TYPE" S $P(DEFARR(20,1,0),U,13)=FIMODV
  1. . I FIMOD="USE START DATE" S $P(DEFARR(20,1,0),U,15)=FIMODV
  1. . I FIMOD="INCLUDE VISIT DATA" S $P(DEFARR(20,1,0),U,16)=FIMODV
  1. S DEFARR("E",ROOT,FIEN,1)=""
  1. D EVAL^PXRMEVFI(DFN,.DEFARR,.FIEVAL)
  1. I FIEVAL(1)=0 Q
  1. ;
  1. N DATAINP,DATEINP,FINAME,IND,INPT,JND,JNDS,KND,MSG,NFINP,TESTINP,TEXTINP
  1. S TESTINP=""
  1. D WASINP^PXRMPDEM(DFN,99,BDT,EDT,.NFINP,.TESTINP,.DATEINP,.DATAINP,.TEXTINP)
  1. I (NFINP=0),(INOUT="INP") Q
  1. I (NFINP=0),(INOUT="OUT") D Q
  1. . S IND=0
  1. . F S IND=+$O(FIEVAL(1,IND)) Q:IND=0 D
  1. .. I FIEVAL(1,IND)=1 S NFOUND=NFOUND+1,DATE(NFOUND)=FIEVAL(1,IND,"DATE"),TEST(NFOUND)=1
  1. S FINAME=ABBR_"."_$$GET1^DIQ(FILENUM,FIEN_",",.01,"","","MSG")
  1. S (IND,NFOUND)=0
  1. F S IND=+$O(FIEVAL(1,IND)) Q:IND=0 D
  1. . I FIEVAL(1,IND)=0 Q
  1. . S INPT=0
  1. . F JND=1:1:NFINP D
  1. .. S INPT=((FIEVAL(1,IND,"DATE"))'<(DATAINP(JND,"ADMISSION DATE")))&((FIEVAL(1,IND,"DATE"))'>(DATAINP(JND,"DISCHARGE DATE")))
  1. .. I INPT=1 S JNDS=JND,JND=NFINP
  1. .;If INPT is true then the finding occurred during an inpatient stay.
  1. . I ((INOUT="INP")&(INPT))!((INOUT="OUT")&('INPT))&(NFOUND<NGET) D
  1. .. S NFOUND=NFOUND+1
  1. .. S TEST(NFOUND)=1
  1. .. S DATE(NFOUND)=FIEVAL(1,IND,"DATE")
  1. .. I $G(PXRMDEBG)=1 K FIEVAL(1,IND,"CSUB")
  1. .. S KND=1
  1. .. F S KND=$O(FIEVAL(1,IND,KND)) Q:KND="" M FIDATA(NFOUND,KND)=FIEVAL(1,IND,KND)
  1. .. I INOUT="INP" S TEXT(NFOUND)=TEXTINP(JNDS)_"\\"_FINAME_" "_$$EDATE^PXRMDATE(FIEVAL(1,IND,"DATE"))
  1. .. I INOUT="OUT" S TEXT(NFOUND)="This instance of "_FINAME_" occurred outside of all inpatient stays."
  1. Q
  1. ;