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

BHLBCH1.m

Go to the documentation of this file.
  1. BHLBCH1 ; 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 BHLBCH.
  1. ; It is not independently callable.
  1. ;
  1. START ; ENTRY POINT from BHLBCH
  1. ;
  1. D INIT
  1. I BHLQUIT D EOJ Q
  1. D CREATE ;create record with FILE^DICN
  1. I BHLQUIT D EOJ Q
  1. D EDIT
  1. I BHLQUIT D EOJ Q
  1. D @(BHLTYPE)
  1. I BHLQUIT D EOJ Q
  1. D PCCLINK
  1. D EOJ
  1. Q
  1. ;
  1. EOJ ; ENTRY POINT from BHLBCH - KILL VARS AND EXIT
  1. ;
  1. I BHLQUIT,BHLR D
  1. .;delete povs
  1. .S BHLX=0 F S BHLX=$O(BHLTPOV(BHLX)) Q:BHLX'=+BHLX S DA=BHLX,DIK="^BCHRPROB(" D ^DIK
  1. .S DA=BHLR,DIK="^BCHR(" D ^DIK K DA,DIK
  1. K BHLBCH,BHLDATA,BHLDUZ2,BHLE,BHLFDA,BHLFIELD,BHLFILE,BHLI,BHLID,BHLITEM,BHLJ,BHLMTYP,BHLN,BHLPIECE,BHLPOV,BHLQUIT,BHLR,BHLRES,BHLSEG,BHLSRV,BHLT,BHLTIEN,BHLTPOV,BHLTYPE,BHLVALUE,BHLX
  1. K C,D0,DA,DD,DI,DIADD,DIC,DIE,DIG,DIH,DIK,DIQUIET,DIU,DIV,DIW,DIX,DIY,DK,DL,DLAYGO,DO,DQ,DR,F,I,X,U
  1. K C,IEN,SEX,DOB,F,X,Y
  1. D KILL^AUPNPAT
  1. K X,Y,I
  1. Q
  1. INIT ;
  1. K HLERR,APCDALVR,IEN
  1. ;check to be sure that all required pieces of data are present
  1. ;if not, set error and quit
  1. S (BHLR,BHLQUIT)=0
  1. S X=$G(BHLBCH("TRANS")) I X="" S HLERR="TRANSACTION INFORMATION MISSING",BHLQUIT=1 Q
  1. S BHLTYPE=$P(BHLBCH("TRANS"),U) I BHLTYPE="" S HLERR="TRANSACTION TYPE MISSING",BHLQUIT=1 Q
  1. S BHLID=$P(BHLBCH("TRANS"),U,2) I BHLID="" S HLERR="TRANSACTION UNIQUE ID MISSING",BHLQUIT=1 Q
  1. S BHLID=$P(BHLBCH("TRANS"),U,3)_BHLID
  1. D CHK^DIE(90002,.21,"E",BHLID,.BHLRES) I BHLRES="^" S HLERR="UNIQUE ID FAILED INPUT TRANSFORM",BHLQUIT=1 Q
  1. I $G(BHLBCH("REC"))="" S HLERR="NO RECORD INFORMATION" S BHLQUIT=1 Q ;must have a minimum of the record node to continue
  1. I '$O(BHLBCH("POV",0)) S BHLQUIT=1 S HLERR="NO POV PASSED" Q ;must have at least 1 pov to continue
  1. ;date,program,chr,prob code,svc code,svc min,act loc are all required to continue
  1. F X=1:1:4 S Y=$P(BHLBCH("REC"),U,X) I Y="" S HLERR=$P("DATE^PROGRAM^CHR^ACTLOC",U,X)_" REQUIRED ELEMENT MISSING" S BHLQUIT=1 Q
  1. ;chk pov
  1. S X=$O(BHLBCH("POV",0)) I 'X S HLERR="POV MISSING",BHLQUIT=1 Q
  1. S Y=BHLBCH("POV",X) F I=1:1:3 I $P(Y,U,I)="" S HLERR=$P("HLTH PROB CODE^SVC CODE^SVC MINS",U,I)_" REQUIRED ELEMENT MISSING",BHLQUIT=1 Q
  1. Q
  1. S BCHEV("TYPE")="A" ;add,edit or delete
  1. S BCHR=BHLR
  1. D PROTOCOL^BCHUADD1
  1. K BCHEV,BCHR
  1. Q
  1. A ;
  1. D A^BHLBCH2
  1. Q
  1. M ;edit - delete original and do add
  1. D E^BHLBCH2
  1. Q
  1. FMKILL ;
  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. EDIT ;edit all passed data, check against input tx
  1. ;edit record info against input transform
  1. S BHLT="REC" D CHECK
  1. Q:BHLQUIT
  1. S BHLT="POV" S BHLI=0 F S BHLI=$O(BHLBCH("POV",BHLI)) Q:BHLI=""!(BHLQUIT) D CHECK
  1. Q:BHLQUIT
  1. I $P(BHLBCH("REC"),U,4)="HC",$P(BHLBCH("REC"),U,12)="" S HLERR="IF ACT LOCATION IS HOSP MUST BE CLINIC NAME",BHLQUIT=1 Q
  1. DEM ;
  1. I $D(BHLBCH("DEMO")) D
  1. .F I=3:1:7 S X=$P(BHLBCH("DEMO"),U,I) I X["--" S $P(BHLBCH("DEMO"),U,I)=""
  1. .S BHLT="DEMO" D CHECK
  1. Q:BHLQUIT
  1. ETESTS ;edit tests and measurements
  1. S BHLFILE=90002
  1. I $D(BHLBCH("MSR")) 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. .Q:BHLVALUE=""
  1. .I BHLMTYP="VU"!(BHLMTYP="VC") D
  1. ..S X=$P(BHLBCH("MSR",BHLN),U,2)
  1. ..S BHLVALUE=$P($P(BHLVALUE,"~"),"/",2)_"/"_$P($P(BHLVALUE,"~",2),"/",2),$P(BHLBCH("MSR",BHLN),U,2)=BHLVALUE
  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
  1. .K Y,BHLRES S DIQUIET=1 D CHK^DIE(BHLFILE,BHLFIELD,"E",BHLVALUE,.BHLRES)
  1. .I BHLRES="^" S BHLQUIT=1,HLERR=BHLMTYP_" FAILED INPUT TRANSFORM EDIT" Q
  1. .S BHLFDA(BHLFILE,BHLR_",",BHLFIELD)=BHLRES
  1. .Q
  1. Q
  1. CHECK ;
  1. S BHLFILE=$P($T(@BHLT),";;",2) F BHLJ=1:1 S BHLX=$T(@BHLT+BHLJ),BHLPIECE=$P(BHLX,";;",2) Q:BHLPIECE="QUIT"!(BHLPIECE="")!(BHLQUIT) D
  1. .K BHLRES S BHLITEM=$P(BHLX,";;",3),BHLFIELD=$P(BHLX,";;",4),BHLE=$P(BHLX,";;",5)
  1. .S:BHLT="POV" X=BHLBCH(BHLT,BHLI) S:BHLT'="POV" X=BHLBCH(BHLT) S X=$P(X,U,BHLPIECE)
  1. .Q:X=""
  1. .I BHLE]"" D Q
  1. ..X BHLE I '$D(X) S HLERR=BHLITEM_" FAILED INPUT TX EDIT",BHLQUIT=1 Q
  1. ..I BHLFILE=90002 S BHLFDA(BHLFILE,BHLR_",",BHLFIELD)=X
  1. .K Y,BHLRES S DIQUIET=1 D CHK^DIE(BHLFILE,BHLFIELD,"E",X,.BHLRES)
  1. .I BHLRES="^" S BHLQUIT=1,HLERR=BHLITEM_" FAILED INPUT TRANSFORM EDIT" Q
  1. .I BHLFILE=90002 S BHLFDA(BHLFILE,BHLR_",",BHLFIELD)=BHLRES
  1. .Q
  1. Q
  1. ;
  1. CREATE ;create record in CHR RECORD using FILE^DICN
  1. S BHLR=$O(^BCHR("CUI",BHLID,0)) I BHLR S BHLTYPE="M" Q
  1. D FMKILL^BHLBCH2
  1. S DIC="^BCHR(",DIC(0)="L",X=$P($P(BHLBCH("REC"),U),"@"),%DT="T" D ^%DT S X=Y,DLAYGO=90002,DIC("DR")=".16////"_DUZ_";.17////"_DT_";.22////"_DT_";.26////R" K DD,DO D FILE^DICN
  1. I Y=-1 S HLERR="CREATING CHR RECORD ENTRY FAILED",BHLQUIT=1 Q
  1. S BHLR=+Y
  1. Q
  1. REC ;;90002
  1. ;;1;;DATE;;.01
  1. ;;2;;PROGRAM;;.02;;
  1. ;;3;;CHR;;.03;;
  1. ;;4;;ACT LOC;;.06;;
  1. ;;5;;REFERRED TO;;.07;;
  1. ;;6;;REFERRED BY;;.08;;
  1. ;;7;;EVALUATION;;.09;;
  1. ;;8;;TRAVEL TIME;;.11;;
  1. ;;9;;# SERVED;;.12;;
  1. ;;10;;INSURER;;2102;;
  1. ;;11;;PURP REFERRAL;;2101;;
  1. ;;12;;LOC OF ENCOUNTER;;.05;;
  1. ;;QUIT
  1. POV ;;90002.01
  1. ;;1;;HLTH PROB CODE;;.01;;S Y=$O(^BCHTPROB("C",X,0)) K:'Y X I Y S X="`"_Y
  1. ;;2;;SVC CODE;;.04;;S Y=$O(^BCHTSERV("D",X,0)) K:'Y X I Y S X="`"_X
  1. ;;3;;SVC MINS;;.05;;
  1. ;;4;;NARRATIVE;;.06;;X $P(^DD(9999999.27,.01,0),U,5,99)
  1. ;;5;;SUBSTANCE RELATED;;.07;;
  1. ;;QUIT
  1. DEMO ;;90002
  1. ;;1;;PATIENT NAME;;1101;;
  1. ;;2;;DATE OF BIRTH;;1102;;
  1. ;;3;;SEX;;1103;;
  1. ;;4;;SSN;;1104;;
  1. ;;5;;TRIBE;;1105;;
  1. ;;6;;COMMUNITY OF RESIDENCE;;1106;;S Y=$O(^AUTTCOM("C",X,0)) K:'Y X I Y S X=Y
  1. ;;7;;CHART NUMBER;;1111;;
  1. ;;8;;CHART FACILITY;;1109;;
  1. ;;9;;TEMP RESIDENCE;;1108;;
  1. ;;QUIT