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

ACHSEOB4.m

Go to the documentation of this file.
  1. ACHSEOB4 ; IHS/ITSC/TPF/PMF - PROCESS EOBRS (5/6) - UPDATE DOCUMENT(2/2) ;
  1. ;;3.1;CONTRACT HEALTH MGMT SYSTEM;**18,22,23**;JUN 11, 2001;Build 43
  1. ;
  1. ;
  1. ICD ;EP.
  1. ;ACHS*3.1*22 ADDED FOR ICD LENGTH OF 3, TO FX ISSUE OF CSV LOOK UP BY IEN
  1. ;F ACHS=12:1:16 S ACHSX=$P(ACHSEOBR("E",ACHS)," ") I ACHSX]"" D:$L(ACHSX)<3 ICNV1 D:$L(ACHSX)>3 ICNV D I1
  1. ;F ACHS=12:1:16 S ACHSX=$P(ACHSEOBR("E",ACHS)," ") I ACHSX]"" D:$L(ACHSX)<3 ICNV1 D:$L(ACHSX)>3 ICNV S:$L(ACHSX)=3 ACHSX=ACHSX_"." D I1 ;ACHS*3.1*22
  1. ;ACHS*3.1*23 CHANGED END OF FOR LOOP TO TST FOR DATA "E" TO ACHSREJ AND FI SENDS . IN NEW FORMAT
  1. I $$PARM^ACHS(0,17)?1N.N,DT>($$PARM^ACHS(0,17)-1) F ACHS=12:1 Q:'$D(ACHSEOBR(ACHSREJ,ACHS)) D
  1. .S ACHSX=$P(ACHSEOBR(ACHSREJ,ACHS)," ") I ACHSX]"" D I1
  1. I ($$PARM^ACHS(0,17)'?1N.N)!(DT<$$PARM^ACHS(0,17)) F ACHS=12:1 Q:'$D(ACHSEOBR(ACHSREJ,ACHS)) D
  1. .S ACHSX=$P(ACHSEOBR(ACHSREJ,ACHS)," ")
  1. .I ACHSX]"" D:$L(ACHSX)<3 ICNV1 D:$L(ACHSX)>3 ICNV S:$L(ACHSX)=3 ACHSX=ACHSX_"." D I1
  1. Q
  1. ;
  1. I1 ; Check DX codes first
  1. ;ACHS*3.1*18 IHS.OIT.FCJ MODIFIED FOR CSV
  1. ;S DIC(0)="M",X=$G(^DD(80,0,"DIC"))
  1. ;I X]"" X ^%ZOSF("TEST") E S DIC(0)="IM"
  1. ;S DIC="^ICD9(",D="AB",X=ACHSX
  1. ;D IX^DIC
  1. ;I Y<1 D ICDLK Q:$G(ACHSERRE)
  1. ;ACHS*3.1*23 IHS.OIT.MOD FOR ICD-10
  1. ;S Y=$P($$ICDDX^ICDCODE(ACHSX),U,1,2)
  1. S Y=$P($$ICDDX^ICDEX(ACHSX,,,"E"),U,1,2)
  1. I Y<0 D ERR Q
  1. ;ACHS*3.1*18 END OF CHANGES
  1. I '$D(^ACHSF(DUZ(2),"D",ACHSDIEN,9)) S $P(^ACHSF(DUZ(2),"D",ACHSDIEN,9,0),U,2)=$P($G(^DD(9002080.01,95,0)),U,2)
  1. N ACHSTMP S ACHSTMP=0
  1. ;IF DUP DX OR PROC CODES SET WARNING
  1. F S ACHSTMP=$O(^ACHSF(DUZ(2),"D",ACHSDIEN,9,ACHSTMP)) Q:ACHSTMP="" D
  1. .Q:'$D(^ACHSF(DUZ(2),"D",ACHSDIEN,9,ACHSTMP,0))
  1. .;ACHS*3.1*23 CHG NXT LN ACHSEDAT=Y TO ACHSEDAT=$P(Y,U,2)
  1. .I $P($G(^ACHSF(DUZ(2),"D",ACHSDIEN,9,ACHSTMP,0)),U)=+Y S ACHSERRE=23,ACHSEDAT=$P(Y,U,2) D ^ACHSEOBG Q
  1. S X=+Y
  1. S DIC(0)="M",DIC="^ACHSF(DUZ(2),""D"",ACHSDIEN,9,"
  1. S DIC("DR")="1////^S X=ACHSTDA"
  1. S DA(2)=DUZ(2)
  1. S DA(1)=ACHSDIEN
  1. K DO,DD D FILE^DICN
  1. I Y<1 S ACHSERRE=16,ACHSEDAT=X D ^ACHSEOBG
  1. Q
  1. ;
  1. ICNV ; Convert E and vee codes and place decimal.
  1. I $E(ACHSX,1)'="E" S ACHSX=$E(ACHSX,1,3)_"."_$E(ACHSX,4,5) Q
  1. S ACHSX=$E(ACHSX,1,4)_"."_$E(ACHSX,5)
  1. I $E(ACHSX,6)="" S ACHSX=$E(ACHSX,1,5) Q
  1. Q
  1. ;
  1. ICNV1 ;
  1. S X="000",X=$E(X,1,3-$L(ACHSX)),ACHSX=X_ACHSX
  1. Q
  1. ;
  1. PROC ;EP
  1. ;ACHS*3.1*23 ADDED 2 MORE PROC CHANGE 10 TO 12 IN NXT LINE
  1. F ACHS=8:1:12 I $D(ACHSEOBR("G",ACHS)) S ACHSX=$P(ACHSEOBR("G",ACHS)," ") Q:ACHSX="" D PROC1
  1. Q
  1. ;
  1. PROC1 ;
  1. ;ACHS*3.1*18 IHS.OIT.FCJ MODIFIED FOR CSV
  1. ;S DIC(0)="M"
  1. ;S X=$G(^DD(80.1,0,"DIC"))
  1. ;I X]"" X ^%ZOSF("TEST") E S DIC(0)="IM"
  1. ;ACHS*3.1*23 ICD-10 PROCEDURE CODE ARE 7 DIGITS
  1. G:$L(ACHSX)=7 PROC2
  1. S ACHSX=$P(ACHSX,".")_$P(ACHSX,".",2)
  1. S ACHSX=$E(ACHSX,1,2)_"."_$E(ACHSX,3,$L(ACHSX))
  1. ;S DIC="^ICD0(",D="AB",X=ACHSX
  1. ;D IX^DIC
  1. PROC2 ;
  1. ;S Y=$P($$ICDOP^ICDCODE(ACHSX),U,1,2) ;ACHS*3.1*23
  1. S Y=$P($$ICDOP^ICDEX(ACHSX),U,1,2) ;ACHS*3.1*23
  1. ;ACHS*3.1*18 END OF CHANGES
  1. I Y<1 S ACHSERRE=17,ACHSEDAT=ACHSX D ^ACHSEOBG Q
  1. I '$D(^ACHSF(DUZ(2),"D",ACHSDIEN,10)) S $P(^ACHSF(DUZ(2),"D",ACHSDIEN,10,0),U,2)=$P(^DD(9002080.01,96,0),U,2)
  1. ; Add procedure date to next line for duplicate verification,
  1. ; after FI begins sending that data.
  1. ;ACHS*3.1*23 CHG NXT LN ACHSEDAT=Y TO ACHSEDAT=$P(Y,U,2)
  1. I $D(^ACHSF(DUZ(2),"D",ACHSDIEN,10,+Y)) S ACHSERRE=43,ACHSEDAT=$P(Y,U,2) D ^ACHSEOBG
  1. S X=+Y
  1. S DIC(0)="M",DIC="^ACHSF(DUZ(2),""D"",ACHSDIEN,10,"
  1. S DIC("DR")="2////^S X=ACHSTDA"
  1. S DA(2)=DUZ(2)
  1. S DA(1)=ACHSDIEN
  1. K DO,DD D FILE^DICN
  1. I Y<1 S ACHSERRE=17,ACHSEDAT=X D ^ACHSEOBG
  1. Q
  1. ;
  1. CPTREV ;EP - Process EOBR CPT / REVENUE / ADA codes.
  1. SHUNT D CPTREV^ACHSEOBZ Q ; MRS:1/3/2000
  1. S ACHS=0
  1. C1 ;
  1. S ACHS=$O(^TMP("ACHSEOB",$J,"F",ACHS))
  1. Q:'ACHS
  1. S ACHSMRCA="" ; NO WARNING MESSAGE FOR REV/CPT/ADA YET
  1. ;S ACHSEOBR("F")=^TMP("ACHSEOB",$J,"F",ACHS),ACHSX=$E(ACHSEOBR("F"),35,39),ACHSX=$$STRIP^XLFSTR(ACHSX," ")
  1. S ACHSEOBR("F")=^TMP("ACHSEOB",$J,"F",ACHS),ACHSX=$E(ACHSEOBR("F"),39,43),ACHSX=$$STRIP^XLFSTR(ACHSX," ")
  1. ;
  1. S X=$S($L(ACHSX)=5:81,$L(ACHSX)=4:9999999.31,$L(ACHSX)=3:9999999.72,1:""),DIC(0)="M"
  1. I X]"" S X=$G(^DD(X,0,"DIC"))
  1. I X]"" X ^%ZOSF("TEST") E S DIC(0)="IM"
  1. S DIC=$S($L(ACHSX)=5:"^ICPT(",$L(ACHSX)=4:"^AUTTADA(",1:"^AUTTREVN("),X=ACHSX
  1. D ^DIC
  1. I +Y>0 G DOCUMENT
  1. G REV:$L(ACHSX)=3,ADA:$L(ACHSX)=4,CPT
  1. ;
  1. REV ; Add missing Revenue Code.
  1. S ACHSERRE=19,ACHSEDAT=ACHSX D ^ACHSEOBG
  1. S X="PT CONVENCE/OTH" D ^DIC
  1. S ACHSMRCA="WARNING: REV["_ACHSEDAT_"] FAILED, USING["_X_"]"
  1. G DOCUMENT
  1. ;
  1. ADA ; Add missing ADA code.
  1. S ACHSERRE=33,ACHSEDAT=ACHSX D ^ACHSEOBG
  1. S X="UNSPECIFIED TREATMENT" D ^DIC
  1. S ACHSMRCA="WARNING: ADA["_ACHSEDAT_"] FAILED, USING["_X_"]"
  1. G DOCUMENT
  1. ;
  1. CPT ; Add missing CPT code.
  1. S ACHSERRE=18,ACHSEDAT=ACHSX D ^ACHSEOBG
  1. S X="UNCODED",DIC(0)="MI" D ^DIC S DIC(0)="M"
  1. S ACHSMRCA="WARNING: CPT["_ACHSEDAT_"] FAILED, USING["_X_"]"
  1. G DOCUMENT
  1. ;
  1. DOCUMENT ; Add EOBR info to CPT/REV/ADA multiple in DOCUMENT multiple.
  1. ;
  1. I '$D(^ACHSF(DUZ(2),"D",ACHSDIEN,11)) S ^ACHSF(DUZ(2),"D",ACHSDIEN,11,0)=$$ZEROTH^ACHS(9002080.01,97)
  1. S X=+Y_";"_$P($P(DIC,"("),U,2)_"(",DIC="^ACHSF(DUZ(2),""D"",ACHSDIEN,11,",DA(2)=DUZ(2),DA(1)=ACHSDIEN
  1. K DO,DD D FILE^DICN
  1. I Y<1 S ACHSERRE=$S(+ACHSX>999:18,1:19),ACHSEDAT=ACHSX D ^ACHSEOBG G C1
  1. S Y=+Y,$P(^ACHSF(DA(2),"D",DA(1),11,Y,0),U,2)=ACHSEOBR("F",8)-17000000,$P(^(0),U,3)=ACHSEOBR("F",9)-17000000
  1. S $P(^ACHSF(DA(2),"D",DA(1),11,Y,0),U,4)=ACHSEOBR("F",11)
  1. S $P(^ACHSF(DA(2),"D",DA(1),11,Y,0),U,5)=+$E(ACHSEOBR("F",12),1,7)_"."_$E(ACHSEOBR("F",12),8,9),$P(^(0),U,6)=+$E(ACHSEOBR("F",13),1,7)_"."_$E(ACHSEOBR("F",13),8,9)
  1. S (ACHSMSG,X)=$P(ACHSEOBR("F",14)," ")
  1. I X]"" S $P(^ACHSF(DA(2),"D",DA(1),11,Y,0),U,7)=X
  1. S X=$P(ACHSEOBR("F",15)," ")
  1. I X]"" S $P(^ACHSF(DA(2),"D",DA(1),11,Y,0),U,8)=X
  1. S X=$P(ACHSEOBR("F",16)," ")
  1. I X]"" S $P(^ACHSF(DA(2),"D",DA(1),11,Y,0),U,9)=X
  1. S $P(^ACHSF(DA(2),"D",DA(1),11,Y,0),U,10)=ACHSTDA
  1. G C1:ACHSMSG=""&(ACHSMRCA="")
  1. G ;
  1. S ACHSDA=0
  1. F ACHSX=1:2 Q:'$D(^TMP("ACHSEOB",$J,"G",ACHSX)) D
  1. . I ACHSMSG=$E(^TMP("ACHSEOB",$J,"G",ACHSX),1,4) S ACHSDA=ACHSDA+1,^ACHSF(DA(2),"D",DA(1),11,Y,1,ACHSDA,0)=ACHSMSG_" -"_$E(^TMP("ACHSEOB",$J,"G",ACHSX),5,99)_$E(^TMP("ACHSEOB",$J,"G",ACHSX+1),5,99)
  1. .Q
  1. I ACHSMRCA]"" D
  1. . S ACHSDA=ACHSDA+1
  1. . S ^ACHSF(DA(2),"D",DA(1),11,Y,1,ACHSDA,0)=ACHSMRCA
  1. S ^ACHSF(DA(2),"D",DA(1),11,Y,1,0)=U_U_ACHSDA_U_ACHSDA_U_DT
  1. G C1
  1. ;
  1. ICDLK ; ACHS*3.1*23;NO LONGER USED
  1. I $L(X)=3 S X=X_"."
  1. I $L($P(X,".",2))>2 S ACHSX=$E(X,1,6) G ERR
  1. S DIC="^ICD9(",DIC(0)="X",D="AB",X=X_"0"
  1. D IX^DIC
  1. Q:Y>0
  1. G ICDLK
  1. ;
  1. ERR ;
  1. S ACHSERRE=16,ACHSEDAT=ACHSX
  1. D ^ACHSEOBG
  1. Q
  1. ;
  1. SENDMSG(DIC,DA) ;
  1. K ^TMP("ACHSEOB4",$J)
  1. N ACHSCTR,ACHSFLD,X,XMSUB,XMDUZ,XMTEXT,XMY
  1. S (ACHSCTR,ACHSFLD)=0
  1. F ACHSCTR=1:1 S X=$P($T(TXT+ACHSCTR),";;",2) Q:X="###" S ^TMP("ACHSEOB4",$J,ACHSCTR)=X
  1. S %=^DIC(DIC,0,"GL")_"0)",^TMP("ACHSEOB4",$J,ACHSCTR)="New entry # "_DA_" in the "_$P(@%,U)_" file is the following:"
  1. S ACHSCTR=ACHSCTR+1,^TMP("ACHSEOB4",$J,ACHSCTR)=" "
  1. F S ACHSFLD=$O(^DD(DIC,ACHSFLD)) Q:'ACHSFLD S ACHSCTR=ACHSCTR+1 S X=$J($P(^(ACHSFLD,0),U),20)_" = "_$$VAL^XBDIQ1(DIC,DA,ACHSFLD),^TMP("ACHSEOB4",$J,ACHSCTR)=X
  1. S XMB="ACHS EOBR PROCESSING"
  1. S XMDUZ="CHS EOBR Automatic Processing",XMSUB="Add of CPT/ADA/REV code."
  1. S XMTEXT="^TMP(""ACHSEOB4"",$J,"
  1. S XMY(1)=""
  1. D ^XMB,KILL^XM
  1. K ^TMP("ACHSEOB4",$J)
  1. Q
  1. ;
  1. TXT ;
  1. ;;The following information has been added to the indicated file,
  1. ;;based on information received thru automatic EOBR processing of
  1. ;;a CHS EOBR file. Please follow up on the entry to ensure more
  1. ;;complete and accurate data has been entered. Thank you.
  1. ;;
  1. ;;###
  1. ;