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

AUM91RL2.m

Go to the documentation of this file.
  1. AUM91RL2 ;IHS/SD/DMJ,SDR - ICD 9 CODES FOR FY 2009 ; [ 08/18/2003 11:02 AM ]
  1. ;;10.2;TABLE MAINTENANCE;;MAR 09, 2010
  1. ;
  1. ICD0NEW ;
  1. D RSLT^AUM91RL1("ICD OPERATION/PROCEDURE, NEW PROCEDURE CODES:") ;ICD9PNEW
  1. D RSLT^AUM91RL1($J("",8)_"CODE DESCRIPTION")
  1. D RSLT^AUM91RL1($J("",8)_"---- -----------")
  1. NEW AUMDA,AUMI,AUMLN,DA,DIE,DR
  1. F AUMI=1:1 S AUMLN=$P($T(ICD9PNEW+AUMI^AUM91D),";;",2) Q:AUMLN="END" D
  1. .S AUMLN=$TR(AUMLN,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
  1. .S Y=$$IXDIC^AUM91RL1("^ICD0(","ILX","AB",$P(AUMLN,U))
  1. .I Y=-1 D RSLT^AUM91RL1("ERROR: Lookup/Add of CODE '"_$P(AUMLN,U)_"' FAILED.") Q
  1. .S (DA,AUMIEN)=+Y
  1. .S DR="4///"_$P(AUMLN,U,2) ;operation/procedure
  1. .S DR=DR_";10///"_$P(AUMLN,U,3) ;description
  1. .;
  1. .S DR=DR_";100///@" ;inactive flag
  1. .S DR=DR_";102///@" ;inactive date
  1. .;
  1. .S DR=DR_";9999999.04///3081001" ;date added
  1. .S DR=DR_";12///3081001" ;activation date
  1. .;
  1. .S DR=DR_";9.5///"_$P(AUMLN,U,4) ;use with sex
  1. .S DIE="^ICD0("
  1. .S AUMDA=DA
  1. .D DIE^AUM91RL1
  1. .;
  1. .;effective date multiple
  1. .K AUMFLG
  1. .S AUMLDT=0
  1. .S AUMLDT=$O(^ICD0(AUMIEN,66,"B",9999999),-1) ;get last date in multiple
  1. .I +AUMLDT>0 D ;entry exists; check if status is correct (active)
  1. ..S AUMMIEN=$O(^ICD0(AUMIEN,66,"B",AUMLDT,0))
  1. ..I +AUMMIEN=0 S AUMLDT=0 Q ;quit if incomplete entry for some reason
  1. ..I AUMLDT=3081001 Q ;already has 10/01/2008 entry
  1. ..I $P($G(^ICD0(AUMIEN,66,AUMMIEN,0)),U,2)=1 Q ;already active
  1. ..S AUMLDT=0 ;set date to zero so it will add entry
  1. .I +AUMLDT=0 D ;no entry or needs a new entry
  1. ..K DIC,DIE,DA,X,Y
  1. ..S DA(1)=AUMIEN
  1. ..S DIC="^ICD0("_DA(1)_",66,"
  1. ..S DIC("P")=$P(^DD(80.1,66,0),U,2)
  1. ..S DIC(0)="L"
  1. ..S X="3081001" ;use active date of 10/01/2008
  1. ..S DIC("DR")=".02////1"
  1. ..D ^DIC
  1. .;
  1. .;operation/proc multiple
  1. .S AUMLDT=0
  1. .S AUMLDT=$O(^ICD0(AUMIEN,67,"B",9999999),-1) ;get last entry
  1. .I +AUMLDT>0 D ;there is an entry
  1. ..S AUMMIEN=$O(^ICD0(AUMIEN,67,"B",AUMLDT,0))
  1. ..I +AUMMIEN=0 S AUMLDT=0 Q ;quit if incomplete entry
  1. ..I AUMLDT=3081001 Q ;already has 10/01/2008 entry
  1. ..I $P($G(^ICD0(AUMIEN,67,AUMMIEN,0)),U,2)=$P(AUMLN,U,2) Q
  1. ..S AUMLDT=0 ;set date to zero so it will add entry
  1. .I +AUMLDT=0 D ;no entry or needs a new entry
  1. ..K DIC,DIE,DA,X,Y
  1. ..S DA(1)=AUMIEN
  1. ..S DIC="^ICD0("_DA(1)_",67,"
  1. ..S DIC("P")=$P(^DD(80.1,67,0),U,2)
  1. ..S DIC(0)="L"
  1. ..S X="3081001" ;use active date of 10/01/2008
  1. ..S DIC("DR")="1////"_$P(AUMLN,U,2) ;oper/proc
  1. ..D ^DIC
  1. .;
  1. .;description multiple
  1. .S AUMODESC=""
  1. .S AUMLDT=0
  1. .S AUMLDT=$O(^ICD0(AUMIEN,68,"B",9999999),-1)
  1. .I +AUMLDT>0 D ;there is an entry
  1. ..S AUMMIEN=$O(^ICD0(AUMIEN,68,"B",AUMLDT,0))
  1. ..I +AUMMIEN=0 S AUMLDT=0 Q
  1. ..I AUMLDT=3081001 Q ;already has 10/01/2008 entry
  1. ..I $G(^ICD0(AUMIEN,68,AUMMIEN,1))=$P(AUMLN,U,3) Q
  1. ..S AUMLDT=0
  1. .I +AUMLDT=0 D ;no entry or needs a new entry
  1. ..K DIC,DIE,DA,X,Y
  1. ..S DA(1)=AUMIEN
  1. ..S DIC="^ICD0("_DA(1)_",68,"
  1. ..S DIC("P")=$P(^DD(80.1,68,0),U,2)
  1. ..S DIC(0)="L"
  1. ..S X="3081001" ;use active date of 10/01/2008
  1. ..S DIC("DR")="1////"_$P(AUMLN,U,3) ;description
  1. ..D ^DIC
  1. .;
  1. .; loads MDC and DRGs if any
  1. .S (AUMMANDD,AUMMDC,AUMDRGS)=""
  1. .S AUMMANDD=$P(AUMLN,U,5)
  1. .F AUMK=1:1:$L(AUMMANDD,"-") D
  1. ..S AUMREC=""
  1. ..S AUMREC=$P(AUMMANDD,"~",AUMK)
  1. ..S AUMMDC=$P(AUMREC,"-")
  1. ..S AUMDRGS=$P(AUMREC,"-",2)
  1. ..I $G(AUMMDC)'="" D
  1. ...K DIC,X,Y,DA
  1. ...S DA(1)=AUMDA
  1. ...S DIC="^ICD0("_DA(1)_",""MDC"","
  1. ...S DIC("P")=$P(^DD(80.1,7,0),U,2)
  1. ...S DIC(0)="LXI"
  1. ...S DLAYGO=80.1
  1. ...S X=AUMMDC
  1. ...D ^DIC
  1. ...I AUMDRGS="" K Y
  1. ...K DIC,DIE,X,DA
  1. ...I +$G(Y)>0,$G(AUMDRGS)'="" D
  1. ....F AUMJ=1:1:$L(AUMDRGS,",") D
  1. .....S AUMDRG=$P(AUMDRGS,",",AUMJ)
  1. .....S DR=AUMJ_"////"_AUMDRG
  1. .....S DA(1)=AUMDA
  1. .....S DA=AUMMDC
  1. .....S DIE="^ICD0("_DA(1)_",""MDC"","
  1. .....D DIE^AUM91RL1
  1. .I $G(AUMFLG) D RSLT^AUM91RL1("ERROR: Edit of fields for CODE '"_$P(AUMLN,U,1)_"' FAILED.") Q
  1. .D RSLT^AUM91RL1($J("",8)_$P(AUMLN,U,1)_$J("",4)_$E($P(AUMLN,U,2),1,30))
  1. .Q
  1. Q
  1. ;
  1. ; -----------------------------------------------------
  1. ICD0REV ;
  1. D RSLT^AUM91RL1("ICD OPERATION/PROCEDURE, REVISED CODES:") ;("ICD9PREV")
  1. D RSLT^AUM91RL1($J("",8)_"CODE DESCRIPTION")
  1. D RSLT^AUM91RL1($J("",8)_"---- -----------")
  1. NEW AUMDA,AUMI,AUMLN,DA,DIE,DR
  1. F AUMI=1:1 S AUMLN=$P($T(ICD9PREV+AUMI^AUM91B),";;",2) Q:AUMLN="END" D
  1. .S AUMLN=$TR(AUMLN,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
  1. .S Y=$$IXDIC^AUM91RL1("^ICD0(","ILX","AB",$P(AUMLN,U))
  1. .I Y=-1 D RSLT^AUM91RL1("ERROR: Lookup/Add of CODE '"_$P(AUMLN,U)_"' FAILED.") Q
  1. .S DA=+Y
  1. .S DR="4///"_$P(AUMLN,U,2) ;operation/procedure
  1. .S DR=DR_";10///"_$P(AUMLN,U,3) ;description
  1. .;
  1. .S DR=DR_";100///@" ;inactive flag
  1. .S DR=DR_";102///@" ;inactive date
  1. .;
  1. .S DR=DR_";2100000///"_DT ;date updated
  1. .;
  1. .S DR=DR_";9.5///"_$P(AUMLN,U,4) ;use with sex
  1. .S DIE="^ICD0("
  1. .S AUMDA=DA
  1. .D DIE^AUM91RL1
  1. .;
  1. .;effective date multiple
  1. .K AUMFLG
  1. .S AUMLDT=0
  1. .S AUMLDT=$O(^ICD0(AUMIEN,66,"B",9999999),-1) ;get last date in multiple
  1. .I +AUMLDT>0 D ;entry exists; check if status is correct (active)
  1. ..S AUMMIEN=$O(^ICD0(AUMIEN,66,"B",AUMLDT,0))
  1. ..I +AUMMIEN=0 S AUMLDT=0 Q ;quit if incomplete entry for some reason
  1. ..I $P($G(^ICD0(AUMIEN,66,AUMMIEN,0)),U,2)=1 Q ;already active
  1. ..S AUMLDT=0 ;set date to zero so it will add entry
  1. .I +AUMLDT=0 D ;no entry or needs a new entry
  1. ..K DIC,DIE,DA,X,Y
  1. ..S DA(1)=AUMIEN
  1. ..S DIC="^ICD0("_DA(1)_",66,"
  1. ..S DIC("P")=$P(^DD(80.1,66,0),U,2)
  1. ..S DIC(0)="L"
  1. ..S X="3081001" ;use active date of 10/01/2008
  1. ..S DIC("DR")=".02////1"
  1. ..D ^DIC
  1. ..I Y<0 S AUMFLG=1
  1. .;
  1. .;operation/proc multiple
  1. .S AUMLDT=0
  1. .S AUMLDT=$O(^ICD0(AUMIEN,67,"B",9999999),-1) ;get last entry
  1. .I +AUMLDT>0 D ;there is an entry
  1. ..S AUMMIEN=$O(^ICD0(AUMIEN,67,"B",AUMLDT,0))
  1. ..I +AUMMIEN=0 S AUMLDT=0 Q ;quit if incomplete entry
  1. ..I $P($G(^ICD0(AUMIEN,67,AUMMIEN,0)),U,2)=$P(AUMLN,U,2) Q
  1. ..S AUMLDT=0 ;set date to zero so it will add entry
  1. .I +AUMLDT=0 D ;no entry or needs a new entry
  1. ..K DIC,DIE,DA,X,Y
  1. ..S DA(1)=AUMIEN
  1. ..S DIC="^ICD0("_DA(1)_",67,"
  1. ..S DIC("P")=$P(^DD(80.1,67,0),U,2)
  1. ..S DIC(0)="L"
  1. ..S X="3081001" ;use active date of 10/01/2008
  1. ..S DIC("DR")="1////"_$P(AUMLN,U,2) ;oper/proc
  1. ..D ^DIC
  1. ..I Y<0 S AUMFLG=1
  1. .;
  1. .;description multiple
  1. .S AUMODESC=""
  1. .S AUMLDT=0
  1. .S AUMLDT=$O(^ICD0(AUMIEN,68,"B",9999999),-1)
  1. .I +AUMLDT>0 D ;there is an entry
  1. ..S AUMMIEN=$O(^ICD0(AUMIEN,68,"B",AUMLDT,0))
  1. ..I +AUMMIEN=0 S AUMLDT=0 Q
  1. ..I $P($G(^ICD0(AUMIEN,68,AUMMIEN,0)),U)=$P(AUMLN,U,3) Q
  1. ..S AUMLDT=0
  1. .I +AUMLDT=0 D ;no entry or needs a new entry
  1. ..K DIC,DIE,DA,X,Y
  1. ..S DA(1)=AUMIEN
  1. ..S DIC="^ICD0("_DA(1)_",68,"
  1. ..S DIC("P")=$P(^DD(80.1,68,0),U,2)
  1. ..S DIC(0)="L"
  1. ..S X="3081001" ;use active date of 10/01/2008
  1. ..S DIC("DR")="1////"_$P(AUMLN,U,3) ;description
  1. ..D ^DIC
  1. ..I Y<0 S AUMFLG=1
  1. .;
  1. .;loads MDC and DRGs if any
  1. .K ^ICD0(AUMDA,"MDC") ;clear existing entries
  1. .S (AUMMANDD,AUMMDC,AUMDRGS)=""
  1. .S AUMMANDD=$P(AUMLN,U,5)
  1. .F AUMK=1:1:$L(AUMMANDD,"-") D
  1. ..S AUMREC=""
  1. ..S AUMREC=$P(AUMMANDD,"~",AUMK)
  1. ..S AUMMDC=$P(AUMREC,"-")
  1. ..S AUMDRGS=$P(AUMREC,"-",2)
  1. ..I $G(AUMMDC)'="" D
  1. ...S DIC="^ICD0("_AUMDA_",""MDC"","
  1. ...S DIC("P")=$P(^DD(80.1,7,0),U,2)
  1. ...S DA(1)=AUMDA
  1. ...S DIC(0)="LXI"
  1. ...S DLAYGO=80.1
  1. ...S X=AUMMDC
  1. ...D ^DIC
  1. ...I AUMDRGS="" K Y
  1. ...I +$G(Y)>0,$G(AUMDRGS)'="" D
  1. ....F AUMJ=1:1:$L(AUMDRGS,",") D
  1. .....S AUMDRG=$P(AUMDRGS,",",AUMJ)
  1. .....S DR=AUMJ_"///"_AUMDRG
  1. .....S DA=AUMMDC
  1. .....S DIE="^ICD0("_AUMDA_",""MDC"","
  1. .....D DIE^AUM91RL1
  1. .I $G(AUMFLG) D RSLT^AUM91RL1("ERROR: Edit of fields for CODE '"_$P(AUMLN,U,1)_"' FAILED.") Q
  1. .D RSLT^AUM91RL1($J("",8)_$P(AUMLN,U,1)_$J("",4)_$E($P(AUMLN,U,2),1,30))
  1. .Q
  1. Q
  1. ICD0INAC ;
  1. D RSLT^AUM91RL1("ICD 9 PROCEDURE, INACTIVE CODES:") ;("ICD9PINA")
  1. D RSLT^AUM91RL1($J("",8)_"CODE DESCRIPTION")
  1. D RSLT^AUM91RL1($J("",8)_"---- -----------")
  1. NEW AUMI,DA,DIE,DR,X
  1. F AUMI=1:1 S X=$P($T(ICD9PINA+AUMI^AUM91E),";;",2) Q:X="END" D
  1. .S Y=$$IXDIC^AUM91RL1("^ICD0(","ILX","AB",$P(X,U))
  1. .I Y=-1 D RSLT^AUM91RL1(" CODE '"_X_"' not found (that's OK).") Q
  1. .S DA=+Y
  1. .S DIE="^ICD0("
  1. .S DR="102///3081001" ;inactive flag
  1. .S AUMDA=DA
  1. .D DIE^AUM91RL1
  1. .;
  1. .K DIC,DIE,DA,X,Y
  1. .S DA(1)=AUMIEN
  1. .S DIC="^ICD0("_DA(1)_",66,"
  1. .S DIC("P")=$P(^DD(80.1,66,0),U,2)
  1. .S DIC(0)="L"
  1. .S X="3081001" ;use active date of 10/01/2008
  1. .S DIC("DR")=".02////0"
  1. .D ^DIC
  1. .;
  1. .I Y<0 D RSLT^AUM91RL1("ERROR: Edit of INACTIVE DATE field for CODE '"_$P(X,U,1)_"' FAILED.") Q
  1. .D RSLT^AUM91RL1($J("",8)_$P(^ICD0(AUMDA,0),U,1)_$J("",4)_$E($P(^ICD0(AUMDA,0),U,4),1,30))
  1. .Q
  1. Q
  1. ICD0OREV ;
  1. D RSLT^AUM91RL1("ICD OPERATION/PROCEDURE, OTHER REVISED CODES:") ;("ICD0OREV")
  1. D RSLT^AUM91RL1($J("",8)_"CODE DESCRIPTION")
  1. D RSLT^AUM91RL1($J("",8)_"---- -----------")
  1. NEW AUMDA,AUMI,AUMLN,DA,DIE,DR
  1. F AUMI=1:1 S AUMLN=$P($T(ICD0OREV+AUMI^AUM91C),";;",2) Q:AUMLN="END" D
  1. .S AUMLN=$TR(AUMLN,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
  1. .S Y=$$IXDIC^AUM91RL1("^ICD0(","ILX","AB",$P(AUMLN,U))
  1. .I Y=-1 D RSLT^AUM91RL1("ERROR: Lookup/Add of CODE '"_$P(AUMLN,U)_"' FAILED.") Q
  1. .S DA=+Y
  1. .S DR="4///"_$P(AUMLN,U,2) ;operation/procedure
  1. .S DR=DR_";10///"_$P(AUMLN,U,3) ;description
  1. .;
  1. .S DR=DR_";100///@" ;inactive flag
  1. .S DR=DR_";102///@" ;inactive date
  1. .;
  1. .S DR=DR_";2100000///"_DT ;date updated
  1. .S DR=DR_";9.5///"_$P(AUMLN,U,4) ;use with sex
  1. .S DIE="^ICD0("
  1. .S AUMDA=DA
  1. .D DIE^AUM91RL1
  1. .;
  1. .;effective date multiple
  1. .S AUMLDT=0
  1. .S AUMLDT=$O(^ICD0(AUMIEN,66,"B",9999999),-1) ;get last date in multiple
  1. .I +AUMLDT>0 D ;entry exists; check if status is correct (active)
  1. ..S AUMMIEN=$O(^ICD0(AUMIEN,66,"B",AUMLDT,0))
  1. ..I +AUMMIEN=0 S AUMLDT=0 Q ;quit if incomplete entry for some reason
  1. ..I $P($G(^ICD0(AUMIEN,66,AUMMIEN,0)),U,2)=1 Q ;already active
  1. ..S AUMLDT=0 ;set date to zero so it will add entry
  1. .I +AUMLDT=0 D ;no entry or needs a new entry
  1. ..K DIC,DIE,DA,X,Y
  1. ..S DA(1)=AUMIEN
  1. ..S DIC="^ICD0("_DA(1)_",66,"
  1. ..S DIC("P")=$P(^DD(80.1,66,0),U,2)
  1. ..S DIC(0)="L"
  1. ..S X="3081001" ;use active date of 10/01/2008
  1. ..S DIC("DR")=".02////1"
  1. ..D ^DIC
  1. .;
  1. .;operation/proc multiple
  1. .S AUMLDT=0
  1. .S AUMLDT=$O(^ICD0(AUMIEN,67,"B",9999999),-1) ;get last entry
  1. .I +AUMLDT>0 D ;there is an entry
  1. ..S AUMMIEN=$O(^ICD0(AUMIEN,67,"B",AUMLDT,0))
  1. ..I +AUMMIEN=0 S AUMLDT=0 Q ;quit if incomplete entry
  1. ..I $P($G(^ICD0(AUMIEN,67,AUMMIEN,0)),U,2)=$P(AUMLN,U,2) Q
  1. ..S AUMLDT=0 ;set date to zero so it will add entry
  1. .I +AUMLDT=0 D ;no entry or needs a new entry
  1. ..K DIC,DIE,DA,X,Y
  1. ..S DA(1)=AUMIEN
  1. ..S DIC="^ICD0("_DA(1)_",67,"
  1. ..S DIC("P")=$P(^DD(80.1,67,0),U,2)
  1. ..S DIC(0)="L"
  1. ..S X="3081001" ;use active date of 10/01/2008
  1. ..S DIC("DR")="1////"_$P(AUMLN,U,2) ;oper/proc
  1. ..D ^DIC
  1. .;
  1. .;description multiple
  1. .S AUMODESC=""
  1. .S AUMLDT=0
  1. .S AUMLDT=$O(^ICD0(AUMIEN,68,"B",9999999),-1)
  1. .I +AUMLDT>0 D ;there is an entry
  1. ..S AUMMIEN=$O(^ICD0(AUMIEN,68,"B",AUMLDT,0))
  1. ..I +AUMMIEN=0 S AUMLDT=0 Q
  1. ..I $P($G(^ICD0(AUMIEN,68,AUMMIEN,0)),U)=$P(AUMLN,U,3) Q
  1. ..S AUMLDT=0
  1. .I +AUMLDT=0 D ;no entry or needs a new entry
  1. ..K DIC,DIE,DA,X,Y
  1. ..S DA(1)=AUMIEN
  1. ..S DIC="^ICD0("_DA(1)_",68,"
  1. ..S DIC("P")=$P(^DD(80.1,68,0),U,2)
  1. ..S DIC(0)="L"
  1. ..S X="3081001" ;use active date of 10/01/2008
  1. ..S DIC("DR")="1////"_$P(AUMLN,U,3) ;description
  1. ..D ^DIC
  1. .I $D(Y) D RSLT^AUM91RL1("ERROR: Edit of fields for CODE '"_$P(AUMLN,U,1)_"' FAILED.") Q
  1. .D RSLT^AUM91RL1($J("",8)_$P(AUMLN,U,1)_$J("",4)_$E($P(AUMLN,U,2),1,30))
  1. .Q
  1. Q