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

BHLBCH2.m

Go to the documentation of this file.
  1. BHLBCH2 ; IHS/TUCSON/DCP - HL7 ORU Message Processor (continued) ;
  1. ;;1.0;IHS SUPPORT FOR HL7 INTERFACES;;JUL 7, 1997
  1. ;
  1. ; This routine is a continuation of BHLBCH1.
  1. ; It is not independently callable.
  1. ;
  1. A ; ENTRY POINT from BHLBCH1
  1. ;
  1. D FILEREC Q:BHLQUIT
  1. D FILEDMO
  1. D FILEPOV
  1. D FILETEST
  1. Q
  1. ;
  1. E ; ENTRY POINT from BHLBCH1 - edit - delete original and do add
  1. ;
  1. S BCHR=BHLR,BCHSTOP=1 D DELETE^BCHUDEL K BCHSTOP
  1. D A
  1. Q
  1. ;
  1. FMKILL ; ENTRY POINT from BHLBCH1
  1. ;
  1. K DIE,DIC,DA,DR,DLAYGO,DIADD,DIU,DIY,DIX,DIV,DIW,DD,D0,DO,DI,DK,DIG,DIH,DL,DQ
  1. Q
  1. FILEREC ;create and file chr record
  1. S BHLFDA(90002,BHLR_",",.21)=BHLID
  1. D FILE^DIE("KS","BHLFDA","BHLERR")
  1. Q
  1. FILEPOV ;file povs
  1. K BHLTPOV
  1. D FMKILL
  1. Q:'$D(BHLBCH("POV"))
  1. S APCDOVRR=1
  1. S BHLN=0 F S BHLN=$O(BHLBCH("POV",BHLN)) Q:BHLN'=+BHLN D
  1. .S X=$P(BHLBCH("POV",BHLN),U),X=$O(^BCHTPROB("C",X,0)) I X="" S HLERR="POV PROBLEM CODE FAILED",BHLQUIT=1 Q
  1. .S DIC="^BCHRPROB(",DIC("DR")=".02////^S X=$G(IEN);.03////^S X=BHLR",DLAYGO=90002.01,DIADD=1,DIC(0)="L" D FILE^DICN
  1. .I Y=-1 S HLERR="ERROR IN DICN ADDING A POV",BHLQUIT=1 Q
  1. .S BHLPOV=+Y
  1. .D FMKILL
  1. .S DA=BHLPOV,DIE="^BCHRPROB("
  1. .S BHLSRV=$O(^BCHTSERV("D",$P(BHLBCH("POV",BHLN),U,2),0)),BHLSRV="`"_BHLSRV
  1. .S DR=".04///"_BHLSRV_";.05///"_$P(BHLBCH("POV",BHLN),U,3)_";.06///"_$P(BHLBCH("POV",BHLN),U,4)_";.07///"_$P(BHLBCH("POV",BHLN),U,5)
  1. .D ^DIE
  1. .I $D(Y) S HLERR="ERROR UPDATING POV RECORD - DIE",BHLQUIT=1
  1. .D FMKILL
  1. K APCDOVRR
  1. I '$D(HLERR) S BHLTPOV(BHLPOV)=""
  1. Q
  1. FILEDMO ;
  1. ;get patient based on chart number passed, check dob and sex - if same use IEN, otherwise do not
  1. S IEN=""
  1. Q:'$D(BHLBCH("DEMO"))
  1. S F=$P(BHLBCH("DEMO"),U,8) I F]"" S F=$O(^AUTTLOC("C",F,0))
  1. S C=$P(BHLBCH("DEMO"),U,7),SEX=$P(BHLBCH("DEMO"),U,3),DOB=$P(BHLBCH("DEMO"),U,2)
  1. I 'F!(C="") D NOIEN Q
  1. S BHLDUZ2=DUZ(2),DUZ(2)=F,X=C,DIC="^AUPNPAT(",DIC(0)="M" D ^DIC
  1. S DUZ(2)=BHLDUZ2 K BHLDUZ2 I +Y>0,SEX=$P(^DPT(+Y,0),U,2),DOB=$P(^DPT(+Y,0),U,3) S IEN=+Y,DIE="^BCHR(",DA=BHLR,DR=".04////^S X=IEN" D ^DIE D FMKILL D:$P(BHLBCH("DEMO"),U,9)]"" Q
  1. .S DIE="^BCHR(",DA=BHLR,DR="1108///"_$P(BHLBCH("DEMO"),U,9) D ^DIE I $D(Y) S HLERR="TEMPORARY RESIDENCE FAILED",BHLQUIT=1 Q
  1. .Q
  1. D NOIEN
  1. Q
  1. NOIEN ;stuff demo stuff - no IEN found
  1. D FMKILL
  1. S DIE="^BCHR(",DA=BHLR,DR="1101///"_$P(BHLBCH("DEMO"),U)_";1102///"_$P(BHLBCH("DEMO"),U,2)_";1103///"_$P(BHLBCH("DEMO"),U,3)_";1104///"_$P(BHLBCH("DEMO"),U,4)_";1111///"_$P(BHLBCH("DEMO"),U,7)_";1109///"_$P(BHLBCH("DEMO"),U,8)
  1. S DR=DR_";1107///"_$P(BHLBCH("DEMO"),U,6)_";1108///"_$P(BHLBCH("DEMO"),U,9)_";1105///"_$P(BHLBCH("DEMO"),U,5)_";1106///"_$P(BHLBCH("DEMO"),U,6)
  1. D ^DIE
  1. I $D(Y) S HLERR="ERROR UPDATING AN ITEM IN THE DEMO NODE",BHLQUIT=1
  1. Q
  1. FILETEST ;file all tests
  1. Q:'$D(BHLBCH("MSR"))
  1. S BHLN=0 F S BHLN=$O(BHLBCH("MSR",BHLN)) Q:BHLN'=+BHLN!(BHLQUIT) S BHLMTYP=$P(BHLBCH("MSR",BHLN),U),BHLVALUE=$P(BHLBCH("MSR",BHLN),U,2) D
  1. .S BHLTIEN=$O(^BCHTMT("B",BHLMTYP,0)) I BHLTIEN="" S BHLQUIT=1,HLERR="MEASUREMENT TYPE NOT FOUND IN TABLE" Q
  1. .S BHLFIELD=$P(^BCHTMT(BHLTIEN,0),U,3) I BHLFIELD="" Q ;this is temporary ************ only fields 1201-1210 work, will do lab tests later
  1. .;file measurement
  1. .D FMKILL S DIE="^BCHR(",DA=BHLR,DR=BHLFIELD_"///"_BHLVALUE D ^DIE
  1. .I $D(Y) S HLERR="DIE FAILED UPDATING "_BHLMTYP_" VALUE",BHLQUIT=1 Q
  1. .Q
  1. Q