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

PXRHS07.m

Go to the documentation of this file.
  1. PXRHS07 ;ISL/SBW - PCE V HEALTH FACTORS extract routine ;12/10/96
  1. ;;1.0;PCE PATIENT CARE ENCOUNTER;**13**;Aug 12, 1996
  1. ; Extract returns HEALTH FACTORS data
  1. HF(DFN,ENDDT,BEGDT,OCCLIM,ITEMS) ; Control branching
  1. ;INPUT : DFN - Pointer to PATIENT file (#2)
  1. ; ENDDT - Ending date/time in internal FileMan format
  1. ; - Defaults to today's date at 11:59 pm
  1. ; BEGDT - Beginning date/time in internal FileMan format
  1. ; - Defaults to one year prior to today's date
  1. ; OCCLIM - Maximum number of days for which data is returned
  1. ; for each Health Factors item.
  1. ; If multiple visits on a given day, all data for
  1. ; these visit will be returned.
  1. ; Note: If event date is used, it may appear that too
  1. ; many occurrences are retrieved but it is
  1. ; it is based on visit date not event date.
  1. ; ITEMS - Optional array containing a selected list of
  1. ; HF Categories. If not used will get all catergories
  1. ; of health factors.
  1. ;OUTPUT :
  1. ; Data from V HEALTH FACTORS (9000010.23) file
  1. ; ^TMP("PXF,$J,HFC,HF,InvDt,IFN,0) = Health Factor [E;.01]
  1. ; ^ EVENT DATE/TIME or VISIT/ADMIT DATE&TIME [I;1201 or .03]
  1. ; ^ SHORT NAME [E;9999999.64;.04] ^ LEVEL/SEVERITY [E;.04]
  1. ; ^ ORDERING PROVIDER [E;1202] ^ ENCOUNTER PROVIDER [E;1204]
  1. ; ^TMP("PXF",$J,HFC,HF,InvDt,IFN,1) = HOSPITAL LOCATION [E;9000010;.22]
  1. ; ^ HOSP. LOC. ABBREVIATION [E;44;1]
  1. ; ^ LOC OF ENCOUNTER [E;9000010;.06] ^ OUTSIDE LOC [E;9000010;2101]
  1. ; ^TMP("PXF",$J,HFC,HF,InvDt,IFN,"S") = DATA SOURCE [E;80102]
  1. ;
  1. ; [] = [I(nternal)/E(xternal); Optional file #; Record #]
  1. ; Subscripts:
  1. ; HFC - Health Factor Category name
  1. ; HF - Health Factor name
  1. ; InvDt - Inverse FileMan date of DATE OF event or visit
  1. ; IFN - Internal Record #
  1. ;
  1. Q:$G(DFN)']""!'$D(^AUPNVHF("AA",DFN))
  1. N PXHFC,IBEGDT,IENDDT
  1. S:+$G(OCCLIM)'>0 OCCLIM=999
  1. S:+$G(BEGDT)'>0 BEGDT=DT-10000
  1. S:+$G(ENDDT)'>0 ENDDT=DT_".235959"
  1. ; Chg regular dt/time to inverted dt/time
  1. S IBEGDT=9999999-ENDDT,IENDDT=9999999-BEGDT
  1. K ^TMP("PXF",$J)
  1. I $D(ITEMS)'>0 D Q
  1. . S PXHFC=0
  1. . F S PXHFC=$O(^AUTTHF("AD","C",PXHFC)) Q:PXHFC'>0 D GETVHF(PXHFC,OCCLIM)
  1. I $D(ITEMS)>0 D
  1. . S PXHFC=0
  1. . F S PXHFC=$O(ITEMS(PXHFC)) Q:PXHFC'>0 D GETVHF(PXHFC,OCCLIM)
  1. Q
  1. GETVHF(PXHFC,MAX) ; Get Health Factors within a category
  1. N PXHF,PXIVD,PXIFN,CNT,PDT
  1. S PXHF=0
  1. F S PXHF=$O(^AUTTHF("AC",PXHFC,PXHF)) Q:PXHF'>0 D
  1. . S CNT=0,PXIVD=0
  1. . F S PXIVD=$O(^AUPNVHF("AA",DFN,PXHF,PXIVD)) Q:PXIVD'>0 D Q:CNT'<OCCLIM
  1. . . S PXIFN=0
  1. . . F S PXIFN=$O(^AUPNVHF("AA",DFN,PXHF,PXIVD,PXIFN)) Q:PXIFN'>0 D
  1. . . . N DIC,DIQ,DR,DA,REC,VDATA,HFC,HF,EXDT,LEVEL,SNAME,COMMENT
  1. . . . N OPROV,EPROV,HLOC,HLOCABB,SOURCE,IDT
  1. . . . S DIC=9000010.23,DA=PXIFN,DIQ="REC(",DIQ(0)="IE"
  1. . . . S DR=".01;.03;.04;1201;1202;1204;80102;81101"
  1. . . . D EN^DIQ1
  1. . . . Q:'$D(REC)
  1. . . . S VDATA=$$GETVDATA^PXRHS03(+REC(9000010.23,DA,.03,"I"))
  1. . . . S HF=REC(9000010.23,DA,.01,"E")
  1. . . . S EXDT=REC(9000010.23,DA,1201,"I")
  1. . . . S:EXDT']"" EXDT=$P(VDATA,U)
  1. . . . S IDT=9999999-EXDT
  1. . . . I IDT<IBEGDT!(IDT>IENDDT) Q ;Only get data within date range
  1. . . . D GETHF(REC(9000010.23,DA,.01,"I"),.HFC,.SNAME)
  1. . . . S LEVEL=REC(9000010.23,DA,.04,"E")
  1. . . . S OPROV=REC(9000010.23,DA,1202,"E")
  1. . . . S EPROV=REC(9000010.23,DA,1204,"E")
  1. . . . S HLOC=$P(VDATA,U,5)
  1. . . . S HLOCABB=$P(VDATA,U,6)
  1. . . . S SOURCE=REC(9000010.23,DA,80102,"E")
  1. . . . S COMMENT=REC(9000010.23,DA,81101,"E")
  1. . . . S ^TMP("PXF",$J,HFC,HF,IDT,DA,0)=HF_U_EXDT_U_SNAME_U_LEVEL_U_OPROV_U_EPROV
  1. . . . S ^TMP("PXF",$J,HFC,HF,IDT,DA,1)=HLOC_U_HLOCABB_U_$P(VDATA,U,2)_U_$P(VDATA,U,4)
  1. . . . S ^TMP("PXF",$J,HFC,HF,IDT,DA,"S")=SOURCE
  1. . . . S ^TMP("PXF",$J,HFC,HF,IDT,DA,"COM")=COMMENT
  1. . . . ;Counter by health factor and date, not by visit. There may be
  1. . . . ;multiple health factors for any given day
  1. . . . I PXIVD'=$G(PDT) S CNT=CNT+1,PDT=PXIVD
  1. Q
  1. GETHF(DA,HFC,SNAME) ;
  1. N DIC,DIQ,DR,REC
  1. S DIC=9999999.64,DIQ="REC(",DIQ(0)="E",DR=".01;.03;.04"
  1. D EN^DIQ1
  1. I '$D(REC) S (HFC,SNAME)="" Q
  1. S HFC=REC(9999999.64,DA,.03,"E")
  1. S SNAME=REC(9999999.64,DA,.04,"E")
  1. Q