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

PXBGCPT.m

Go to the documentation of this file.
  1. PXBGCPT ;ISL/JVS,PKR - GATHER CPT ; Mar 24, 2022@23:05
  1. ;;1.0;PCE PATIENT CARE ENCOUNTER;**73,149,124,211,229,230**;Aug 12, 1996;Build 4
  1. ;
  1. ; Reference to $$CPT^ICPTCOD in ICR #1995
  1. ;
  1. CPT(VISIT) ;--Gather the entries in the V CPT file
  1. ;
  1. K PXBKY,PXBSAM,PXBSKY,PXBPRV
  1. I '$D(^AUPNVCPT("AD",VISIT)) S PXBCNT=0 Q
  1. ;
  1. N CPT,CPTA,DA,DR,EDATA,EVENTDT,IEN,IENS,FIELDS,GROUP,MODIFIER
  1. N PROVIDER,PX124,PXBC,PXSFIL,PXMOD,PXSIEN,QUANTITY,VAUGHN
  1. A ;--Set array with CPT codes and associated modifiers
  1. S FIELDS=".01;.04;.05;.09;.15;.16;1*;1201;1202;1204"
  1. S IEN=0
  1. F S IEN=$O(^AUPNVCPT("AD",VISIT,IEN)) Q:IEN'>0 D
  1. .K VAUGHN,EDATA
  1. .S IENS=IEN_","
  1. .D GETS^DIQ(9000010.18,IENS,FIELDS,"EI","VAUGHN")
  1. .S CPT=$G(VAUGHN(9000010.18,IENS,".01","I")) ;PX*1.0*230 - Change to Internal to correct duplicate encounter issue
  1. .S QUANTITY=$G(VAUGHN(9000010.18,IENS,".16","E"))
  1. .S EVENTDT=$G(VAUGHN(9000010.18,IENS,"1201","I"))
  1. .I EVENTDT="" S EVENTDT=$P(^AUPNVSIT(VISIT,0),U,1)
  1. .S PROVIDER=$G(VAUGHN(9000010.18,IENS,"1204","E"))
  1. .S NARR=$E($G(VAUGHN(9000010.18,IENS,".04","E")),1,29)
  1. .I NARR="" S NARR=$P($$CPT^ICPTCOD(CPT,EVENTDT),U,3)
  1. .S EDATA=$E($G(VAUGHN(9000010.18,IENS,1202,"E")),1,29)
  1. .D CASE^PXBUTL
  1. .S GROUP=CPT_"^"_QUANTITY_"^"_PROVIDER_"^"_NARR
  1. .F PX124=.05,.09,.1,.11,.12,.13,.14,.15 D
  1. ..S DA=$G(VAUGHN(9000010.18,IENS,PX124,"E")),DR=DA,GROUP=GROUP_U_DA
  1. ..I DA S DR=$$XLATE^PXBGPOV(VISIT,DA),DA=$P(DR,U,2)
  1. ..I DR S PXBREQ(DA,"I")=$P(DR,U,4,20)
  1. .K DR,DA
  1. .S $P(GROUP,U,22)=EDATA,CPTA(CPT,IEN)=GROUP
  1. .S PXSFIL=9000010.181,PXSIEN=""
  1. .F S PXSIEN=$O(VAUGHN(PXSFIL,PXSIEN)) Q:PXSIEN="" D
  1. ..S PXMOD=VAUGHN(PXSFIL,PXSIEN,.01,"E")
  1. ..S CPTA(CPT,IEN,"MOD",+PXSIEN)=PXMOD
  1. ;
  1. B ;--Add line numbers
  1. ;
  1. I $D(CPTA) D
  1. .S PXBC=0,CPT=""
  1. .F S CPT=$O(CPTA(CPT)) Q:CPT="" D
  1. ..S IEN=0
  1. ..F S IEN=$O(CPTA(CPT,IEN)) Q:IEN="" S PXBC=PXBC+1 D
  1. ...S PXBKY(CPT,PXBC)=$G(CPTA(CPT,IEN))
  1. ...S PXBSAM(PXBC)=$G(CPTA(CPT,IEN))
  1. ...S PXBSKY(PXBC,IEN)=""
  1. ...S PXSIEN=0
  1. ...F S PXSIEN=$O(CPTA(CPT,IEN,"MOD",PXSIEN)) Q:PXSIEN="" D
  1. ....S PXBKY(CPT,PXBC,"MOD",PXSIEN)=CPTA(CPT,IEN,"MOD",PXSIEN)
  1. ....S PXBSAM(PXBC,"MOD",PXSIEN)=CPTA(CPT,IEN,"MOD",PXSIEN)
  1. ...I $P($G(CPTA(CPT,IEN)),"^",3)]"" D
  1. ....S PXBPRV($P($G(CPTA(CPT,IEN)),"^",3),$P($G(CPTA(CPT,IEN)),"^",1),IEN,PXBC)=QUANTITY
  1. S PXBCNT=+$G(PXBC)
  1. Q
  1. ;