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

APCDEATC.m

Go to the documentation of this file.
  1. APCDEATC ; IHS/CMI/LAB - ENTER TRANS CODE TO OUTPATIENT VISIT ;
  1. ;;2.0;IHS PCC SUITE;**2,17**;MAY 14, 2009;Build 18
  1. ;
  1. ; Enter Trans Codes on existing Outpatient visit
  1. ;
  1. HDR ; Write Header
  1. W:$D(IOF) @IOF
  1. F APCDJ=1:1:5 S APCDX=$P($T(TEXT+APCDJ),";;",2) W !?80-$L(APCDX)\2,APCDX
  1. K APCDX,APCDJ
  1. W !!
  1. D ^APCDEIN
  1. Q:APCDFLG
  1. I '$D(APCDPARM) D ^APCDVAR
  1. S APCDPAT="",APCDNOXV=""
  1. F D GETPAT Q:APCDPAT="" D GETVISIT I APCDVSIT D MNEPROC
  1. D EOJ
  1. Q
  1. ;
  1. GETPAT ; GET PATIENT
  1. W !
  1. S APCDPAT=""
  1. I '$P($G(^APCDSITE(DUZ(2),0)),U,34) S AUPNLK("INAC")=1
  1. S DIC="^AUPNPAT(",DIC(0)="AEMQ" D ^DIC K DIC
  1. Q:Y<0
  1. I $D(APCDPARM),$P(APCDPARM,U,3)="Y" W !?25,"Ok" S %=1 D YN^DICN Q:%'=1
  1. S APCDPAT=+Y
  1. D INAC^APCDEA(APCDPAT,.X) I 'X S APCDPAT="" Q
  1. I DUZ("AG")="I" D ^APCDEMDI
  1. Q
  1. ;
  1. GETVISIT ; GET VISIT
  1. S (APCDDATE,APCDVSIT)=""
  1. RDV W !,"Enter VISIT date: " R X:$S($D(DTIME):DTIME,1:300) S:'$T X="" I X=" " W $C(7)," ??" G RDV
  1. Q:X=""!(X="^")
  1. S %DT="EXP" D ^%DT
  1. G:X="?" RDV
  1. I Y<0 K Y Q
  1. S APCDDATE=Y
  1. D FINDVSIT
  1. I APCDVSIT S AUPNVSIT=APCDVSIT D MOD^AUPNVSIT S APCDCAT=$P(^AUPNVSIT(APCDVSIT,0),U,7),APCDLOC=$P(^(0),U,6),APCDTYPE=$P(^(0),U,3),APCDPAT=$P(^(0),U,5),APCDDATE=$P($P(^(0),U),"."),APCDCLN=$P(^(0),U,8)
  1. I APCDVSIT,AUPNDOB]"" S X2=AUPNDOB,X1=APCDDATE D ^%DTC S AUPNDAYS=X ; re-set days of age to visit date-dob
  1. Q
  1. ;
  1. MNEPROC ; PROCESS MNEMONICS UNTIL DONE
  1. S DIE="^AUPNPAT(",DR=".16///TODAY",DA=APCDPAT D ^DIE
  1. W !
  1. S X="TC",DIC="^APCDTKW(",DIC(0)="M" D ^DIC K DIC
  1. I Y<0 W !!,"Error Occurred. Could not find TC mnemonic!" Q
  1. S APCDMNE=+Y,APCDMNE("NAME")=$P(Y,U,2)
  1. D ^APCDEA3
  1. S APCDMPQ=0
  1. F D GETMNE D:$D(APCDEQX) CHKEHR2^APCDVCHK I APCDMPQ Q
  1. I $$DTC^APCDKDTC(APCDVSIT) D START^APCDKDTC(APCDVSIT)
  1. I $P(APCDPARM,U,5)="Y" S APCDFV=APCDVSIT D ^APCDFCTC K APCDFV
  1. D GETMNEK
  1. K APCDMPQ,APCDREGU
  1. W !
  1. Q
  1. ;
  1. GETMNE ; GET MNEMONIC
  1. W !
  1. S DIC="^APCDTKW(",DIC(0)="AEMQ",DIC("A")="MNEMONIC: ",DIC("S")="I $L($P(^(0),U))<5" D ^DIC K DIC("A"),DIC("S")
  1. I Y=-1 S APCDMPQ=1 Q
  1. S APCDMNE=+Y,APCDMNE("NAME")=$P(Y,U,2)
  1. K APCDMOD
  1. D ^APCDEA3
  1. I $D(APCDEQX) D ^APCDEQX I $D(APCDEQX) S APCDMPQ=1 Q
  1. I $D(APCDMOD) W !!,"Switching to Modify Mode for ONE Mnemonic ONLY!" S APCDMODE="M",APCDVLK=APCDVSIT D GETMNE K APCDVLK,APCDMOD S APCDMODE="A" W !!,"Switching back to ENTER Mode!" Q
  1. Q
  1. ;
  1. ;
  1. GETMNEK ; KILL GETMNE SPECIFIC VARIABLES
  1. K APCDVSIT,APCDX,APCDEQX
  1. Q
  1. ;
  1. ;
  1. GENVISIT ; GENERATE NEW VISIT
  1. S Y=APCDPAT D ^AUPNPAT K Y
  1. S APCDSEX=AUPNSEX,APCDDOB=AUPNDOB,APCDDOD=AUPNDOD
  1. S APCDDATE=$P(APCDDATE,".")_".12"
  1. S X=APCDDATE,%DT="TRXN" D ^%DT S X=Y I X=-1 S APCDAFLG=2,APCDAFLG("ERR")=".01^"_APCDDATE_"^DATE INVALID FOR PATIENT,CANNOT CREATE VISIT .01 VALUE" Q
  1. D VSIT01^AUPNVSIT
  1. I '$D(X) S APCDAFLG=2,APCDAFLG("ERR")=".01^"_APCDDATE_"^DATE INVALID FOR PATIENT,CANNOT CREATE VISIT .01 VALUE" Q
  1. S APCDLOC=DUZ(2)
  1. S APCDCAT="I"
  1. ;get type of visit
  1. D GETTYPE
  1. I APCDTYPE="" W !,"Visit NOT Created!" Q
  1. K APCDLOOK S X=APCDDATE,DIC="^AUPNVSIT(",DIC(0)="L"_$S($D(ZTQUEUED)!($D(ZTSK)):"",1:"E"),DLAYGO=9000010,DIC("DR")="[APCD VISIT (ADD)]" K DD,DO D FILE^DICN K DIC,DLAYGO
  1. I Y<0 S APCDAFLG=2,APCDAFLG("ERR")=".01^"_APCDDATE_"^FILE^DICN FAILED TO CREATE VISIT" Q
  1. S APCDVSIT=+Y
  1. S APCDVSIT("NEW")=1
  1. Q
  1. ;
  1. ;--------------------------------------------------------------
  1. ;
  1. GETTYPE ; GET TYPE OF ENCOUNTER
  1. S APCDTYPE=""
  1. K DTOUT,DUOUT,DIRUT,DIROUT,DIR,DA
  1. S DIR("B")=$P($G(^APCDSITE(DUZ(2),0)),U,11)
  1. S DIR(0)="9000010,.03O",DIR("A")="TYPE OF VISIT" D ^DIR K DIR
  1. I $D(DIRUT) S X="" Q
  1. S APCDTYPE=Y
  1. Q
  1. ;
  1. EOJ ; END OF JOB
  1. D ^APCDEKL,EN^XBVK("APCD")
  1. K DX,S,A,POP,IOY,%,%DT,X,Y,DI,DIGG,DIPGM,DISYS,DI,%1,DQ
  1. D ^XBFMK
  1. D KILL^AUPNPAT
  1. Q
  1. FINDVSIT ; INTERACTIVE MODE
  1. K APCDALV
  1. S (APCDAVD,APCDAVDC)=9999999-$P(APCDDATE,"."),APCDAVD=(APCDAVD-1)_".999999"
  1. S APCDAC=2
  1. F APCDAL=0:0 S APCDAVD=$O(^AUPNVSIT("AA",APCDPAT,APCDAVD)) Q:APCDAVD="" Q:$P(APCDAVD,".")'=APCDAVDC F APCDAI=0:0 S APCDAI=$O(^AUPNVSIT("AA",APCDPAT,APCDAVD,APCDAI)) Q:APCDAI="" D GATHER
  1. I '$D(APCDALV) W !!,"No OUTPATIENT Visits for ",$P(^DPT(APCDPAT,0),U),"on ",$$FMTE^XLFDT(APCDDATE),".",! Q
  1. D SELECT
  1. I APCDAO=4,'$D(APCDALV(4)) G FINDVSIT
  1. Q
  1. ;
  1. GATHER ; GATHER VISITS FOR USER TO SELECT
  1. S APCDAX=^AUPNVSIT(APCDAI,0)
  1. Q:$P(APCDAX,U,11)
  1. ;Q:$P(APCDAX,U,6)'=DUZ(2) ;only visits to this location
  1. Q:"AOS"'[$P(APCDAX,U,7) ;only outpatient
  1. S APCDAC=APCDAC+1,APCDALV(APCDAC)=APCDAI
  1. Q
  1. ;
  1. SELECT ; ALLOW USER TO SELECT, EXIT, OR ADD
  1. I '$D(APCDADF),APCDAC=3 S APCDADF=APCDAC
  1. S APCDAO=""
  1. D OPTION ; get option from user
  1. I APCDAO=1 S APCDAFLG=1 Q ; exit with no selection
  1. S Y=$P(^AUPNVSIT(APCDVSIT,0),U,5) D ^AUPNPAT K Y
  1. Q
  1. ;
  1. OPTION ;EP;GET OPTION FROM USER
  1. F APCDAL=0:0 D OPTION2 Q:APCDAO
  1. Q
  1. ;
  1. OPTION2 ; LET USER SELECT OPTION
  1. W !!,"PATIENT: ",$P(^DPT(APCDPAT,0),U)," has VISITs, same date, location.",!
  1. W !,"1 Exit without selecting VISIT"
  1. W !,"2 Display one of the existing VISITs"
  1. W !!,"Or select one of the following existing VISITs:",!
  1. F APCDAI=0:0 S APCDAI=$O(APCDALV(APCDAI)) Q:APCDAI="" S APCDAX=APCDALV(APCDAI) D WRITE
  1. S DIR(0)="N^1:"_APCDAC_":0",DIR("A")="Choose one",DIR("?")="Choose one of the numbers listed above" S:$D(APCDADF) DIR("B")=APCDADF D ^DIR K DIR
  1. I $D(DIRUT) S APCDAO=1 Q
  1. S Y=+Y
  1. I Y=2 D DISPLAY Q
  1. I Y<3 S APCDAO=Y Q
  1. S APCDAO=Y,APCDVSIT=APCDALV(Y)
  1. Q
  1. ;
  1. WRITE ; WRITE VISITS FOR SELECT
  1. S APCDAX=^AUPNVSIT(APCDAX,0)
  1. S APCDAT=$P(+APCDAX,".",2),APCDAT=$S(APCDAT="":"<NONE>",$L(APCDAT)=1:APCDAT_"0:00 ",1:$E(APCDAT,1,2)_":"_$E(APCDAT,3,4)_$E("00",1,2-$L($E(APCDAT,3,4)))_" ")
  1. W !,APCDAI," TIME: ",APCDAT," TYPE: ",$P(APCDAX,U,3)," CATEGORY: ",$P(APCDAX,U,7)," CLINIC: ",$S($P(APCDAX,U,8)]"":$E($P(^DIC(40.7,$P(APCDAX,U,8),0),U),1,13),1:"<NONE>"),?72,"DEC: ",$S($P(APCDAX,U,9):$P(APCDAX,U,9),1:0)
  1. K APCDAT
  1. Q
  1. ;
  1. DISPLAY ; DISPLAY VISIT FOR USER
  1. I APCDAC=3 S APCDVSIT=APCDALV(APCDAC) D EN1^APCDVD S APCDVSIT="" Q
  1. S DIR(0)="NO^"_3_":"_APCDAC_":0",DIR("A")="Which one",DIR("?")="Enter the number associated with the visit you wish to display" D ^DIR K DIR
  1. Q:$D(DIRUT)
  1. S APCDVSIT=APCDALV(+Y) D EN1^APCDVD S APCDVSIT=""
  1. Q
  1. ;
  1. TEXT ;
  1. ;;PCC Data Entry Module
  1. ;;
  1. ;;*******************************************
  1. ;;* ENTER TRANS CODES FOR OUTPATIENT VISITS *
  1. ;;*******************************************
  1. Q