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

AMER2B.m

Go to the documentation of this file.
  1. AMER2B ; IHS/ANMC/GIS - COST RECOVERY DATA RELATED TO INJURIES ;
  1. ;;3.0;ER VISIT SYSTEM;**6,7**;MAR 03, 2009;Build 5
  1. ;
  1. QD31 ; CITY OF INJURY
  1. S DIR("B")=$G(^TMP("AMER",$J,2,31))
  1. S DIR(0)="FO^1:30",DIR("A")="Town/village where injury occurred" KILL DA D ^DIR KILL DIR
  1. D CKSC^AMER1 I $D(AMERCKSC) K AMERCKSC G QD31
  1. ;
  1. ;AMER*3.0*6;Added call to update BEDD
  1. NEW INJ
  1. I Y'["^" S INJ=Y D
  1. . NEW Y
  1. . D INJ^AMERBEDD("INJ.PtInjury.InjLocat",INJ)
  1. K INJ
  1. ;
  1. D OUT^AMER
  1. Q
  1. ;
  1. QD32 ; TIME OF INJURY
  1. I $D(^TMP("AMER",$J,2,32)) S Y=^(32) X ^DD("DD") S DIR("B")=Y
  1. S DIR(0)="DO^::ER",DIR("A")="Enter the exact time and date of injury",DIR("?")="Enter a time and date in the usual FileMan format (e.g., 1/3/90@1PM)." D ^DIR K DIR
  1. I Y,$$TCK^AMER2A($G(^TMP("AMER",$J,1,2)),Y,0,"admission") K Y G QD32
  1. I Y="" S Y=-1
  1. ;
  1. ;AMER*3.0*6;Added call to update BEDD
  1. NEW INJ
  1. I Y'["^" S INJ=Y D
  1. . NEW Y
  1. . D INJ^AMERBEDD("INJ.PtInjury.InjDtTm",INJ)
  1. K INJ
  1. ;
  1. D OUT^AMER
  1. Q
  1. ;
  1. QD33(AMERPCC,DTOUT) ; CAUSE OF INJURY
  1. ;
  1. ;Input
  1. ; AMERPCC - Visit IEN (optional)
  1. ; DFN - Needs to be defined
  1. ;
  1. ;Returns DTOUT on timeouts
  1. ;
  1. NEW DIR,DUOUT,DIRUT,DIROUT,INP,VDT,LEX,QUIT,SELECT,TOTREC,SEX,RET
  1. NEW CAUSE,EDIT
  1. I $G(AMERPCC)="" S AMERPCC=$$GET1^DIQ(9009081,DFN_",",1.1,"I")
  1. I AMERPCC]"" S VDT=$P($$GET1^DIQ(9000010,AMERPCC,.01,"I"),".")
  1. S:$G(VDT)="" VDT=DT
  1. S SEX=$$GET1^DIQ(2,DFN_",",.02,"I")
  1. ;
  1. ;Get the current cause of injury
  1. I $G(AMERDA)]"" S CAUSE=$$GET1^DIQ(9009080,AMERDA_",",3.2,"I")
  1. I $G(CAUSE)="" S CAUSE=$G(^TMP("AMER",$J,2,33))
  1. ;
  1. ;If current value, display and check for edit
  1. S EDIT="" I CAUSE]"" D I 'EDIT G XQD33
  1. . NEW DESC,DIR,DUOUT,DTOUT
  1. . ;
  1. . ;Get the current display value
  1. . S DESC=$$DX^AMERPOV(CAUSE,"",1,VDT) Q:DESC=""
  1. . W !!,"Current Cause of injury: ",DESC,!
  1. . S DIR("B")="NO"
  1. . S DIR(0)="YO",DIR("A")="Change cause of injury to new value"
  1. . D ^DIR
  1. . I Y=1 S EDIT=1 Q
  1. . ;
  1. . ;Process timeouts and "^"
  1. . I $D(DUOUT) S (X,Y)="^" Q
  1. . I $D(DTOUT) S (X,Y)="^" Q
  1. . ;
  1. . ;Do not change - plug in current value
  1. . S Y=CAUSE Q
  1. ;
  1. QD33E S DIR(0)="F^3"
  1. ;S (X,Y)=""
  1. S DIR("A")="*Cause of injury"
  1. S DIR("?")="Enter a string or ICD code for the Cause of Injury"
  1. D ^DIR
  1. I $D(DIRUT) S X="^" Q
  1. ;
  1. ;Perform the lookup
  1. ;
  1. ;Call parameters
  1. ;P1-Search Text, P2-Return Count, P3-Search Type (0-No COI, 1-Only COI, 2-All),P4-Date,P5-Gender
  1. ;S INP=Y_"^1^"_VDT_"^"_SEX_"^2^0"
  1. D LEX^AMERUTIL(Y,100,1,VDT,SEX,.RET)
  1. ;
  1. ;Reprompt if no results
  1. I $O(RET(""))="" W !!,"<No results returned. Please try a different search string>",! H 2 K RET G QD33E
  1. ;
  1. ;Convert results to ICD
  1. K ^TMP("AMERICD",$J)
  1. S TOTREC=0,LEX="" F S LEX=$O(RET(LEX)) Q:LEX="" I +LEX S TOTREC=TOTREC+1,^TMP("AMERICD",$J,TOTREC)=RET(LEX)
  1. ;
  1. ;Display Results
  1. S SELECT=""
  1. W !!
  1. S (QUIT,LEX)=0 F S LEX=$O(^TMP("AMERICD",$J,LEX)) Q:LEX="" D Q:QUIT>1 Q:SELECT]""
  1. . ;
  1. . NEW DIR,DIRUT,DUOUT,DTOUT,DIROUT,X,Y,ND
  1. . ;
  1. . ;Display one entry
  1. . S ND=$G(^TMP("AMERICD",$J,LEX)) Q:$TR(ND,"^")=""
  1. . W !,LEX,?4,$P(ND,U,2),?14,$E($P(ND,U,3),1,64)
  1. . ;
  1. . ;Prompt every 5 entries
  1. . I LEX#5'=0,LEX'=+TOTREC Q
  1. . W !,"Press <RETURN> to see more, '^' to exit this list, OR"
  1. . S DIR("A")="CHOOSE 1-"_LEX_": "
  1. . S DIR(0)="NOA^1:"_LEX
  1. . D ^DIR
  1. . S QUIT=$$CKANS() Q:QUIT
  1. . ;
  1. . ;Record the selection
  1. . S:+Y SELECT=+Y
  1. ;
  1. ;Handle "^", "^^", timeouot
  1. I QUIT=2 K RET G QD33E
  1. I QUIT=3 S (Y,X)="^" Q
  1. I SELECT="" K RET G QD33E
  1. ;
  1. ;Set entry
  1. S Y=$P($G(^TMP("AMERICD",$J,+SELECT)),U)
  1. ;
  1. ;AMER*3.0*6;Added call to update BEDD
  1. NEW INJ
  1. ;AMER*3.0*7;Added in DO
  1. ;I Y'["^" S INJ=Y
  1. I Y'["^" S INJ=Y D
  1. . NEW Y
  1. . D INJ^AMERBEDD("INJ.PtInjury.InjCauseIEN",INJ)
  1. K INJ
  1. ;
  1. XQD33 D OUT^AMER
  1. Q
  1. ;
  1. QD34 ; PLACE OF INJURY
  1. S DIC("A")="Setting of accident/injury: " K DIC("B")
  1. I $D(^TMP("AMER",$J,2,34)) S %=+^(34) S:%>0 DIC("B")=$P(^AMER(3,%,0),U)
  1. S DIC="^AMER(3,",DIC("S")="I $P(^(0),U,2)="_$$CAT^AMER0("SCENE OF INJURY"),DIC(0)="AEQ"
  1. D ^DIC K DIC S Y=+Y
  1. ;
  1. ;AMER*3.0*6;Added call to update BEDD
  1. NEW INJ
  1. ;AMER*3.0*7;Added in DO
  1. ;I +Y>0 S INJ=Y
  1. I +Y>0 S INJ=Y D
  1. . NEW Y
  1. . D INJ^AMERBEDD("INJ.PtInjury.InjSet",INJ)
  1. K INJ
  1. ;
  1. D OUT^AMER
  1. ;
  1. ;No longer in use
  1. ;S Z=U,%="MOTOR VEHICLE^BICYCLE^TOOLS JOB EQUIP.^INHILATION (GAS/SMOKE)^CHEMICALS (CAUSTIC OR TOXIC)^ELECTRICITY^FIRE FLAME^FALL (ACCIDENTAL)" F I=1:1:$L(%,U) S A=$P(%,U,I),Z=Z_+$O(^AMER(3,"B",A,0))_U
  1. ;S %=$P($G(^TMP("AMER",$J,2,33)),U) I Z'[(U_%_U) G QD35A ; SAFETY EQUIP NOT RELEVANT
  1. Q
  1. ;
  1. QD35 ; SAFETY EQUIPMENT OF INJURY
  1. N A,Z,%
  1. S DIC("A")="Safety equipment used: " K DIC("B")
  1. I $D(^TMP("AMER",$J,2,35)) S %=+^(35) S:%>0 DIC("B")=$P(^AMER(3,%,0),U)
  1. S DIC="^AMER(3,",DIC("S")="I $P(^(0),U,2)="_$$CAT^AMER0("SAFETY EQUIPMENT"),DIC(0)="AEQ"
  1. D ^DIC K DIC S Y=+Y
  1. ;
  1. ;AMER*3.0*6;Added call to update BEDD
  1. NEW INJ
  1. ;AMER*3.0*7;Added in DO
  1. ;I +Y>0 S INJ=Y
  1. I +Y>0 S INJ=Y D
  1. . NEW Y
  1. . D INJ^AMERBEDD("INJ.PtInjury.SafetyEquip",INJ)
  1. K INJ
  1. ;
  1. D OUT^AMER I $D(AMERQUIT) Q
  1. QD35A ;
  1. ;
  1. NEW MVA
  1. ;
  1. S MVA=""
  1. ;
  1. ;Look for MVA
  1. I $G(AMERDFN)]"" D
  1. . NEW DESC,%,I
  1. . S %=$P($G(^TMP("AMER",$J,2,33)),U)
  1. . S DESC=$$DESC(%,AMERDFN,"","")
  1. . F I="MOTOR","VEH","MV","TRAFFIC" I $$UP^XLFSTR(DESC)[I S MVA=1
  1. ;
  1. ;If MVA ask additional questions
  1. I MVA=1 D Q ; MVA
  1. . S AMERRUN=40
  1. . F I=61:1:64 K ^TMP("AMER",$J,2,I) ; MVA
  1. . Q
  1. ;
  1. ;Not a MVA
  1. F I=41:1:46,51:1:57,61:1:64 K ^TMP("AMER",$J,2,I)
  1. I $D(AMEREFLG) S AMERRUN=99
  1. E S AMERRUN=4
  1. Q
  1. ;
  1. QD41 ; DESCIPTION OF MVA LOCATION
  1. K DIR("B") I $D(^TMP("AMER",$J,2,41)) S DIR("B")=^(41)
  1. S DIR(0)="FO^1:100",DIR("A")="Location of MVC (if applicable)",DIR("?")="Enter free text location description (100 characters max.)" D ^DIR K DIR
  1. D CKSC^AMER1 I $D(AMERCKSC) K AMERCKSC G QD41
  1. D OUT^AMER I $D(AMERQUIT) Q
  1. S AMERRUN=4
  1. Q
  1. ;
  1. CKANS() ;EP - Check answer "^", "^^", and timeout
  1. ;
  1. ;User typed "^^"
  1. I $G(DIROUT) Q 3
  1. ;
  1. ;User typed "^" or timed out
  1. I $G(DUOUT)!$G(DTOUT) Q 2
  1. ;
  1. ;User hit ENTER
  1. I $G(DIRUT) Q 1
  1. ;
  1. Q 0
  1. ;
  1. DESC(X,D0,CODE,VDATE) ;Return the ICD Description
  1. ;
  1. NEW ICDDESC
  1. ;
  1. ;Make the call to get the string
  1. S ICDDESC=$$DX^AMERPOV($G(X),$G(D0),$G(CODE),$G(VDATE))
  1. Q ICDDESC