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

APCDEREF.m

Go to the documentation of this file.
  1. APCDEREF ; IHS/CMI/LAB - prompt for refusal value ; 23 May 2013 10:50 AM
  1. ;;2.0;IHS PCC SUITE;**11,17**;MAY 14, 2009;Build 18
  1. ;
  1. IN ;EP
  1. ;lookup refusal type and create entry
  1. I $G(APCDTREF)="" W !,"Refusal type missing.....!" Q
  1. S APCDT02=$G(APCDPAT)
  1. I APCDT02="" S APCDT02=$G(DFN)
  1. I 'APCDT02 W !!,"Patient missing..." Q
  1. D EN^XBNEW("IN1^APCDEREF","APCDTREF;APCDT02")
  1. Q
  1. IN1 ;EP - called from xbnew to create a refusal entry
  1. S DIC="^AUTTREFT(",DIC(0)="AEMQ",DIC("A")="PATIENT REFUSALS FOR SERVICE/NMI SERVICE TYPE: "
  1. D ^DIC
  1. I Y=-1 Q
  1. I $P(^AUTTREFT(+Y,0),U)="SNOMED" W !!,"That type of refusal cannot be entered through PCC Data Entry.",! Q
  1. S APCDT01=+Y
  1. VALUE ;EP - called from input template
  1. S APCDTF=$P(^AUTTREFT(APCDT01,0),U,2)
  1. I 'APCDTF W !!,"table file missing..." Q
  1. K X,DUOUT,DIRUT
  1. I $P(^AUTTREFT(APCDT01,0),U)="RXNORM" D RX Q
  1. K DIC S DIC("B")=$S($D(APCDTOLD):APCDTOLD,1:""),DIC("A")=" Enter the "_$P(^DIC(APCDTF,0),U)_" value: ",DIC=APCDTF,DIC(0)="AEMQ"
  1. ;I APCDTF=80.1 S DIC("S")="D ICDOPCHK^AUPNSICD"
  1. D ^DIC K DIC
  1. I $P(Y,U)=-1 W !!,"Invalid entry. Try again." G VALUE
  1. S APCDTFI=+Y
  1. I APCDTF=80.1 S APCDTID=$P($$ICDOP^ICDEX(APCDTFI,,,"I"),U,5) I 1
  1. E S APCDTID=$$VAL^XBDIQ1(APCDTF,APCDTFI,$P(^AUTTREFT(APCDT01,0),U,3))
  1. D CENTRY ;create the entry and edit
  1. EOJ ;
  1. K Y
  1. Q
  1. ;
  1. CENTRY ;
  1. I $G(APCDTDA) G CENTRYE
  1. S X=APCDT01,DIC="^AUPNPREF(",DIC(0)="L",DIC("DR")=".02////"_APCDT02 K DD,DO,D0 D FILE^DICN K DIC
  1. I Y=-1 W !,"ERROR CREATING ENTRY....TRY AGAIN..." Q
  1. S APCDTDA=+Y
  1. CENTRYE ;now edit it
  1. ;FIRST WIPE OUT FIELDS
  1. S DA=APCDTDA,DIE="^AUPNPREF(",DR="1301///@;1302///@;.04///@;.05///@;.07///@" D ^DIE K DIE,DA,DR
  1. S DIE("NO^")="",DA=APCDTDA,DIE="^AUPNPREF(",DR="[APCD REF ADD]" D ^DIE K DIE,DA,DR
  1. Q
  1. MOD(APCDP) ;EP
  1. ;select entry for modify and pass to template in APCDLOOK
  1. S APCDTIEN=""
  1. D EN^XBNEW("MOD1^APCDEREF","APCDP;APCDTIEN")
  1. S APCDLOOK=$G(APCDTIEN)
  1. I 'APCDLOOK W !!,"No entry selected" S APCDTERR=1 Q
  1. Q
  1. MOD1 ;EP called from xbnew
  1. W !?2,"0) None"
  1. NEW APCDX,APCDC,APCDD K APCDD S (APCDX,APCDC)=0
  1. F S APCDX=$O(^AUPNPREF("AC",APCDP,APCDX)) Q:APCDX'=+APCDX S APCDC=APCDC+1,APCDD(APCDC)=APCDX W !?2,APCDC,")",?6,$E($$VAL^XBDIQ1(9000022,APCDX,.01),1,15),?22,$$VAL^XBDIQ1(9000022,APCDX,.04),?54,$$VAL^XBDIQ1(9000022,APCDX,.03)
  1. S DIR(0)="N^0:99999:",DIR("A")="Which one do you wish to modify or delete",DIR("B")="0" KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) Q
  1. I 'Y Q
  1. S APCDTIEN=$G(APCDD(Y))
  1. Q
  1. MOD2 ;EP called from input template
  1. D EN^XBNEW("VALUE^APCDEREF","APCDTMOD;APCDTDA;APCDT01;APCDTREF;APCDTOLD")
  1. Q
  1. EN(PATIENT,VFIEN) ;EP - called from APCD EL (ADD/MOD) templates
  1. I '$G(PATIENT) Q
  1. I '$G(VFIEN) Q
  1. I '$D(^AUPNVELD(VFIEN)) Q
  1. D EN^XBNEW("EN1^APCDEREF","VFIEN;PATIENT")
  1. Q
  1. EN1 ;EP - called from XBNEW to update elder care status
  1. I '$D(^AUPNELDC("B",PATIENT)) G ADDEC
  1. EDITEC ;
  1. S DA=PATIENT,DIE="^AUPNELDC("
  1. NEW VF
  1. S VF=^AUPNVELD(VFIEN,0)
  1. NEW D
  1. S D=$P($P(^AUPNVSIT($P(^AUPNVELD(VFIEN,0),U,3),0),U),".")
  1. I $P(^AUPNELDC(PATIENT,0),U,3)]D Q ;later entry already updated
  1. S DR=".03////"_D_";.04////"_$P(VF,U,4)_";.05////"_$P(VF,U,5)_";.06////"_$P(VF,U,6)_";.07////"_$P(VF,U,7)_";.08////"_$P(VF,U,8)_";.09////"_$P(VF,U,9)_";.11////"_$P(VF,U,11)_";.12////"_$P(VF,U,12)_";.13////"_$P(VF,U,13)
  1. S DR=DR_";.14////"_$P(VF,U,14)_";.15////"_$P(VF,U,15)_";.16////"_$P(VF,U,16)_";.17////"_$P(VF,U,17)_";.18////"_$P(VF,U,18)
  1. D ^DIE
  1. XIT ;
  1. K DIADD,DLAYGO,DD,DO,D0,DIC
  1. K DA,DIE,DIU,DIV,DIW,DR
  1. Q
  1. ADDEC ;
  1. S DLAYGO=9000023,DIC="^AUPNELDC(",DIC(0)="L"
  1. S X="`"_PATIENT
  1. D ^DIC K DIC
  1. I Y=-1 W !,"ERROR ADDING ELDER CARE STATUS ENTRY" D XIT Q
  1. D EDITEC
  1. Q
  1. RX ;
  1. ;prompt for rxnorm code or text
  1. ;call bsts srch if not all numbers
  1. K DIR
  1. S (APCDTID,APCDTF,APCDTFI,APCDTDID)=""
  1. S APCDTF=$P(^AUTTREFT(APCDT01,0),U,2)
  1. W !
  1. S DIR(0)="F^1:60",DIR("A")="Enter the RXNORM code or drug ingredient (or '^' to exit)" KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) Q
  1. S APCDRXN=Y
  1. I APCDRXN?.N D I APCDTID="" G RX
  1. .S APCDRXN1=$$CONC^BSTSAPI(APCDRXN_"^1552^^1")
  1. .Q:$P(APCDRXN1,U)="" ;W !!,APCDRXN1 H 2
  1. .W !!,$P(APCDRXN1,U,1)," ",$P(APCDRXN1,U,2)
  1. .S (APCDTFI,APCDTCON)=APCDRXN
  1. .S APCDTID=$P(APCDRXN1,U,2)
  1. .S APCDTDID=$P(APCDRXN1,U,1)
  1. .D CENTRY
  1. .Q
  1. I APCDRXN'?.N D I APCDTID="" G RX
  1. .NEW OUT,VARS,IN,APCDC
  1. .S OUT="VARS",IN=APCDRXN,$P(IN,U,2)="F",$P(IN,U,3)=1552 I $$SUBE("RXNO SRCH Drug Ingredients All") S $P(IN,U,4)="RXNO SRCH Drug Ingredients All"
  1. .S APCDC=$$SEARCH^BSTSAPI(OUT,IN)
  1. .I +APCDC<1 W !!,?9,"No entries found in the IHS STANDARD RXNORM TERMINOLOGY database."
  1. .I +APCDC>0&(APCDC'=9999999) D GETANS
  1. .I '$G(APCDY) Q
  1. .S (APCDTFI,APCDTCON)=VARS(APCDY,"CON")
  1. .S APCDTID=$G(VARS(APCDY,"FSN","TRM"))
  1. .S APCDTDID=$G(VARS(APCDY,"FSN","DSC"))
  1. .D CENTRY
  1. .Q
  1. Q
  1. GETANS ;EP - DISPLAY RXNORM ARRAY
  1. NEW APCDX,APCDZ,APCDQ,APCDCNT,APCDTOT,Z,MF
  1. S MF=0
  1. S Z=0 F S Z=$O(VARS(Z)) Q:Z'=+Z S MF=MF+1
  1. W !!?5,MF," matches found.",!
  1. S APCDX=0,APCDY="",APCDQ=0,APCDCNT=0,APCDTOT=0
  1. F S APCDX=$O(VARS(APCDX)) Q:APCDX'=+APCDX!(APCDY]"") D
  1. DISP .;display code
  1. .W !?3,APCDX,")"
  1. .S APCDZ=$G(VARS(APCDX,"FSN","TRM"))
  1. .I APCDX="" S APCDX="MISSING FULLY SPECIFIED TERM"
  1. .K ^UTILITY($J)
  1. .S X=APCDZ,DIWL=0,DIWR=70 D ^DIWP
  1. .S Z=0 F S Z=$O(^UTILITY($J,"W",0,Z)) Q:Z'=+Z W:Z>1 ! W ?9,^UTILITY($J,"W",0,Z,0)
  1. .K ^UTILITY($J)
  1. .S APCDCNT=APCDCNT+1,APCDTOT=APCDTOT+1
  1. .I MF=1 S APCDCNT=1,APCDTOT=1 D READ S:APCDY="" APCDY="^" Q
  1. .I MF>4,APCDCNT=5!(MF=APCDTOT) D READ S APCDCNT=0 Q
  1. .I MF<5,MF=APCDX D READ S APCDNT=0 Q:APCDY]""
  1. .Q
  1. Q
  1. READ ;
  1. K DIR,DIRUT
  1. S APCDY=""
  1. W !
  1. ;W !,"Type ""^"" to STOP, press ENTER to continue the list or SELECT 1-"_APCDTOT
  1. S DIR("B")=$S(MF=1:1,1:""),DIR(0)="NO^1:"_APCDTOT_":0"
  1. S DIR("A")="Type ""^"" to STOP or SELECT 1-"_APCDTOT
  1. KILL DA D ^DIR W !
  1. I $D(DIRUT) S APCDY="^"
  1. I Y="" S APCDY="" Q
  1. S APCDY=+Y
  1. Q
  1. SUBE(X) ;EP - does this subset exist?
  1. NEW LST,Y,G
  1. S G=""
  1. S Y=$$SUBSET^BSTSAPI("LST",1552)
  1. S Y=0 F S Y=$O(LST(Y)) Q:Y'=+Y!(G) D
  1. .I $P(LST(Y),U,1)=X S G=1
  1. .Q
  1. Q G