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

BDPMOD.m

Go to the documentation of this file.
  1. BDPMOD ; IHS/CMI/TMJ - EDIT AN EXISTING DESIGNATED PROVIDER ;
  1. ;;2.0;IHS PCC SUITE;**10,21**;MAY 14, 2009;Build 34
  1. ;
  1. ; Subscripted BDPREC is EXTERNAL form.
  1. ; BDPREC("PAT NAME")=patient name
  1. ; BDPREC("PROV TYPE")=Provider Category Type
  1. ; BDPDFN=patient ien
  1. ; BDPRDATE=date in internal FileMan form
  1. ; BDPRIEN=Designated Provider ien
  1. ;
  1. START ;
  1. ;
  1. D INFORM ;Data Entry Explanation
  1. ;
  1. F D MAIN Q:BDPQ D HDR^BDP
  1. D EOJ
  1. Q
  1. ;
  1. MAIN ;
  1. S BDPQ=0
  1. ;S BDPMODE="A",BDPLOOK=""
  1. D PATIENT ; get patient Name
  1. Q:BDPQ
  1. D PROVDISP
  1. I BDPQ=1 G GETTYPE
  1. ;
  1. D ASK
  1. Q:BDPQ
  1. ;
  1. GETTYPE ;Do Get Date if no existing Designated Providers
  1. D TYPE ; get Provider Category Type
  1. Q:BDPQ
  1. D ADD ; add new Designated Provider record
  1. ;Q:BDPQ
  1. Q
  1. ;
  1. PATIENT ; GET PATIENT
  1. F D PATIENT2 I BDPQ!($G(BDPDFN)) Q
  1. Q
  1. ;
  1. PATIENT2 ; ASK FOR PATIENT UNTIL USER SELECTS OR QUITS
  1. S BDPQ=1
  1. S DIC="^AUPNPAT(",DIC(0)="AEMQ" D DIC^BDPFMC
  1. Q:Y<1
  1. S BDPDFN=+Y,BDPREC("PAT NAME")=$P(^DPT(+Y,0),U)
  1. S BDPQ=0
  1. I $$DOD^AUPNPAT(BDPDFN) D I 'Y K BDPDFN,BDPREC("PAT NAME") Q
  1. . W !!,"This patient is deceased."
  1. . S DIR(0)="YO",DIR("A")="Are you sure you want this patient",DIR("B")="NO" K DA D ^DIR K DIR
  1. . W !
  1. . Q
  1. Q
  1. ;
  1. ;
  1. ASK ;Ask to Continue
  1. S BDPQ=0
  1. W !! S DIR(0)="Y",DIR("A")="Do you want to continue changing one of the above Designated Providers",DIR("B")="Y" K DA D ^DIR K DIR
  1. I $D(DIRUT) S BDPQ=1 Q
  1. I 'Y S BDPQ=1 Q
  1. Q
  1. ;
  1. PROVDISP ;Display if Patient has existing Designated Providers
  1. W !!,?25,"********************",!
  1. W ?10,"**CURRENT DESIGNATED PROVIDERS - BY PROVIDER CATEGORY TYPE**",!
  1. W !,?15,"Assigned to Patient: "
  1. W ?35,$P($G(^DPT(BDPDFN,0)),U)
  1. W !,?25,"********************"
  1. W !,?10,"**CATEGORY TYPE**",?46,"**CURRENT PROVIDER ASSIGNED**",!
  1. I '$D(^BDPRECN("AA",BDPDFN)) W !,?20,"**--NO EXISTING DESIGNATED PROVIDERS--**",! S BDPQ=1 Q
  1. S BDPQ=0
  1. S BDPTYPE=""
  1. S BDPCOUNT=0
  1. F I=1:1:100 S BDPTYPE=$O(^BDPRECN("AA",BDPDFN,BDPTYPE)) Q:BDPTYPE="" S BDPCOUNT=BDPCOUNT+1 D NEXT
  1. Q
  1. NEXT ;2ND $O
  1. S BDPRIEN=""
  1. F S BDPRIEN=$O(^BDPRECN("AA",BDPDFN,BDPTYPE,BDPRIEN)) Q:BDPRIEN'=+BDPRIEN D
  1. . Q:BDPTYPE=""
  1. . Q:BDPRIEN=""
  1. . S BDPPTNAM=$P(^DPT(BDPDFN,0),U,1) ;Patient Print Name
  1. . S BDPTYPNM=$P(^BDPTCAT(BDPTYPE,0),U,1) ;Type Print
  1. . S BDPCPRV=$P($G(^BDPRECN(BDPRIEN,0)),U,3) ;Current Provider IEN
  1. . I BDPCPRV="" S BDPCPRVP="<None Currently Assigned>" ;If no current Provider
  1. . E S BDPCPRVP=$P(^VA(200,BDPCPRV,0),U,1) ;Provider Print Name
  1. . W !,?5,BDPCOUNT,?10,$E(BDPTYPNM,1,30),?50,$E(BDPCPRVP,1,35)
  1. . S I=I+1 ; increment outer loop counter to limit display to 10 Designated Providers
  1. . Q
  1. Q
  1. ;
  1. ;
  1. ;
  1. TYPE ; GET CATEGORY TYPE FOR DESIGNATED PROVIDER
  1. W !
  1. S BDPQ=1
  1. ;
  1. S DIR(0)="90360.1,.01",DIR("B")="DPCP" K DA D ^DIR K DIR
  1. Q:$D(DIRUT)
  1. S BDPTYPE=+Y,BDPREC("PROV TYPE")=Y(0)
  1. S BDPQ=0
  1. Q
  1. PROV ; GET NEW DESIGNATED PROVIDER
  1. S BDPPROV="",BDPQ=1
  1. S DIC("A")="Select New Designated Provider: ",DIC="^VA(200,",DIC(0)="AEMQ"
  1. I $$GET1^DIQ(90360.3,BDPTYPE,.01)="MESSAGE AGENT" S DIC("S")="I $D(^BDPMSGA(+Y,0)),'$P(^BDPMSGA(+Y,0),U,3)" K DIC("B")
  1. D ^DIC K DIC,DA S:$D(DUOUT) DIRUT=1
  1. Q:$D(DIRUT)
  1. I +Y<1 S BDPQ=1 Q
  1. S BDPPROV=+Y,BDPRPROV=$P(Y,U,2) ;Provider IEN
  1. S BDPRPRVP=$P(^VA(200,BDPPROV,0),U,1) ;Provider Print Name
  1. S BDPQ=0
  1. Q
  1. ;
  1. ADD ; ADD NEW DESIGNATED PROVIDER RECORD
  1. S BDPQ=1
  1. S BDPRR=$O(^BDPRECN("AA",BDPDFN,BDPTYPE,"")) ;Check to see if this Patient already has this Type
  1. I BDPRR'="" S BDPLPROV=$P($G(^BDPRECN(BDPRR,0)),U,3) ;Current Provider
  1. I BDPRR="" W !!,?10,"This patient does NOT have a Designated Provider",!,"for the Category you selected. See the Listing above."
  1. I BDPRR="" W !!,"-Use the ADD menu option to Add a CURRENT Provider for this Category Type-",!! D PAUSE^BDP Q
  1. ;
  1. S BDPRIEN=BDPRR ;Assign Record IEN to populate Multiple
  1. ;
  1. D PROV
  1. Q:BDPQ
  1. Q:BDPRPROV=""
  1. I BDPLPROV=BDPPROV W !!,"This is the existing Current Provider for this Category",!! D PAUSE^BDP Q ;Quit if the same Provider
  1. ASKGO ;Ask to continue
  1. ;
  1. W !!!,?8,"**********************************************",!
  1. W !!,?8,"Okay, you have selected DESIGNATED PROVIDER : ",BDPRPRVP,!
  1. W ?8,"To be assigned to Patient Name: "_$P($G(^DPT(BDPDFN,0)),U,1) W !
  1. W ?8,"For Designated Provider Category/Type: "_$P($G(^BDPTCAT(BDPTYPE,0)),U,1) W !!
  1. W !,?8,"**********************************************",!
  1. ;
  1. ;
  1. S DIR(0)="Y",DIR("A")="Do you wish to Continue Changing to a new CURRENT Designated Provider",DIR("?")="Enter Y for Yes or N for NO",DIR("B")="N" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. I $D(DIRUT) S BDPQ=1 Q
  1. I Y=0 S BDPQ=1 Q
  1. W !!,"Okay - I have changed this Patient Record - as follows: ",! D Q
  1. .W !!,"DESIGNATED PROVIDER : ",BDPRPRVP,!
  1. .W "Has been assigned to Patient Name: "_$P($G(^DPT(BDPDFN,0)),U,1) W !
  1. .W "For Designated Provider Category/Type: "_$P($G(^BDPTCAT(BDPTYPE,0)),U,1) W !!
  1. .S BDPLINKI=1
  1. .S:'$D(^BDPRECN(BDPRIEN,1,0)) $P(^(0),U,2)="90360.11P"
  1. .S (X,BDPLIEN,BDPLNUM)=0
  1. .F S X=$O(^BDPRECN(BDPRIEN,1,X)) Q:X'=+X S BDPLIEN=X,BDPLNUM=BDPLNUM+1 ;get last ien in multiple
  1. .S BDPNIEN=BDPLIEN+1
  1. .S BDPLNUM=BDPLNUM+1
  1. .S $P(^BDPRECN(BDPRIEN,1,0),U,3)=BDPNIEN
  1. .S $P(^BDPRECN(BDPRIEN,1,0),U,4)=BDPLNUM
  1. .;INACTIVE PREVIOUS ONE
  1. .I BDPNIEN'=1,$P(^BDPRECN(BDPRIEN,1,BDPLIEN,0),U,5)="" S DIE="^BDPRECN("_BDPRIEN_",1,",DA(1)=BDPRIEN,DA=BDPLIEN,DR=".02////"_DUZ_";.03////"_DT_";.05////"_DT D ^DIE K DIE,DR,DA,DINUM
  1. .S BDPLINKI=1 ;tell fileman you are coming from BDP
  1. .;S DR=".01///"_"`"_BDPPROV
  1. .S ^BDPRECN(BDPRIEN,1,BDPNIEN,0)=BDPPROV_U_DUZ_U_DT_U_DT
  1. .;L +^BDPRECN(BDPRIEN):10 I '$T Q "0^UNABLE TO LOCK GLOBAL"
  1. .;S DIE="^BDPRECN("_BDPRIEN_",1,",DA(1)=BDPRIEN,DA=BDPLIEN D ^DIE K DIE,DR,DA,DINUM
  1. .;L -^BDPRECN(BDPRIEN)
  1. .;REINDEX MULTIPLE ENTRY
  1. .NEW DIK
  1. .S DA(1)=BDPRIEN,DA=BDPNIEN,DIK="^BDPRECN("_BDPRIEN_",1," D IX^DIK K DIC,DA
  1. .;I $D(Y) Q "0^ADDING PROVIDER TO LOG FAILED"
  1. .D PAUSE^BDP
  1. .S BDPQ=0
  1. .Q
  1. EOJ ; END OF JOB
  1. D ^BDPKILL
  1. Q
  1. ;
  1. ;
  1. INFORM ;Data Entry Explanation
  1. ;
  1. W !,?20,"******************************"
  1. W !,?2,"Utilize this Option to MODIFY Existing Designated Specialty Provider Records.",!
  1. W ?3,"If the Patient has already been assigned the same Provider for the",!,?3,"Category and Provider selected - the record will not be Updated.",!
  1. W ?20,"******************************",!
  1. Q
  1. IMA ;EP - called from option to inactivate a message agent so they can no longer be selected
  1. ;select provider to inactive
  1. W !!
  1. S DIC="^BDPMSGA(",DIC(0)="AEMQ",DIC("A")="Select Message Agent: " D ^DIC K DIC,DA
  1. I Y=-1 W !!,"No message agent selected." D PAUSE^BDP Q
  1. S BDPMA=+Y
  1. I $P(^BDPMSGA(BDPMA,0),U,3) G REACT
  1. S DIR(0)="Y",DIR("A")="Are you sure you want to inactivate "_$$GET1^DIQ(90360.5,BDPMA,.01)_" as a message agent",DIR("B")="Y"
  1. KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) W !,"No action taken." D PAUSE^BDP K Y,BDPMA Q
  1. I 'Y W !,"No action taken." D PAUSE^BDP K Y,BDPMA Q
  1. S DA=BDPMA,DIE="^BDPMSGA(",DR=".03///1" D ^DIE K DIE,DA,R,Y
  1. W !,$$GET1^DIQ(90360.5,BDPMA,.01)," has been inactivated."
  1. D COUNT
  1. D PAUSE^BDP
  1. K BDPMA
  1. Q
  1. REACT ;
  1. W !!,$$GET1^DIQ(90360.5,BDPMA,.01)," is currently inactive.",!
  1. S DIR(0)="Y",DIR("A")="Are you sure you want to reactivate "_$$GET1^DIQ(90360.5,BDPMA,.01)_" as a message agent",DIR("B")="Y"
  1. KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) W !,"No action taken." D PAUSE^BDP K Y,BDPMA Q
  1. I 'Y W !,"No action taken." D PAUSE^BDP K Y,BDPMA Q
  1. S DA=BDPMA,DIE="^BDPMSGA(",DR=".03///@" D ^DIE K DIE,DA,R,Y
  1. W !,$$GET1^DIQ(90360.5,BDPMA,.01)," has been reactivated." D PAUSE^BDP K Y,BDPMA
  1. Q
  1. COUNT ;Count of # Patients for this Old Provider
  1. S BDPI="",BDPQ=0,BDPC=0
  1. S BDPTYPE=$O(^BDPTCAT("B","MESSAGE AGENT",0))
  1. F S BDPI=$O(^BDPRECN("AC",BDPMA,BDPI)) Q:BDPI="" D
  1. .Q:$P(^BDPRECN(BDPI,0),U,1)'=BDPTYPE
  1. .S BDPC=BDPC+1
  1. I BDPC>0 D
  1. .W !!,"There are ",BDPC," patients currently assigned ",$$GET1^DIQ(90360.5,BDPMA,.01)," as their Message"
  1. .W !,"Agent. Use option CLOP-Change all of one Provider's Patients to Another"
  1. .W !,"to change them to another Message Agent.",!
  1. K BDPI,BDPYI,BDPC,BDPQ
  1. W !
  1. W !
  1. Q