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

AMEREDIT.m

Go to the documentation of this file.
  1. AMEREDIT ; IHS/OIT/SCR - Primary Routine for ER VISIT edit interface
  1. ;;3.0;ER VISIT SYSTEM;**1,3,5,6,8**;MAR 03, 2009;Build 23
  1. ;
  1. ; ALGORITHM:
  1. ; 1. Allow user to select from ER VISITS
  1. ; 2. Check PCC last update and sych ERS info with what is in it if it is more current.
  1. ; 3. Display the visit information
  1. ; 4. Allow user to edit OR "verify" selected visit
  1. ; 5. Allow user to quit or return to 1
  1. ;
  1. ; VARIABLES: The following variables are passed to multiple editing routines
  1. ; AMERDA : the IEN of the ER VISIT that is selected for editing
  1. ; AMERAIEN: The IEN of the ER AUDIT that is created when user begins editing a record
  1. ; AMEREDNO: An integer representing the number of multiple fields that have been edited
  1. ; for uniqueness in multiple field number in audit file
  1. ; Edit Auditing VARIABLES newed and used throughout edit routines:
  1. ; AMEROLD : original value of edited field
  1. ; AMERNEW : new value of edited field
  1. ; AMERSTRG : A ";" deliminated string of edit information for a field
  1. ;
  1. RUN ; EP - from Main Menu option AMER EDIT to Edit ER VISIT
  1. N AMERDA,AMERAIEN,AMEREDNO,AMERDUZ,AMERLINE,DIC,DIR,X,Y
  1. N AMERHD1,AMERHD2,AUPNDAYS,AUPNDOB,AUPNDOD,AUPNPAT,AUPNSEX,AGE,AMERX1,AMERD1,AMERDIFF,X1,X2
  1. N AMERPAT,AMERDOB,AMERHRN
  1. I $D(IOF) W @IOF
  1. D UP^AMERBAN
  1. D EN^DDIOL("","","!!!")
  1. S %="",$P(%,"~",80)="",AMERLINE=% K %
  1. S AMEREDNO=0
  1. S DIR(0)="DO"
  1. S DIR("A")="Start with date"
  1. S DIR("?")="leave blank to start with first ER VISIT for this patient"
  1. S Y=DT
  1. X ^DD("DD")
  1. S DIR("B")=Y
  1. D ^DIR
  1. I $D(DUOUT)!($D(DTOUT)) K DTOUT,DUOUT S AMERQUIT="" Q
  1. I X="" D EN^DDIOL("Start at First ER VISIT","","") S Y=2950101.0001
  1. S AMERX1=Y
  1. X ^DD("DD") S AMERD1=Y
  1. S DIC="^DPT(",DIC(0)="AEQM",DIC("A")="Enter name, DOB or chart number: "
  1. S DIC("?N?",9009080)=10
  1. D ^DIC
  1. I $D(DUOUT)!($D(DTOUT)) K DTOUT,DUOUT S AMERQUIT="" Q
  1. I Y=-1 D EN^DDIOL("Patient not found","","!!")
  1. I Y>0 D
  1. .S DIC("S")="I $P(^(0),U,1)>"_AMERX1
  1. .S DIC="^AMERVSIT(",DIC(0)="E",D="AC",X=+Y
  1. .D IX^DIC
  1. .I $D(DUOUT)!($D(DTOUT)) K DTOUT,DUOUT S AMERQUIT="" Q
  1. .I Y<1 D EN^DDIOL("Cannot find an ER VISIT for this patient in this time frame","","!?5")
  1. .I Y>0 D
  1. ..S AMERDA=$P(Y,U,1)
  1. ..;IHS/OIT/SCR 12/30/08 synch ERS data with what is in PCC if PCC date is more current
  1. ..S AMERPCC=$$FINDVSIT^AMERPCC(AMERDA)
  1. ..I AMERPCC<0 D Q ;IHS/SCR/OIT 05/07/09 patch 1
  1. ...D EN^DDIOL("Cannot identify PCC VISIT for AMERVSIT IEN "_AMERDA_"!","","!!?5")
  1. ...S DIR(0)="Y"
  1. ...S DIR("A")="Do you want to delete this ERS VISIT?"
  1. ...S DIR("B")="YES"
  1. ...D ^DIR
  1. ...I $D(DUOUT)!($D(DTOUT)) K DTOUT,DUOUT S AMERQUIT="" Q
  1. ...I Y=1 D
  1. ....D DELETVST^AMERVSIT(AMERDA)
  1. ....D EN^DDIOL("This VISIT has been deleted")
  1. ....Q
  1. ...Q
  1. ..S AMERDIFF=0
  1. ..S X1=$P($G(^AMERVSIT(AMERDA,6)),"^",12) ;AMERVSIT MOST CURRENT MEANS WE ARE IN SYNCH (X2 is subtrated from X1)
  1. ..S X2=$$DLM^APCLV(AMERPCC,"I")
  1. ..D ^%DTC
  1. ..S:Y AMERDIFF=X
  1. ..I AMERDIFF<=0 D
  1. ...D SYNCHERA^AMERERS(AMERDA,AMERPCC) ;SYNCH VISIT DATA
  1. ...D SYNCHERD^AMERERS(AMERDA,AMERPCC) ;SYNCH V PROVIDER DATA
  1. ...;AMER*3.0*6;Do not sync V POV DATA
  1. ...;D SYNCHERX^AMERERS(AMERDA,AMERPCC) ;SYNCH V POV DATA
  1. ...Q
  1. ..;IHS/OIT/SCR 12/30/08 END CHANGES
  1. ..;IHS/OIT/SCR 01/09/08 GET CURRENT VALUES IN PATIENT REG FOR DOB AND CHART NUMBER AND UPDATE IF DIFFERENT
  1. ..S AMERPAT=$P($G(^AMERVSIT(AMERDA,0)),U,2) ; AMERPAT IS THE IEN OF PATIENT
  1. ..I AMERPAT'="" D SYNCHERP^AMERERS(AMERPAT,AMERDA)
  1. ..;
  1. ..;AMER*3.0*5 - Now log the activity
  1. ..I $G(AMERPCC)]"" D LOG^AMERBUSA("P","Q","AMER","AMER: Display Patient ER visit information ("_AMERDA_")","^"_AMERPCC)
  1. ..;
  1. ..D PRINT(AMERDA)
  1. ..S DIR("A")="Do you want to EDIT this ER VISIT"
  1. ..S DIR(0)="Y",DIR("B")="YES"
  1. ..D ^DIR
  1. ..I Y=1 D ;create the audit record that will track this session
  1. ...S AMERDUZ=DUZ
  1. ...S AMERAIEN=$$CREATAUD^AMEREDAU(AMERDA,AMERDUZ) Q:AMERAIEN<0 ;CREATE AN AUDIT FILE RECORD
  1. ...D EDITERV(AMERDA,AMERAIEN,.AMEREDNO) ;CURRENTLY EDITS ALL FIELDS
  1. ...D EXIT(AMERDA,0)
  1. ...Q
  1. ..Q
  1. .Q
  1. D EN^DDIOL("","","!!")
  1. S DIR(0)="Y"
  1. S DIR("A")="Would you like to EDIT another ER VISIT"
  1. S DIR("B")="NO"
  1. D ^DIR
  1. I Y=1 K AMERDA,AMERAIEN,AMEREDNO,AMERDUZ D RUN
  1. E D EN^DDIOL("No ER VISITS selected for edit","","!!")
  1. K AMERDA,AMERAIEN,AMEREDNO,AMERDUZ,AMERLINE,DIC,DIR,AMERVER,AMERHD1,AMERHD2,AUPNDAYS,AUPNDOB,AUPNDOD,AUPNPAT,AUPNSEX,AGE
  1. Q
  1. PRINT(DA) ; PRINT SELECTED VISIT TO SCREEN
  1. N DIC,BY,FR,TO,FLDS
  1. S DIC="^AMERVSIT(",BY="NUMBER",(FR,TO)=DA,FLDS="[AMER DETAIL"
  1. D EN1^DIP
  1. ;
  1. ;AMER*3.0*5 - Now log the activity
  1. I $G(AMERPCC)]"" D LOG^AMERBUSA("P","P","AMER","AMER: Printed Patient ER visit information","^"_AMERPCC)
  1. ;
  1. K DIC,BY,FR,TO,FLDS
  1. Q
  1. ;
  1. EDITERV(AMERDA,AMERAIEN,AMEREDNO) ; EDIT SELECTED VISIT
  1. ; NEED TO PARTITION SELECTIONS INTO PCC FIELD EDIT AND ERS FIELD EDIT
  1. ;
  1. ;AMER*3.0*5 - Now log the activity
  1. I $G(AMERPCC)]"" D LOG^AMERBUSA("P","E","AMER","AMER: Edit Patient ER visit information ("_AMERDA_")","^"_AMERPCC)
  1. ;
  1. N AMERQUIT,AMERSEL,DIR,AMERQUIT
  1. S AMERQUIT=0
  1. ;D EN^DDIOL("***ENTRIES MARKED WITH '*' contain LOCKED fields***","","!!,?5")
  1. S DIR(0)="SO^1:ADMISSION SUMMARY;2:TRIAGE INFO;3:INJURY INFO;"
  1. ;AMER*3*6;Added (Option Disabled)
  1. S DIR(0)=DIR(0)_"4:PROCEDURES;5:DIAGNOSES (OPTION DISABLED);6:EXIT ASSESSMENT;"
  1. S DIR(0)=DIR(0)_"7:DISCHARGE INFO;8:FOLLOW UP INSTRUCTIONS;9:ER CONSULTANTS;"
  1. S DIR(0)=DIR(0)_"10:ALL"
  1. S DIR("A")="ENTER NUMBER OF SECTION TO EDIT (OR '<return>' TO QUIT)",DIR("?")="Enter the number of the section you want to edit"
  1. S DA=AMERDA
  1. D ^DIR
  1. I Y=""!(Y="^") D
  1. .I '$D(^XUSEC("AMERZ9999",DUZ)) Q ;only holders of the coding key can update a DX
  1. .S AMERQUIT=1
  1. .I '$$CHKVSIT^AMEREDPC(AMERDA,AMERAIEN) D
  1. ..D EN^DDIOL("**The primary diagnosis for this ER visit is uncoded**","","!")
  1. ..;AMER*3*6;No longer allow DX to be fixed
  1. ..D EN^DDIOL("**Please fix the issue using EHR/PCC**","","!")
  1. ..Q
  1. ..;
  1. ..S DIR(0)="Y",DIR("A")="Would you like to update the .9999 code now",DIR("B")="YES"
  1. ..D ^DIR
  1. ..I Y=0 S Y=""
  1. ..I Y=1 S AMERQUIT=0,Y=5
  1. ..Q
  1. .Q
  1. Q:AMERQUIT
  1. S AMERSEL=Y
  1. K DIR,Y,DA
  1. D EDIT(AMERSEL,AMERDA,AMERAIEN,.AMEREDNO)
  1. ;
  1. K AMERQUIT,AMERSEL
  1. Q
  1. ;
  1. EDIT(AMERSEL,AMERDA,AMERAIEN,AMEREDNO) ;
  1. N DIC,DR,AMERDUZ,AMERNEW,AMEROLD,AMERSTRG,AMERQUIT
  1. S AMERQUIT=0
  1. D EN^DDIOL(AMERLINE,"","!!")
  1. I AMERSEL=1!(AMERSEL=10) D
  1. .I '$$EDADMIT^AMEREDTA(AMERDA,AMERAIEN) S AMERQUIT=1 Q ;ADMISSION SUMMARY
  1. .;
  1. .;AMER*3.0*5 - Now log the activity
  1. .I $G(AMERPCC)]"" D LOG^AMERBUSA("P","E","AMER","AMER: Edited ER Admission Summary Information ("_AMERDA_")","^"_AMERPCC)
  1. .;
  1. .D EN^DDIOL(AMERLINE,"","!!")
  1. .D EN^DDIOL("","","!")
  1. .Q
  1. I AMERQUIT D EXIT(AMERDA,AMERQUIT) Q
  1. I AMERSEL=2!(AMERSEL=10) D ;TRIAGE INFO
  1. .I '$$ADMTRIAG^AMEREDTT(AMERDA,AMERAIEN) S AMERQUIT=1 Q ;WORK RELATED,ADMITTING PROVIDERS,ADMITTING TRIAGE CATEGORY
  1. .;
  1. .;AMER*3.0*5 - Now log the activity
  1. .I $G(AMERPCC)]"" D LOG^AMERBUSA("P","E","AMER","AMER: Edited ER Triage Information ("_AMERDA_")","^"_AMERPCC)
  1. .;
  1. .D EN^DDIOL(AMERLINE,"","!!")
  1. .D EN^DDIOL("","","!")
  1. .Q
  1. I AMERQUIT D EXIT(AMERDA,AMERQUIT) Q
  1. I AMERSEL=3!(AMERSEL=10) D ;INJURY
  1. .I '$$EDINJRY^AMEREDTI(AMERDA,AMERAIEN) S AMERQUIT=1 Q
  1. .;
  1. .;AMER*3.0*5 - Now log the activity
  1. .I $G(AMERPCC)]"" D LOG^AMERBUSA("P","E","AMER","AMER: Edited ER Injury Information ("_AMERDA_")","^"_AMERPCC)
  1. .;
  1. .D EN^DDIOL(AMERLINE,"","!!")
  1. .D EN^DDIOL("","","!")
  1. .Q
  1. I AMERQUIT D EXIT(AMERDA,AMERQUIT) Q
  1. I AMERSEL=4!(AMERSEL=10) D ;PROCEDURE
  1. .I '$$EDPROCS^AMEREDTD(AMERDA,.AMEREDNO,AMERAIEN) S AMERQUIT=1 Q
  1. .;
  1. .;AMER*3.0*5 - Now log the activity
  1. .I $G(AMERPCC)]"" D LOG^AMERBUSA("P","E","AMER","AMER: Edited ER Procedure Information ("_AMERDA_")","^"_AMERPCC)
  1. .;
  1. .D EN^DDIOL(AMERLINE,"","!!")
  1. .D EN^DDIOL("","","!")
  1. .Q
  1. I AMERQUIT D EXIT(AMERDA,AMERQUIT) Q
  1. I AMERSEL=5!(AMERSEL=10) D
  1. .;
  1. .;Automatically sync with PCC
  1. .D SYNCHERX^AMERERS(AMERDA,AMERPCC) ;SYNCH V POV DATA
  1. .;
  1. .;AMER*3*6;Disable DX entry
  1. .I AMERSEL=5 D H 3
  1. ..D EN^DDIOL("DX entry has been disabled in AMER.","","")
  1. ..D EN^DDIOL("Please use PCC to update visit POV information.","","!!") H 3
  1. .Q
  1. .;
  1. .I '$$EDDIAGS^AMEREDDX(AMERDA,.AMEREDNO,AMERAIEN) S AMERQUIT=1 Q ;DIAGNOSES
  1. .;
  1. .;AMER*3.0*5 - Now log the activity
  1. .I $G(AMERPCC)]"" D LOG^AMERBUSA("P","E","AMER","AMER: Edited ER Diagnosis Information ("_AMERDA_")","^"_AMERPCC)
  1. .;
  1. .D EN^DDIOL(AMERLINE,"","!!")
  1. .D EN^DDIOL("","","!")
  1. .Q
  1. I AMERQUIT D EXIT(AMERDA,AMERQUIT) Q
  1. ;IHS/OIT/SCR - 10/15/08 the visit can be deleted here and AMERDA is passed by reference
  1. I AMERSEL=6!(AMERSEL=10) D
  1. .I '$$EDEXTAS^AMEREDTD(.AMERDA,AMERAIEN) S AMERQUIT=1 Q ;EXIT ASSESSMENT
  1. .;
  1. .;AMER*3.0*5 - Now log the activity
  1. .I $G(AMERPCC)]"" D LOG^AMERBUSA("P","E","AMER","AMER: Edited ER Exit Assessment Information ("_AMERDA_")","^"_AMERPCC)
  1. .;
  1. .D EN^DDIOL(AMERLINE,"","!!")
  1. .D EN^DDIOL("","","!")
  1. .I (AMERDA=0) S AMERQUIT=1
  1. .Q
  1. I AMERQUIT D EXIT(AMERDA,AMERQUIT) Q
  1. I AMERSEL=7!(AMERSEL=10) D ;DISCHARGE
  1. .I '$$EDDISCHG^AMEREDTD(AMERDA,AMERAIEN) S AMERQUIT=1 Q
  1. .;
  1. .;AMER*3.0*5 - Now log the activity
  1. .I $G(AMERPCC)]"" D LOG^AMERBUSA("P","E","AMER","AMER: Edited ER Discharge Information ("_AMERDA_")","^"_AMERPCC)
  1. .;
  1. .D EN^DDIOL(AMERLINE,"","!!")
  1. .D EN^DDIOL("","","!")
  1. .Q
  1. I AMERQUIT D EXIT(AMERDA,AMERQUIT) Q
  1. I AMERSEL=8!(AMERSEL=10) D ;FOLLOW UP INSTRUCTIONS
  1. .I '$$EDFUINST^AMEREDTD(AMERDA,AMERAIEN) S AMERQUIT=1 Q
  1. .;
  1. .;AMER*3.0*5 - Now log the activity
  1. .I $G(AMERPCC)]"" D LOG^AMERBUSA("P","E","AMER","AMER: Edited ER Follow up Instructions ("_AMERDA_")","^"_AMERPCC)
  1. .;
  1. .D EN^DDIOL(AMERLINE,"","!!")
  1. .D EN^DDIOL("","","!")
  1. .Q
  1. I AMERQUIT D EXIT(AMERDA,AMERQUIT) Q
  1. I AMERSEL=9!(AMERSEL=10) D ;ER CONSULTANT
  1. .I '$$EDTCNSLT^AMEREDTE(AMERDA,.AMEREDNO,AMERAIEN) S AMERQUIT=1 Q
  1. .;
  1. .;AMER*3.0*5 - Now log the activity
  1. .I $G(AMERPCC)]"" D LOG^AMERBUSA("P","E","AMER","AMER: Edited ER Consultant Information ("_AMERDA_")","^"_AMERPCC)
  1. .;
  1. .D EN^DDIOL(AMERLINE,"","!!")
  1. .D EN^DDIOL("","","!")
  1. .Q
  1. ;
  1. ;AMER*3.0*8;Update V EMERGENCY VISIT record
  1. D VER^AMERVER($G(DFN),$G(AMERPCC))
  1. ;
  1. D:AMERSEL'="" EDITERV(AMERDA,AMERAIEN,.AMEREDNO)
  1. Q
  1. ;
  1. EXIT(AMERDA,AMERQUIT) ;
  1. D COMPUTE^AMERTIME(AMERDA)
  1. D:'AMERQUIT
  1. .S DIR("A")="Do you want to PRINT this ER VISIT"
  1. .S DIR(0)="Y",DIR("B")="NO"
  1. .D ^DIR
  1. .D:Y=1 PRINT(AMERDA)
  1. Q
  1. ;
  1. DIE(AMERDA,AMERDR) ; EP from multiple AMERED* ROUTINES
  1. ; GIVEN AN ENTRY NUMBER AND A DR STRING, EDIT THE ER VISIT FILE
  1. N X,Y,%
  1. N D,D0,DI,DIC,DICR,DIE,DIG,DIH,DIV,DIU,DIW,DQ,DIK,DA,DR
  1. S DA=AMERDA
  1. S DR=AMERDR
  1. S DIE="^AMERVSIT("
  1. DIE1 L +^AMERVSIT(DA):3 E Q
  1. D ^DIE
  1. S DIK=DIE
  1. D EN^DIK
  1. L -^AMERVSIT(DA)
  1. ;IHS/OIT/SCR 12/18/08
  1. D TIMESTMP^AMERSAV1(DA)
  1. K DIE,DA,DR
  1. Q
  1. ;
  1. TXTREAD ;
  1. S DIR(0)="FO^1:20"
  1. S DIR("?")="Enter free text (30 characters max.)"
  1. D ^DIR K DIR
  1. D CKSC^AMER1 I $D(AMERCKSC) K AMERCKSC G TXTREAD
  1. D OUT^AMER
  1. Q
  1. ;
  1. MULTDIE(AMERDIE,AMERDA,AMERDA1,AMERDR) ; EP From Multiple AMERED* routines
  1. ; GIVEN AN ENTRY NUMBER AND A DR STRING, EDIT A MULTIPLE FIELD OF THE ER VISIT FILE
  1. ; INPUT:
  1. ; AMERDIE : the subrecord identifying the multiple field to be updated
  1. ; DA : the sub-record identifier that is being updated
  1. ; DA1 : The IEN of the ER VISIT being updated
  1. ; DR : the "DR" string containing the multiple sub-field and value to be updated
  1. ;
  1. N X,Y,%
  1. N D,D0,DI,DIC,DICR,DIE,DIG,DIH,DIV,DIU,DIW,DQ,DR,DA,DIE
  1. S DIE=AMERDIE,DA=AMERDA,DA(1)=AMERDA1,DR=AMERDR
  1. L +^AMERVSIT(AMERDA1):3 E Q
  1. D ^DIE
  1. S DIK=AMERDIE,DA(1)=AMERDA1
  1. D EN^DIK
  1. L -^AMERVSIT(AMERDA1)
  1. ;IHS/OIT/SCR 12/15/08 - update ER VISIT FILE with DATE LAST UPDATED (NOW)
  1. D TIMESTMP^AMERSAV1(AMERDA1)
  1. Q