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

ACPTPST2.m

Go to the documentation of this file.
  1. ACPTPST2 ; IHS/ASDST/DMJ,SDR - CPT POST INIT ; [ 01/08/2004 10:18 AM ]
  1. ;;2.08;CPT FILES;;DEC 17, 2007
  1. START ;START HERE
  1. MOD ;EP - hcpcs modifier
  1. S ACPTFL="acpt2008.c"
  1. S ACPTCSV="" ;acpt*2.06*1
  1. W !!,"Reading HCPCS MODIFIER file, file name ",ACPTFL,!
  1. D OPEN^%ZISH("CPTSFILE",ACPTPTH,ACPTFL,"R")
  1. I POP U IO(0) W !,"Could not open hcpcs modifier file." Q
  1. F ACPTCNT=1:1 D Q:$$STATUS^%ZISH
  1. .U IO R X Q:$$STATUS^%ZISH
  1. .;S ACPTCD=$E(ACPTCD,1,2) ;acpt*2.06*1 ;acpt*2.07*1
  1. .S ACPTCD=$E(X,1,2) ;acpt*2.07*1
  1. .;S ACPTCD=$E(X,4,5) ;acpt*2.06*1 ;acpt*2.07*1
  1. .;I ACPTCD=ACPTCSV S ACPTFLAG=1 ;acpt*2.06*1 ;acpt*2.07*1
  1. .;start old code acpt*2.07*1
  1. .;S ACPTLNE=$E(X,6,10) ;acpt*2.06*1
  1. .;S ACPTACDE=$E(X,293) ;action code acpt*2.06*1
  1. .;Q:ACPTACDE="" ;no action code acpt*2.06*1
  1. .;Q:ACPTACDE="N" ;no change to code acpt*2.06*1
  1. .;Q:ACPTACDE="P" ;payment change-not stored acpt*2.06*1
  1. .;I ACPTACDE="D" D Q ;delete code and quit acpt*2.06*1
  1. .;.S ACPTIEN=$O(^AUTTCMOD("B",ACPTCD,0)) ;acpt*2.06*1
  1. .;.Q:+ACPTIEN=0 ;acpt*2.06*1
  1. .;.Q:$P($G(^AUTTCMOD(ACPTIEN,0)),"^",4) ;acpt*2.06*1
  1. .;.S $P(^AUTTCMOD(ACPTIEN,0),"^",4)=ACPTYR ;acpt*2.06*1
  1. .;end old code acpt*2.07*1
  1. .S A=$E(X,3,30) D DESC S ACPTSD=ACPTDESC
  1. .S A=$E(X,31,210) D DESC S ACPTLD=ACPTDESC
  1. .I '$D(^AUTTCMOD("B",ACPTCD)) D
  1. ..S ACPTIEN=$A($E(ACPTCD,1))_$A($E(ACPTCD,2))
  1. ..S ^AUTTCMOD(ACPTIEN,0)=ACPTCD
  1. ..S ^AUTTCMOD("B",ACPTCD,ACPTIEN)=""
  1. ..S $P(^AUTTCMOD(ACPTIEN,0),"^",3)=ACPTYR
  1. .;get IEN and edit existing entry
  1. .S ACPTIEN=$O(^AUTTCMOD("B",ACPTCD,0))
  1. .;Q:ACPTIEN'>0 ;acpt*2.07*1
  1. .;I +ACPTLN=1 D ;acpt*2.06*1
  1. .;start old code acpt*2.07*1
  1. .;I +ACPTLNE=100 D ;acpt*2.06*1
  1. .;.K ^AUTTCMOD(ACPTIEN,1)
  1. .;.S ^AUTTCMOD(ACPTIEN,1,0)=""
  1. .;S ACPTLN=$E(ACPTLNE,3) ;acpt*2.06*1
  1. .;S ^AUTTCMOD(ACPTIEN,1,+ACPTLN,0)=ACPTLD ;acpt*2.06*1
  1. .;S $P(^AUTTCMOD(ACPTIEN,1,0),"^",3,4)=+ACPTLN_"^"_+ACPTLN ;acpt*2.06*1
  1. .;end old code start new code acpt*2.07*1
  1. .K ^AUTTCMOD(ACPTIEN,1) ;acpt*2.07*1
  1. .S ^AUTTCMOD(ACPTIEN,1,1,0)=ACPTLD
  1. .S $P(^AUTTCMOD(ACPTIEN,1,0),"^",3,4)=1_"^"_1
  1. .;end new code acpt*2.07*1
  1. .S:ACPTSD'="" $P(^AUTTCMOD(ACPTIEN,0),"^",2)=ACPTSD
  1. .;the below modifiers are reused and no short description was sent so what is there is wrong for the new code
  1. .I ACPTCD="AE"!(ACPTCD="AF")!(ACPTCD="AG")!(ACPTCD="AK")!(ACPTCD="CB")!(ACPTCD="FP")!(ACPTCD="QA") S $P(^AUTTCMOD(ACPTIEN,0),"^",2)="" ;acpt*2.07*1
  1. .S $P(^AUTTCMOD(ACPTIEN,0),U,2)=$$UPC($P($G(^AUTTCMOD(ACPTIEN,0)),U,2)) ;acpt*2.07*1
  1. .S $P(^AUTTCMOD(ACPTIEN,0),"^",4)="" ;acpt*2.06*1
  1. .D DOTS^ACPTPOST(ACPTCNT)
  1. .S ACPTCSV=ACPTCD,ACPTFLAG=""
  1. D ^%ZISC
  1. K ACPTSD,ACPTLD ;acpt*2.06*1
  1. K ACPTCSV,ACPTFLAG ;acpt*2.06*1
  1. K ACPTLNE ;acpt*2.06*1
  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. S ACPTDESC=$$UPC(ACPTDESC)
  1. K ACPTWORD
  1. Q
  1. UPC(X) ;EP - UPPER CASE
  1. N Y
  1. S Y=$TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
  1. Q Y
  1. XREF ;EP - RE-CROSS REFERENCE FILE
  1. W !,"WILL NOW RE-INDEX CPT MODIFIERS FILE.",!
  1. S DIK="^AUTTCMOD(" D IXALL^DIK
  1. Q
  1. FIXCPT ; EP - removes entries where the .01 field is null and marked inactive
  1. S ACPTDA=0
  1. F S ACPTDA=$O(^ICPT(ACPTDA)) Q:'ACPTDA D
  1. .S ACPTCD=$P($G(^ICPT(ACPTDA,0)),"^")
  1. .I ACPTCD="" D ;if no code
  1. ..K ^ICPT(ACPTDA)
  1. Q