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

APCDK.m

Go to the documentation of this file.
  1. APCDK ; IHS/CMI/LAB - NIGHTLY AMBULATORY VISIT V FILE RELINKER ; 15 Nov 2010 12:10 PM
  1. ;;2.0;IHS PCC SUITE;**1,5,10**;MAY 14, 2009;Build 88
  1. ;
  1. ;
  1. EN ;
  1. D ^APCDCHKJ ;run in hospital re-linker to link I's to H's
  1. D ^APCDKDTC ;dtc re-linker
  1. S X1=DT,X2=-91 D C^%DTC S APCDK("DATE")=X_.999999
  1. S U="^",(APCDK("VISITS"),APCDK("RELINK"))=0,APCDRUND=DT
  1. ;go through B index and get all visits since 61 days ago
  1. S APCDKVD=APCDK("DATE") F S APCDKVD=$O(^AUPNVSIT("B",APCDKVD)) Q:APCDKVD'=+APCDKVD D
  1. .S APCDKV=0 F S APCDKV=$O(^AUPNVSIT("B",APCDKVD,APCDKV)) Q:APCDKV'=+APCDKV D PROCESS
  1. K APCDKVD
  1. D EOJ
  1. Q
  1. EOJ ;
  1. S DA=1,DIE="^AUTTSITE(",DR=".24////^S X=DT" D ^DIE K DA,DIE,DR
  1. ;update rpms site file, no error checking
  1. S:$D(ZTQUEUED) ZTREQ="@"
  1. K APCDKV,APCDKNV,APCDKMM,APCDKVFL,APCDKVDG,APCDKIGR,APCDVDFN,APCDK12N,APCDK,APCDKX,APCDKDSP,APCDKHI,APCDKPAT,APCDKAVD,APCDKAVC,APCDKVCT,APCDKDVR,APCDRUND
  1. K DIE,DA,DR,DIU,DIV,DIC
  1. Q
  1. ;
  1. PROCESS ;Get vars and process visit
  1. Q:'$D(^AUPNVSIT(APCDKV))
  1. Q:$P(^AUPNVSIT(APCDKV,0),U,11)
  1. S DFN=$P(^AUPNVSIT(APCDKV,0),U,5) I DFN="",$P(^AUPNVSIT(APCDKV,0),U,2)]"",$P(^AUPNVSIT(APCDKV,0),U,2)'=DT,$$NOVFILES(APCDKV) S DA=APCDKV,DIK="^AUPNVSIT(" D ^DIK Q ;delete visits with no patient
  1. Q:'$P(^AUPNVSIT(APCDKV,0),U,9)
  1. I $$GET1^DIQ(9009080,DFN,"1.1","I")=APCDKV Q ;Quit if current ER patient
  1. I "AORSX"'[$P(^AUPNVSIT(APCDKV,0),U,7) Q ;only review ambulatory visits
  1. Q:$D(^AUPNVPOV("AD",APCDKV)) ;leave complete visit alone
  1. Q:$D(^AUPNVPRV("AD",APCDKV)) ;leave complete visit alone
  1. S DFN=$P(^AUPNVSIT(APCDKV,0),U,5)
  1. GVISITS ;go through all A and X visits on this date for this patient
  1. S APCDKXVS=0,(APCDKAVD,APCDKAVC)=9999999-$P($P(^AUPNVSIT(APCDKV,0),U),"."),APCDKAVD=(APCDKAVD-1)_".9999999"
  1. F S APCDKAVD=$O(^AUPNVSIT("AA",DFN,APCDKAVD)) Q:APCDKAVD="" Q:$P(APCDKAVD,".")'=APCDKAVC D
  1. .F APCDKXVS=0:0 S APCDKXVS=$O(^AUPNVSIT("AA",DFN,APCDKAVD,APCDKXVS)) Q:APCDKXVS="" D D CHECKV
  1. ..Q:APCDKV=APCDKXVS ;don't compare to self
  1. ..Q:$P(^AUPNVSIT(APCDKXVS,0),U,11)
  1. ..Q:'$D(^AUPNVPOV("AD",APCDKXVS)) ;do not use incomplete visits to link to
  1. ..Q:'$D(^AUPNVPRV("AD",APCDKXVS)) ;quit if not a complete visit
  1. ..Q:$P(^AUPNVSIT(APCDKXVS,0),U,6)'=$P(^AUPNVSIT(APCDKV,0),U,6) ;don't use visits with differing facilities
  1. ..Q:"AORSX"'[$P(^AUPNVSIT(APCDKXVS,0),U,7) ;link to ambulatory only
  1. ..NEW X,P,S S (S,X)=0,APCDKDSP="" F S X=$O(^AUPNVPRV("AD",APCDKXVS,X)) Q:X'=+X S:$P(^AUPNVPRV(X,0),U,4)="P" APCDKDPP=+^(0) I $P(^(0),U,4)="S"!($P(^(0),U,4)="") S S=S+1,$P(APCDKDSP,U,S)=+^(0)
  1. ..S APCDKVFL=9000010 F S APCDKVFL=$O(^DIC(APCDKVFL)) Q:APCDKVFL>9000010.99!(APCDKVFL'=+APCDKVFL) D VENTRIES
  1. ..;go through all V file entries
  1. .Q
  1. Q
  1. VENTRIES ;
  1. S APCDKVDG=^DIC(APCDKVFL,0,"GL"),APCDKIGR=APCDKVDG_"""AD"",APCDKV,APCDVDFN)"
  1. S APCDVDFN="" F APCDVI=1:1 S APCDVDFN=$O(@APCDKIGR) Q:APCDVDFN="" D CHECK
  1. Q
  1. ;
  1. CHECK ;
  1. S APCDK12N=APCDKVDG_APCDVDFN_",12)"
  1. Q:'$D(@(APCDK12N))
  1. S APCDK12N=@(APCDK12N)
  1. Q:APCDK12N=""
  1. ENCPROV ;
  1. ;if both v record encounter provider and any provider in V Provider for this visit match, re-link and quit (both must have a value)
  1. ;G ORDPROV ;IHS/ANMC/LAB - 9/23/98 per Chris Saddler ;IHS/CMI/LAB
  1. I APCDKVFL'=9000010.28,APCDKVFL'=9000010.11 G ORDPROV ;IHS/CMI/LAB for V NOTE
  1. S APCDKVFP=""
  1. G:$P(APCDK12N,U,4)="" ORDPROV
  1. I $P(^DD(9000010.06,.01,0),U,2)[6,$P(^DD(APCDKVFL,1204,0),U,2)[200 S APCDKVFP=$P(^VA(200,$P(APCDK12N,U,4),0),U,16)
  1. I $P(^DD(9000010.06,.01,0),U,2)[200,$P(^DD(APCDKVFL,1204,0),U,2)[200 S APCDKVFP=$P(APCDK12N,U,4)
  1. I $P(^DD(9000010.06,.01,0),U,2)[6,$P(^DD(APCDKVFL,1204,0),U,2)[6 S APCDKVFP=$P(APCDK12N,U,4)
  1. I APCDKVFP="" G ORDPROV
  1. I $G(APCDKDPP)=APCDKVFP D RELINK Q
  1. S X=0 F I=1:1 S X=$P(APCDKDSP,U,I) Q:X="" I APCDKVFP=X D RELINK Q
  1. ;I $G(APCDKDPP)=$P(APCDK12N,U,4) D RELINK Q
  1. ;S X=0 F I=1:1 S X=$P(APCDKDSP,U,I) Q:X="" I $P(APCDK12N,U,4)=X D RELINK Q
  1. ORDPROV ;
  1. S APCDKVFP=""
  1. G:$P(APCDK12N,U,2)="" CLIN
  1. I $P(^DD(9000010.06,.01,0),U,2)[6,$P(^DD(APCDKVFL,1202,0),U,2)[200 S APCDKVFP=$P(^VA(200,$P(APCDK12N,U,2),0),U,16)
  1. I $P(^DD(9000010.06,.01,0),U,2)[200,$P(^DD(APCDKVFL,1202,0),U,2)[200 S APCDKVFP=$P(APCDK12N,U,2)
  1. I $P(^DD(9000010.06,.01,0),U,2)[6,$P(^DD(APCDKVFL,1202,0),U,2)[6 S APCDKVFP=$P(APCDK12N,U,2)
  1. I APCDKVFP="" G CLIN
  1. I $G(APCDKDPP)=APCDKVFP D RELINK Q
  1. S X=0 F I=1:1 S X=$P(APCDKDSP,U,I) Q:X="" I APCDKVFP=X D RELINK Q
  1. ;G:$P(APCDK12N,U,2)="" CLIN
  1. ;I $G(APCDKDPP)=$P(APCDK12N,U,2) D RELINK Q
  1. ;S X=0 F I=1:1 S X=$P(APCDKDSP,U,I) Q:X="" I $P(APCDK12N,U,2)=X D RELINK Q
  1. CLIN ;check clinic
  1. ;Q ;per discussion with Linda ;IHS/CMI/LAB - check site parameter after discussion w/Chris 1/6/04
  1. ;I '$P($G(^APCDSITE(DUZ(2),0)),U,27) Q ; NO LINKING BY CLINIC PER LINDA FELS
  1. ;if both v record clinic and visit record clinic are not null, and they match, re-link v record and quit
  1. ;I $P(APCDK12N,U,3)]"",$P(^AUPNVSIT(APCDKXVS,0),U,8)]"",$P(APCDK12N,U,3)=$P(^AUPNVSIT(APCDKXVS,0),U,8) D RELINK Q
  1. ORDERLOC ;check ordering location
  1. I $P(APCDK12N,U,15)]"",$P(^AUPNVSIT(APCDKXVS,0),U,22)]"",$P(APCDK12N,U,15)=$P(^AUPNVSIT(APCDKXVS,0),U,22) D RELINK Q
  1. Q
  1. ;W !,"Would have re-linked ",APCDKVFL," ",APCDVDFN," to visit ",APCDKXVS Q
  1. K DIE,DR,DA,DIU,DIV S DITC="",DA=APCDVDFN,DIE=APCDKVDG,DR=".03////"_APCDKXVS D ^DIE K DIE,DA,DR,DIU,DIV,DITC
  1. ;I APCDKVFL=9000010.09 D LABLRO
  1. I (APCDKVFL=9000010.09)!(APCDKVFL=9000010.25)!(APCDKVFL=9000010.31) D LABLRO ;NEW LINE
  1. NEW AUPNVSIT S AUPNVSIT=APCDKXVS D MOD^AUPNVSIT
  1. ;update new log with from visit, to visit, multiple of v file
  1. D UPDLOG(APCDKVFL,APCDVDFN,APCDKXVS,APCDKV,APCDRUND,"N")
  1. Q
  1. ;
  1. UPDLOG(VF,VFI,TV,FV,RD,TYPE) ;EP - CALLED FROM APCDKDE
  1. D EN^XBNEW("UPDLOG1^APCDK","VF;VFI;TV;FV;RD;TYPE")
  1. Q
  1. UPDLOG1 ;EP
  1. NEW APCDLOGX
  1. NEW DIC,DIADD,DLAYGO,DIE,DR,DA,X
  1. S APCDLOGX=$O(^APCDKLOG("AA",RD,FV,0))
  1. I APCDLOGX D UPDMULT K APCDLOGX Q
  1. S X=RD,DIADD=1,DLAYGO=9001003.91,DIC(0)="L",DIC="^APCDKLOG(",DIC("DR")=".02////"_$P(^AUPNVSIT(TV,0),U,5)_";.03////"_$P(^AUPNVSIT(TV,0),U,1)_";.04////"_FV_";.05////"_TV_";.06////"_TYPE K DD,D0,DO D FILE^DICN K DIC,DIADD,DLAYGO,X
  1. S APCDLOGX=+Y
  1. ;
  1. UPDMULT ;
  1. S X="`"_VF,DIC="^APCDKLOG("_APCDLOGX_",11,",DIC(0)="L",DIC("P")=$P(^DD(9001003.91,1101,0),U,2),DA(1)=APCDLOGX
  1. D ^DIC
  1. ;NO ERROR
  1. S DIE=DIC K DIC
  1. S DA=+Y
  1. S DR=".02////"_VFI
  1. D ^DIE
  1. K DIC,X,DA,DIE,DR
  1. Q
  1. LABLRO ;
  1. ;if this is a v lab go fix LR(68.999999901 for backwards compatibility with ALR and LAB
  1. ;S APCDKORD=$P($G(^AUPNVLAB(APCDVDFN,11)),U,2)
  1. NEW APCDFILE S APCDFILE=APCDKVDG_"APCDVDFN,11)" ;IHS/ITSC/LJF
  1. S APCDKORD=$P($G(@APCDFILE),U,2) ;IHS/ITSC/LJF 4/21/2004
  1. I APCDKORD]"" D
  1. .K APCDKIEN S I=0 F S I=$O(^LRO(68.999999901,"AC",APCDKV,I)) Q:I'=+I I $P($G(^LRO(68.999999901,I,0)),U,3)=APCDKORD S APCDKIEN=I
  1. .I $G(APCDKIEN),$P(^LRO(68.999999901,APCDKIEN,0),U,2)'=APCDKXVS S DA=APCDKIEN,DIE="^LRO(68.999999901,",DR=".02////"_APCDKXVS D ^DIE K DA,DR,DIE
  1. K APCDKIEN,APCDKORD,I
  1. Q
  1. CHECKV ;check visit to see if should be deleted
  1. S X=$$EN1^APCDKFDE(APCDKV)
  1. Q
  1. ;
  1. NOVFILES(V) ;check to see if any vfiles, if so return a 1
  1. I $D(^AUPNVMSR("AD",V)) Q 0
  1. I $D(^AUPNVINP("AD",V)) Q 0
  1. I $D(^AUPNVCHS("AD",V)) Q 0
  1. I $D(^AUPNVEYE("AD",V)) Q 0
  1. I $D(^AUPNVDEN("AD",V)) Q 0
  1. I $D(^AUPNVPRV("AD",V)) Q 0
  1. I $D(^AUPNVPOV("AD",V)) Q 0
  1. I $D(^AUPNVPRC("AD",V)) Q 0
  1. I $D(^AUPNVLAB("AD",V)) Q 0
  1. I $D(^AUPNVIMM("AD",V)) Q 0
  1. I $D(^AUPNVSK("AD",V)) Q 0
  1. I $D(^AUPNVXAM("AD",V)) Q 0
  1. I $D(^AUPNVMED("AD",V)) Q 0
  1. I $D(^AUPNVTRT("AD",V)) Q 0
  1. I $D(^AUPNVCPT("AD",V)) Q 0
  1. I $D(^AUPNVTM("AD",V)) Q 0
  1. I $D(^AUPNVDXP("AD",V)) Q 0
  1. I $D(^AUPNVRAD("AD",V)) Q 0
  1. I $D(^AUPNVHF("AD",V)) Q 0
  1. I $D(^AUPNVPTH("AD",V)) Q 0
  1. I $D(^AUPNVMIC("AD",V)) Q 0
  1. I $D(^AUPNVNOT("AD",V)) Q 0
  1. I $D(^AUPNVER("AD",V)) Q 0
  1. I $D(^AUPNVBB("AD",V)) Q 0
  1. I $D(^AUPNVPHN("AD",V)) Q 0
  1. I $D(^AUPNVTC("AD",V)) Q 0
  1. I $D(^AUPNVNT("AD",V)) Q 0
  1. I $D(^AUPNVELD("AD",V)) Q 0
  1. I $D(^AUPNVTRC("AD",V)) Q 0
  1. I $D(^AUPNVUNH("AD",V)) Q 0
  1. I $D(^AUPNVTXC("AD",V)) Q 0
  1. I $D(^AUPNVAST("AD",V)) Q 0
  1. I $D(^AUPNVPOD("AD",V)) Q 0
  1. Q 1