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

ADEAPC.m

Go to the documentation of this file.
  1. ADEAPC ;IHS/HQW/MJL - DENTAL PCC LINK [ 08/26/2008 7:16 AM ]
  1. ;;6.0;ADE;**12,16,20**;APRIL 1999;Build 16
  1. ;IHS/SET/HMW 20050414 Rewrote this routine to call BSDAPI
  1. ;IHS/CMI/LAB 20080826 Added interactive PCC Link
  1. ;
  1. ;------->INITIALIZE
  1. Q:'$D(^ADEPARAM(+^AUTTSITE(1,0),0)) ;Q:$P(^(0),U,5)'="y" ;IHS/SET/HMW 2-6-2003 **12** PCC Link mandatory
  1. K APCDALVR
  1. S AUPNTALK=1,APCDANE=1,APCDAUTO=1
  1. S APCDALVR("APCDDATE")=$P(^ADEPCD(ADEDFN,0),U,2) S APCDALVR("APCDLOC")="`"_$P(^(0),U,3)
  1. S APCDALVR("APCDPAT")=ADEPAT
  1. S APCDALVR("APCDCLN")=$O(^DIC(40.7,"C",56,0))
  1. S:APCDALVR("APCDCLN") APCDALVR("APCDCLN")="`"_APCDALVR("APCDCLN")
  1. S APCDALVR("APCDACS")=""
  1. S APCDALVR("APCDTYPE")="I"
  1. S ADEAPC("ADELOC")=$P(APCDALVR("APCDLOC"),"`",2)
  1. S ADEAPC("ADELOC")=$O(^ADEPARAM(+^AUTTSITE(1,0),1,"B",ADEAPC("ADELOC"),0))
  1. S ADEAPC("ADETYP")=""
  1. I ADEAPC("ADELOC")]"",$D(^ADEPARAM(+^AUTTSITE(1,0),1,ADEAPC("ADELOC"),0)) S ADEAPC("ADETYP")=$P(^ADEPARAM(+^AUTTSITE(1,0),1,ADEAPC("ADELOC"),0),U,3)
  1. I ADEAPC("ADETYP")]"" S APCDALVR("APCDTYPE")=ADEAPC("ADETYP")
  1. K ADEAPC("ADELOC"),ADEAPC("ADETYP")
  1. ;------->IF CONTRACT VISIT SET APPROPRIATE APC VARIABLES
  1. D CONTRACT
  1. ;------->CREATE VISIT OR APPEND TO EXISTING
  1. D DSERV
  1. I 'ADENEWVS D
  1. . Q:'$D(^ADEPCD(ADEDFN,"PCC"))
  1. . D ^ADEAPC2
  1. . D VMOD
  1. . D ^ADEAPC1
  1. E D
  1. . N ADEV,ADEADD
  1. . S ADEV=0,ADEADD=""
  1. . D VISIT(.ADEV,.ADEADD)
  1. . I '+ADEV D BULLT Q
  1. . ;/IHS/OIT/GAB 10.27.15 COMMENT BELOW FOR ICD10, VISIT WILL GO TO THE PCC CODING QUEUE TO CHANGE THE "ZZZ.999" UNCODED DIAGNOSIS BEFORE IT GOES TO BILLING
  1. . ;D REV(ADEV) ;IHS/OIT/HMW 9-22-2005 **16**Mark visit as reviewed
  1. . S APCDALVR("APCDVSIT")=ADEV
  1. . I ADEADD="ADD" D
  1. . . ;MAKE POV, PRV AND VDEN ENTRIES
  1. . . N ADEV
  1. . . D ^ADEAPC1
  1. . E D
  1. . . ;APPENDING TO EXISTING VISIT SO MAKE VDEN ENTRIES
  1. . . N ADEW,XMB,ADEHIT
  1. . . S ADEHIT=0
  1. . . D DENTRY^ADEAPC1
  1. . . D:$D(ADEW) DENTRY3^ADEAPC1
  1. . . D:$D(XMB) BULLT^ADEAPC1
  1. . . ;modify any existing primary provider on the visit to be secondary
  1. . . ;unless it's the same as the ADE-entered provider
  1. . . I $D(^AUPNVPRV("AD",ADEV)) D
  1. . . . N ADEVPRV,APCDALVR,DA,DIE,ADEPRV,ADEDA
  1. . . . S ADEPRV=$S($P(^DD(9000010.06,.01,0),U,2)["P6":$P(^ADEPCD(ADEDFN,0),U,4),1:^DIC(16,$P(^ADEPCD(ADEDFN,0),U,4),"A3"))
  1. . . . S ADEDA=0 F S ADEDA=$O(^AUPNVPRV("AD",ADEV,ADEDA)) Q:'+ADEDA D
  1. . . . . N DA
  1. . . . . S DA=ADEDA
  1. . . . . Q:'$D(^AUPNVPRV(DA,0))
  1. . . . . Q:$P(^AUPNVPRV(DA,0),U,4)'="P"
  1. . . . . I $P(^AUPNVPRV(DA,0),U)=ADEPRV S ADEHIT=1 Q ;If prim provider is ADE provider, do nothing
  1. . . . . S DIE=9000010.06
  1. . . . . S DR=".04////S" ;otherwise, make it secondary
  1. . . . . D ^DIE,MOD^AUPNVSIT
  1. . . . Q
  1. . . ;Add the ADE-entered dental provider as the primary, unless it was already there
  1. . . I 'ADEHIT D VPRV^ADEAPC1
  1. . . ;Add a VPOV entry if none already exists on the visit.
  1. . . I '$D(^AUPNVPOV("AD",ADEV)) D VPOV^ADEAPC1
  1. . . Q
  1. . D ADDPCC^ADEAPC2("301///"_ADEV,ADEDFN)
  1. . Q
  1. ;
  1. ;------->END
  1. END K APCDALVR,ADEOP,ADEADA,ADEQTY,ADEI,ADEC,ADESER,ADEX,ADEV,ADEY,Y,XMB
  1. K ADETSUR
  1. K ADETFEE ;IHS/SET/HMW 2-6-2003 **12**
  1. Q
  1. ;
  1. REV(ADEV) ;IHS/OIT/HMW 9-22-2005 **16**Mark visit as reviewed
  1. N ADEFDA,ADEIEN,ADEMSG
  1. S ADEFDA(9000010,ADEV_",",1111)="R"
  1. D UPDATE^DIE(,"ADEFDA","ADEIEN","ADEMSG")
  1. Q
  1. ;
  1. VISIT(ADEV,ADEADD) ;
  1. ;
  1. N ADEBSD,ADEBSOUT,ADEHIT
  1. S ADEV=0,ADEADD="",ADEHIT=0
  1. ;
  1. ;If GETVISIT API not installed, call APCDALV directly and add a new visit
  1. I $T(GETVISIT^APCDAPI4)="" D Q
  1. . D EN^APCDALV
  1. . I $D(APCDALVR("APCDAFLG")) S ADEV=0 Q
  1. . S ADEV=APCDALVR("APCDVSIT")
  1. . S ADEADD="ADD"
  1. . Q
  1. ;
  1. S ADEBSD("PAT")=ADEPAT
  1. S ADEBSD("VISIT DATE")=APCDALVR("APCDDATE")
  1. S ADEBSD("SITE")=$P(APCDALVR("APCDLOC"),"`",2)
  1. S ADEBSD("VISIT TYPE")=APCDALVR("APCDTYPE")
  1. S ADEBSD("SRV CAT")="A"
  1. S ADEBSD("TIME RANGE")=-1
  1. S ADEBSD("CLINIC CODE")=$P(APCDALVR("APCDCLN"),"`",2)
  1. S ADEBSD("USR")=$G(DUZ)
  1. N APCDALVR
  1. D GETVISIT^APCDAPI4(.ADEBSD,.ADEBSOUT)
  1. ;
  1. ;IHS/CMI/LAB - added line below to allow a site to have an interactive pcc link
  1. I $P($G(^ADEPARAM(+^AUTTSITE(1,0),0)),U,11) D INTERACT Q
  1. ;IHS/CMI/LAB - end mods
  1. ;
  1. S ADEV=0 F S ADEV=$O(ADEBSOUT(ADEV)) Q:'+ADEV D Q:ADEHIT
  1. . I ADEBSOUT(ADEV)="ADD" S ADEHIT=1,ADEADD="ADD" Q
  1. . ;SKIP IF VISIT HAS EXISTING V DENTAL ENTRIES
  1. . Q:$D(^AUPNVDEN("AD",ADEV))
  1. . ;VISIT MATCHES AND HAS NO V DENTAL ENTRIES, SO USE IT
  1. . S ADEHIT=1,ADEADD="" Q
  1. ;
  1. ;IF NONE OF THE RETURNED VISITS WORKED, THEN FORCE AN ADD
  1. I '+ADEV D
  1. . S ADEBSD("FORCE ADD")=1
  1. . D GETVISIT^APCDAPI4(.ADEBSD,.ADEBSOUT)
  1. . Q:'+ADEBSOUT(0)
  1. . S ADEV=$O(ADEBSOUT(0))
  1. . S ADEADD="ADD"
  1. ;
  1. Q
  1. ;
  1. VMOD S APCDALVR("APCDATMP")="[APCDALVR 9000010 (MOD)]" D EN^APCDALVR
  1. I $D(APCDALVR("APCDAFLG")) S XMB(7)="PCC VISIT"
  1. Q
  1. DSERV S ADESER=0
  1. F ADEI=1:1 S ADESER=$O(^ADEPCD(ADEDFN,"ADA",ADESER)),ADEC=ADEI-1 Q:'+ADESER D
  1. . N ADENOD
  1. . S ADENOD=^ADEPCD(ADEDFN,"ADA",ADESER,0)
  1. . Q:$P($G(^AUTTADA($P(ADENOD,U),0)),U,7)=1 ;IHS/SET/HMW 4-13-2005 **16**
  1. . S ADEADA(ADEI)=$P(ADENOD,U)
  1. . S ADEQTY(ADEI)=1
  1. . S ADEOP(ADEI)=$P(ADENOD,U,2)
  1. . S ADETFEE(ADEI)=$P(ADENOD,U,3) ;IHS/SET/HMW 2-6-2003 **12**
  1. . S ADETSUR(ADEI)=$P(ADENOD,U,4)
  1. ;F ADEI=1:1:ADEC S:$P(^AUTTADA(ADEADA(ADEI),0),U,7)=1 Y=0 ;IHS/OIT/HMW 4-13-2005 **16**
  1. Q
  1. CONTRACT ;IHS/SET/HMW 2-6-2003 Modified this subroutine to append ` to APCDALVR("APCDCLN")
  1. I ADECON D
  1. . S APCDALVR("APCDTYPE")="CONTRACT"
  1. . S APCDALVR("APCDCLN")=$O(^DIC(40.7,"C",99,""))
  1. . S:APCDALVR("APCDCLN") APCDALVR("APCDCLN")="`"_APCDALVR("APCDCLN")
  1. . S APCDALVR("APCDTNQ")="CONTRACT DENTAL/ORAL HEALTH VISIT"
  1. Q
  1. BULLT S %DT="",X="T" D ^%DT X ^DD("DD")
  1. S XMB(1)=$P(^DPT(ADEPAT,0),U,1)_" Patient DFN= "_ADEPAT,XMB(2)=Y,XMB(6)="A PCC visit could not be created for this patient",XMB="ADEVISIT" S XMDUZ=.5 D ^XMB
  1. Q
  1. ;
  1. INTERACT ;
  1. ;IHS/CMI/LAB - interactive pcc link
  1. ;first, if 1 visit passed back and it was an add use it and quit
  1. I $P(ADEBSOUT(0),U)=1 S V=$O(ADEBSOUT(0)) I ADEBSOUT(V)="ADD" S ADEV=V,ADEHIT=1,ADEADD="ADD" Q
  1. ;since more than one passed back display them to the user and quit
  1. SELECT ; SELECT EXISTING VISIT
  1. NEW ADEV1,ADEC,ADEA,ADEX,ADEA,ADEB,ADEVLT,ADEVLOC
  1. S ADEV=""
  1. W !!,"PATIENT: ",$P(^DPT(ADEPAT,0),U)," has one or more VISITs on this date.",!,"If one of these is your visit, please select it",!
  1. K ADEV1 S (ADEC,ADEA,ADEX)="",ADEV1=0 F S ADEV1=$O(ADEBSOUT(ADEV1)) Q:ADEV1'=+ADEV1 S ADEX=$G(^AUPNVSIT(ADEV1,0)),ADEX11=$G(^AUPNVSIT(ADEV1,11)) D WRITE
  1. S ADEC=ADEC+1 W !,ADEC," Create New Visit",!
  1. K DIR
  1. S DIR(0)="N^1:"_ADEC,DIR("A")="Select" KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) S ADEBSD("FORCE ADD")=1 D BSDADD1 Q
  1. I ADEC=Y S ADEBSD("FORCE ADD")=1 D BSDADD1 Q
  1. S ADEV=ADEX1(Y)
  1. Q
  1. ;
  1. WRITE ; WRITE VISITS FOR SELECT
  1. S ADEC=ADEC+1,ADEX1(ADEC)=ADEV1
  1. S ADEVLT=$P(+ADEX,".",2),ADEVLT=$S(ADEVLT="":"<NONE>",$L(ADEVLT)=1:ADEVLT_"0:00 ",1:$E(ADEVLT,1,2)_":"_$E(ADEVLT,3,4)_$E("00",1,2-$L($E(ADEVLT,3,4)))_" ")
  1. S ADEVLOC=""
  1. I $P(ADEX,U,6),$D(^AUTTLOC($P(ADEX,U,6),0)) S ADEVLOC=$P(^(0),U,7),ADEVLOC=ADEVLOC_$E(" ",1,4-$L(ADEVLOC))
  1. S:ADEVLOC="" ADEVLOC="...."
  1. W !,ADEC," TIME: ",ADEVLT,"LOC: ",ADEVLOC," TYPE: ",$P(ADEX,U,3)," CAT: ",$P(ADEX,U,7)," CLINIC: ",$S($P(ADEX,U,8)]"":$E($P(^DIC(40.7,$P(ADEX,U,8),0),U),1,8),1:"<NONE>") D
  1. .W ?57,"DEC: ",$S($P(ADEX,U,9):$P(ADEX,U,9),1:0),$S($P(ADEX11,U,3)]"":" VCN:"_$P(ADEX11,U,3),1:"")
  1. .I $P(ADEX,U,22) W !?3,"Hospital Location: ",$P($G(^SC($P(ADEX,U,22),0)),U)
  1. .S ADETIU=$$PRIMPROV^APCLV(ADEV1,"N") I ADETIU]"" W !?3,"Provider on Visit: ",ADETIU
  1. .S ADEA=0,ADEB="" F S ADEA=$O(^AUPNVDEN("AD",ADEV1,ADEA)) Q:ADEA'=+ADEA S ADEB=ADEB_$$VAL^XBDIQ1(9000010.05,ADEA,.01)_" ; "
  1. .I ADEB]"" W !?3,"Dental ADA Codes: ",ADEB
  1. Q
  1. ;
  1. BSDADD1 ;
  1. ;IF NONE OF THE RETURNED VISITS WORKED, THEN FORCE AN ADD
  1. I '+ADEV D
  1. . S ADEBSD("FORCE ADD")=1
  1. . D GETVISIT^APCDAPI4(.ADEBSD,.ADEBSOUT)
  1. . Q:'+ADEBSOUT(0)
  1. . S ADEV=$O(ADEBSOUT(0))
  1. . S ADEADD="ADD"
  1. ;
  1. Q