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

APCDAOP.m

Go to the documentation of this file.
  1. APCDAOP ; IHS/CMI/LAB - PROMPT FOR PROCEDURE ;
  1. ;;2.0;IHS PCC SUITE;**11**;MAY 14, 2009;Build 58
  1. ;
  1. START ;
  1. S (APCDLOOK,APCDTNQP)=""
  1. D EN^XBNEW("START1^APCDAOP","APCDTSKI;APCDLOOK;APCDDATE;APCDTERR;APCDPAT;DFN;APCDTNQP;APCDTPCC;APCDTDIA;APCDVSIT;APCDTIN9")
  1. Q
  1. START1 ;EP
  1. S APCDTPCC="",APCDINPE=1,APCDUINP=""
  1. K APCDTERR,APCDTSKI S APCDLOOK=""
  1. S APCDCAT=""
  1. I $G(APCDVSIT) S APCDCAT=$P(^AUPNVSIT(APCDVSIT,0),U,7)
  1. I APCDCAT="" S APCDCAT="A"
  1. NEW %,APCDD
  1. S APCDD=""
  1. I $G(APCDTIN9) S APCDD=$$FMADD^XLFDT($$IMP^ICDEX(31),-2),APCDIMP=2 G N
  1. I $G(APCDVSIT),$D(^AUPNVSIT(APCDVSIT)) D
  1. .I $P(^AUPNVSIT(APCDVSIT,0),U,7)="H",$$DSCHDATE^APCLV(APCDVSIT)]"" S APCDD=$$DSCHDATE^APCLV(APCDVSIT) Q
  1. .S APCDD=$P($P(^AUPNVSIT(APCDVSIT,0),U),".")
  1. I APCDD="" S APCDD=$P($G(APCDDATE),".")
  1. I APCDD="" S APCDD=DT
  1. I $P($G(APCDPARM),U,21)="C",$G(APCDCAT)'="H" G CPT
  1. I S APCDIMP=$$IMPOP^AUPNSICD(APCDD)
  1. ;I APCDIMP=31 G LEX1 ;CALL LEXICON FOR ICD10 ONLY
  1. N K DIR
  1. ;G LEX1
  1. K APCDTERR,APCDTSKI S APCDLOOK=""
  1. S DIR(0)="FO^1:60",DIR("A")=$S($G(APCDTDIA)]"":APCDTDIA,1:"Enter OPERATION/PROCEDURE")
  1. S DIR("?")=$S(APCDIMP=31:"^D HELPOP^AUPNSICD",1:"^D HELPOP9^AUPNSIC9")
  1. KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) S APCDTSKI=1,APCDLOOK="" G XIT
  1. I Y="" S APCDTSKI=1,APCDLOOK="" G XIT
  1. S APCDUINP=Y
  1. K DIC
  1. S APCDTNQP=""
  1. S X=APCDUINP
  1. I $G(APCDTIN9) X:$D(^DD(9000010.08,.22,12.1)) ^DD(9000010.08,.22,12.1)
  1. I '$G(APCDTIN9) X:$D(^DD(9000010.08,.01,12.1)) ^DD(9000010.08,.01,12.1)
  1. S DIC="^ICD0(",DIC(0)="EMQZ",DIC("A")="Enter OPERATION/PROCEDURE: ",DIC("W")="D EN^DDIOL($P($$ICDOP^ICDEX(Y,$S($G(APCDD):APCDD,1:DT),,""I""),U,5)"
  1. D ^DIC K DIC
  1. G:Y="" XIT
  1. I $P(Y,U)=-1,X="" W !!,"Code not selected." S APCDTERR=1,APCDLOOK="" G XIT
  1. I $P(Y,U)=-1,X="^" S APCDTSKI=1,APCDLOOK="" G N
  1. I $P(Y,U)=-1 S APCDTERR=1,APCDLOOK="" G N
  1. S APCDLOOK="`"_+Y,APCDTNQP=$S($E(APCDUINP)="`":"",1:APCDUINP) ;,APCDTNQP=X
  1. XIT K Y,X,DO,D,DD,DIPGM,APCDTPCC
  1. Q
  1. ;
  1. CPT ;EP
  1. S APCDTPCC=""
  1. X:$D(^DD(9000010.08,.16,12.1)) ^DD(9000010.08,.16,12.1) S DIC="^ICPT(",DIC(0)="AEMQ",DIC("A")="Enter CPT CODE: " D ^DIC K DIC
  1. G:Y="" XIT
  1. I Y=-1,X=""!(X="^") S APCDTSKI=1,APCDLOOK="" G XIT
  1. I Y=-1 S APCDTERR=1,APCDLOOK="" G XIT
  1. S APCDCPT=+Y
  1. I '$O(^ICPT(+Y,"ICD","B",0)) W !!,$C(7),$C(7),"No ICD Operation Match for that code - notify supervisor.",! S APCDTERR=1,APCDLOOK="",APCDCPT="" G XIT
  1. S APCDLOOK=$O(^ICPT(+Y,"ICD","B",0))
  1. I APCDLOOK="" W !!,$C(7),$C(7),"No ICD Operation Match for that code - notify supervisor.",! S APCDTERR=1,APCDLOOK="",APCDCPT="" G XIT
  1. I $P(^ICD0(APCDLOOK,0),U,9) W !!,$C(7),$C(7),"The ICD Operation code this CPT maps to is INACTIVE (",$P(^ICD0(APCDLOOK,0),U),") - cannot use!",! S APCDTERR="",APCDLOOK="",APCDCPT="" G XIT
  1. S APCDLOOK="`"_APCDLOOK
  1. D XIT
  1. Q
  1. ICDONE(ALEX,ALEXVDT) ;EP - Return one ICD code for an expression
  1. ; LEX IEN of file 757.01
  1. ; LEXVDT Date to use for screening by codes
  1. N ALEXICD
  1. S ALEXVDT=$S(+$G(ALEXVDT)>0:ALEXVDT,1:$$DT^XLFDT)
  1. S ALEX=$$P10ONE^LEXU(ALEX,ALEXVDT) Q:ALEX="" ""
  1. S ALEXICD=$$ICDOP^ICDEX(ALEX,ALEXVDT,31,"E")
  1. Q:$P(ALEXICD,"^",2)="INVALID CODE" ""
  1. Q:'$$CHKOP^AUPNSICD($P(ALEXICD,U,1)) ""
  1. Q 1
  1. LEX1 ;EP - called from input template
  1. ;reader call to get TEXT for code
  1. K DIR
  1. S LEX=""
  1. K ^TMP("LEXSCH",$J),^TMP("LEXHIT",$J),LEX,^TMP("LEXFND",$J)
  1. ;I APCDIMP=2 D CONFIG^LEXSET(1,"PL2",$P(APCDD,"."))
  1. I APCDIMP=31 D CONFIG^LEXSET("10P","10P",$P(APCDD,"."))
  1. S DIR(0)="FO^1:60",DIR("A")=$S($G(APCDTDIA)]"":APCDTDIA,1:"Enter OPERATION/PROCEDURE")
  1. S DIR("?")=$S($G(APCDTIN9):"^D HELPOP9^AUPNSIC9",1:"^D HELPOP^AUPNSICH")
  1. S DIR("??")=$S($G(APCDTIN9):"^D HELPOP9^AUPNSIC9",1:"^D HELPOP^AUPNSICH")
  1. KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) S APCDTSKI=1,APCDLOOK="" G XITL1
  1. I Y="" S APCDTSKI=1,APCDLOOK="" G XITL1
  1. S APCDUINP=Y
  1. S %=""
  1. I APCDUINP=".9999" S %=+$$ICDOP^ICDEX($S(APCDIMP=1:".9999",1:"ZZZ999"),$P(APCDD,"."),APCDIMP,"E") G LEXN1
  1. I APCDIMP=31,APCDUINP="ZZZ999" S %=+$$ICDOP^ICDEX($S(APCDIMP=1:".9999",1:"ZZZ999"),$P(APCDD,"."),31,"E") G LEXN1
  1. I APCDIMP=31,$E(APCDUINP,1,3)="ZZZ" S %=+$$ICDOP^ICDEX($S(APCDIMP=1:".9999",1:"ZZZ999"),$P(APCDD,"."),APCDIMP,"E") G LEXN1
  1. I $E(APCDUINP,1,7)="UNCODED" S %=+$$ICDOP^ICDEX($S(APCDIMP=1:".9999",1:"ZZZ999"),$P(APCDD,"."),APCDIMP,"E") G LEXN1
  1. I APCDUINP["UNCODED D" S %=+$$ICDOP^ICDEX($S(APCDIMP=1:".9999",1:"ZZZ999"),$P(APCDD,"."),APCDIMP,"E") G LEXN1
  1. K ^TMP("LEXSCH",$J),^TMP("LEXHIT",$J),LEX,^TMP("LEXFND",$J)
  1. ;I APCDIMP=2 D CONFIG^LEXSET(1,"PL2",$P(APCDD,"."))
  1. I APCDIMP=31 D CONFIG^LEXSET("10P","10P",$P(APCDD,"."))
  1. S X=APCDUINP
  1. ;I APCDIMP=2 S DIC("S")=$S('$G(APCDTIN9):"I $$ICDONE^APCDAOP(+Y,LEXVDT)",1:"I $$ICDONE^APCDAOP(+Y,LEXVDT)")
  1. ;I APCDIMP=31 S DIC("S")="I $$ICDONE^APCDAOP(+Y,LEXVDT)"
  1. S DIC("A")="Enter OPERATION/PROCEDURE: "
  1. ;I APCDIMP=2 D LOOK^LEXA(X,1,999,"PL2",$P(APCDD,"."))
  1. I APCDIMP=31 D LOOK^LEXA(X,"10P",999,"10P",$P(APCDD,"."))
  1. I 'LEX D G LEX1
  1. .S X=0 F S X=$O(LEX("HLP",X)) Q:X'=+X W !,LEX("HLP",X)
  1. ;display all codes and call reader
  1. S APCDANS=""
  1. D GETANS^APCDAPOV
  1. I APCDY="^" W ! G LEX1
  1. I APCDY="" W ! G LEX1
  1. I '$G(APCDY) W ! G LEX1
  1. ;I APCDIMP=2 S Y=$$ICDONE^LEXUTHORTOTHOTHOR($P(^TMP("LEXHIT",$J,APCDY),U,1),$P(APCDD,"."))
  1. I APCDIMP=31 S Y=$$P10ONE^LEXU($P(^TMP("LEXHIT",$J,APCDY),U,1),$P(APCDD,"."))
  1. K DO,^TMP("LEXSCH",$J)
  1. K ^TMP("LEXSCH",$J),^TMP("LEXHIT",$J),LEX,^TMP("LEXFND",$J)
  1. I $G(Y)="" W !!,"lexicon isn't passing back an ICD code." S APCDTERR=1,APCDLOOK="" G XITL1
  1. S %=$$ICDOP^ICDEX(Y,$P(APCDD,"."),APCDIMP,"E")
  1. I $P(%,U,1)="-1" W !!,"lexicon isn't passing back an ICD code." S APCDTERR=1,APCDLOOK="" G XITL1
  1. LEXN1 ;
  1. S APCDLOOK="`"_+%,APCDTNQP=APCDUINP
  1. W !
  1. XITL1 K Y,X,DO,D,DD,DIPGM,APCDTPCC
  1. Q
  1. DUAL(APCDDDA,APCDDVS,APCDDDF,APCDDDFE,APCDDDL,APCDDDS) ;EP - CALLED FROM INPUT TEMPLATES
  1. D EN^XBNEW("ENDUAL^APCDAOP","APCDDDA;APCDDVS;APCDDDF;APCDDDFE;APCDDDL;APCDDDS")
  1. K APCDDDA
  1. W !
  1. Q
  1. ENDUAL ;
  1. S APCDTIN9=1
  1. W !!,"For dual coding."
  1. S APCDTDIA=APCDDDL
  1. S APCDVSIT=APCDDVS
  1. S APCDDATE=$$VD^APCLV(APCDDVS)
  1. ;W !
  1. I APCDDDS=80.1 D START1^APCDAOP
  1. I APCDDDS=80 D START1^APCDAPOV
  1. I APCDLOOK]"" S DIE=APCDDDF,DA=APCDDDA,DR=APCDDDFE_"///"_APCDLOOK D ^DIE K DA,DR,DIE Q
  1. W !!,"You did not enter an ICD-9 code.",!
  1. S DIR(0)="Y",DIR("A")="Do you wish to try again",DIR("B")="N" KILL DA D ^DIR KILL DIR
  1. I 'Y Q
  1. I $D(DIRUT) Q
  1. G ENDUAL
  1. TEST ;
  1. K ^TMP("LEXSCH",$J)
  1. D CONFIG^LEXSET("10P","10P",DT)
  1. D LOOK^LEXA("UNCODED","10P",999,"10P",DT)
  1. Q