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

ACPT24P1.m

Go to the documentation of this file.
  1. ACPT24P1 ; IHS/ASDST/DMJ,SDR - CPT POST INIT ; [ 02/03/2004 12:28 PM ]
  1. ;;2004;CPT FILES;**1,2**;JAN 14, 2004
  1. ;
  1. ;
  1. START S ACPTYR=3040000
  1. D MSG
  1. D DIR
  1. S I=99999,ACPTTO=999999 D INA
  1. D HREAD ;hcpcs
  1. D FINISH
  1. D XREFM
  1. W !!,"INSTALL COMPLETE",!!
  1. S DIR(0)="E" D ^DIR
  1. K DIR,ACPT,ACPTYR
  1. Q
  1. INA ;set date deleted for all codes
  1. W !!,"Updating Year Deleted Field.",!
  1. F S I=$O(^ICPT(I)) Q:I>ACPTTO!('I) D
  1. .Q:$P($G(^ICPT(I,0)),"^",7)'=3040000
  1. .S $P(^ICPT(I,0),"^",7)=ACPTYR ;put date deleted
  1. .S $P(^ICPT(I,0),"^",4)="" ;remove inactive flag
  1. .S ACPTEFDT=$O(^ICPT(I,60,"B",3040101,0)) ;get effective date entry
  1. .Q:ACPTEFDT=""
  1. .S DA(1)=I
  1. .S DIK="^ICPT("_DA(1)_",60,"
  1. .S DA=ACPTEFDT
  1. .D ^DIK
  1. .D DOTS(I)
  1. K ACPTTO
  1. Q
  1. DOTS(X) ;EP - WRITE OUT A DOT EVERY HUNDRED
  1. U IO(0)
  1. W:'(X#100) "."
  1. Q
  1. ;
  1. HREAD ;READ HCPCS FILE
  1. K ACPTCD,ACPTFLAG,ACPTIEN,ACPTDESC
  1. S ACPTCSV=""
  1. W !,"Installing ",$E(ACPTYR,1,3)+1700," HCPCS codes.",!
  1. S ACPTFL="acpt2004.01h"
  1. D OPEN^%ZISH("CPTHFILE",ACPTPTH,ACPTFL,"R")
  1. I POP U IO(0) W !,"Could not open HCPCS file." Q
  1. U IO(0) W !,"Reading HCPCS Codes File.",!
  1. F ACPTCNT=1:1 D Q:$$STATUS^%ZISH
  1. .U IO R X Q:$$STATUS^%ZISH
  1. .S ACPTCD=$E(X,1,5)
  1. .I ACPTCD=ACPTCSV S ACPTFLAG=1
  1. .Q:ACPTCD'?1U4N
  1. .S A=$E(X,7,40) D DESC S ACPTSD=ACPTDESC
  1. .S A=$E(X,42,299) D DESC S ACPTLD=ACPTDESC
  1. .I '$D(^ICPT("B",ACPTCD)) D
  1. ..S ACPTIEN=$A($E(ACPTCD))_$E(ACPTCD,2,5)
  1. ..S ^ICPT(ACPTIEN,0)=ACPTCD
  1. ..S ^ICPT("B",ACPTCD,ACPTIEN)=""
  1. ..S $P(^ICPT(ACPTIEN,0),"^",6)=ACPTYR
  1. ..S $P(^ICPT(ACPTIEN,0),"^",7)=""
  1. ..K DIC
  1. ..S DA(1)=ACPTIEN
  1. ..S DIC="^ICPT("_DA(1)_",60,"
  1. ..S DIC(0)="L"
  1. ..S DIC("P")=$P(^DD(81,60,0),"^",2)
  1. ..S X="01/01/2004"
  1. ..S DIC("DR")=".02////1"
  1. ..D ^DIC
  1. .S ACPTIEN=$O(^ICPT("B",ACPTCD,0))
  1. .Q:ACPTIEN'>0
  1. .K ^ICPT(ACPTIEN,"D")
  1. .S ^ICPT(ACPTIEN,"D",0)="^81.01A^^"
  1. .S ^ICPT(ACPTIEN,"D",1,0)=ACPTLD
  1. .S:ACPTSD'="" $P(^ICPT(ACPTIEN,0),"^",2)=ACPTSD
  1. .S $P(^ICPT(ACPTIEN,0),"^",7)=""
  1. .D DOTS(ACPTCNT)
  1. .S ACPTCSV=ACPTCD,ACPTFLAG=""
  1. D ^%ZISC
  1. K ACPTSD,ACPTLD
  1. K ACPTCSV,ACPTFLAG
  1. Q
  1. ;
  1. DIR ;ASK DIRECTORY WHERE FILES WERE LOADED
  1. W !
  1. S DIR(0)="F",DIR("A")="Enter directory where CPT files are located."
  1. S DIR("B")="/usr/spool/uucppublic/"
  1. D ^DIR K DIR
  1. Q:$D(DUOUT)!$D(DTOUT)!$D(DIRUT)
  1. I ^%ZOSF("OS")["UNIX" D
  1. .S Y=$TR(Y,"\","/")
  1. .S:$E(Y)'="/" Y="/"_Y
  1. .S:$E(Y,$L(Y))'="/" Y=Y_"/"
  1. I ^%ZOSF("OS")'["UNIX" D
  1. .S Y=$TR(Y,"/","\")
  1. .I $E(Y)'="\",Y'[":" S Y="\"_Y
  1. .S:$E(Y,$L(Y))'="\" Y=Y_"\"
  1. S ACPTPTH=Y
  1. Q
  1. FILE ;ASK FOR FILE NAME
  1. W !
  1. S DIR(0)="F"
  1. D ^DIR K DIR
  1. S Y=$TR(Y,"/\")
  1. S ACPTFL=Y
  1. Q
  1. DESC ;STRIP TRAILING BLANKS FROM DESCRIPTION FIELD
  1. S ACPTDESC=""
  1. N I F I=0:1:31 S A=$TR(A,$C(I))
  1. N I F I=1:1:$L(A," ") D
  1. .S ACPTWORD=$P(A," ",I)
  1. .Q:ACPTWORD=""
  1. .S:I>1 ACPTDESC=ACPTDESC_" "
  1. .S ACPTDESC=ACPTDESC_ACPTWORD
  1. K ACPTWORD
  1. Q
  1. FINISH ;
  1. S I=99999,ACPTTO=999999
  1. W !!,"Updating Effective Date Field.",!
  1. F S I=$O(^ICPT(I)) Q:I>ACPTTO!('I) D
  1. .Q:$P($G(^ICPT(I,0)),"^",7)'=3040000
  1. .S DA(1)=I
  1. .S DIC="^ICPT("_DA(1)_",60,"
  1. .S DIC(0)="L"
  1. .S DIC("P")=$P(^DD(81,60,0),"^",2)
  1. .S X="01/01/2004"
  1. .S DIC("DR")=".02////0"
  1. .D ^DIC
  1. .D DOTS(I)
  1. K ACPTTO
  1. Q
  1. XREFM ;RE-CROSS REFERENCE FILE
  1. W !,"WILL NOW RE-INDEX MODIFIER FILE.",!
  1. S DIK="^AUTTCMOD(" D IXALL^DIK
  1. Q
  1. MSG ;display message
  1. F I=1:1 D Q:ACPTTXT["***end***"
  1. .S ACPTTXT=$P($T(TXT+I),";;",2)
  1. .Q:ACPTTXT["end"
  1. .I ACPTTXT="NOTE:" W $$EN^ACPTVDF("RVN")
  1. .W !,ACPTTXT
  1. .I ACPTTXT="NOTE:" W $$EN^ACPTVDF("RVF")
  1. K ACPTTXT
  1. Q
  1. TXT ;text lines
  1. ;;CPT Version 2.04 Patch 1 contains HCPCs update for 2004.
  1. ;;The install will attempt to read the HCPCS codes file (acpt2004.h),
  1. ;;and update the codes accordingly.
  1. ;;
  1. ;;***end***
  1. Q
  1. CAT2S ;
  1. S A=$P(X," ",2,999) D DESC
  1. S ACPTCDN=""
  1. F ACPTCDC=1:1:5 S ACPTCDN=ACPTCDN_$A($E(ACPTCD,ACPTCDC))
  1. I '$D(^ICPT(+ACPTCDN)) D
  1. .S ^ICPT(+ACPTCDN,0)=ACPTCD
  1. .S $P(^ICPT(+ACPTCDN,0),"^",6)=ACPTYR
  1. .S:ACPTYR>DT $P(^ICPT(+ACPTCDN,0),"^",4)=1
  1. .K DIC
  1. .S DA(1)=+ACPTCDN
  1. .S DIC="^ICPT("_DA(1)_",60,"
  1. .S DIC(0)="L"
  1. .S DIC("P")=$P(^DD(81,60,0),"^",2)
  1. .S X="01/01/2004"
  1. .S DIC("DR")=".02////1"
  1. .D ^DIC
  1. S $P(^ICPT(+ACPTCDN,0),"^",2)=ACPTDESC
  1. S:$P(^ICPT(+ACPTCDN,0),"^",6)<DT $P(^ICPT(+ACPTCDN,0),"^",4)=""
  1. S $P(^ICPT(+ACPTCDN,0),"^",7)=""
  1. D CAT(ACPTCDN)
  1. Q
  1. CAT2L ;
  1. S ACPTLN=$E(X,6,7)
  1. S ACPTCDN=""
  1. F ACPTCDC=1:1:5 S ACPTCDN=ACPTCDN_$A($E(ACPTCD,ACPTCDC))
  1. S A=$P(X," ",2,999) D DESC
  1. I '$D(^ICPT(+ACPTCDN)) D
  1. .S ^ICPT(+ACPTCDN,0)=ACPTCD
  1. .S $P(^ICPT(+ACPTCDN,0),"^",6)=ACPTYR
  1. .S:ACPTYR>DT $P(^ICPT(+ACPTCDN,0),"^",4)=1
  1. .K DIC
  1. .S DA(1)=+ACPTCDN
  1. .S DIC="^ICPT("_DA(1)_",60,"
  1. .S DIC(0)="L"
  1. .S DIC("P")=$P(^DD(81,60,0),"^",2)
  1. .S X="01/01/2004"
  1. .S DIC("DR")=".02////1"
  1. .D ^DIC
  1. I +ACPTLN=1 D
  1. .K ^ICPT(+ACPTCDN,"D")
  1. .S ^ICPT(+ACPTCDN,"D",0)="^81.01A^^"
  1. S ^ICPT(+ACPTCDN,"D",+ACPTLN,0)=ACPTDESC
  1. S $P(^ICPT(+ACPTCDN,"D",0),"^",3,4)=+ACPTLN_"^"_+ACPTLN
  1. D DOTS(ACPTCNT)
  1. Q
  1. UPKG ;update package file
  1. I '$G(DUZ) D
  1. .S DUZ=1
  1. .S DUZ(0)="@"
  1. I '$G(DT) D
  1. .D NOW^%DTC
  1. .S DT=$P(%,".",1)
  1. S DA=$O(^DIC(9.4,"C","ACPT",0))
  1. Q:'DA
  1. S DIE="^DIC(9.4,"
  1. S DR="13///2.04"
  1. D ^DIE
  1. S DA(1)=DA
  1. S X=2.04
  1. S DIC="^DIC(9.4,DA(1),22,"
  1. S DIC(0)="LX"
  1. D ^DIC
  1. Q:+Y<0
  1. S DA=+Y
  1. S DIE=DIC
  1. S DR="1///3031231;2///"_DT_";3///`"_DUZ
  1. D ^DIE
  1. Q