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

BHLPIDI.m

Go to the documentation of this file.
  1. BHLPIDI ; cmi/flag/maw - BHL Process Inbound PID Segment ;
  1. ;;3.01;BHL IHS Interfaces with GIS;**1**;JUN 01, 2002
  1. ;
  1. ;this routine will process the inbound PID segment
  1. ;
  1. MAIN ;-- this is the main routine driver
  1. D CHKPAT I $D(BHLERR("FATAL")) L -^TMP("BHL",BHLPHR) Q
  1. D PROCESS,EOJ
  1. Q
  1. ;
  1. PROCESS ;-- process the segment
  1. S BHLDA=0 F S BHLDA=$O(@BHLTMP@(BHLDA)) Q:BHLDA="" D
  1. . S BHLMMN=$$HLPN^INHUT($G(@BHLTMP@(BHLDA,6)),CS)
  1. . S BHLAL=$G(@BHLTMP@(BHLDA,9))
  1. . S BHLST1=$P(@BHLTMP@(BHLDA,11),CS,1)
  1. . S BHLST2=$P(@BHLTMP@(BHLDA,11),CS,2)
  1. . S BHLCTY=$P(@BHLTMP@(BHLDA,11),CS,3)
  1. . S BHLST=$P(@BHLTMP@(BHLDA,11),CS,4)
  1. . S BHLST=$S(BHLST'="":$O(^DIC(5,"C",BHLST,0)),1:"")
  1. . S BHLZIP=$P(@BHLTMP@(BHLDA,11),CS,5)
  1. . S BHLCTRY=$P(@BHLTMP@(BHLDA,11),CS,6)
  1. . S BHLHPH=$G(@BHLTMP@(BHLDA,13))
  1. . S BHLWPH=$G(@BHLTMP@(BHLDA,14))
  1. . S BHLREL=$G(@BHLTMP@(BHLDA,17))
  1. . S BHLACCT=$G(@BHLTMP@(BHLDA,18))
  1. . ;I BHLREL'="" S BHLREL=$S($O(^DIC(13,"MT",BHLREL,0)):$O(^DIC(13,"MT",BHLREL,0)),1:"") this will be used to convert religion if not rpms compat
  1. . S BHLVMS=$P($G(@BHLTMP@(BHLDA,27)),CS)
  1. . S BHLDDT=$$HDATE^INHUT($G(@BHLTMP@(BHLDA,29)))
  1. . S BHLDI=$G(@BHLTMP@(BHLDA,30))
  1. . I '$O(BHL("ZP2",0)) D REGUP^BHLZP2I
  1. S BHLFL=2,BHLX=BHLPAT
  1. S BHLFLD=.2403,BHLVAL=BHLMMN X BHLDIE
  1. S BHLFLD=.111,BHLVAL=BHLST1 X BHLDIE
  1. S BHLFLD=.112,BHLVAL=BHLST2 X BHLDIE
  1. S BHLFLD=.114,BHLVAL=BHLCTY X BHLDIE
  1. S BHLFLD=.115,BHLVAL=BHLST X BHLDIE
  1. S BHLFLD=.116,BHLVAL=BHLZIP X BHLDIE
  1. S BHLFLD=.131,BHLVAL=BHLHPH X BHLDIE
  1. S BHLFLD=.132,BHLVAL=BHLWPH X BHLDIE
  1. S BHLFLD=.08,BHLVAL=BHLREL X BHLDIE
  1. S BHLFLD=1901,BHLVAL=BHLVMS X BHLDIE
  1. S BHLFLD=.351,BHLVAL=BHLDDT X BHLDIE
  1. S ^AGPATCH($$NOW,DUZ(2),BHLPAT)=""
  1. Q
  1. ;
  1. CHKPAT ;EP - check the patient by their identifiers
  1. D PRS3
  1. Q
  1. ;
  1. PRS3 ;-- parse sequence 3
  1. S BHLDA=$O(@BHLTMP@(0)) ;there is only one PID
  1. S BHLPHR=+$E($P(@BHLTMP@(BHLDA,3),U),7,12)
  1. L +^TMP("BHL",BHLPHR):60
  1. I '$T S BHLERCD="NOLOCK" X BHLERR Q
  1. S BHLASU=$E($P(@BHLTMP@(BHLDA,3),U),1,6)
  1. S BHLLOC=$O(^AUTTLOC("C",+BHLASU,0))
  1. I BHLLOC="" S BHLERCD="NOLOC" X BHLERR
  1. Q:$D(BHLERR("FATAL"))
  1. S BHLDUZ=BHLLOC
  1. S BHLXDA=0 F S BHLXDA=$O(^AUPNPAT("D",BHLPHR,BHLXDA)) Q:'BHLXDA!($G(BHLPAT)) D
  1. . S BHLYDA=0 F S BHLYDA=$O(^AUPNPAT("D",BHLPHR,BHLXDA,BHLYDA)) Q:'BHLYDA!($G(BHLPAT)) I BHLYDA=BHLDUZ S BHLPAT=BHLXDA
  1. I '$G(BHLPAT) D SSNC Q
  1. Q:$D(BHLERR("FATAL"))
  1. I '$G(BHLPAT) D ADDPAT Q
  1. D OCHKS
  1. Q
  1. ;
  1. PRS4 ;-- parse sequence 4
  1. Q ;not currently used unless site wants to look at other facility num
  1. S BHLPID4=$G(@BHLTMP@(BHLDA,4))
  1. I BHLPID4="" D ADDPAT Q
  1. F I=1:1 S BHLPID4(I)=$P(@BHLTMP@(BHLDA,4),RS,I) Q:'$P(@BHLTMP@(BHLDA,4),RS,I)
  1. S BHL4DA=0 F S BHL4DA=$O(BHLPID4(BHL4DA)) Q:'BHL4DA!($G(BHLPAT)) D
  1. . Q:'$G(BHLPID4(BHL4DA))
  1. . Q:$L($G(BHLPID4(BHL4DA)))'=12
  1. . S BHLPHR=+$E($P(BHLPID4(BHL4DA),U),7,12)
  1. . S BHLASU=$E($P(BHLPID4(BHL4DA),U),1,6)
  1. . S BHLLOC=$O(^AUTTLOC("C",BHLASU,0))
  1. . Q:BHLLOC=""
  1. . S BHLDUZ=BHLLOC
  1. . S BHLXDA=0 F S BHLXDA=$O(^AUPNPAT("D",BHLPHR,BHLXDA)) Q:'BHLXDA!($G(BHLPAT)) D
  1. .. S BHLYDA=0 F S BHLYDA=$O(^AUPNPAT("D",BHLPHR,BHLXDA,BHLYDA)) Q:'BHLYDA!($G(BHLPAT)) I BHLYDA=BHLDUZ S BHLPAT=BHLXDA
  1. . I '$G(BHLPAT) D SSNC Q
  1. . Q:$D(BHLERR("FATAL"))
  1. . I '$G(BHLPAT) D ADDPAT Q
  1. . Q:BHLPAT=""
  1. . D OCHKS
  1. . Q:$G(BHLPAT)
  1. Q:$D(BHLERR("FATAL"))
  1. Q
  1. ;
  1. SSNC ;-- check for ssn, dob, sex match
  1. S BHLSSN=$G(@BHLTMP@(BHLDA,19))
  1. I BHLSSN["-" S BHLSSN=$TR(BHLSSN,"-")
  1. I BHLSSN="" S BHLERCD="NOSSN" X BHLERR Q
  1. S BHLDOB=$$HDATE^INHUT($G(@BHLTMP@(BHLDA,7)))
  1. I BHLDOB="" S BHLERCD="NODOB" X BHLERR Q
  1. S BHLSX=$G(@BHLTMP@(BHLDA,8))
  1. I BHLSX="" S BHLERCD="NOSX" X BHLERR Q
  1. S BHLNM=$$HLPN^INHUT($G(@BHLTMP@(BHLDA,5)),CS)
  1. S BHLTPAT=$O(^DPT("SSN",BHLSSN,0))
  1. I BHLTPAT="" S BHLERCD="NOSSN" X BHLERR Q
  1. I $P(^DPT(BHLTPAT,0),U,3)'=BHLDOB S BHLERCD="NODOBM" X BHLERR Q
  1. I $P(^DPT(BHLTPAT,0),U,2)'=BHLSX S BHLERCD="NOSXM" X BHLERR Q
  1. S BHLPAT=BHLTPAT
  1. D CHT
  1. Q
  1. ;
  1. OCHKS ;check sex, ssn, and dob
  1. S BHLDOB=$$HDATE^INHUT($G(@BHLTMP@(BHLDA,7)))
  1. I BHLDOB="" S BHLERCD="NODOB" X BHLERR Q
  1. S BHLSX=$G(@BHLTMP@(BHLDA,8))
  1. I BHLSX="" S BHLERCD="NOSX" X BHLERR Q
  1. S BHLSSN=$G(@BHLTMP@(BHLDA,19))
  1. I BHLSSN["-" S BHLSSN=$TR(BHLSSN,"-")
  1. I BHLSSN="" S BHLERCD="NOSSN" X BHLERR
  1. S BHLNM=$$HLPN^INHUT($G(@BHLTMP@(BHLDA,5)),CS)
  1. I $P(^DPT(BHLPAT,0),U,3)'=BHLDOB S BHLERCD="NODOBM" X BHLERR Q
  1. I $P(^DPT(BHLPAT,0),U,2)'=BHLSX S BHLERCD="NOSXM" X BHLERR Q
  1. I BHLSSN'="" D Q:$G(BHLERR("FATAL"))
  1. . I $P(^DPT(BHLPAT,0),U,9)'=BHLSSN S BHLERCD="NOSSNM" X BHLERR Q
  1. Q
  1. ;
  1. ADDPAT ;-- add a patient to the system
  1. S BHLDOB=$$HDATE^INHUT($G(@BHLTMP@(BHLDA,7)))
  1. I BHLDOB="" S BHLERCD="NODOB" X BHLERR Q
  1. S BHLSX=$G(@BHLTMP@(BHLDA,8))
  1. I BHLSX="" S BHLERCD="NOSX" X BHLERR Q
  1. S BHLSSN=$G(@BHLTMP@(BHLDA,19))
  1. I BHLSSN="" S BHLERCD="NOSSN" X BHLERR
  1. S BHLNM=$$HLPN^INHUT($G(@BHLTMP@(BHLDA,5)),CS)
  1. K DIC,DR,DA,DIADD,DLAYGO
  1. S X=BHLNM,DIC(0)="L",DIADD=2,DLAYGO=2,DIC="^DPT(" D ^DIC
  1. I Y<0 S BHLERCD="NOADDPT" X BHLERR Q
  1. S BHLPAT=+Y
  1. K DIC,DIADD,DLAYGO,DR,DA
  1. S BHLFL=2,BHLFLD=.02,BHLX=BHLPAT,BHLVAL=BHLSX X BHLDIE
  1. I $D(Y) D CLEAN Q
  1. S BHLFLD=.03,BHLVAL=BHLDOB X BHLDIE
  1. I $D(Y) D CLEAN Q
  1. S BHLFLD=.09,BHLVAL=BHLSSN X BHLDIE
  1. S ^AUPNPAT(BHLPAT,0)=BHLPAT,^AUPNPAT("B",BHLPAT,BHLPAT)=""
  1. S BHLFL=9000001,BHLFLD=.02,BHLVAL=DT X BHLDIE
  1. S ^AGPATCH($$NOW,DUZ(2),BHLPAT)="NEW"
  1. D CHT
  1. Q
  1. ;
  1. CLEAN ;-- clean up file 2
  1. S BHLERCD="NOF2UP" X BHLERR
  1. S DA=BHLPAT,DIK="^DPT(" D ^DIK
  1. K ^AUPNPAT(BHLPAT),^AUPNPAT("B",BHLPAT,BHLPAT)
  1. Q
  1. ;
  1. EOJ ;-- kill variables
  1. L -^TMP("BHL",BHLPHR)
  1. K @BHLTMP
  1. K BHLDA,BHLVAL,BHLFL,BHLFLD,BHLDR,BHLMMN,BHLSX,BHLSSN,BHLDOB
  1. K BHLST1,BHLST2,BHLCTY,BHLST,BHLZIP,BHLREL,BHLHPH,BHLWPH,BHLDDT,BHLCTRY
  1. K BHLX,BHLVMS,BHL4DA
  1. Q
  1. ;
  1. CHT ;-- add the chart number
  1. Q ;this is used if the site wants to create an auto chart #
  1. S:'$D(^AUPNPAT(BHLPAT,41,0)) ^AUPNPAT(BHLPAT,41,0)="^9000001.41IP^^"
  1. K DIC,DR S X=$P(^DIC(4,DUZ(2),0),U)
  1. S DIC="^AUPNPAT("_BHLPAT_",41,",DA(1)=BHLPAT,DIC(0)="ML" D ^DIC
  1. S DIE="^AUPNPAT("_BHLPAT_",41,",DA=DUZ(2)
  1. S DA(1)=BHLPAT,DR=".02///"_BHLPHR
  1. D ^DIE
  1. K DA,DIE,DR
  1. Q
  1. ;
  1. NOW() ;-- get now
  1. D NOW^%DTC
  1. Q %
  1. Q
  1. ;