PXRMDGPT ; SLC/PKR - Code to handle DGPT (Patient Treatment File) data. ;08/03/2005 ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21 ; ;============================================ FPDAT(DFN,TAXARR,NGET,SDIR,BDT,EDT,TYPE,FLIST) ;Find data for a patient. ;TYPE is ICD0 or ICD9 N DA,DAS,DATE,DNODE,DS,EDTT,ICDP,IND,NFOUND,NODE,NODEAT,NNODE N SUB,TE,TDATE,TIND,TLIST,TS I $G(^PXRMINDX(45,"DATE BUILT"))="" D Q . D NOINDEX^PXRMERRH("TX",TAXARR("IEN"),45) I '$D(^PXRMINDX(45,TYPE,"PNI",DFN)) Q S SUB=$S(TYPE="ICD0":80.1,TYPE="ICD9":80,1:0) I SUB=0 Q S NNODE=+$P($G(TAXARR("PDS",45,SUB)),U,2) I NNODE=0 Q ;Get the start and end of the taxonomy. S TS=$O(TAXARR(SUB,""))-1 S TE=$O(TAXARR(SUB,""),-1) S EDTT=$S(EDT[".":EDT+.0000001,1:EDT+.240001) S DS=$S(SDIR=+1:BDT-.000001,1:EDTT) S NFOUND=0 F IND=1:1:NNODE D . S NODE=TAXARR("PDS",45,SUB,IND) . S ICDP=TS . F S ICDP=$O(^PXRMINDX(45,TYPE,"PNI",DFN,NODE,ICDP)) Q:(ICDP>TE)!(ICDP="") D .. I '$D(TAXARR(SUB,ICDP)) Q .. S DATE=DS .. F S DATE=+$O(^PXRMINDX(45,TYPE,"PNI",DFN,NODE,ICDP,DATE),SDIR) Q:$S(DATE=0:1,DATEEDTT:1,1:0) D ... S DAS="" ... F S DAS=$O(^PXRMINDX(45,TYPE,"PNI",DFN,NODE,ICDP,DATE,DAS)) Q:DAS="" D .... S NFOUND=NFOUND+1 .... S TLIST(DATE,NFOUND)=DAS_U_ICDP_U_NODE_U_TYPE .... I NFOUND>NGET D ..... S TDATE=$O(TLIST(""),-SDIR),TIND=$O(TLIST(TDATE,"")) ..... K TLIST(TDATE,TIND) ;Return up to NGET of the most recent entries. S NFOUND=0 S DATE="" F S DATE=$O(TLIST(DATE),SDIR) Q:(DATE="")!(NFOUND=NGET) D . S IND=0 . F S IND=$O(TLIST(DATE,IND)) Q:(IND="")!(NFOUND=NGET) D .. S NFOUND=NFOUND+1 .. S FLIST(DATE,NFOUND,45)=TLIST(DATE,IND) Q ; ;============================================ GETDATA(DAS,FIEVT) ;Return data for a specificed PTF entry. D PTF^DGPTPXRM(DAS,.FIEVT) Q ; ;============================================ GPLIST(TAXARR,NOCC,BDT,EDT,TYPE,PLIST) ;Get data for a patient. ;TYPE is ICD0 or ICD9 N DA,DA1,DAS,DATE,DFN,DNODE,DS,ICDP N NFOUND,NODE,NNODE,SUB,TEMP,TLIST I $G(^PXRMINDX(45,"DATE BUILT"))="" D Q . D NOINDEX^PXRMERRH("TX",TAXARR("IEN"),45) S SUB=$S(TYPE="ICD0":80.1,TYPE="ICD9":80,1:0) I SUB=0 Q S TLIST="GPLIST_PXRMDGPT" K ^TMP($J,TLIST) S NNODE=+$P($G(TAXARR("PDS",45,SUB)),U,2) I NNODE=0 Q S DS=$S(EDT[".":EDT+.0000001,1:EDT+.240001) S ICDP="" F S ICDP=$O(TAXARR(SUB,ICDP)) Q:ICDP="" D . I '$D(^PXRMINDX(45,TYPE,"INP",ICDP)) Q . F IND=1:1:NNODE D .. S NODE=TAXARR("PDS",45,SUB,IND) .. I '$D(^PXRMINDX(45,TYPE,"INP",ICDP,NODE)) Q .. S DFN=0 .. F S DFN=$O(^PXRMINDX(45,TYPE,"INP",ICDP,NODE,DFN)) Q:DFN="" D ... S DATE=DS ... F S DATE=+$O(^PXRMINDX(45,TYPE,"INP",ICDP,NODE,DFN,DATE),-1) Q:(DATE=0)!(DATE