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

ABMDTFPC.m

Go to the documentation of this file.
  1. ABMDTFPC ; IHS/SD/SDR - Apply per cent change to fee sched ;
  1. ;;2.6;IHS Third Party Billing System;**2,14,21,27**;NOV 12, 2009;Build 486
  1. ;IHS/SD/SDR 2.6*2 3PMS10003A modified to track changes in effective date multiples and who updated
  1. ;IHS/SD/SDR 2.6*21 HEAT112857 Fixed increase fee even when old data structure is incomplete.
  1. ;IHS/SD/SDR 2.6*27 CR8894 Fixed how it calculates fees; it was rounding everything off to a whole number which doesn't work for the Drugs section
  1. ;
  1. START ;START
  1. W !!,"This routine will apply a percentage increase or decrease to"
  1. W !,"a selected segment or the entire fee schedule."
  1. S DIR(0)="Y",DIR("A")="Continue",DIR("B")="NO" D ^DIR K DIR Q:Y'=1
  1. S DIC="^ABMDFEE(",DIC(0)="AEMQ" D ^DIC Q:Y<0 S ABMFEE=+Y
  1. ID ;INCREASE OR DECREASE
  1. S DIR(0)="S^1:INCREASE;2:DECREASE",DIR("B")=1 D ^DIR K DIR Q:'Y S ABMID=Y,ABMIDNM=Y(0)
  1. S DIR(0)="N^0.01:100:2",DIR("A")="Enter PERCENTAGE" D ^DIR K DIR Q:'Y S ABMPCT=+Y
  1. S ABMMULT=$S(ABMID=1:1+(ABMPCT/100),1:(100-ABMPCT)/100)
  1. ;S DIR(0)="S^1:ALL;11:SURGERY;13:HCPCS;15:RADIOLOGY;17:LABORATORY;19:MEDICINE;21:DENTAL;23:ANESTHESIA;25:DRUG;31:ROOM & BOARD" ;abm*2.6*2 3PMS10003A
  1. S DIR(0)="S^1:ALL;11:SURGERY;13:HCPCS;15:RADIOLOGY;17:LABORATORY;19:MEDICAL;21:DENTAL;23:ANESTHESIA;25:DRUG;31:REVENUE CODE (ROOM & BOARD)" ;abm*2.6*2 3PMS10003A
  1. S DIR("A")="Select FEE SCHEDULE CATEGORY"
  1. D ^DIR K DIR Q:'Y S ABMCAT=Y,ABMCNAME=Y(0)
  1. ;start new code abm*2.6*2 3PMS10003A
  1. D ^XBFMK
  1. S DIR(0)="D"
  1. S DIR("A")="Effective Date of "_ABMIDNM
  1. S DIR("B")="TODAY"
  1. D ^DIR K DIR
  1. Q:$D(DIRUT)
  1. S ABMEDT=Y
  1. ;end new code 3PMS10003A
  1. W !!,"I am going to apply a ",ABMPCT," percent ",ABMIDNM," to category ",ABMCNAME
  1. ;W !," for fee schedule #",ABMFEE,"." ;abm*2.6*2 3PMS10003A
  1. W !," for fee schedule #",ABMFEE,", with an effective date of "_$$SDT^ABMDUTL(ABMEDT)_"." ;abm*2.6*2 3PMS10003A
  1. S DIR(0)="Y",DIR("A")="ARE YOU SURE",DIR("B")="NO" D ^DIR K DIR Q:Y'=1
  1. I ABMCAT'=1 D CAT1
  1. I ABMCAT=1 D
  1. .F ABMCAT=11,13,15,17,19,21,23,25,31 D CAT1
  1. ;start new code abm*2.6*2 3PMS10003A
  1. D ^XBFMK
  1. S DA(1)=ABMFEE
  1. S DIC="^ABMDFEE("_DA(1)_",1,"
  1. S DIC(0)="MQL"
  1. S DIC("P")=$P(^DD(9002274.01,1,0),U,2)
  1. D NOW^%DTC
  1. S X=%
  1. S DIC("DR")=".02////"_DUZ_";.04////"_$E(ABMIDNM,1)_";.05////"_ABMPCT
  1. D ^DIC
  1. ;end new code 3PMS10003A
  1. ;start new abm*2.6*27 IHS/SD/SDR CR8894
  1. ;reindex all entries for look up
  1. S DIK="^ABMDFEE("
  1. S DA=ABMFEE
  1. D IX^DIK
  1. ;end new abm*2.6*27 IHS/SD/SDR CR8894
  1. W !!,"Finished.",!!
  1. K ABMCAT,ABMFEE,ABMID,ABMMULT,ABMPCT,ABMCTR,ABMCNAME,ABMIDNM
  1. S DIR(0)="E" D ^DIR K DIR
  1. Q
  1. CAT1 ;CHANGE FEES ONE CATEGORY
  1. S ABMI=0
  1. F S ABMI=$O(^ABMDFEE(ABMFEE,ABMCAT,ABMI)) Q:'ABMI D
  1. .S ABMCTR=+$G(ABMCTR)+1 W:'(ABMCTR#10) "."
  1. .;start old abm*2.6*21 HEAT112857
  1. .;S ABMOFE=$P(^ABMDFEE(ABMFEE,ABMCAT,ABMI,0),U,2)
  1. .;S ABMNFE=ABMOFE*ABMMULT
  1. .;S ABMNFE=ABMNFE+.5
  1. .;S ABMNFE=ABMNFE\1
  1. .;S $P(^ABMDFEE(ABMFEE,ABMCAT,ABMI,0),U,2)=ABMNFE
  1. .;end old start new abm*2.6*21 IHS/SD/SDR HEAT112857
  1. .S ABMOFE=+$P($G(^ABMDFEE(ABMFEE,ABMCAT,ABMI,0)),U,2)
  1. .I ABMOFE'=0 D
  1. ..;start old abm*2.6*27 IHS/SD/SDR CR8894
  1. ..;S ABMNFE=ABMOFE*ABMMULT
  1. ..;S ABMNFE=ABMNFE+.5
  1. ..;S ABMNFE=ABMNFE\1
  1. ..;end old start abm*2.6*27 IHS/SD/SDR CR8894
  1. ..D ROUND ;abm*2.6*27 IHS/SD/SDR CR8894
  1. ..S $P(^ABMDFEE(ABMFEE,ABMCAT,ABMI,0),U,2)=ABMNFE
  1. .;end new abm*2.6*21 IHS/SD/SDR HEAT112857
  1. .D EFFDT
  1. Q
  1. ;start new code abm*2.6*2 3PMS10003A
  1. ;
  1. ;start new abm*2.6*27 IHS/SD/SDR CR8894
  1. ROUND ;EP
  1. I ABMCAT'=25 D
  1. .S ABMNFE=ABMOFE*ABMMULT
  1. .S ABMNFE=ABMNFE+.5
  1. .S ABMNFE=ABMNFE\1
  1. I ABMCAT=25 D
  1. .S ABMNFE=ABMOFE*ABMMULT
  1. .S ABMDEC=$L($P(ABMOFE,".",2))
  1. .S ABMNFE=$J(ABMNFE,0,ABMDEC)
  1. Q
  1. ;end new abm*2.6*27 IHS/SD/SDR CR8894
  1. ;
  1. EFFDT ;
  1. D GETFEES
  1. ;
  1. S ABMTFE=ABMTFE*ABMMULT
  1. S ABMTFE=ABMTFE+.5
  1. S ABMTFE=ABMTFE\1
  1. ;
  1. S ABMPFE=ABMPFE*ABMMULT
  1. S ABMPFE=ABMPFE+.5
  1. S ABMPFE=ABMPFE\1
  1. ;
  1. D ^XBFMK
  1. S DA(2)=ABMFEE
  1. S DA(1)=ABMI
  1. S DIC="^ABMDFEE("_DA(2)_","_ABMCAT_","_DA(1)_",1,"
  1. S DIC(0)="L"
  1. S DIC("P")=$P(^DD(9002274.01_ABMCAT,1,0),U,2)
  1. S X=ABMEDT
  1. D ^DIC
  1. S ABMENTRY=+Y
  1. D ^XBFMK
  1. S DA(2)=ABMFEE
  1. S DA(1)=ABMI
  1. S DIE="^ABMDFEE("_DA(2)_","_ABMCAT_","_DA(1)_",1,"
  1. S DA=ABMENTRY
  1. S DR=".02////"_ABMNFE
  1. S DR=DR_";.03////"_ABMTFE
  1. S DR=DR_";.04////"_ABMPFE
  1. S DR=DR_";.05////"_DT_";.06////"_DUZ
  1. D ^DIE
  1. Q
  1. GETFEES ;
  1. S ABMDT=0
  1. F S ABMDT=$O(^ABMDFEE(ABMFEE,ABMCAT,ABMI,1,"B",ABMDT)) Q:(+$G(ABMDT)=0) D
  1. .S ABMDIEN=0
  1. .F S ABMDIEN=$O(^ABMDFEE(ABMFEE,ABMCAT,ABMI,1,"B",ABMDT,ABMDIEN)) Q:(+$G(ABMDIEN)=0) D
  1. ..;start new abm*2.6*21 IHS/SD/SDR HEAT112857
  1. ..I ABMOFE=0 D
  1. ...S ABMOFE=+$P($G(^ABMDFEE(ABMFEE,ABMCAT,ABMI,1,ABMDIEN,0)),U,2)
  1. ...;start old abm*2.6*27 IHS/SD/SDR CR8894
  1. ...;S ABMNFE=ABMOFE*ABMMULT
  1. ...;S ABMNFE=ABMNFE+.5
  1. ...;S ABMNFE=ABMNFE\1
  1. ...;end old abm*2.6*27 IHS/SD/SDR CR8894
  1. ...D ROUND ;abm*2.6*27 IHS/SD/SDR CR8894
  1. ...;S ^ABMDFEE(ABMFEE,ABMCAT,ABMI,0)=ABMI_U_ABMNFE_U_ABMEDT ;abm*2.6*27 IHS/SD/SDR CR8894
  1. ...S $P(^ABMDFEE(ABMFEE,ABMCAT,ABMI,0),U,2)=ABMNFE ;abm*2.6*27 IHS/SD/SDR CR8894
  1. ...S $P(^ABMDFEE(ABMFEE,ABMCAT,ABMI,0),U,3)=ABMEDT ;abm*2.6*27 IHS/SD/SDR CR8894
  1. ..;end new abm*2.6*21 IHS/SD/SDR HEAT112857
  1. ..S ABMTFE=+$P($G(^ABMDFEE(ABMFEE,ABMCAT,ABMI,1,ABMDIEN,0)),U,3) ;technical charge
  1. ..S ABMPFE=+$P($G(^ABMDFEE(ABMFEE,ABMCAT,ABMI,1,ABMDIEN,0)),U,4) ;professional charge
  1. Q
  1. ;end new code 3PMS10003A