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

APCD3MF.m

Go to the documentation of this file.
  1. APCD3MF ; IHS/CMI/LAB - install and generate HL7 messages to 3M ; 30 Apr 2014 8:27 AM
  1. ;;2.0;IHS PCC SUITE;**11**;MAY 14, 2009;Build 58
  1. ;
  1. ;
  1. FILE(APCD3M) ;EP
  1. I '$D(APCD3M) Q ;no array passed by caller
  1. NEW APCDERR,APCDX,DFN,DOB,ICD9,IEN772,MSGDT,MSGTYPE,NAME,RECAPP,SENDAPP,SENDFAC,SEX,VISIT,VPOV,VPOVC
  1. ;new fileman and single character vars
  1. NEW %,%D,%E,%Y,D0,DA,DD,DI,DIC,DIE,DLAYGO,DO,DQ,DR,I,N,X,Y,Z
  1. D MSGSET
  1. I $G(APCDERR)]"" Q
  1. D CHECKREC
  1. I $G(APCDERR)]"" D LOGERR Q
  1. Q
  1. CHECKREC ;
  1. S APCDX=0 F S APCDX=$O(VPOV(APCDX)) Q:APCDX'=+APCDX S Y=$P(VPOV(APCDX),"^") D
  1. . S Z=$G(^AUPNVPOV(Y,0)) I Z="" S APCDERR="Invalid VPOV ien passed back." Q
  1. . I DFN'=$P(Z,"^",2) S APCDERR="DFN in HL7 doesn't match V POV patient." Q
  1. . I VISIT'=$P(Z,"^",3) S APCDERR="VISIT in HL7 doesn't match V POV visit." Q
  1. . S N=$P(VPOV(APCDX),"^",2),%=$P(Z,"^",4),%=$P(^AUTNPOV(%,0),U) I N'=% S APCDERR="Provider Narratives mismatch" Q
  1. . ;file ICD code
  1. . S ICD9=$P(VPOV(APCDX),"^",3),ICD9=+$$CODEN^ICDEX(ICD9,80) S:+ICD9=-1 ICD9="" I ICD9="" S APCDERR="Could not find ICD code in table." Q
  1. . NEW DD,DO,DA,DIC,DLAYGO,I,X,Y,%,%D,%E,%Y,D0,DI,DIE,DQ,DR,AUPNSEX
  1. . S DA=$P(VPOV(APCDX),"^") I '$D(^AUPNVPOV(DA,0)) S APCDERR="VPOV no longer exists." Q
  1. . S AUPNSEX=$P(^DPT(DFN,0),"^",2)
  1. . S DIE="^AUPNVPOV(",DR=".01///"_ICD9 D ^DIE
  1. . I $D(Y) S APCDERR="Updating VPOV with code failed DIE." Q
  1. . Q
  1. Q
  1. MSGSET ;
  1. S APCDERR="",VPOVC=0
  1. K VPOV
  1. S X=0 F S X=$O(APCD3M(X)) Q:X'=+X!(APCDERR]"") S Y=$P(APCD3M(X),"|") I $T(@Y)]"" D @Y I APCDERR]"" D LOGERR
  1. Q
  1. MSH ;message segment check and set vars
  1. S Y=APCD3M(X)
  1. S SENDAPP=$P(Y,"|",3)
  1. S SENDFAC=$P(Y,"|",4)
  1. S RECAPP=$P(Y,"|",5)
  1. S MSGDT=$P(Y,"|",7)
  1. S MSGTYPE=$P(Y,"|",9)
  1. Q
  1. PID ;
  1. S Y=$P(APCD3M(X),"|",2,999)
  1. S DFN=$P(Y,"|",3)
  1. I DFN="" S APCDERR="No DFN passed in HL7 message" Q
  1. S NAME=$P(Y,"|",5)
  1. S DOB=$P(Y,"|",3)
  1. S SEX=$P(Y,"|",8)
  1. Q
  1. PV1 ;
  1. S Y=$P(APCD3M(X),"|",2,999)
  1. S VISIT=$P(Y,"|",19)
  1. I VISIT="" S APCDERR="No VISIT passed back in HL7 message." Q
  1. I '$D(^AUPNVSIT(VISIT,0)) S APCDERR="Visit has been deleted." Q
  1. I $P(^AUPNVSIT(VISIT,0),"^",11) S APCDERR="Visit has been deleted." Q
  1. Q
  1. DG1 ;
  1. S Y=$P(APCD3M(X),"|",2,999),Z=$O(APCD3M(X))
  1. I 'Z S APCDERR="No ZDX immediately following DG1" Q
  1. I $P(APCD3M(Z),"|")'="ZDX" S APCDERR="No ZDX immediately following DG1" Q
  1. S Z=$P(APCD3M(Z),"|",2,999)
  1. I $P(Y,"|",3)="" S APCDERR="No diagnosis code passed back. "_$P(Y,"|",1) Q
  1. I $P(Z,"|",7)="" S APCDERR="No VPOV ien passed back. "_$P(Y,"|") Q
  1. I $P(Z,"|")="" S APCDERR="No provider narrative passed back. "_$P(Y,"|") Q
  1. S VPOVC=VPOVC+1,VPOV(VPOVC)=$P(Z,"|",7)_"^"_$P(Z,"|")_"^"_$P(Y,"|",3)
  1. Q
  1. ;check for required items
  1. ;patient dfn, visit ien, vpov ien and icd code and narrative
  1. LOGERR ; Log Application Error in IHS HL7 ERROR LOG FILE (#90074)
  1. ;
  1. N DD,DO,DA,DIC,DLAYGO,I,X,Y,%,%D,%E,%Y,D0,DI,DIE,DQ,DR
  1. S IEN772=$S($G(APCD3M(0)):"`"_APCD3M(0),1:"")
  1. D NOW^%DTC S X=%
  1. S DIC="^BHL(90074,",DIC(0)="L",DLAYGO=90074
  1. S DIC("DR")=".02///^S X=RECAPP;.03///^S X=SENDAPP;.04///^S X=DUZ(2);.05///^S X=SENDFAC;.06///^S X=IEN772;.07///APCD3MF;.08///^S X=APCDERR"
  1. K DD,DO D FILE^DICN
  1. Q