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

BMCADD.m

Go to the documentation of this file.
  1. BMCADD ; IHS/PHXAO/TMJ - ADD A NEW REFERRAL ; [ 07/12/2006 3:48 PM ]
  1. ;;4.0;REFERRED CARE INFO SYSTEM;**2,8,9,12*;JAN 09, 2006;Build 101
  1. ;4.0*2 IHS/OIT/FCJ Marked EP for API routine
  1. ;4.0*8 IHS/OIT/FCJ Added selecting a visit and adding a v ref entry
  1. ;4.0*9 IHS/OIT/FCJ ADDED TEST FOR PREVIOUS REFERRALS
  1. ;4.0*12 IHS/OIT/FCJ ADDED CALL IN BY AND CALL IN NOTIFICATION DATE And V Ref change to Visit provider
  1. ;
  1. ;IHS/OIT/FCJ Messages are no longer triggered. Prompts
  1. ; user if they would like to send a message.
  1. ; CHANGED COMMENT CALL, BUSINESS OFF AND MED HX
  1. ; ARE NO LONGER CALLED FROM FORM. Called at the end of Data entry.
  1. ; CHANGED OPT 1 AND 4 DISPLAY NAMES
  1. ; Remove BO/Case/Manage care comments fr physician option
  1. ; Removed asking for Case comments
  1. ; Test for SR and add a new form for call-in's
  1. ;
  1. ; See ^BMCVDOC for system wide variables set by main menu
  1. ; Subscripted BMCREC is EXTERNAL form.
  1. ; BMCREC("PAT NAME")=patient name
  1. ; BMCREC("REF DATE")=referral date
  1. ; BMCDFN=patient ien
  1. ; BMCRDATE=referral date in internal FileMan form
  1. ; BMCRNUMB=referral number
  1. ; BMCRIEN=referral ien
  1. ; BMCMODE=A for add, M for modify
  1. ; BMCRTYPE=type of referral (.04 field)
  1. ; BMCRIO=Inpatient or Outpatient (.14 field)
  1. ;
  1. START ;
  1. D:$G(BMCPARM)="" PARMSET^BMC
  1. F D MAIN Q:BMCQ D HDR^BMC
  1. D EOJ
  1. Q
  1. ;
  1. MAIN ;
  1. S BMCQ=0
  1. S BMCMODE="A",(BMCLOOK,BMCVDFN,BMCVRIE,BMCSTRM,BMCSNO,BMCSCOD)="" ;BMC*4.0*8 ADDED BMCVDFN AND BMCSTRM
  1. S APCDOVRR=""
  1. D PATIENT ; get patient being referred
  1. Q:BMCQ
  1. D REFDISP
  1. I BMCQ=1 D GETDATE Q
  1. D ASK
  1. Q:BMCQ
  1. ;
  1. GETDATE ;EP;Do Get Date if no existing Referrals
  1. D DATE ; get date of referral
  1. Q:BMCQ
  1. D NUMBER ; get next referral number
  1. Q:BMCQ
  1. D ADD ; add new referral record
  1. Q:BMCQ
  1. I BMCPCC,'$G(BMCOUTR) D DSPV^BMCADDP I BMCQ D DELETE Q ;BMC*4.0*8 TEST FOR PCC LINK AND GO TO REQUIRE A VST
  1. D EDIT ; edit referral record just added
  1. Q:BMCQ ;BMC*4.0*8
  1. I BMCPCC,'$G(BMCOUTR) D ADDVREF ;BMC*4.0*8 Add to V Ref file
  1. Q
  1. ;
  1. PATIENT ;EP; GET PATIENT
  1. F D PATIENT2 I BMCQ!($G(BMCDFN)) Q
  1. Q
  1. ;
  1. PATIENT2 ; ASK FOR PATIENT UNTIL USER SELECTS OR QUITS
  1. S BMCQ=1
  1. S DIC="^AUPNPAT(",DIC(0)="AEMQ" D DIC^BMCFMC
  1. Q:Y<1
  1. S BMCDFN=+Y,BMCREC("PAT NAME")=$P(^DPT(+Y,0),U)
  1. S BMCQ=0
  1. I $$DOD^AUPNPAT(BMCDFN) D I 'Y K BMCDFN,BMCREC("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. ;
  1. ASK ;EP;Ask to Continue
  1. S BMCQ=0
  1. W !! S DIR(0)="Y",DIR("A")="Do you want to continue with adding a new referral",DIR("B")="Y" K DA D ^DIR K DIR
  1. I $D(DIRUT) S BMCQ=1 Q
  1. I 'Y S BMCQ=1 Q
  1. Q
  1. ;
  1. REFDISP ;EP;Display if Patient has existing Referrals
  1. W !!,?25,"********************",!
  1. W ?25,"**LAST 5 REFERRALS**",!,?25,"********************",!
  1. I '$D(^BMCREF("AA",BMCDFN)) W !,?20,"**--NO EXISTING REFERRALS--**",! S BMCQ=1 Q
  1. S BMCQ=0
  1. S BMCDT="",CT=5 ;BMC*3.1*9 ADDED CT AND CT TO NXT LINE
  1. F I=1:1:5 S BMCDT=$O(^BMCREF("AA",BMCDFN,BMCDT),-1) Q:BMCDT="" D NEXT Q:CT=0
  1. K CT Q
  1. NEXT ;2ND $O
  1. S BMCRIEN=""
  1. F S BMCRIEN=$O(^BMCREF("AA",BMCDFN,BMCDT,BMCRIEN),-1) Q:BMCRIEN'=+BMCRIEN D
  1. . Q:BMCDT=""
  1. . Q:BMCRIEN=""
  1. . Q:$P($G(^BMCREF(BMCRIEN,1)),U)'="" ;4.0 IHS/ITSC/FCJ TST FOR SR
  1. . Q:CT=0 ;BMC*3.1*9
  1. . D START^BMCLKID1
  1. . S CT=CT-1 ;BMC*3.1*9
  1. Q
  1. ;
  1. DATE ; GET DATE OF REFERRAL
  1. W !
  1. S BMCQ=1
  1. S DIR(0)="90001,.01",DIR("B")="TODAY" K DA D ^DIR K DIR
  1. Q:$D(DIRUT)
  1. S BMCRDATE=+Y,BMCREC("REF DATE")=Y(0)
  1. S BMCQ=0
  1. Q
  1. ; Search index to determine if referral exists for patient/date.
  1. ; If so, display message.
  1. ;
  1. I $D(^BMCREF("AA",BMCDFN,BMCRDATE)) D Q
  1. .W !!,"A REFERRAL FOR '",BMCREC("PAT NAME"),"', ON '",BMCREC("REF DATE"),"' EXISTS.",!,"USE THE 'MODIFY' OPTION TO EDIT THE REFERRAL.",!
  1. .D EOP^BMC
  1. S BMCQ=0
  1. Q
  1. ;
  1. PROV ; GET REQUESTING PROVIDER
  1. S BMCPROV="",BMCQ=1
  1. I $G(BMCOUTR) S BMCQ=0 Q ; do not ask provider if outside referral
  1. S DIR(0)="90001,.06",DIR("A")="Enter REQUESTING PROVIDER" K DA D ^DIR K DIR
  1. Q:$D(DIRUT)
  1. S BMCPROV=+Y,BMCRPROV=$P(Y,U,2)
  1. S BMCQ=0
  1. Q
  1. CALLIN ;GET CALL IN BY AND DATE ;BMC*4.0*12 IHS/OIT/FCJ NEW SECTION
  1. W !
  1. S (BMCCDT,BMCCBY)="",BMCQ=1
  1. S DIR(0)="90001,103",DIR("A")="Enter Call in Notification date" K DA D ^DIR K DIR
  1. Q:$D(DIRUT)!(+Y<1)
  1. S BMCCDT=Y
  1. W !
  1. S DIR(0)="90001,104",DIR("A")="Enter Call in Notification By" K DA D ^DIR K DIR
  1. Q:$D(DIRUT)!(Y'?1A)
  1. S BMCCBY=Y
  1. S BMCQ=0
  1. Q
  1. NUMBER ; GENERATE REFERRAL NUMBER
  1. S BMCQ=1
  1. S X=$$REFN^BMC
  1. Q:'X
  1. X $P(^DD(90001,.02,0),U,5,99)
  1. I '$D(X) W !,"Error generating new referral number. Notify programmer.",! D EOP^BMC Q
  1. S BMCRNUMB=X
  1. S BMCQ=0
  1. Q
  1. ;
  1. ADD ; ADD NEW REFERRAL RECORD
  1. S BMCQ=1
  1. D ADD2 Q:'$D(BMCRR) I 1
  1. E S BMCRR=""
  1. D PROV
  1. Q:BMCQ
  1. I $G(BMCOUTR) D CALLIN ;BMC*4.0*12 OIT/IHS/FCJ CALL DATE AND BY
  1. Q:BMCQ ;BMC*4.0*12 OIT/IHS/FCJ CALL DATE AND BY
  1. I BMCRR="" D Q
  1. .;BMC*4.0*8 SPLIT NXT LINE AND ADDED TOC STATUS FIELD 1304
  1. .S DIC="^BMCREF(",DIC(0)="L",DLAYGO=90001,X=BMCRDATE
  1. .S DIC("DR")=".02////"_BMCRNUMB_";.03////"_BMCDFN_";.06////"_BMCPROV_";.15////A;.25////"_DUZ_";.26////"_DT_";.27////"_DT_";1304////P"
  1. .I $G(BMCOUTR) S DIC("DR")=DIC("DR")_";103////"_BMCCDT_";104////"_BMCCBY ;BMC*4.0*12 OIT/IHS/FCJ CALL DATE AND BY
  1. .D FILE^BMCFMC
  1. .I Y<0 W !,"Error creating REFERRAL.",!,"Notify programmer.",! D EOP^BMC Q
  1. .W !!,"REFERRAL number : ",BMCRNUMB,!
  1. .S BMCRIEN=+Y
  1. .S BMCQ=0
  1. .Q
  1. ;
  1. RR ;routine referral selected
  1. ;create entry with .01
  1. ;%rcr
  1. ;re-index
  1. ;call die with other fields
  1. ;set BMCRIEN,BMCQ=0
  1. S BMCOVRPS="" ;override post selection action
  1. S DIC="^BMCREF(",DIC(0)="L",DLAYGO=90001,X=BMCRDATE D FILE^BMCFMC
  1. K BMCOVRPS ;kill override variable
  1. I Y<0 W !,"Error creating REFERRAL.",!,"Notify programmer.",! D EOP^BMC Q
  1. S BMCRIEN=+Y
  1. ;call %RCR to copy routine referral into the newly created
  1. ;RCIS Referral entry
  1. S %X="^BMCRTNRF("_BMCRR_",",%Y="^BMCREF("_BMCRIEN_"," D %XY^%RCR ;move 0 node
  1. S BMCSCOD="",BMCSTRM="" ;BMC*4.0*8
  1. S BMCSCOD=$P($G(^BMCRTNRF(BMCRR,13)),U,3) S:BMCSCOD BMCSTRM=$P($$CONC^BSTSAPI(BMCSCOD_"^^^1"),U,2) ;BMC*4.0*8
  1. S $P(^BMCREF(BMCRIEN,13),U,3)="" ;BMC*4.0*8
  1. K ^BMCREF(BMCRIEN,61),^BMCREF(BMCRIEN,62) ;kill off nodes that don't belong
  1. I $D(^BMCREF(BMCRIEN,21,0)),$P(^BMCREF(BMCRIEN,21,0),U,2)[3221 S $P(^BMCREF(BMCRIEN,21,0),U,2)="90001.21PA"
  1. ;*******IMPORTANT - in line above, if nodes are added to the routine referral definition file, you must add the node to the line above
  1. S $P(^BMCREF(BMCRIEN,0),U)=BMCRDATE
  1. S DA=BMCRIEN,DIK="^BMCREF(" D IX1^DIK ;reindex entry
  1. ;BMC*4.0*8 IHS.OIT.FCJ ADDING TOC STATUS
  1. S DIE="^BMCREF(",DR=".02////"_BMCRNUMB_";.03////"_BMCDFN_";.06////"_BMCPROV_";.15////A;.25////"_DUZ_";.26////"_DT_";.27////"_DT_";1304////P"
  1. D DIE^BMCFMC
  1. I $D(Y) W !!,"Error in editing referral entry. NOTIFY PROGRAMMER." Q
  1. S Y=BMCRIEN D ^BMCREF
  1. S BMCQ=0
  1. Q
  1. ;
  1. ADDVREF ;EP FR BMCADDFY AND BMCADDS;ADD ENTRY TO V REF FILE ;BMC*4.0*8 NEW SECTION
  1. S DIC="^AUPNVREF(",DIC(0)="L",DLAYGO=9000010.59,X=BMCSCOD
  1. ;BMC*4.0*12 MODIFIED NEXT LINE TO SET VISIT PROVIDER ENCOUNTER IN V REF
  1. ;S DIC("DR")=".02////"_BMCDFN_";.03////"_BMCVDFN_";.06////"_BMCRIEN_";1201////"_$$NOW^XLFDT_";1202////"_BMCPROV_";1204////"_BMCPROV_";1216////"_$$NOW^XLFDT
  1. S DIC("DR")=".02////"_BMCDFN_";.03////"_BMCVDFN_";.06////"_BMCRIEN_";1201////"_$$NOW^XLFDT_";1202////"_BMCPROV_";1204////"_$$PRIMPROV^APCLV(BMCVDFN,"I")_";1216////"_$$NOW^XLFDT
  1. D FILE^BMCFMC
  1. I +Y<0 W !,"Error creating V REFERRAL.",!,"Notify programmer.",! D EOP^BMC Q
  1. S BMCVRIE=+Y
  1. ;Now add V Referral pointer to RCIS REFERRAL
  1. K DIC
  1. S DIE="^BMCREF(",DA=BMCRIEN
  1. S DR="1303////"_BMCVRIE
  1. D ^DIE
  1. I $D(Y) W !,"Error adding V REFERRAL in RCIS Referral file.",!,"Notify programmer."
  1. K DIE
  1. Q
  1. ;
  1. ADD2 ;add if routine referrals have been defined
  1. K BMCDISP,BMCSEL,BMCHIGH,BMCRR,BMCOUTR,BMCMINI,BMCMINIX
  1. S BMCHIGH=1,BMCSEL(1)="Mini Referral"
  1. S BMCHIGH=2,BMCSEL(2)="Complete Referral (all referral data)"
  1. S BMCHIGH=3,BMCSEL(3)="Call In Notification" ;BMC*4.0*12 REMOVED- BY OUTSITE FACILITY
  1. S BMCHIGH=4,BMCSEL(4)="Abbreviated entry for clinicians"
  1. W:$D(IOF) @IOF
  1. W !,"Please select the referral form you wish to use."
  1. W !!?5,"1. ",BMCSEL(1)
  1. W !?5,"2. ",BMCSEL(2)
  1. W !?5,"3. ",BMCSEL(3)
  1. W !?5,"4. ",BMCSEL(4)
  1. S (X,BMCRRC)=0 F S X=$O(^BMCRTNRF("B",X)) Q:X="" S BMCRRC=BMCRRC+1
  1. W:BMCRRC<31 !!?5,"Locally-defined Routine Referral Templates:",!
  1. S X=0 F S X=$O(^BMCRTNRF("B",X)) Q:X="" S Y=$O(^BMCRTNRF("B",X,"")) S BMCHIGH=BMCHIGH+1,BMCSEL(BMCHIGH)=Y_U_$E($P(^BMCRTNRF(Y,0),U))_$E($$LOW^XLFSTR($P(^BMCRTNRF(Y,0),U)),2,999)
  1. L16 ;
  1. I BMCRRC<16 D
  1. .S I=4 F S I=$O(BMCSEL(I)) Q:I'=+I W !?5,I,". ",$P(BMCSEL(I),U,2)
  1. .D GETANS
  1. I BMCRRC>15&(BMCRRC<31) D
  1. .S BMCCUT=(BMCHIGH-3)/2 S:BMCCUT'=(BMCCUT\1) BMCCUT=(BMCCUT\1)+1
  1. .S I=4,J=1,K=1 F S I=$O(BMCSEL(I)) Q:I'=+I!($D(BMCDISP(I))) W !?5,I,") ",$P(BMCSEL(I),U,2) S BMCDISP(I)="",J=I+BMCCUT I $D(BMCSEL(J)),'$D(BMCDISP(J)) W ?40,J,") ",$P(BMCSEL(J),U,2) S BMCDISP(J)=""
  1. .D GETANS
  1. G30 ;
  1. I BMCRRC>30 D
  1. .S BMCSEL(5)="5. Select a locally defined routine referral template from a list"
  1. .W !!?5,BMCSEL(5),!
  1. .W ! S DIR(0)="N^1:"_BMCHIGH_":0",DIR("A")="Enter REFERRAL FORM ",DIR("B")=2 D ^DIR K DIR
  1. .Q:$D(DIRUT)
  1. .I Y=2 S BMCRR="" Q
  1. .I Y=3 S BMCOUTR=1,BMCRR="" Q
  1. .I Y=1 S BMCMINI=1,BMCRR="" Q
  1. .I Y=4 S BMCMINIX=1,BMCRR="" Q
  1. .I Y=5 K BMCRR D ^BMCADD2
  1. Q
  1. GETANS ;
  1. W ! S DIR(0)="N^1:"_BMCHIGH_":0",DIR("A")="Enter REFERRAL FORM",DIR("B")=2 D ^DIR K DIR
  1. Q:$D(DIRUT)
  1. I Y=2 S BMCRR="" Q
  1. I Y=3 S BMCOUTR=1,BMCRR="" Q
  1. I Y=1 S BMCMINI=1,BMCRR="" Q
  1. I Y=4 S BMCMINIX=1,BMCRR="" Q
  1. S BMCRR=Y,BMCRR=$P(BMCSEL(BMCRR),U)
  1. Q
  1. EDIT ; EDIT REFERRAL RECORD JUST ADDED
  1. S DDSFILE=90001,DA=BMCRIEN
  1. ;4.0 IHS/OIT/FCJ ADDED A NEW FORM FOR CALL IN REFERRALS
  1. ;S DR=$S($G(BMCMINI):"[BMCX REFERRAL ADD]",$G(BMCMINIX):"[BMCXX REFERRAL ADD]",1:"[BMC REFERRAL ADD]"),DDSPARM="C"
  1. S DR=$S($G(BMCMINI):"[BMCX REFERRAL ADD]",$G(BMCMINIX):"[BMCXX REFERRAL ADD]",$G(BMCOUTR):"[BMC REF ADD CALL-IN]",1:"[BMC REFERRAL ADD]"),DDSPARM="C"
  1. D DDS^BMCFMC
  1. I '$G(DDSCHANG) D DELETE S BMCQ=1 Q
  1. S Y=BMCRIEN
  1. D ^BMCREF ; set standard variables from record
  1. ;6.1.04 IHS/ITSC/FCJ TEST FOR PROVIDER
  1. S X=$S(BMCRTYPE="I":$P(^BMCREF(BMCRIEN,0),U,8),BMCRTYPE="N":$P(^BMCREF(BMCRIEN,0),U,23),1:$P(^BMCREF(BMCRIEN,0),U,7))
  1. I 'X W !,"You must enter a Vendor, IHS Facility or In-House Clinic, depending on the",!,"referral type.",! D PAUSE^BMC G EDIT
  1. D DXPX ; get provisional dx's/px's
  1. ;7/27/04 IHS/OIT/FCJ cmt nxt lne no longer asking for Case cmts
  1. D:'$G(BMCMINI)&'$G(BMCMINIX) BOCOM ; get Business Office comments except for MINIX and MINI
  1. D STATIC ; set static fields
  1. Q
  1. ;
  1. DELETE ; DELETE REFERRAL JUST ADDED BECAUSE OPERATOR DIDN'T FINISH
  1. W !!,"INCOMPLETE REFERRAL BEING DELETED!",!!
  1. S DIK="^BMCREF(",DA=BMCRIEN D ^DIK
  1. D PAUSE^BMC
  1. Q
  1. ;
  1. DXPX ; GET PROVIDIONAL DIAGNOSES/PROCEDURES IF WANTED
  1. D DXPX^BMCADD1
  1. Q
  1. CSECOM ;EP; GET CASE COMMENTS
  1. W !
  1. S DIR("A")="Do you want to enter Case Review Comments"
  1. S BMCCTYP="C"
  1. D COMMENTS
  1. ;
  1. MGDCARE ; Get Managed Care Committee Action
  1. D MGDCARE^BMCADD1
  1. Q
  1. ;
  1. MEDCOM ;EP;MEDICAL HX/FINDINGS COMMENTS
  1. W !
  1. S DIR("A")="Do you want to enter Medical HX and Findings Comments"
  1. S BMCCTYP="M"
  1. D COMMENTS
  1. W !
  1. Q
  1. BOCOM ;EP;BUSINESS OFFCIE COMMENTS
  1. W !
  1. S DIR("A")="Do you want to enter Business Office/CHS Comments"
  1. S BMCCTYP="B"
  1. D COMMENTS
  1. Q
  1. COMMENTS ;EP
  1. S DIR(0)="Y",DIR("B")="N",DIR("?")="Enter 'YES' to enter comments now."
  1. S:BMCCTYP="M" DIR("B")="Y"
  1. D ^DIR K DIR
  1. Q:$D(DIRUT)!'Y
  1. D COMMENTS^BMCADD1
  1. Q
  1. ;
  1. STATIC ; STORE STATIC DATA
  1. D STATIC^BMCADD1
  1. Q
  1. ;
  1. EOJ ; END OF JOB
  1. D ^BMCKILL
  1. Q