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

PXCEPOV1.m

Go to the documentation of this file.
  1. PXCEPOV1 ;ISL/dee - Used to edit and display V POV ;12/23/2020
  1. ;;1.0;PCE PATIENT CARE ENCOUNTER;**134,149,124,170,203,199,211**;Aug 12, 1996;Build 454
  1. ;;
  1. ;Reference to ICDEX supported by ICR #5747.
  1. ;
  1. Q
  1. ;
  1. ;********************************
  1. DINJHELP ;Date of Injury help.
  1. N RESULT,TEXT
  1. S RESULT=$$GET1^DID(9000010.07,.13,"","DESCRIPTION","TEXT","ERR")
  1. D BROWSE^DDBR("TEXT(""DESCRIPTION"")","NR","V POV Date of Injury Help")
  1. I $D(DDS) D REFRESH^DDSUTL S DY=IOSL-7,DX=0 X IOXY S $Y=DY,$X=DX
  1. Q
  1. ;
  1. ;********************************
  1. ;Special cases for display.
  1. ;
  1. DNARRAT(PNAR,PXCEDT) ;Provider Narrative for ICD-9 / ICD-10
  1. Q $P(^AUTNPOV(PNAR,0),U,1)
  1. ;
  1. ;********************************
  1. DPRIMSEC(PRIMSEC,PXCEDT) ;
  1. I $G(VIEW)="B" Q $S(PRIMSEC="P":"PRIMARY",1:"")
  1. Q $S(PRIMSEC="P":"PRIMARY",PRIMSEC="S":"SECONDARY",1:"")
  1. ;
  1. ;********************************
  1. ;Special cases for edit.
  1. ;
  1. ENARRAT(REQUIRED,ASK,DEFAULT,FILE,FIELD1,FIELD2) ;Provider Narrative
  1. ;Used by ALL V-Files with Prov. Nar.
  1. ; REQUIRED 0 for not required
  1. ; 1 for required
  1. ; ASK 0 for do not ask
  1. ; 1 for ask
  1. ; 2 for ask only if there is already a value
  1. ; DEFAULT 0 for do not default
  1. ; 1 for do default
  1. ; changed to 1 if REQUIRED is 1
  1. ;
  1. N PXKLAYGO,ASKING
  1. S PXKLAYGO=""
  1. S ASKING=ASK#2
  1. S:REQUIRED DEFAULT=1
  1. I PXCEKEYS["C" S ASKING=1
  1. ENARRAT1 ;
  1. K DIR,DA,X,Y,C
  1. S (X,Y)=""
  1. I $P(PXCEAFTR($P(PXCETEXT,"~",1)),"^",$P(PXCETEXT,"~",2))'="" D
  1. . N DIERR,PXCEDILF,PXCEEXT,PXCEINT
  1. . S PXCEINT=$P(PXCEAFTR($P(PXCETEXT,"~",1)),"^",$P(PXCETEXT,"~",2))
  1. . S PXCEEXT=$$EXTERNAL^DILFD(PXCEFILE,$P(PXCETEXT,"~",3),"",PXCEINT,"PXCEDILF")
  1. . S (DIR("B"),X,Y)=$S('$D(DIERR):PXCEEXT,1:PXCEINT)
  1. S DIR(0)="FAO^1:245"
  1. S DIR("A")=$P(PXCETEXT,"~",4)
  1. I $P(PXCETEXT,"~",8)]"" S DIR("?")=$P(PXCETEXT,"~",8)
  1. E D
  1. . S DIR("?",1)="This response must have at least 2 characters and no more than 245"
  1. . S DIR("?",2)="characters and must not contain embedded uparrows."
  1. . I REQUIRED S DIR("?")="This field is required."
  1. . E S DIR("?")="This field is optional."
  1. I ASK=2,(Y]"") S ASKING=1
  1. I ASKING D ^DIR
  1. K DIR,DA
  1. I X="@" S Y="@"
  1. E I $D(DTOUT)!$D(DUOUT) S PXCEEND=1 S:REQUIRED PXCEQUIT=1 Q
  1. N PXCEX,PXCEY
  1. I $E(Y,1)="=" S PXCEX=$E(PXCEIN01_" "_$E($P(Y,"^"),2,245),1,245)
  1. E S PXCEX=Y
  1. ; ***
  1. ; PX*1.0*199 - ICD-10 Remediation note.
  1. ; Fields 5 and 10 in file #80 have been modified by STS for ICD-10.
  1. ; In the following lines of code these two field numbers are intercepted
  1. ; and an appropriate, alternative data retrieval is implemented.
  1. ; Other file and field numbers will behave as they previously did.
  1. ; ***
  1. N DXCATIEN,PXDXDATE
  1. S PXDXDATE=$P($G(PXCEAFTR(12)),U,1)
  1. I PXDXDATE="" S PXDXDATE=$S($D(PXCEVIEN)=1:$$CSDATE^PXDXUTL(PXCEVIEN),$D(PXCEAPDT)=1:PXCEAPDT,1:DT)
  1. I DEFAULT,PXCEX="" D
  1. . I $G(FILE)=80,$G(FIELD1)=10 D Q
  1. .. S PXCEX=$$DXNARR^PXUTL1($P(PXCEAFTR(0),"^",1),PXDXDATE)
  1. . I $G(FILE)=80,$G(FIELD1)=5 D Q
  1. .. S DXCATIEN=$P($$ICDDATA^ICDXCODE("DIAG",$P(PXCEAFTR(0),"^",1),PXDXDATE,"I"),"^",6)
  1. .. I $L(DXCATIEN) S PXCEX=$$GET1^DIQ(80.3,DXCATIEN,.01)
  1. . S PXCEX=$$EXTTEXT^PXUTL1($P(PXCEAFTR(0),"^",1),REQUIRED,$G(FILE),$G(FIELD1),$G(FIELD2))
  1. I ASKING D
  1. . W !,PXCEX
  1. I $L(PXCEX)=1,PXCEX'="@" W !,"Must be 2 to 245 characters." G ENARRAT1
  1. I PXCEX="@"!(PXCEX=""),REQUIRED W !,"This field is required.",$C(7) G ENARRAT1
  1. ;
  1. I PXCEX="@"!(PXCEX="") S PXCEY=PXCEX
  1. E S PXCEY=$$PROVNARR^PXAPI(PXCEX,PXCEFILE) I ASKING,+PXCEY'>0 W "??",$C(7) G ENARRAT1
  1. E I +PXCEY'>0 S PXCEY=""
  1. S $P(PXCEAFTR($P(PXCETEXT,"~",1)),"^",$P(PXCETEXT,"~",2))=$P(PXCEY,"^")
  1. Q
  1. ;
  1. ;********************************
  1. EINJURY ;Date/Time of Injury
  1. ;If not an injury code Q
  1. N CODEIEN,DIRUT,DOINJ,HELP,INJCODE,PROMPT
  1. S CODEIEN=$P(PXCEAFTR(0),U,1)
  1. S INJCODE=$$INJURYC(CODEIEN)
  1. I INJCODE=0 Q
  1. S HELP="D DINJHELP^PXCEPOV1"
  1. S DOINJ=$P(PXCEAFTR($P(PXCETEXT,"~",1)),"^",$P(PXCETEXT,"~",2))
  1. S PROMPT=$P(PXCETEXT,"~",4)
  1. S DOINJ=$$GETDT^PXDATE(-1,-1,0,DOINJ,PROMPT,HELP)
  1. I $D(DIRUT),(DOINJ'="@") S PXCEEND=1 Q
  1. S $P(PXCEAFTR($P(PXCETEXT,"~",1)),"^",$P(PXCETEXT,"~",2))=DOINJ
  1. Q
  1. ;
  1. ;********************************
  1. EVENTDTHELP ;Event Date and Time help.
  1. N ERR,RESULT,TEXT
  1. S RESULT=$$GET1^DID(9000010.07,1201,"","DESCRIPTION","TEXT","ERR")
  1. D BROWSE^DDBR("TEXT(""DESCRIPTION"")","NR","V POV Event Date and Time Help")
  1. I $D(DDS) D REFRESH^DDSUTL S DY=IOSL-7,DX=0 X IOXY S $Y=DY,$X=DX
  1. Q
  1. ;
  1. ;********************************
  1. ICDCODE ;Enter ICD code using Lexicon.
  1. N CODE,CODEIEN,CODESYS,EVENTDT,HELP,PXCEDT,SERVCAT,SRCHTERM,TEMP
  1. ;Prompt the user for the Lexicon search term.
  1. S SRCHTERM=$$GETST^PXLEX
  1. I SRCHTERM="" S DIRUT=1,(X,Y)="" Q
  1. ;Prompt the user for the Event Date and Time. This is only
  1. ;for new entries because it is used in the Lexicon search
  1. ;to ensure only codes active on that date are returned.
  1. S TEMP=^AUPNVSIT(PXCEVIEN,0)
  1. S SERVCAT=$P(TEMP,U,7)
  1. S HELP="D EVENTDTHELP^PXCEPOV1"
  1. S EVENTDT=$$EVENTDT^PXDATE("",HELP)
  1. S PXCEDT=EVENTDT
  1. ;If the Event Date and Time is null use the Visit Date.
  1. I PXCEDT="" S PXCEDT=$P(TEMP,U,1)
  1. ;Set the coding system based on the Date.
  1. S CODESYS=$P($$ACTDT^PXDXUTL(PXCEDT),U,1)
  1. ;Let the user select the code, only return active codes.
  1. S CODE=$$GETCODE^PXLEXS(CODESYS,SRCHTERM,PXCEDT,1)
  1. I CODE="" S DIRUT=1,(X,Y)="" Q
  1. ;ICR #5747
  1. S CODEIEN=$P($$CODEN^ICDCODE(CODE),"~",1)
  1. S $P(PXCEAFTR(0),U,1)=CODEIEN
  1. S $P(PXCEAFTR(12),U,1)=EVENTDT
  1. Q
  1. ;
  1. ;********************************
  1. INJURYC(CODEIEN) ;Return 1 if the ICD code is an injury code.
  1. ;If not an injury code Q
  1. N CODE,CODESYS,INJCODE
  1. S CODE=$$CODEC^ICDCODE(CODEIEN)
  1. S CODESYS=$$CSI^ICDEX(80,CODEIEN)
  1. S INJCODE=0
  1. ;ICD-9 codes between 800 and 999.999 are considered injury codes.
  1. I (CODESYS=1),(CODE'<800),(CODE'>999.999) S INJCODE=1
  1. ;ICD-10 Codes beginning with S or T are considered Injury codes.
  1. I CODESYS=30 D
  1. . N C1
  1. . S C1=$E(CODE,1)
  1. . I (C1="S")!(C1="T") S INJCODE=1
  1. Q INJCODE
  1. ;