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

APCDALV.m

Go to the documentation of this file.
  1. APCDALV ; IHS/CMI/LAB - VISIT CREATION ;
  1. ;;2.0;IHS PCC SUITE;;MAY 14, 2009
  1. ;IHS/CMI/LAB - patch 3 added kill of APCDA11
  1. ;
  1. ;
  1. ;visits - 08/01/94
  1. EN ;PEP - Called to create PCC Visits
  1. NEW D0,DA,DIC,DIE,DR
  1. D INIT
  1. I $D(APCDAFLG) D EOJ Q
  1. LOCK +^TMP("APCDALV",APCDPAT):60
  1. I $D(APCDADD) D GENVISIT,EOJ Q ; forced add
  1. I $D(APCDAUTO) D AUTO,EOJ Q ; non-interactive mode
  1. D INTERACT,EOJ ; interactive mode
  1. Q
  1. ;
  1. ;--------------------------------------------------------------
  1. ;
  1. INTERACT ; INTERACTIVE MODE
  1. K APCDALV
  1. S (APCDAVD,APCDAVDC)=9999999-$P(APCDDATE,"."),APCDAVD=(APCDAVD-1)_".999999"
  1. S APCDAC=3
  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) D GENVISIT Q ; no visits gathered
  1. I $D(^XUSEC("APCDZVMRG",DUZ)),$D(APCDALV(5)) D
  1. .K APCDALVX S %=0 F S %=$O(APCDALV(%)) Q:%'=+% S APCDALVX(%)=APCDALV(%)
  1. .K APCDALV
  1. .S %=0 F S %=$O(APCDALVX(%)) Q:%'=+% S APCDALV(%+1)=APCDALVX(%)
  1. .S APCDAC=APCDAC+1
  1. .K APCDALVX,%
  1. .Q
  1. D SELECT ; select or generate visit
  1. I APCDAO=4,'$D(APCDALV(4)) G INTERACT
  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,3)'=APCDTYPE
  1. Q:$P(APCDAX,U,6)'=APCDLOC
  1. Q:$P(APCDAX,U,7)'=APCDCAT
  1. I $D(APCDCLN),$P(APCDAX,U,8),APCDCLN'=$P(APCDAX,U,8) Q
  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=4 S APCDADF=APCDAC
  1. S APCDAO=""
  1. D OPTION ; get option from user
  1. I APCDAO=2 S APCDAFLG=1 Q ; exit with no selection
  1. I APCDAO=1 D GENVISIT Q ; user said generate new visit
  1. I APCDAO=4,'$D(APCDALV(4)) D MRG^APCDALV1 G INTERACT
  1. S Y=$P(^AUPNVSIT(APCDVSIT,0),U,5) D ^AUPNPAT K Y
  1. Q
  1. ;
  1. OPTION ; LET USER SELECT OPTION
  1. D OPTION^APCDALV1
  1. Q
  1. ;
  1. ;--------------------------------------------------------------
  1. ;
  1. AUTO ; NON-INTERACTIVE MODE
  1. S APCDAVDC=9999999-$P(APCDDATE,".")_"."_$P(APCDDATE,".",2)
  1. F APCDAI=0:0 S APCDAI=$O(^AUPNVSIT("AA",APCDPAT,APCDAVDC,APCDAI)) Q:APCDAI="" D CHECK Q:APCDVSIT
  1. Q:APCDVSIT
  1. D GENVISIT
  1. Q
  1. ;
  1. CHECK ; CHECK VISIT AUTO MODE
  1. S APCDAX=^AUPNVSIT(APCDAI,0)
  1. Q:$P(APCDAX,U,11)
  1. I $D(APCDCLN),$P(APCDAX,U,8)'=APCDCLN Q ;CHANGED THIS LINE ON 4/4/96 - DOES THIS FIX IT?
  1. I '$D(APCDCLN),$P(APCDAX,U,8)]"" Q ;if not passing clinic and visit has clinic do not select this visit
  1. Q:$P(APCDAX,U,3)'=APCDTYPE
  1. Q:$P(APCDAX,U,6)'=APCDLOC
  1. Q:$P(APCDAX,U,7)'=APCDCAT
  1. S APCDVSIT=APCDAI
  1. Q
  1. ;
  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 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. K APCDLOOK S 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. ;IHS/ITSC/LJF 8/1/2003
  1. I $T(GETVID^VSITVID)]"",$P($G(^DIC(150.9,1,4)),U,2)]"" S VID=$$GETVID^VSITVID S DIE=9000010,DA=APCDVSIT,DR="15001///"_VID D ^DIE K VID,DIE,DR,DA
  1. S APCDVSIT("NEW")=1
  1. Q
  1. ;
  1. ;--------------------------------------------------------------
  1. ;
  1. INIT ; INITIALIZATION/EDIT INPUT VARIABLES
  1. D INIT^APCDALV1
  1. Q
  1. ;
  1. EOJ ; CLEAN UP
  1. LOCK -^TMP("APCDALV",APCDPAT)
  1. ; The line below must 'hard set' the clinic code because
  1. ; ^DIE would have to be called recursively. An exception to the
  1. ; standard has been granted by DSM/OIRM.
  1. I APCDVSIT,$D(APCDCLN),$P(^AUPNVSIT(APCDVSIT,0),U,8)="" S $P(^AUPNVSIT(APCDVSIT,0),U,8)=APCDCLN ; ***** BAD, VERY BAD, FORGIVE US PLEASE *****
  1. I APCDVSIT,$P($G(^AUPNVSIT(APCDVSIT,11)),U,4)="" S $P(^AUPNVSIT(APCDVSIT,11),U,4)=$$UID^AUPNVSIT(APCDVSIT) ;stuff UID if blank
  1. K X,Y
  1. K DIRUT,DTOUT,DUOUT
  1. K APCDADD,APCDADF,APCDAUTO
  1. K APCDAC,APCDAI,APCDAL,APCDALV,APCDAO,APCDAVD,APCDAVDC,APCDAX,APCDA11
  1. I $D(APCDALVR)\10 S APCDALVR("APCDPAT")=APCDPAT,APCDALVR("APCDVSIT")=APCDVSIT S:$D(APCDVSIT("NEW")) APCDALVR("APCDVSIT","NEW")=APCDVSIT("NEW") S:$D(APCDAFLG) APCDALVR("APCDAFLG")=APCDAFLG D:'$D(APCDNOK) EN1^APCDEKL
  1. Q