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

AMEREDPC.m

Go to the documentation of this file.
  1. AMEREDPC ; IHS/OIT/SCR - SUB ROUTINE FOR PCC VISIT CREATION;
  1. ;;3.0;ER VISIT SYSTEM;**1,6**;MAR 03, 2009;Build 30
  1. ;
  1. CHKVSIT(AMERDA,AMERAIEN) ; EP FROM AMEREDIT to validate and save PCC information
  1. ; AMERDA - IEN OF ER VISIT
  1. ; AMERAIEN - IEN OF AUDIT RECORD - IF "", NOT IN EDIT MODE
  1. ; CHECK for required elements of a PCC Visit
  1. ; 1. Primary Provider is in Provider file
  1. ; 2. Primary DX and Narrative exist as valid codes/strings
  1. ; 3. Valid patient IEN
  1. ; 4. Dates make sense and are not in the future
  1. ;
  1. N AMERQUIT,APCDTPRO,APCDTNQ,APCTPAT,AMERTIME,APCDTPOV,AMERNAR,AMERPRIM
  1. N AMERDX,AMERDATE,AMERTIME,AMERDSCH,AMERDEPT,AMERERR,AMERPAT,AMERPROV
  1. S AMERQUIT=0,(APCDTPRO,APCDTNQ,APCDTPAT,AMERTIME,APCDTPOV,AMERNAR,AMERDSCH)=""
  1. ;Primary provider must hold AK.PROVIDER keys
  1. S AMERPROV=""
  1. I $G(^AMERVSIT(AMERDA,6))'="" S AMERPROV=$P(^AMERVSIT(AMERDA,6),U,3)
  1. I AMERPROV'="" D
  1. .I $D(^VA(200,"AK.PROVIDER",$P($G(^VA(200,AMERPROV,0)),U),AMERPROV)) S APCDTPRO=AMERPROV
  1. .Q
  1. I AMERPROV="" S APCDTPRO=""
  1. ; Valid Primary DX AND NARRATIVE
  1. I $P($G(^AMERVSIT(AMERDA,5.1)),U,2)'="" D
  1. .S AMERDX=$P(^AMERVSIT(AMERDA,5.1),U,2),AMERNAR=$P(^AMERVSIT(AMERDA,5.1),U,3)
  1. .;IHS/OIT/SCR 11/20/08 TEMP ALLOWING LOCAL CODES
  1. .;AMER*3*6;Get to work for ICD-10
  1. .NEW ICDINFO,VDATE
  1. .S VDATE=$P($$GET1^DIQ(9009080,AMERDA,.01,"I"),".")
  1. .I $$AICD^AMERUTIL() S ICDINFO=$$ICDDX^ICDEX(+AMERDX,VDATE)
  1. .E S ICDINFO=$$ICDDX^ICDCODE(+AMERDX,VDATE)
  1. .I $P(ICDINFO,U)'=-1,$P(ICDINFO,U,2)'="ZZZ.999",$P(ICDINFO,U,2)'=".9999" S APCDTPOV="`"_AMERDX
  1. .E S APCDTPOV=""
  1. .;valid narrative
  1. .I AMERNAR'="" S APCDTNQ=AMERNAR
  1. .Q
  1. I $P($G(^AMERVSIT(AMERDA,5.1)),U,2)="" S (APCDTNQ,APCDTPOV)=""
  1. ;valid patient identifier
  1. I $P($G(^AMERVSIT(AMERDA,0)),U,2)'="" D
  1. .S AMERPAT=$P(^AMERVSIT(AMERDA,0),U,2)
  1. .I $D(^DPT(AMERPAT)) S APCDTPAT=AMERPAT
  1. .Q
  1. ;valid date of visit (not in future)
  1. I $G(^AMERVSIT(AMERDA,0))'="" S AMERTIME=$P(^AMERVSIT(AMERDA,0),U,1)
  1. D NOW^%DTC
  1. S X1=%,X2=AMERTIME
  1. D ^%DTC
  1. I X>=0 S AMERDATE=AMERTIME
  1. ;valid discharge date (not before admission)
  1. ;IHS/OIT/SCR 061809 - avoid undefined if no discharge data is present
  1. ;I $G(^AMERVSIT(AMERDA,6))'="" S AMERDEPT=$P(^AMERVSIT(AMERDA,6),U,2)
  1. I $G(^AMERVSIT(AMERDA,6))'="" D
  1. .S AMERDEPT=$P(^AMERVSIT(AMERDA,6),U,2)
  1. .;if ARRIVE TIME compared to DEPART TIME is before
  1. .I $$TCOMP^AMERTIME(AMERTIME,AMERDEPT,0) S AMERDSCH=AMERDEPT
  1. .Q
  1. I $G(^AMERVSIT(AMERDA,6))="" D
  1. .D EN^DDIOL("No DISCHARGE information available for this ERS VISIT^","","!!") ;IHS/OIT/SCR 061809
  1. .S AMERDSCH=0
  1. .Q
  1. ;if there is missing information, print each
  1. S AMERERR=$$PCCERROR(APCDTPRO,APCDTNQ,APCDTPOV,APCDTPAT,AMERDATE,AMERDSCH)
  1. I AMERERR'="" D
  1. .S AMERQUIT=1
  1. .D EN^DDIOL("***INSUFFICIENT DATA AVAILABLE FOR COMPLETE PCC VISIT***","","!!")
  1. .D EN^DDIOL("","","!")
  1. .F AMERI=1:1 S AMERWRIT=$P(AMERERR,U,AMERI) Q:AMERWRIT="" D EN^DDIOL($P(AMERERR,U,AMERI),"","!")
  1. .D EN^DDIOL("***PLEASE CORRECT THESE PROBLEMS ***","","!!?10")
  1. .D EN^DDIOL("","","!")
  1. .Q
  1. D SYNCHPCC^AMERPCC(AMERDA) ;even if problems, save what you can
  1. Q:AMERQUIT 0
  1. K AMERQUIT,APCDTPRO,APCDTNQ,APCTPAT,AMERTIME,APCDTPOV,AMERNAR,AMERPRIM
  1. K AMERDX,AMERDATE,AMERTIME,AMERDSCH,AMERDEPT,AMERPAT,AMERPROV
  1. Q 1
  1. PCCERROR(PROVIDER,PRIMNAR,PRIMDIAG,PATIENT,AMERDATE,AMERDSCH) ;
  1. S AMERERR=""
  1. I PROVIDER="" S AMERERR=AMERERR_"Valid discharge provider missing^"
  1. I PRIMNAR="" S AMERERR=AMERERR_"Primary provider narrative missing^"
  1. I PRIMDIAG="" S AMERERR=AMERERR_"primary diagnosis is not coded^"
  1. I PATIENT="" S AMERERR=AMERERR_"Valid patient identifier missing^"
  1. I AMERDATE="" S AMERERR=AMERERR_"Time of visit cannot be in future^"
  1. I AMERDSCH="" S AMERERR=AMERERR_"Discharge time must be after admission time^"
  1. Q AMERERR