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

AMEREDTI.m

Go to the documentation of this file.
  1. AMEREDTI ; IHS/OIT/SCR - SUB-ROUTINE FOR ER VISIT EDIT of INJURY INFORMATION
  1. ;;3.0;ER VISIT SYSTEM;**6**;MAR 03, 2009;Build 30
  1. ;
  1. EDINJRY(AMERDA,AMERAIEN) ;EP CALLED BY AMEREDIT when "INJURY" is selected for editing
  1. ;
  1. ;Make call to new injury editing code
  1. D INJURY($G(AMERDA),$G(AMERAIEN))
  1. ;
  1. Q 1
  1. ;
  1. ;AMER*3.0*6;Rewrote Injury Edit Option
  1. INJURY(AMERDA,AMERAIEN) ;New edit injury section
  1. ;
  1. ;Edit all entries then perform an update to PCC
  1. ;
  1. NEW QUIT,AMERPOV,VAL,POV,CNT
  1. ;
  1. ;Reset QUIT value
  1. INJ S QUIT=""
  1. ;
  1. ;Injury?
  1. D I QUIT]"" G INJUPD
  1. . NEW INJ,DIR,X,Y,DIR,DUOUT,DTOUT,DR,NINJ,AMERSTRG
  1. . ;
  1. . ;Show warning message
  1. . D EN^DDIOL("**Setting the following field to No will cause all injury data to be deleted**","","!!?3")
  1. . ;
  1. . ;Retrieve current value and perform edit
  1. . S INJ=$$GET1^DIQ(9009080,AMERDA_",",3.1,"I"),INJ=$S(INJ=1:1,1:0)
  1. . S DIR("B")=$S(INJ=1:"YES",1:"NO")
  1. . S DIR(0)="YO",DIR("A")="Was this ER visit caused by an injury"
  1. . D ^DIR
  1. . S NINJ=Y
  1. . ;
  1. . ;Process timeouts and "^"
  1. . I $D(DUOUT) S QUIT="^" Q
  1. . I $D(DTOUT) S QUIT=1 Q
  1. . ;
  1. . ;If original non injury and current non injury quit
  1. . I INJ=0,NINJ=0 S QUIT="^" Q
  1. . ;
  1. . ;If original injury and current injury quit
  1. . I INJ=1,NINJ=1 Q
  1. . ;
  1. . ;If original injury and current non injury - remove injury information
  1. . S DR="" I INJ=1,NINJ=0 S QUIT="^",DR=$S(DR'="":DR_";",1:""),DR=DR_"3.2////@;3.3////@;3.4////@;3.5////@;3.6////@;13.1////@;13.2////@;13.3////@;13.4////@;13.5////@;13.6////@"
  1. . ;
  1. . ;If original non injury and current injury - update the entry
  1. . S DR=DR_$S(DR="":";",1:"")_"3.1////"_NINJ
  1. . ;
  1. . ;File/Audit
  1. . I DR]"" D
  1. .. S AMERSTRG=$$EDAUDIT^AMEREDAU("3.1",$$EDDISPL^AMEREDAU(INJ,"B"),$$EDDISPL^AMEREDAU(NINJ,"B"),"INJURED")
  1. .. D DIE^AMEREDIT(AMERDA,DR)
  1. .. I AMERSTRG="^" Q
  1. .. D DIEREC^AMEREDAU(AMERAIEN,AMERSTRG)
  1. ;
  1. ;Cause of Injury Entry
  1. INJ1 S QUIT="" D G INJ:QUIT="^",INJUPD:QUIT
  1. . NEW AMERPCC,AMERQUIT,DFN,CAUSE,NCAUSE,EDIT,DUOUT,DTOUT
  1. . S AMERPCC=$$GET1^DIQ(9009080,AMERDA_",",.03,"I") I AMERPCC="" S QUIT=1 Q
  1. . S DFN=$$GET1^DIQ(9000010,AMERPCC_",",.05,"I") I DFN="" S QUIT=1 Q
  1. . ;
  1. . ;Show warning message
  1. . D EN^DDIOL("**Changing this Cause of Injury value can cause injury data to be deleted**","","!!?3")
  1. . ;
  1. . ;Get the current cause of injury
  1. . S CAUSE=$$GET1^DIQ(9009080,AMERDA_",",3.2,"I")
  1. . ;
  1. . ;Make the call to get the cause
  1. . D QD33^AMER2B(AMERPCC,.DTOUT)
  1. . I $D(DTOUT) S QUIT=1 Q
  1. . I $G(X)="^" S QUIT="^" Q
  1. . I +$G(Y)>0,'$D(^ICD9(+$G(Y),0)) S QUIT="^" Q
  1. . S NCAUSE=+Y
  1. . ;
  1. . ;If old cause does not equal new cause save/audit
  1. . I CAUSE'=NCAUSE D
  1. .. NEW DR,AMERSTRG
  1. .. S DR="3.2////"_NCAUSE
  1. .. S AMERSTRG=$$EDAUDIT^AMEREDAU("3.2",$$EDDISPL^AMEREDAU(CAUSE,"C"),$$EDDISPL^AMEREDAU(NCAUSE,"C"),"CAUSE OF INJURY")
  1. .. D DIE^AMEREDIT(AMERDA,DR)
  1. .. I AMERSTRG="^" Q
  1. .. D DIEREC^AMEREDAU(AMERAIEN,AMERSTRG)
  1. ;
  1. ;Setting of injury
  1. INJ2 S QUIT="" D G INJ1:QUIT="^",INJUPD:QUIT
  1. . NEW DIC,X,Y,PLACE,NPLACE,DUOUT,DTOUT
  1. . S DIC("A")="*Setting of accident/injury: " K DIC("B")
  1. . S PLACE=$$GET1^DIQ(9009080,AMERDA_",",3.3,"I")
  1. . I PLACE'="" S DIC("B")=$$GET1^DIQ(9009083,PLACE_",",.01,"I")
  1. . S DIC="^AMER(3,",DIC("S")="I $P(^(0),U,2)="_$$CAT^AMER0("SCENE OF INJURY"),DIC(0)="AEQ"
  1. . ;
  1. . ;Get new value
  1. . D ^DIC K DIC
  1. . ;
  1. . ;Process timeouts and "^"
  1. . I $D(DUOUT) S QUIT="^" Q
  1. . I $D(DTOUT) S QUIT=1 Q
  1. . ;
  1. . I Y<0 S NPLACE=""
  1. . E S NPLACE=+Y
  1. . ;
  1. . ;Save/audit
  1. . I NPLACE'=PLACE D
  1. .. NEW AMERSTRG,DR
  1. .. S AMERSTRG=$$EDAUDIT^AMEREDAU("3.3",$$EDDISPL^AMEREDAU(PLACE,"S"),$$EDDISPL^AMEREDAU(NPLACE,"S"),"SCENE OF INJURY")
  1. .. S DR="3.3////"_$S(NPLACE]"":NPLACE,1:"@")
  1. .. D DIE^AMEREDIT(AMERDA,DR)
  1. .. I AMERSTRG="^" Q
  1. .. D DIEREC^AMEREDAU(AMERAIEN,AMERSTRG)
  1. ;
  1. ;Safety Equipment
  1. INJ3 S QUIT="" D G INJ2:QUIT="^",INJUPD:QUIT
  1. . NEW DIC,X,Y,SAFE,NSAFE,DUOUT,DTOUT
  1. . ;
  1. . ;Retrieve current value
  1. . S SAFE=$$GET1^DIQ(9009080,AMERDA_",",3.5,"I")
  1. . S:SAFE'="" DIC("B")=$$GET1^DIQ(9009083,SAFE_",",.01,"I")
  1. . ;
  1. . ;Get new value
  1. . S DIC="^AMER(3,",DIC("S")="I $P(^(0),U,2)="_$$CAT^AMER0("SAFETY EQUIPMENT"),DIC(0)="AEQ"
  1. . S DIC("A")="*Safety equipment used: "
  1. . D ^DIC K DIC
  1. . ;
  1. . ;Process timeouts and "^"
  1. . I $D(DUOUT) S QUIT="^" Q
  1. . I $D(DTOUT) S QUIT=1 Q
  1. . ;
  1. . ;Save/audit
  1. . S NSAFE=+Y
  1. . I NSAFE'=+SAFE D
  1. .. NEW AMERSTRG,DR
  1. .. S DR="3.5////"_$S(+NSAFE>0:+NSAFE,1:"@")
  1. .. S AMERSTRG=$$EDAUDIT^AMEREDAU("3.5",$$EDDISPL^AMEREDAU(SAFE,"Q"),$$EDDISPL^AMEREDAU(+NSAFE,"Q"),"SAFETY EQUIPMENT")
  1. .. D DIE^AMEREDIT(AMERDA,DR)
  1. .. I AMERSTRG="^" Q
  1. .. D DIEREC^AMEREDAU(AMERAIEN,AMERSTRG)
  1. ;
  1. ;TIME OF INJURY
  1. INJ4 S QUIT="" D G INJ3:QUIT="^",INJUPD:QUIT
  1. . NEW DIR,INJDT,NINJDT,VDT,X,Y,DUOUT,DTOUT
  1. . ;
  1. . ;Pull the current value
  1. . S INJDT=$$GET1^DIQ(9009080,AMERDA_",",3.4,"I")
  1. . I INJDT'="" S Y=INJDT X ^DD("DD") S DIR("B")=Y
  1. . ;
  1. . ;Get the admission date/time
  1. . S VDT=$$GET1^DIQ(9009080,AMERDA_",",.01,"I")
  1. . ;
  1. . ;Prompt for the new value
  1. . S DIR(0)="DO^::ER",DIR("A")="*Enter the exact time and date of injury"
  1. . S DIR("?")="Enter a time and date in the usual FileMan format (e.g., 1/3/90@1PM)."
  1. . F D I (Y="^")!(QUIT) Q
  1. .. NEW DUOUT,DTOUT
  1. .. D ^DIR
  1. .. ;
  1. .. ;Process timeouts and "^"
  1. .. I $D(DUOUT) S QUIT="^" Q
  1. .. I $D(DTOUT) S QUIT=1 Q
  1. .. ;
  1. .. I $$TCK^AMER2A(VDT,Y,0,"admission")=0 D
  1. ... S NINJDT=Y
  1. ... S:NINJDT<0 NINJDT=""
  1. ... ;
  1. ... ;Save/Audit
  1. ... I NINJDT'=INJDT D
  1. .... NEW AMERSTRG,DR
  1. .... S AMERSTRG=$$EDAUDIT^AMEREDAU("3.4",$$EDDISPL^AMEREDAU(INJDT,"D"),$$EDDISPL^AMEREDAU(NINJDT,"D"),"TIME OF INJURY")
  1. .... S DR="3.4////"_$S(NINJDT]"":NINJDT,1:"@")
  1. .... D DIE^AMEREDIT(AMERDA,DR)
  1. .... I AMERSTRG="^" Q
  1. .... D DIEREC^AMEREDAU(AMERAIEN,AMERSTRG)
  1. .... S Y="^"
  1. ... E S Y="^"
  1. ;
  1. ;Town of Injury
  1. INJ5 S QUIT="" D G INJ4:QUIT="^",INJUPD:QUIT
  1. . NEW DIR,TOWN,NTOWN,DUOUT,DTOUT,X,Y
  1. . ;
  1. . ;Retrieve the old value
  1. . S TOWN=$$GET1^DIQ(9009080,AMERDA_",",3.6,"I")
  1. . I TOWN]"" S DIR("B")=TOWN
  1. . ;
  1. . ;Prompt for the new value
  1. . S DIR(0)="FO^1:30",DIR("A")="Town/village where injury occurred"
  1. . D ^DIR
  1. . ;
  1. . ;Process timeouts and "^"
  1. . I $D(DUOUT) S QUIT="^" Q
  1. . I $D(DTOUT) S QUIT=1 Q
  1. . ;
  1. . S NTOWN=Y
  1. . S:NTOWN<0 NTOWN=""
  1. . ;
  1. . ;Save/Audit
  1. . I NTOWN'=TOWN D
  1. .. NEW AMERSTRG,DR
  1. .. S AMERSTRG=$$EDAUDIT^AMEREDAU("3.6",TOWN,NTOWN,"TOWN OF INJURY")
  1. .. S DR="3.6////"_$S(NTOWN]"":NTOWN,1:"@")
  1. .. D DIE^AMEREDIT(AMERDA,DR)
  1. ..I AMERSTRG="^" Q
  1. .. D DIEREC^AMEREDAU(AMERAIEN,AMERSTRG)
  1. ;
  1. ;Description of MVA Location
  1. INJ6 S QUIT="" D G INJ5:QUIT="^",INJUPD:QUIT
  1. . NEW DIR,DUOUT,DTOUT,MVAL,NMVAL,X,Y
  1. . ;
  1. . ;Retrieve current value
  1. . S MVAL=$$GET1^DIQ(9009080,AMERDA_",",13.1,"I")
  1. . I MVAL]"" S DIR("B")=MVAL
  1. . ;
  1. . ;Get the new value
  1. . S DIR(0)="FO^1:100",DIR("A")="Location of MVC (if applicable)"
  1. . S DIR("?")="If MVC, enter free text location description (100 characters max.)"
  1. . D ^DIR
  1. . S NMVAL=Y
  1. . ;
  1. . ;Process timeouts and "^"
  1. . I $D(DUOUT) S QUIT="^" Q
  1. . I $D(DTOUT) S QUIT=1 Q
  1. . ;
  1. . ;Save/Audit
  1. . I NMVAL'=MVAL D
  1. .. NEW AMERSTRG,DR
  1. .. S AMERSTRG=$$EDAUDIT^AMEREDAU("13.1",MVAL,NMVAL,"EXACT MVC LOCATION")
  1. .. S DR="13.1////"_$S(NMVAL]"":NMVAL,1:"@")
  1. .. D DIE^AMEREDIT(AMERDA,DR)
  1. .. I AMERSTRG="^" Q
  1. .. D DIEREC^AMEREDAU(AMERAIEN,AMERSTRG)
  1. ;
  1. ;MVC - Driver Insurance Company
  1. INJ7 S QUIT="" D G INJ6:QUIT="^",INJUPD:QUIT
  1. . NEW DIR,DUOUT,DTOUT,MVAC,NMVAC,X,Y
  1. . ;
  1. . ;Pull current value
  1. . S MVAC=$$GET1^DIQ(9009080,AMERDA_",",13.2,"I")
  1. . I MVAC'="" S DIR("B")=MVAC
  1. . ;
  1. . ;Get the new value
  1. . S DIR(0)="FO^1:100",DIR("A")="Driver's insurance company (if applicable)"
  1. . S DIR("?")="Enter free text description"
  1. . D ^DIR
  1. . S NMVAC=Y
  1. . ;
  1. . ;Process timeouts and "^"
  1. . I $D(DUOUT) S QUIT="^" Q
  1. . I $D(DTOUT) S QUIT=1 Q
  1. . ;
  1. . ;Save/Audit
  1. . I NMVAC'=MVAC D
  1. .. NEW AMERSTRG,DR
  1. .. S AMERSTRG=$$EDAUDIT^AMEREDAU("13.2",MVAC,NMVAC,"DRIVER INSURANCE COMPANY")
  1. .. S DR="13.2////"_$S(NMVAC]"":NMVAC,1:"@")
  1. .. D DIE^AMEREDIT(AMERDA,DR)
  1. .. I AMERSTRG="^" Q
  1. .. D DIEREC^AMEREDAU(AMERAIEN,AMERSTRG)
  1. ;
  1. INJ8 S QUIT="" D G INJ7:QUIT="^",INJUPD:QUIT
  1. . NEW DIR,DIPN,NDIPN,X,Y,DUOUT,DTOUT
  1. . ;
  1. . ;Retrieve current value
  1. . S DIPN=$$GET1^DIQ(9009080,AMERDA_",",13.3,"I")
  1. . I DIPN]"" S DIR("B")=DIPN
  1. . ;
  1. . ;Get the new value
  1. . S DIR(0)="FO^1:100",DIR("A")="Driver's insurance policy number (if applicable)"
  1. . S DIR("?")="Enter free text description"
  1. . D ^DIR
  1. . S NDIPN=Y
  1. . ;
  1. . ;Process timeouts and "^"
  1. . I $D(DUOUT) S QUIT="^" Q
  1. . I $D(DTOUT) S QUIT=1 Q
  1. . ;
  1. . ;Save/Audit
  1. . I NDIPN'=DIPN D
  1. .. NEW AMERSTRG,DR
  1. .. S AMERSTRG=$$EDAUDIT^AMEREDAU("13.3",DIPN,NDIPN,"DRIVER POLICY #")
  1. .. S DR="13.3////"_$S(NDIPN]"":NDIPN,1:"@")
  1. .. D DIE^AMEREDIT(AMERDA,DR)
  1. .. I AMERSTRG="^" Q
  1. .. D DIEREC^AMEREDAU(AMERAIEN,AMERSTRG)
  1. ;
  1. ;Owners name
  1. INJ9 S QUIT="" D G INJ8:QUIT="^",INJUPD:QUIT
  1. . NEW DIR,OWN,NOWN,X,Y,DUOUT,DTOUT
  1. . ;
  1. . ;Retrieve the current value
  1. . S OWN=$$GET1^DIQ(9009080,AMERDA_",",13.4,"I")
  1. . I OWN]"" S DIR("B")=OWN
  1. . ;
  1. . ;Get the new value
  1. . S DIR(0)="FO^1:100",DIR("A")="Owner of vehicle, if different than driver (if applicable)"
  1. . S DIR("?")="Enter free text description"
  1. . D ^DIR
  1. . S NOWN=Y
  1. . ;
  1. . ;Process timeouts and "^"
  1. . I $D(DUOUT) S QUIT="^" Q
  1. . I $D(DTOUT) S QUIT=1 Q
  1. . ;
  1. . ;Save/Audit
  1. .I NOWN'=OWN D
  1. .. NEW AMERSTRG,DR
  1. .. S AMERSTRG=$$EDAUDIT^AMEREDAU("13.4",OWN,NOWN,"OWNER NAME")
  1. ..S DR="13.4////"_$S(NOWN]"":NOWN,1:"@")
  1. .. D DIE^AMEREDIT(AMERDA,DR)
  1. .. I AMERSTRG="^" Q
  1. .. D DIEREC^AMEREDAU(AMERAIEN,AMERSTRG)
  1. ;
  1. ;Owners Insurance Company
  1. INJ10 S QUIT="" D G INJ9:QUIT="^",INJUPD:QUIT
  1. . NEW DIR,X,Y,DUOUT,DTOUT,OINS,NOINS
  1. . ;
  1. . ;Retrieve the current value
  1. . S OINS=$$GET1^DIQ(9009080,AMERDA_",",13.5,"I")
  1. . I OINS]"" S DIR("B")=OINS
  1. . ;
  1. . ;Get the new value
  1. . S DIR(0)="FO^1:100",DIR("A")="Owner's insurance company (if applicable)"
  1. . S DIR("?")="Enter free text description"
  1. . D ^DIR
  1. . S NOINS=Y
  1. . ;
  1. . ;Process timeouts and "^"
  1. . I $D(DUOUT) S QUIT="^" Q
  1. . I $D(DTOUT) S QUIT=1 Q
  1. . ;
  1. . ;Save/Audit
  1. . I NOINS'=OINS D
  1. .. NEW AMERSTRG,DR
  1. .. S AMERSTRG=$$EDAUDIT^AMEREDAU("13.5",OINS,NOINS,"OWNER INSURANCE CO.")
  1. .. S DR="13.5////"_$S(NOINS]"":NOINS,1:"@")
  1. .. D DIE^AMEREDIT(AMERDA,DR)
  1. .. I AMERSTRG="^" Q
  1. .. D DIEREC^AMEREDAU(AMERAIEN,AMERSTRG)
  1. ;
  1. INJ11 S QUIT="" D G INJ10:QUIT="^",INJUPD:QUIT
  1. . NEW DIR,X,Y,DTOUT,DUOUT,POL,NPOL
  1. . ;
  1. . ;Retrieve the current value
  1. . S POL=$$GET1^DIQ(9009080,AMERDA_",",13.6)
  1. . I POL]"" S DIR("B")=POL
  1. . ;
  1. . ;Get current value
  1. . S DIR(0)="FO^1:100",DIR("A")="Owner's insurance policy number (if applicable)"
  1. . S DIR("?")="Enter free text description"
  1. . D ^DIR
  1. . S NPOL=Y
  1. . ;
  1. . ;Process timeouts and "^"
  1. . I $D(DUOUT) S QUIT="^" Q
  1. . I $D(DTOUT) S QUIT=1 Q
  1. . ;
  1. . ;Save/Audit
  1. . I NPOL'=POL D
  1. .. NEW AMERSTRG,DR
  1. .. S AMERSTRG=$$EDAUDIT^AMEREDAU("13.6",POL,NPOL,"OWNER POLICY #")
  1. .. S DR="13.6////"_$S(NPOL]"":NPOL,1:"@")
  1. .. D DIE^AMEREDIT(AMERDA,DR)
  1. .. I AMERSTRG="^" Q
  1. .. D DIEREC^AMEREDAU(AMERAIEN,AMERSTRG)
  1. ;
  1. INJUPD ;Push changes to V POV
  1. ;
  1. ;First get the POV entries on file
  1. S AMERPOV=$$POV^AMERUTIL("",AMERPCC,.AMERPOV)
  1. ;
  1. ;Get the number of V POV entries
  1. S POVCNT=+$G(AMERPOV) Q:'POVCNT
  1. ;
  1. ;Set up scratch global
  1. K ^TMP("AMER",$J)
  1. ;
  1. ;Pull Injury Date
  1. S VAL=$P($$GET1^DIQ(9009080,AMERDA_",",3.4,"I"),".")
  1. S ^TMP("AMER",$J,2,32)=VAL
  1. ;
  1. ;Pull Injury Cause
  1. S VAL=$$GET1^DIQ(9009080,AMERDA_",",3.2,"I")
  1. S ^TMP("AMER",$J,2,33)=VAL
  1. ;
  1. ;Place of Accident - Convert
  1. S VAL=$$GET1^DIQ(9009080,AMERDA_",",3.3,"I")
  1. S ^TMP("AMER",$J,2,34)=VAL
  1. ;
  1. ;If only 1 POV on file update that one
  1. I $P(AMERPOV,U)=1 D G XINJURY
  1. . NEW VPOVIEN
  1. . Q:'$D(AMERPOV(1))
  1. . S VPOVIEN=$P($G(AMERPOV(1)),U,6) Q:VPOVIEN=""
  1. . D UPDPOV^AMER31(VPOVIEN)
  1. ;
  1. ;If multiple POV on file select the correct one(s)
  1. I $P(AMERPOV,U)>1 D
  1. . NEW POVLST
  1. . W $$S^AMERUTIL("RVN")
  1. . W !!,"Current POV information on file:"
  1. . W $$S^AMERUTIL("RVF")
  1. . W !!,"# ",?3,"P/S",?7,"Code",?18,"Description",?50,"Provider Narrative"
  1. . F CNT=1:1:POVCNT D
  1. .. Q:'$D(AMERPOV(CNT))
  1. .. W !,CNT,?3,$P(AMERPOV(CNT),U,2),?7,$P(AMERPOV(CNT),U),?18,$E($P(AMERPOV(CNT),U,5),1,30),?50,$E($P(AMERPOV(CNT),U,3),1,29)
  1. . ;
  1. . ;Prompt user for which one(s) to match injury to
  1. . S DIR(0)="L^1:"_POVCNT
  1. . S DIR("A")="Select the POV entry or entries to match the injury information to"
  1. . W !
  1. . D ^DIR
  1. . I $D(DIRUT) S X="^" Q
  1. . S POVLST=Y
  1. . ;
  1. . ;Match selected entry or entries to the injury information
  1. . F CNT=1:1:$L(POVLST,",") S VAL=$P(POVLST,",",CNT) I +VAL D
  1. .. NEW VPOVIEN
  1. .. Q:'$D(AMERPOV(+VAL))
  1. .. S VPOVIEN=$P($G(AMERPOV(+VAL)),U,6) Q:VPOVIEN=""
  1. .. D UPDPOV^AMER31(VPOVIEN)
  1. ;
  1. XINJURY ;
  1. Q