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

AMHUTIL2.m

Go to the documentation of this file.
  1. AMHUTIL2 ; IHS/CMI/LAB - provider functions ;
  1. ;;4.0;IHS BEHAVIORAL HEALTH;**1,4,5,8**;JUN 02, 2010;Build 7
  1. ;
  1. PNPV(N,AMHDA) ;PEP - OUTPUT TX PROVIDER NARRATIVE
  1. S AMHDA=$G(AMHDA)
  1. S N=$G(N)
  1. I N="" Q ""
  1. Q $$SNOMED^AUPNVUTL(N)
  1. NEW R,D
  1. S (R,D)=""
  1. I AMHDA S R=$P($G(^AMHRPRO(AMHDA,0)),U,3)
  1. I AMHDA S D=$P($G(^AMHRPRO(AMHDA,0)),U,1)
  1. I N="" Q "<No Provider Narrative>"
  1. I R,$P($G(^AMHREC(R,11)),U,10) G EHR ;if EHR created do EHR stuff
  1. Q $P(^AUTNPOV(N,0),U) ;IF NOT AN EHR CREATED VISIT JUST DISPLAY THE NARRATIVE LIKE WE ALWAYS DID
  1. EHR ;
  1. S N=$P($G(^AUTNPOV(N,0)),U,1)
  1. I N'["|" Q $$GET1^DIQ(9002012.2,D,.02)_" | "_N ; no vertical equals no snomed desc id so use problem narrative
  1. I N["| " Q $$GET1^DIQ(9002012.2,D,.02)_" | "_N ;prenatal v1.0
  1. I $T(DESC^BSTSAPI)="" Q $$GET1^DIQ(9002012.2,D,.02)_" | "_N ;no snomed stuff installed
  1. NEW SDI,SDIT
  1. S SDI=$P(N,"|",2) ;snomed descriptive id is in piece 2
  1. S SDIT=$P($$DESC^BSTSAPI(SDI_"^^1"),U,2)
  1. I SDIT="" Q $$GET1^DIQ(9002012.2,D,.02)_" | "_$P(N,"|",1) ;not snomed text?? somebody stored a bad descriptive id return "* | " per Susan
  1. Q SDIT_" | "_$P(N,"|",1)
  1. HL(H) ;EP - called to return internal of file 44 for hospital location based on program H
  1. I $G(H)="" Q ""
  1. I '$D(^AMHSITE(DUZ(2))) Q "" ;NO SITE ENTRY
  1. NEW I
  1. I H="M" S I=$$VALI^XBDIQ1(9002013,DUZ(2),1812) I I Q $S($D(^SC(I,0)):I,1:"")
  1. I H="S" S I=$$VALI^XBDIQ1(9002013,DUZ(2),1813) I I Q $S($D(^SC(I,0)):I,1:"")
  1. I H="C" S I=$$VALI^XBDIQ1(9002013,DUZ(2),1814) I I Q $S($D(^SC(I,0)):I,1:"")
  1. I H="O" S I=$$VALI^XBDIQ1(9002013,DUZ(2),1815) I I Q $S($D(^SC(I,0)):I,1:"")
  1. Q ""
  1. CS(I) ;EP - called to determine coding system of ien I
  1. ;are the icd10 routines in place?, if so, use them
  1. I $T(ICDDX^ICDEX)]"" Q $P($$ICDDX^ICDEX(I),U,20) ;return 1 or 30
  1. Q 1 ;if no icdex then assume site is only on icd9
  1. IMP(D) ;EP - which coding system should be used:
  1. ;RETURN IEN of entry in ^ICDS
  1. ;1 = ICD9
  1. ;30 = ICD10
  1. ;will need to add subroutines for ICD11 when we have that.
  1. I $G(D)="" S D=DT
  1. NEW X,Y,Z
  1. S Y=""
  1. I '$O(^ICDS(0)) Q 1 ;icd 10 not installed yet
  1. S X=0 F S X=$O(^ICDS("F",80,X)) Q:X'=+X D
  1. .I $P(^ICDS(X,0),U,4)="" Q ;NO IMPLEMENTATION DATE?? SKIP IT
  1. .S Z($P(^ICDS(X,0),U,4))=X
  1. ;now go through and get the last one before it imp date is greater than the visit date
  1. S X=0 F S X=$O(Z(X)) Q:X="" D
  1. .I D<X Q
  1. .I D=X S Y=Z(X) Q
  1. .I D>X S Y=Z(X) Q
  1. I Y="" S Y=$O(Z(0)) Q Z(Y)
  1. Q Y
  1. PRIMCPT(V,F) ;EP - primaryCPT in many different formats
  1. I 'V Q ""
  1. I '$D(^AMHREC(V)) Q ""
  1. NEW %,Y,P,C,Z
  1. S (Z,P)="",(Y,C)=0
  1. S Y=$O(^AMHRPROC("AD",V,0)) I Y S P=$P(^AMHRPROC(Y,0),U),Z=Y
  1. I 'P Q P
  1. I '$D(^ICPT(P)) Q ""
  1. I $G(F)="" S F="C"
  1. S %="" D @F
  1. Q %
  1. ;
  1. SECCPT(V,N,F) ;EP
  1. I 'V Q ""
  1. I '$D(^AMHREC(V)) Q ""
  1. I '$G(N) Q ""
  1. NEW %,Y,P,C,Z
  1. S (Z,P)="",(Y,C)=0
  1. S Y=0,C=-1 F S Y=$O(^AMHRPROC("AD",V,Y)) Q:Y'=+Y S C=C+1 I C=N S P=$P(^AMHRPROC(Y,0),U),Z=Y
  1. I 'P Q P
  1. I '$D(^ICPT(P)) Q ""
  1. I $G(F)="" S F="C"
  1. S %="" D @F
  1. Q %
  1. ;
  1. CPT ;EP
  1. NEW Z,C,%,S,I,J
  1. S (C,Y)=0 F S Y=$O(^AMHRPROC("AD",V,Y)) Q:Y'=+Y S C=C+1 S APCLV(C)="",P=$P(^AMHRPROC(Y,0),U),Z=Y D
  1. .I F=99 D Q
  1. ..F I=1:1 S S=$T(@I) Q:S="" S %="" D @I S $P(APCLV(C),U,I)=%
  1. .I F[";" D Q
  1. ..F J=1:1 S I=$P(F,";",J) Q:I="" I I'=99 S %="" D @I S $P(APCLV(C),U,I)=% ;IHS/TUCSON/LAB - patch 1 05/19/97 changed ,I TO ,J
  1. .S %="",I=F D @I S $P(APCLV(C),U)=%
  1. .Q
  1. Q
  1. ;
  1. I ;
  1. S %=P Q
  1. E ;CATEGORY
  1. S %=$$CPT^ICPTCOD(P,$P($P($G(^AMHREC(V,0)),U),"."),U,4) Q
  1. C ;CODE
  1. S %=$$CPT^ICPTCOD(P,$P($P($G(^AMHREC(V,0)),U),"."),U,2) Q
  1. ;
  1. N ;NARRATIVE - SHORT NAME
  1. S %=$$CPT^ICPTCOD(P,$P($P($G(^AMHREC(V,0)),U),"."),U,3) Q
  1. ;
  1. PTSEC(RESULT,DFN,MSG,OPT) ;EP - RPC/API entry point for patient sensitive & record access checks
  1. ;Output array (Required)
  1. ; RESULT(1)= -1-RPC/API failed
  1. ; Required variable not defined
  1. ; 0-No display/action required
  1. ; Not accessing own, employee, or sensitive record
  1. ; 1-Display warning message
  1. ; Sensitive and DG SENSITIVITY key holder
  1. ; or Employee and DG SECURITY OFFICER key holder
  1. ; 2-Display warning message/require OK to continue
  1. ; Sensitive and not a DG SENSITIVITY key holder
  1. ; Employee and not a DG SECURITY OFFICER key holder
  1. ; 3-Access to record denied
  1. ; Accessing own record
  1. ; 4-Access to Patient (#2) file records denied
  1. ; SSN not defined
  1. ; 5-Access to Patient for this User is denied ;IHS/OIT/LJF 08/31/2007 PATCH 1008
  1. ;
  1. ; RESULT(2-8) = error or display messages
  1. ;
  1. ;Input parameters: DFN = Patient file entry (Required)
  1. ; MSG = If 1, generate message (optional)
  1. ; OPT = Option name^Menu text (Optional)
  1. ;
  1. K RESULT
  1. I $G(DFN)="" D Q
  1. .S RESULT(1)=-1
  1. .S RESULT(2)="Required variable missing."
  1. ;
  1. ;IHS/OIT/LJF 08/31/2007 PATCH 1008
  1. ;S DGMSG=$G(DGMSG)
  1. S MSG=$G(MSG,1)
  1. I $$STATUS^BDGSPT2(DUZ,DFN,1)["RESTRICTED ACCESS" D Q
  1. .S RESULT(1)=5 Q:MSG'=1
  1. .S RESULT(2)="Sorry, you are restricted from accessing this patient's record."
  1. .S RESULT(3)="If you have questions, please contact your HIM department."
  1. ;end of PATCH 1008 code
  1. ;
  1. D OWNREC^DGSEC4(.RESULT,DFN,$G(DUZ),MSG)
  1. I RESULT(1)=1 S RESULT(1)=3 Q
  1. I RESULT(1)=2 S RESULT(1)=4 Q
  1. K RESULT
  1. D SENS^DGSEC4(.RESULT,DFN,$G(DUZ))
  1. ;
  1. ;IHS/OIT/LJF 01/06/2006 PATCH 1005 account for tracking all patients
  1. ;I RESULT(1)=1 D
  1. I (RESULT(1)=1)!(RESULT(1)=0) D
  1. .I (RESULT(1)=0)&($$GET1^DIQ(43,1,9999999.01)'="YES")&('$P($G(^DGSL(38.1,+DFN,0)),U,2)) Q ;cmi/maw 1/26/2010 PATCH 1011
  1. .;
  1. .I $G(DUZ)="" D Q
  1. ..;DUZ must be defined to access sensitive record & update DG Security log
  1. ..S RESULT(1)=-1
  1. ..S RESULT(2)="Your user code is undefined. This must be defined to access a restricted patient record."
  1. .D SETLOG1^DGSEC(DFN,DUZ,,$G(DGOPT)) ;ihs/cmi/maw 12/15/2010 added set of log
  1. Q
  1. ANY25(AMHX) ;EP
  1. NEW F,X,G
  1. S X="",G=0 F S X=$O(^TMP("DDS",$J,+DDS,"F9002013.01101",X)) Q:X="" D
  1. .I $G(^TMP("DDS",$J,+DDS,"F9002013.01101",X,.02,"D"))=2 S G=1
  1. .I $G(^TMP("DDS",$J,+DDS,"F9002013.01101",X,.02,"D"))=5 S G=1
  1. .Q
  1. Q G
  1. ICD9 ;EP - CALLED FROM INPUT TX ON SITE PARAMETERS FIELD .13
  1. I $$CHK(Y)
  1. Q:$D(^ICD9(Y))
  1. Q
  1. ;
  1. CHK(Y) ;EP - SCREEN OUT E CODES AND INACTIVE CODES
  1. NEW A,I,D,%
  1. I $T(ICDDX^ICDEX)]"" S %=$$ICDDX^ICDEX(Y) I $P(%,U,20)'=1 Q 0
  1. I $T(ICDDX^ICDEX)="" S %=$$ICDDX^ICDCODE(Y)
  1. ;I $P(%,U,20)'=1 Q 0 ;not correct coding system
  1. I $E($P(%,U,2),1)="E" Q 0 ;no E codes
  1. I '$P(%,U,10) Q 0 ;STATUS IS INACTIVE
  1. Q 1
  1. ICD10 ;EP CALLED FROM INPUT TX ON SITE PARAMETERS FIELD 1204
  1. ;
  1. I $$CHK1(Y)
  1. Q:$D(^ICD9(Y))
  1. Q
  1. ;
  1. CHK1(Y) ;EP - SCREEN OUT E CODES AND INACTIVE CODES
  1. NEW A,I,D,%
  1. I $T(ICDDX^ICDEX)]"" S %=$$ICDDX^ICDEX(Y) I $P(%,U,20)'=30 Q 0
  1. I $T(ICDDX^ICDEX)="" S %=$$ICDDX^ICDCODE(Y)
  1. ;I $P(%,U,20)'=30 Q 0 ;not correct coding system
  1. I $E($P(%,U,2),1)="V" Q 0 ;no codes V00-Y99 per Leslie Racine.
  1. I $E($P(%,U,2),1)="W" Q 0
  1. I $E($P(%,U,2),1)="X" Q 0
  1. I $E($P(%,U,2),1)="Y" Q 0
  1. I '$P(%,U,10) Q 0 ;STATUS IS INACTIVE
  1. Q 1