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

APCDKDTC.m

Go to the documentation of this file.
  1. APCDKDTC ; IHS/CMI/LAB - LINK DIF DAY LAB VISITS ;
  1. ;;2.0;IHS PCC SUITE;;MAY 14, 2009
  1. ;
  1. EP ;EP nightly re-linker for DTC
  1. ;go through all visits from 60 days ago and find visits
  1. ;with a DTC (V Tran with an ordering prov and ordering date)
  1. ;and NO Billing Link and attempt to do the billing link
  1. NEW APCDKDTC
  1. S X1=DT,X2=-61 D C^%DTC S APCDKDTC("DATE")=X_.999999
  1. F S APCDKDTC("DATE")=$O(^AUPNVSIT("B",APCDKDTC("DATE"))) Q:APCDKDTC("DATE")="" D
  1. .S APCDKDTC("V")=0 F S APCDKDTC("V")=$O(^AUPNVSIT("B",APCDKDTC("DATE"),APCDKDTC("V"))) Q:APCDKDTC("V")'=+APCDKDTC("V") D
  1. ..S APCDKDTC("VR")=^AUPNVSIT(APCDKDTC("V"),0)
  1. ..Q:$P(APCDKDTC("VR"),U,11) ;deleted visit
  1. ..Q:'$P(APCDKDTC("VR"),U,9) ;no dep entries
  1. ..Q:$P(APCDKDTC("VR"),U,28)]"" ;already has billing link
  1. ..Q:'$$DTC(APCDKDTC("V")) ;no DTC's
  1. ..D LINK(APCDKDTC("V"))
  1. ..Q
  1. .Q
  1. K APCDKDTC
  1. Q
  1. ;
  1. START(APCDV) ;EP - FIND ORDERING VISIT OF dtc
  1. Q:'$G(APCDV)
  1. Q:'$D(^AUPNVSIT(APCDV))
  1. Q:$P(^AUPNVSIT(APCDV,0),U,11)
  1. Q:'$P(^AUPNVSIT(APCDV,0),U,9)
  1. Q:'$$DTC(APCDV)
  1. D LINK(APCDV) ;link to original visit
  1. Q
  1. ;
  1. ;
  1. DTC(V) ;EP if have 1 v tc with an ordering date/prov
  1. NEW T,F
  1. S (T,F)=0 F S T=$O(^AUPNVTC("AD",V,T)) Q:T'=+T!(F) I $P($G(^AUPNVTC(T,12)),U,2)]"",$P($G(^AUPNVTC(T,12)),U,11)]"" S F=1
  1. Q F
  1. NEW APCDX,APCDTC,ORDT,ORDPRV,DFN,DATE,PRV,ORDV,LINK
  1. ;
  1. ; -- get first v tran code with an ordering date and prov
  1. NEW F S (F,APCDTC)=0 F S APCDTC=$O(^AUPNVTC("AD",APCDVST,APCDTC)) Q:APCDTC'=+APCDTC!(F) D
  1. . S DFN=$P($G(^AUPNVTC(APCDTC,0)),U,2) Q:DFN="" ;patient
  1. . S ORDT=$P($P($G(^AUPNVTC(APCDTC,12)),U,11),".") Q:ORDT="" ;order date
  1. . S ORDPRV=$P($G(^AUPNVTC(APCDTC,12)),U,2) Q:ORDPRV="" ;ordering provider
  1. . S ORDPRV=$S($P(^DD(9000010.06,.01,0),U,2)[6:$P($G(^DIC(3,ORDPRV,0)),U,16),1:ORDPRV) Q:ORDPRV=""
  1. . S F=1
  1. . Q
  1. Q:'F
  1. ;
  1. ; -- look for orig visit based on order date for patient and provider
  1. K LINK S DATE=$$RVDT(ORDT)-.0001,END=$$RVDT(ORDT)+.9999999
  1. F S DATE=$O(^AUPNVSIT("AA",DFN,DATE)) Q:'DATE!(DATE>END)!($D(LINK)) D
  1. . ; -- find all visits for patient on order date
  1. . S ORDV=0 F S ORDV=$O(^AUPNVSIT("AA",DFN,DATE,ORDV)) Q:'ORDV D
  1. .. Q:ORDV=APCDVST ;don't link to itself
  1. .. ; -- find if ordering provider linked to this visit
  1. .. S PRV=0 F S PRV=$O(^AUPNVPRV("AD",ORDV,PRV)) Q:'PRV!($D(LINK)) D
  1. ... I +^AUPNVPRV(PRV,0)=ORDPRV S LINK=ORDV ;orig visit found
  1. ;
  1. ; -- if orig visit found, set link
  1. I $G(LINK) S DIE=9000010,DA=APCDVST,DR=".28////"_LINK D ^DIE
  1. Q
  1. ;
  1. ;
  1. RVDT(X) ; -- returns reverse date
  1. Q 9999999-X
  1. ;