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

ABMCVAPI.m

Go to the documentation of this file.
  1. ABMCVAPI ; IHS/SD/SDR - 3PB CPT/ICD/MODIFIER API
  1. ;;2.6;IHS 3P BILLING SYSTEM;**4,9,10,14,27**;NOV 12, 2009;Build 486
  1. ;
  1. ; New routine - v2.6
  1. ;IHS/SD/SDR 2.6*14 002F - replaced ICDDX^ICDCODE with ICDDX^ICDEX for ICD-10
  1. ;IHS/SD/SDR 2.6*14 009 - made it so API can be called without a date for reports
  1. ;IHS/SD/SDR 2.6*14 HEAT165197 (CR3109) - Added NUM tag to return numeric, comparable value; also added COD tag to reverse NUM
  1. ;IHS/SD/SDR 2.6*27 CR8894 Updated to call CPT^ICPTCOD as many times as necessary to find the active CPT based on the CODE sent;
  1. ; currently the CPT can be in the CPT file multiple times with different IENs. If the CPT is DINUMed, CPT^ICPTCOD will return
  1. ; the DINUMed entry which may not be the active entry.
  1. ;
  1. CPT(CODE,CDT,SRC,DFN) ;PEP - returns info about requested CPT entry
  1. I $$VERSION^XPDUTL("BCSV")>0 S A=$$CPT^ICPTCOD(CODE,CDT,"","") Q A ;abm*2.6*27 IHS/SD/SDR CR8894
  1. E S A=$$PRCSVCPT(CODE,CDT) Q A ;abm*2.6*27 IHS/SD/SDR CR8894
  1. ;start new abm*2.6*27 IHS/SD/SDR CR8894
  1. ;S A=0
  1. ;I $$VERSION^XPDUTL("BCSV")>0 D
  1. ;.S A=$$CPT^ICPTCOD(CODE,CDT,"","")
  1. ;.I $P(A,U,7)'=0 Q ;found entry is active, use it
  1. ;.N B
  1. ;.S B=0
  1. ;.S A=0
  1. ;.F S B=$O(^ICPT("B",CODE,B)) Q:'B D Q:A
  1. ;..S A=$$CPT^ICPTCOD(B,CDT,"","")
  1. ;..I $P(A,U,7)=0 S A=0
  1. ;I +A Q A ;an active CPT entry was found in the above method; stop here
  1. ;I $$VERSION^XPDUTL("BCSV")'>0 S A=$$PRCSVCPT(CODE,CDT) Q A
  1. ;Q A
  1. ;end new abm*2.6*27 IHS/SD/SDR CR8894
  1. ;****************************************************************
  1. PRCSVCPT(CODE,CDT) ;EP - build Pre-CSV IHS CPT string
  1. N ABMZCPT,ABMCPT
  1. ;D GETS^DIQ(81,CODE,"*","IE","ABMZCPT") ;abm*2.6*9 NOHEAT
  1. D GETS^DIQ(81,+CODE,"*","IE","ABMZCPT") ;abm*2.6*9 NOHEAT
  1. S ABMCPT=CODE
  1. ;start old code abm*2.6*9
  1. ;S ABMCPT=ABMCPT_"^"_$G(ABMZCPT(81,CODE_",",.01,"E")) ;IEN and code
  1. ;S ABMCPT=ABMCPT_"^"_$G(ABMZCPT(81,CODE_",",2,"E")) ;Short desc.
  1. ;S ABMCPT=ABMCPT_"^"_$G(ABMZCPT(81,CODE_",",3,"I")) ;CPT category IEN
  1. ;S ABMCPT=ABMCPT_"^^"_$G(ABMZCPT(81,CODE_",",7,"I")) ;Source (null) and Eff. date
  1. ;S ABMCPT=ABMCPT_"^^"_$G(ABMZCPT(81,CODE_",",8,"I")) ;Status (null) and inact. date
  1. ;S ABMCPT=ABMCPT_"^"_$G(ABMZCPT(81,CODE_",",7,"I")) ;Activation date
  1. ;end old code start new code
  1. S ABMCPT=ABMCPT_"^"_$G(ABMZCPT(81,+CODE_",",.01,"E")) ;IEN and code
  1. S ABMCPT=ABMCPT_"^"_$G(ABMZCPT(81,+CODE_",",2,"E")) ;Short desc.
  1. S ABMCPT=ABMCPT_"^"_$G(ABMZCPT(81,+CODE_",",3,"I")) ;CPT category IEN
  1. S ABMCPT=ABMCPT_"^^"_$G(ABMZCPT(81,+CODE_",",7,"I")) ;Source (null) and Eff. date
  1. S ABMCPT=ABMCPT_"^1^"_$G(ABMZCPT(81,+CODE_",",8,"I")) ;Status (null) and inact. date
  1. S ABMCPT=ABMCPT_"^"_$G(ABMZCPT(81,+CODE_",",7,"I")) ;Activation date
  1. ;end new code
  1. Q ABMCPT
  1. IHSCPT(CODE,CDT) ;EP - return IHS-numberspaced fields in string
  1. N ABMCPT
  1. I CDT="" S CDT=DT
  1. D GETS^DIQ(81,CODE,"9999999.01:9999999.04","IE","ABMZCPT")
  1. S ABMCPT=CODE ;CPT code (p1)
  1. S ABMCPT=ABMCPT_"^"_$G(ABMZCPT(81,CODE_",",9999999.01,"E")) ;starred procedure (p2)
  1. S ABMCPT=ABMCPT_"^"_$G(ABMZCPT(81,CODE_",",9999999.02,"E")) ;default revenue code (p3)
  1. S ABMCPT=ABMCPT_"^"_$G(ABMZCPT(81,CODE_",",9999999.03,"E")) ;relative value (p4)
  1. S ABMCPT=ABMCPT_"^"_$G(ABMZCPT(81,CODE_",",9999999.04,"E")) ;global surgical procedure (p5)
  1. ;
  1. I $$VERSION^XPDUTL("BCSV")>0 D Q ABMCPT
  1. .S ABMCPT=ABMCPT_"^"_$$GET1^DIQ(81,CODE_",",9999999.05,"E") ;ASC payment group (p6)
  1. .;start old code abm*2.6*10 HEAT59419
  1. .;S ABMCPT=ABMCPT_"^"_$$GET1^DIQ(81,CODE_",",9999999.06,"E") ;date added (p7)
  1. .;S ABMCPT=ABMCPT_"^"_$$GET1^DIQ(81,CODE_",",9999999.07,"E") ;date deleted (p8)
  1. .;end old code start new code HEAT59419
  1. .S ABMCPT=ABMCPT_"^"_$$GET1^DIQ(81,CODE_",",9999999.06,"I") ;date added (p7)
  1. .S ABMCPT=ABMCPT_"^"_$$GET1^DIQ(81,CODE_",",9999999.07,"I") ;date deleted (p8)
  1. .;end new code HEAT59419
  1. I $$VERSION^XPDUTL("BCSV")'>0 D
  1. .S ABMCPT=ABMCPT_"^"_$$GET1^DIQ(81,CODE_",",6,"E") ;ASC payment group (p6)
  1. .;start old code abm*2.6*10 HEAT59419
  1. .;S ABMCPT=ABMCPT_"^"_$$GET1^DIQ(81,CODE_",",7,"E") ;date added (p7)
  1. .;S ABMCPT=ABMCPT_"^"_$$GET1^DIQ(81,CODE_",",8,"E") ;date deleted (p8)
  1. .;end old code start new code HEAT59419
  1. .S ABMCPT=ABMCPT_"^"_$$GET1^DIQ(81,CODE_",",7,"I") ;date added (p7)
  1. .S ABMCPT=ABMCPT_"^"_$$GET1^DIQ(81,CODE_",",8,"I") ;date deleted (p8)
  1. .;end new code HEAT59419
  1. Q ABMCPT
  1. IHSCPTD(CODE,OUTARR,DFN,CDT) ;PEP - returns info about requested ICD entry
  1. I $$VERSION^XPDUTL("BCSV")>0 D CPTD^ICPTCOD(CODE,OUTARR,DFN,CDT) Q OUTARR
  1. E D Q OUTARR
  1. .D GET1^DIQ(81,CODE,50,"IE",OUTARR,"ABMZE")
  1. ;****************************************************************
  1. ;
  1. DX(CODE,CDT,SRC,DFN) ;PEP - returns info about requested ICD DX entry
  1. I $D(^DIC(9.8,"B","ICDEX")) S A=$$ICDDX^ICDEX(CODE,$S($G(CDT):CDT,1:""),"","I") Q A ;API call for ICD-10 ;abm*2.6*14 ICD10 002F and 009
  1. ;I $$VERSION^XPDUTL("BCSV")>0 S A=$$ICDDX^ICDCODE(CODE,CDT,"","") Q A ;abm*2.6*14 ICD10 002F
  1. I $$VERSION^XPDUTL("BCSV")>0 S A=$$ICDDX^ICDCODE(CODE,$S($G(CDT):CDT,1:""),"","") Q A ;abm*2.6*14 ICD10 009
  1. E S A=$$PRCSVDX(CODE,CDT) Q A
  1. ;
  1. PRCSVDX(CODE,CDT) ;EP - build Pre-CSV IHS ICD DX string
  1. N ABMZDX,ABMDX
  1. D GETS^DIQ(80,CODE,"*","IE","ABMZDX")
  1. S ABMDX=CODE
  1. S ABMDX=ABMDX_"^"_$G(ABMZDX(80,CODE_",",.01,"E")) ;IEN and DX code
  1. S ABMDX=ABMDX_"^"_$G(ABMZDX(80,CODE_",",2,"E")) ;Identifier
  1. S ABMDX=ABMDX_"^"_$G(ABMZDX(80,CODE_",",3,"I")) ;Diagnosis (short desc.)
  1. S ABMDX=ABMDX_"^"_$G(ABMZDX(80,CODE_",",101,"I")) ;Unacceptable as Principal DX
  1. S ABMDX=ABMDX_"^"_$G(ABMZDX(80,CODE_",",5,"I")) ;MDC
  1. S ABMDX=ABMDX_"^"_$G(ABMZDX(80,CODE_",",5.5,"I")) ;MDC13
  1. S ABMDX=ABMDX_"^"_$G(ABMZDX(80,CODE_",",70,"I")) ;Compl/Comorb
  1. S ABMDX=ABMDX_"^"_$G(ABMZDX(80,CODE_",",5.5,"I")) ;MDC13
  1. S ABMDX=ABMDX_"^"_$G(ABMZDX(80,CODE_",",8,"I")) ;ICD expanded
  1. S ABMDX=ABMDX_"^"_$G(ABMZDX(80,CODE_",",100,"I")) ;Inactive flag
  1. S ABMDX=ABMDX_"^"_$G(ABMZDX(80,CODE_",",9.5,"I")) ;Sex
  1. S ABMDX=ABMDX_"^"_$G(ABMZDX(80,CODE_",",102,"I")) ;Inactive Date
  1. S ABMDX=ABMDX_"^"_$G(ABMZDX(80,CODE_",",5.7,"I")) ;MDC24
  1. S ABMDX=ABMDX_"^"_$G(ABMZDX(80,CODE_",",5.9,"I")) ;MDC25
  1. S ABMDX=ABMDX_"^"_$G(ABMZDX(80,CODE_",",9999999.01,"I")) ;Lower Age
  1. S ABMDX=ABMDX_"^"_$G(ABMZDX(80,CODE_",",9999999.02,"I")) ;Upper Age
  1. S ABMDX=ABMDX_"^"_$G(ABMZDX(80,CODE_",",9999999.04,"I")) ;Date Added
  1. Q ABMDX
  1. ICDDX(IEN,CODE,CDT,SRC,DFN) ;PEP - returns info about requested ICD entry
  1. ;I $$VERSION^XPDUTL("BCSV")>0 S A=$$ICDD^ICDCODE(CODE,CDT) Q A ;abm*2.6*4 HEAT19688
  1. I $$VERSION^XPDUTL("BCSV")>0 S A=$$ICDD^ICDCODE(CODE,"ABMZCPTD",CDT) Q A ;abm*2.6*4 HEAT19688
  1. E D Q A
  1. .S A=$$GET1^DIQ(80,IEN,10,"IE","","ABMZDX")
  1. ;************************************************************************
  1. ICDOP(CODE,CDT,SRC,DFN) ;PEP - returns info about requested ICD PX entry
  1. I $D(^DIC(9.8,"B","ICDEX")) S A=$$ICDOP^ICDEX(CODE,CDT,"","I") Q A ;API call for ICD-10 ;abm*2.6*14 ICD10 002H
  1. I $$VERSION^XPDUTL("BCSV")>0 S A=$$ICDOP^ICDCODE(CODE,CDT,"","") Q A
  1. E S A=$$PRCSVOP(CODE,CDT) Q A
  1. ;****************************************************************
  1. PRCSVOP(CODE,CDT) ;EP - build Pre-CSV IHS ICD PX string
  1. N ABMZOP,ABMOP
  1. D GETS^DIQ(80.1,CODE,"*","IE","ABMZOP")
  1. S ABMOP=CODE
  1. S ABMOP=ABMOP_"^"_$G(ABMZOP(80.1,CODE_",",.01,"E")) ;IEN and PX code
  1. S ABMOP=ABMOP_"^"_$G(ABMZOP(80.1,CODE_",",2,"E")) ;Identifier
  1. S ABMOP=ABMOP_"^"_$G(ABMZOP(80.1,CODE_",",5,"I")) ;MDC24
  1. S ABMOP=ABMOP_"^"_$G(ABMZOP(80.1,CODE_",",4,"I")) ;Oper/Proc. (short desc.)
  1. Q ABMOP
  1. ICDDOP(CODE,CDT,SRC,DFN) ;PEP - returns info about requested ICD entry
  1. I $$VERSION^XPDUTL("BCSV")>0 S A=$$ICDD^ICDCODE(CODE,CDT) Q A
  1. E D Q A
  1. .S A=$$GET1^DIQ(80.1,CODE,10,"IE","","ABMZDX")
  1. ;*********************************************************************
  1. CAT(CAT,DFN) ;PEP - returns CPT Category info
  1. I $$VERSION^XPDUTL("BCSV")>0 S A=$$CAT^ICPTAPIU(CAT,DFN) Q A
  1. E S A=$$PRCSVCAT(CAT,DFN) Q A
  1. PRCSVCAT(CAT,DFN) ;EP - build pre-CSV IHS CPT Category string
  1. N ABMZCAT,ABMCAT
  1. D GETS^DIQ(81.1,CODE,"*","IE","ABMZCAT")
  1. S ABMCAT=$G(ABMZCAT(81.1,CODE_",",.01,"E")) ;CAT name
  1. S ABMCAT=ABMCAT_"^^"_$G(ABMZCAT(81.1,CODE_",",3,"I")) ;Source and Major IEN
  1. S ABMCAT=ABMCAT_"^^"_$G(ABMZCAT(81.1,CODE_",",3,"E")) ;Major Category Name
  1. Q ABMCAT
  1. IHSCAT(CAT,DFN) ;PEP - returns IHS specific CPT Category fields
  1. N ABMCAT
  1. D GETS^DIQ(81.1,CAT,"9999999.01:9999999.03","IE","ABMZCAT")
  1. S ABMCAT=$G(ABMZCAT(81,CAT_",",9999999.01,"E")) ;default rev code (p1)
  1. S ABMCAT=ABMCAT_"^"_$G(ABMZCAT(81,CAT_",",9999999.02,"E")) ;previous modifier prompt (p2)
  1. S ABMCAT=ABMCAT_"^"_$G(ABMZCAT(81,CAT_",",9999999.03,"E")) ;first CPT code (p3)
  1. Q ABMCAT
  1. ;*********************************************************************
  1. MOD(MOD,MFT,MDT,SRC,DFN) ;PEP - returns Modifier array
  1. I $$VERSION^XPDUTL("BCSV")>0 S A=$$MOD^ICPTMOD(MOD,MFT,MDT,"","") Q A
  1. E S A=$$PRCSVMOD(MOD) Q A
  1. PRCSVMOD(MOD) ;EP - build pre-CSV Modifer array
  1. N ABMZMOD,ABMMOD
  1. D GETS^DIQ(9999999.88,MOD,"*","IE","ABMZMOD")
  1. Q:'$D(ABMZMOD) 0
  1. S ABMMOD=MOD
  1. S ABMMOD=ABMMOD_"^"_$G(ABMZMOD(9999999.88,MOD_",",.01,"E")) ;MOD code
  1. S ABMMOD=ABMMOD_"^"_$G(ABMZMOD(9999999.88,MOD_",",.02,"E")) ;MOD name
  1. Q ABMMOD
  1. ;start new abm*2.6*14 HEAT165197 (CR3109)
  1. NUM(CODE) ;EP - returns numeric value for ICD DX
  1. I $D(^DIC(9.8,"B","ICDEX")) S A=$$NUM^ICDEX(CODE) Q A
  1. S CODE=$G(CODE) Q:'$L($G(CODE)) 0
  1. N PSN,OUT,CHR,ERR S ERR=0,OUT="" F PSN=1:1:9 D
  1. .S CHR=$E(CODE,PSN) S CHR=$S($L(CHR):$A(CHR),1:32),CHR=CHR-30
  1. .S:CHR'>0 ERR=1 F Q:$L(CHR)>1 S CHR="0"_CHR
  1. .S:$L(CHR)'=2 ERR=1 S OUT=OUT_CHR
  1. Q:ERR -1 S:+OUT>0 OUT="1"_OUT
  1. Q OUT
  1. ;end new HEAT165197