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

BLRLINK4.m

Go to the documentation of this file.
  1. BLRLINK4 ; IHS/MSC/MKK - CONT. OF BLR - IHS LABORATORY VISIT CREATION ; 02-Nov-2015 13:44 ; MKK
  1. ;;5.2;IHS LABORATORY;**1031,1032,1033,1034,1037**;NOV 01, 1997;Build 4
  1. ;;
  1. ;; Parts of original BLRLINK3 moved to here due to BLRLINK3 becoming too large.
  1. ;;
  1. ; IF and ONLY IF the transaction is tied to an incoming HL7 message
  1. ; get Reference Ranges & Units from HL7 message
  1. HL7REFLR(REFLABF) ; EP
  1. NEW ABNFLAG,REFHIGH,REFLOW,UNITS,WOT
  1. S WOT=$$CHKINHL7(BLRLOGDA,.REFLABF)
  1. Q:WOT<1
  1. ;
  1. S:$G(UNITS)'="" APCDALVR("APCDTUNI")=UNITS
  1. S:$G(REFLOW)'="" APCDALVR("APCDTRFL")=REFLOW
  1. S:$G(REFHIGH)'="" APCDALVR("APCDTRFH")=REFHIGH
  1. D ENTRYAUD^BLRUTIL("HL7REFLR^BLRLINK4 9.0","APCDALVR")
  1. Q
  1. ;
  1. CHKINHL7(BLRLOGDA,REFLABF) ; EP
  1. NEW DNIEN,DNDESC,F60IEN,HL7TEST,LRAA,LRAD,LRAN,LRAS,STR,UID
  1. ;
  1. Q:+$G(BLRLOGDA)<1 0 ; Skip if no Txn #
  1. ;
  1. S F60IEN=+$P($G(^BLRTXLOG(BLRLOGDA,0)),"^",6) ; File 60 IEN
  1. ;
  1. S LRAS=$P($G(^BLRTXLOG(BLRLOGDA,12)),"^",2) ; Accession Number
  1. D GETACCCP^BLRUTIL3(LRAS,.LRAA,.LRAD,.LRAN)
  1. Q:LRAA<1!(LRAD<1)!(LRAN<1) 0 ; Skip if no Accession
  1. ;
  1. D REFLAB68^BLRLINKU ; Check on ^XTMP("BLRLINKU")
  1. Q:$D(^XTMP("BLRLINKU",+$G(DUZ(2)),LRAA))<1 0 ; Skip if not a Ref Lab Accession
  1. ;
  1. S REFLABF=1 ; Set the Ref Lab Flag
  1. ;
  1. S UID=+$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,.3)),"^")
  1. Q:UID<1 0 ; Skip if no UID
  1. ;
  1. Q:$$GETINTHU^BLRLINKU(UID)<1 0 ; Reference Ranges in File 4001 (UNIVERSAL INTERFACE)
  1. ;
  1. S STR=$G(^TMP("BLR",$J,UID,F60IEN))
  1. Q:$L(STR)<1 0 ; Skip if no data found
  1. ;
  1. S ABNFLAG=$P(STR,"^",2)
  1. S REFLOW=$P(STR,"^",3)
  1. S REFHIGH=$P(STR,"^",4)
  1. S UNITS=$P(STR,"^",5)
  1. ;
  1. S:$L(ABNFLAG) APCDALVR("APCDTABN")=$G(ABNFLAG)
  1. S:$L(UNITS) APCDALVR("APCDTUNI")=$G(UNITS)
  1. S:$L(REFLOW) APCDALVR("APCDTRFL")=$G(REFLOW)
  1. S:$L(REFHIGH) APCDALVR("APCDTRFH")=$G(REFHIGH)
  1. ;
  1. D ENTRYAUD^BLRUTIL("CHKINHL7^BLRLINK4 9.0","APCDALVR")
  1. Q 1
  1. ;
  1. ;
  1. CHSETCOD ; EP - Check to see if SET OF CODES & "Change" Result, if Necessary
  1. NEW CHANGED,DATANAME,F60PTR,LRPIECE,LRSET,Q2
  1. ;
  1. S F60PTR=+$TR($G(APCDALVR("APCDTLAB")),"`")
  1. S DATANAME=$G(^LAB(60,F60PTR,.2))
  1. Q:DATANAME<1 ; Skip if no Dataname
  1. ;
  1. Q:$P($G(^DD(63.04,DATANAME,0)),"^",2)'="S" ; Skip if NOT Set of Codes
  1. ;
  1. S Q2=$P(^DD(63.04,DATANAME,0),U,3)
  1. S CHANGED=0
  1. F LRPIECE=1:1 S LRSET=$P(Q2,";",LRPIECE) Q:LRSET'[":"!(CHANGED) D
  1. . Q:$P(LRSET,":")'=BLRRES ; Quit if NOT code
  1. . ;
  1. . S BLRRES=$P(LRSET,":",2)
  1. . S CHANGED=1
  1. ;
  1. Q
  1. ;
  1. ; Double check Ref Ranges & Units. If null, reset -- if possible.
  1. ; Need to do this because POC tests' Ref Ranges & Units variables are cleared out somewhere.
  1. ; Also, reset Lab POV if necessary.
  1. CHKPCCRU ; EP
  1. NEW PCCLOW,PCCHIGH,PCCUNITS
  1. NEW ABNFLAG,CPTCODE,CRITLOW,CRITHIGH,LABPOV,REFLOW,REFHIGH,STR,UNITS
  1. NEW LABTIEN,IHSLCPTP,IHSLCPT
  1. NEW LRAA,LRAD,LRAN,LRASUB
  1. ;
  1. S X=$$GETACCCP^BLRUTIL3(BLRACC,.LRAA,.LRAD,.LRAN) ; Get Accession variables
  1. Q:X<1 ; Skip if cannot "break out" Accession variables
  1. ;
  1. S LRASUB=$P($G(^LRO(68,LRAA,0)),"^",2) ; Get Accession's Lab Data Subscript
  1. Q:LRASUB'="CH" ; Only "CH" subscripted tests will have Ref Ranges
  1. ;
  1. S PCCLOW=$G(APCDALVR("APCDTRFL"))
  1. S PCCHIGH=$G(APCDALVR("APCDTRFH"))
  1. S PCCUNITS=$G(APCDALVR("APCDTUNI"))
  1. ;
  1. ; If Ref Low, Ref High Ranges & Units already filled out, just return
  1. Q:$L(PCCLOW)&($L(PCCHIGH))&($L(PCCUNITS))
  1. ;
  1. ; If the test is part of a panel being processed, the BLRTLAB variable
  1. ; has the ATOMIC test's IEN. If the test is not part of a panel, the
  1. ; BLRTLAB variable doesn't exist.
  1. S LABTIEN=$S(+$G(BLRTLAB):BLRTLAB,1:BLRTEST)
  1. ;
  1. S STR=$G(^LAB(60,+$G(LABTIEN),1,+$G(BLRSITE),0)) ; Ref Ranges & Units from File 60
  1. ;
  1. D ENTRYAUD^BLRUTIL("CHKPCCRU^BLRLINK4 4.0","APCDALVR")
  1. ;
  1. Q:$L($TR(STR,"^"))<1 ; If no Ref Ranges nor units, skip
  1. ;
  1. S REFLOW=$P(STR,"^",2)
  1. S REFHIGH=$P(STR,"^",3)
  1. S CRITLOW=$P(STR,"^",4)
  1. S CRITHIGH=$P(STR,"^",5)
  1. S UNITS=$P(STR,"^",7)
  1. ;
  1. ; Reset PCC array if and only if PCC Ref Ranges or Units "empty". Reset ^BLRTXLOG entries, if possible
  1. I '$L(PCCLOW)&($L(REFLOW)) S APCDALVR("APCDTRFL")=REFLOW S:+$G(BLRIEN) $P(^BLRTXLOG(BLRIEN,20),"^",8)=REFLOW
  1. I '$L(PCCHIGH)&($L(REFHIGH)) S APCDALVR("APCDTRFH")=REFHIGH S:+$G(BLRIEN) $P(^BLRTXLOG(BLRIEN,20),"^",9)=REFHIGH
  1. I '$L(PCCUNITS)&($L(UNITS)) S APCDALVR("APCDTUNI")=UNITS S:+$G(BLRIEN) $P(^BLRTXLOG(BLRIEN,20),"^",3)=UNITS
  1. ;
  1. ; If LAB Point Of View has ` and IS NOT an ICD code, just make it a string.
  1. S LABPOV=$G(APCDALVR("APCDTLPV"))
  1. I LABPOV["`" D
  1. . S LABPOV=$P(LABPOV,"`",2)
  1. . ; I $$ICDDX^ICDCODE(LABPOV)<1 S APCDALVR("APCDTLPV")=LABPOV
  1. . I $$ICDDX^ICDEX(LABPOV)<1 S APCDALVR("APCDTLPV")=LABPOV ; IHS/MSC/MKK - LR*5.2*1034
  1. ;
  1. ; The following have to be rechecked due to POC tests
  1. ;
  1. ; NO CPT code in APCDALVR array
  1. D:$L($G(APCDALVR("APCDTCPT")))<1 APCDPCCR
  1. ;
  1. D ENTRYAUD^BLRUTIL("CHKPCCRU^BLRLINK4 9.0","APCDALVR")
  1. Q
  1. ;
  1. APCDPCCR ; EP - Reset CPT nodes, if Possible.
  1. ; ----- BEGIN IHS/MSC/MKK - LR*5.2*1033
  1. ; Do not try to reset the CPT codes because it will "unbundle"
  1. ; all the Atomic tests that should be under one CPT code
  1. ; for a Cosmic test. This subroutine was a mistake.
  1. Q
  1. ; ----- END IHS/MSC/MKK - LR*5.2*1033
  1. ;
  1. ;
  1. I $L($G(BLRCPT)),$L($G(BLRCPTST)) D Q ; Reset from BLR variables, if possible
  1. . S APCDALVR("APCDTCPS")=BLRCPTST
  1. . S APCDALVR("APCDTCPT")="`"_BLRCPT
  1. ;
  1. I $L($G(BLRCPT)) S APCDALVR("APCDTCPT")="`"_BLRCPT Q ; If only BLRCPT, reset
  1. ;
  1. ; At this point, use Lab Test IEN, if possible
  1. NEW BLRCPT,BLRCPTST,CNT,IHSCPTLP,STR1,STR2
  1. ;
  1. S IHSCPTLP=+$O(^BLRCPT("C",+$G(LABTIEN),0))
  1. I IHSCPTLP D
  1. . S STR1=$G(^BLRCPT(IHSCPTLP,11,+$O(^BLRCPT(IHSCPTLP,11,0)),0))
  1. . S STR2=$P(STR1,"^",2)
  1. . S BLRCPTST=""
  1. . S BLRCPT="`"_IHSCPTLP
  1. . I $L(STR2) D
  1. .. F CNT=1:1:5 S BLRCPTST=BLRCPTST_$P(STR2,"^",CNT)_"|"
  1. . I $L(STR2)<1 S BLRCPTST=+STR1_"|||||"
  1. . ;
  1. . S APCDALVR("APCDTCPS")=BLRCPTST
  1. . S APCDALVR("APCDTCPT")=BLRCPT
  1. ;
  1. Q:$L($G(APCDALVR("APCDTCPT")))
  1. ;
  1. ; Still empty, so KILL off the nodes
  1. K APCDALVR("APCDTCPS")
  1. K APCDALVR("APCDTCPT")
  1. Q
  1. ;
  1. CHKREFA ; EP - Make sure Reference Ranges are not formulas
  1. NEW OKAYFLAG,PCCLOW,PCCHIGH,SHOULDBE,TESTIT,X
  1. ;
  1. S PCCLOW=$G(APCDALVR("APCDTRFL"))
  1. S PCCHIGH=$G(APCDALVR("APCDTRFH"))
  1. ;
  1. Q:$G(PCCLOW)'["$S"&($G(PCCHIGH)'["$S")
  1. ;
  1. D ENTRYAUD^BLRUTIL("CHKREFA^BLRLINK4 0.0")
  1. ;
  1. S OKAYFLAG=0
  1. ;
  1. I $G(PCCLOW)["$S" D
  1. . S X=PCCLOW
  1. . D ^DIM ; Make sure M code in Reference Value is valid
  1. . Q:$D(X)
  1. . ;
  1. . S SHOULDBE="SHOULDBE="_PCCLOW
  1. . S @SHOULDBE
  1. . Q:$L(SHOULDBE)<1
  1. . ;
  1. . S APCDALVR("APCDTRFL")=SHOULDBE
  1. . S:+$G(BLRIEN) $P(^BLRTXLOG(BLRIEN,20),"^",8)=SHOULDBE
  1. ;
  1. I $G(PCCHIGH)["$S" D
  1. . S X=PCCHIGH
  1. . D ^DIM
  1. . Q:$D(X)
  1. . ;
  1. . S SHOULDBE="SHOULDBE="_PCCHIGH
  1. . S @SHOULDBE
  1. . Q:$L(SHOULDBE)<1
  1. . ;
  1. . S APCDALVR("APCDTRFH")=SHOULDBE
  1. . S:+$G(BLRIEN) $P(^BLRTXLOG(BLRIEN,20),"^",9)=SHOULDBE
  1. ;
  1. D ENTRYAUD^BLRUTIL("CHKREFA^BLRLINK4 8.8")
  1. ;
  1. Q
  1. ;
  1. LOTZERO(ARRAY) ; EP - Leading and/Or Trailing ZERO(s) for PCC
  1. NEW (ARRAY,DILOCKTM,DISYS,DT,DTIME,DUZ,IO,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY,U,XPARSYS,XQXFLG)
  1. ;
  1. D ENTRYAUD^BLRUTIL("LOTZERO^BLRLINK4 0.0","ARRAY")
  1. ;
  1. S L60IEN=$P($G(ARRAY("APCDTLAB")),"`",2)
  1. Q:+L60IEN<1 ; IHS/MSC/MKK - LR*5.2*1037
  1. ;
  1. S DN=+$G(^LAB(60,L60IEN,.2))
  1. Q:+$G(DN)<1 ; Skip if no Data Name number
  1. ;
  1. S STR=$P($G(^DD(63.04,DN,0)),"^",5)
  1. Q:$L(STR)<1 ; Skip if no numeric defintiion
  1. ;
  1. ; S DP=+$P($P(STR,",",3),$C(34))
  1. S DP=+$P($P(STR,"Q9=",2),",",3) ; IHS/MSC/MKK - LR*5.2*1032 -- Need to take into account INPUT TRANSFORM code
  1. Q:DP<1 ; Skip if no Decimal Defintion
  1. ;
  1. S RESULT=$G(ARRAY("APCDTRES"))
  1. ;
  1. S SYMBOL="",ORIGRSLT=RESULT
  1. F Q:$E(RESULT)="."!($E(RESULT)?1N)!(RESULT="") D ; Adjust if ANY Non-Numeric is at the beginning of RESULT
  1. . S SYMBOL=SYMBOL_$E(RESULT)
  1. . S RESULT=$E(RESULT,2,$L(RESULT))
  1. ;
  1. S:$E(RESULT)="." RESULT="0"_RESULT ; Leading Zero Fix
  1. ;
  1. I $E(RESULT)'?1N S RESULT=ORIGRSLT Q ; Skip if RESULT has no numeric part
  1. ;
  1. S RESULT=$TR($FN(RESULT,"P",DP)," ")
  1. ;
  1. S:$L($G(SYMBOL)) RESULT=SYMBOL_RESULT ; Restore "symbol", if necessary
  1. ;
  1. S ARRAY("APCDTRES")=RESULT
  1. ;
  1. S PCCLOW=$G(ARRAY("APCDTRFL"))
  1. S PCCHIGH=$G(ARRAY("APCDTRFH"))
  1. ;
  1. I $L($G(PCCLOW)) D
  1. . S:$E(PCCLOW,1)="." PCCLOW="0"_PCCLOW
  1. . S PCCLOW=$TR($FN(PCCLOW,"P",DP)," ")
  1. . S ARRAY("APCDTRFL")=PCCLOW
  1. ;
  1. I $L($G(PCCHIGH)) D
  1. . S:$E(PCCHIGH,1)="." PCCHIGH="0"_PCCHIGH
  1. . S PCCHIGH=$TR($FN(PCCHIGH,"P",DP)," ")
  1. . S ARRAY("APCDTRFH")=PCCHIGH
  1. ;
  1. Q
  1. ;
  1. ; ----- BEGIN IHS/MSC/MKK - LR*5.2*1033
  1. RESETPOV ; EP -- Reset "Provider Narrative"
  1. D ENTRYAUD^BLRUTIL("RESETPOV^BLRLINK4 0.0","APCDALVR")
  1. ;
  1. ; NEW FDA,ICD,ICDCODE,IENS,LRORD,LRORDT,LRSP,LRTN,LRTST,ORDNUM,POV,POVICD,PROVNAR,SNOMED,TESTIEN
  1. NEW (APCDALVR,BLRLOGDA,DILOCKTM,DISYS,DT,DTIME,DUZ,IO,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY,U,X,XPARSYS,XQXFLG) ; IHS/MSC/MKK - LR*5.2*1034
  1. ;
  1. D ENTRYAUD^BLRUTIL("RESETPOV^BLRLINK4 0.1","APCDALVR")
  1. ;
  1. ; S ORDNUM=+$G(APCDALVR("APCDTORD"))
  1. ; Q:ORDNUM<1 ; If no Order Number, skip
  1. ;
  1. ; S TESTIEN=+$P($G(APCDALVR("APCDTLAB")),"`",2)
  1. ; Q:TESTIEN<1 ; If no Lab Test IEN, skip
  1. ;
  1. ; S LRODT=+$O(^LRO(69,"C",ORDNUM,0))
  1. ; S LRSP=+$O(^LRO(69,"C",ORDNUM,LRODT,0))
  1. ; S LRTN=+$O(^LRO(69,LRODT,1,LRSP,2,"B",TESTIEN,0))
  1. ;
  1. ; ----- BEGIN IHS/MSC/MKK - LR*5.2*1034
  1. S ORDNUM=+$$GET1^DIQ(9009022,BLRLOGDA,"ORDER NUMBER")
  1. Q:ORDNUM<1
  1. ;
  1. S TESTIEN=+$$GET1^DIQ(9009022,BLRLOGDA,"PANEL/TEST POINTER","I")
  1. Q:TESTIEN<1
  1. ;
  1. ; Because there can be multiple tests on an order, find entry
  1. ; in file 69 that matches the TESTIEN.
  1. S (FOUNDIT,LRODT)=0
  1. S LRODT=$O(^LRO(69,"C",ORDNUM,LRODT)) Q:LRODT<1!(FOUNDIT) D
  1. . S LRSP=0
  1. . F S LRSP=$O(^LRO(69,"C",ORDNUM,LRODT,LRSP)) Q:LRSP<1!(FOUNDIT) D
  1. .. S LROT=0
  1. .. F S LROT=$O(^LRO(69,LRODT,1,LRSP,2,LROT)) Q:LROT<1!(FOUNDIT) D
  1. ... S:+$G(^LRO(69,LRODT,1,LRSP,2,LROT,0))=TESTIEN FOUNDIT=FOUNDIT+1,FOUNDIT("LRSP")=LRSP,FOUNDIT("LRTN")=LROT
  1. S LRSP=+$G(FOUNDIT("LRSP")),LRTN=+$G(FOUNDIT("LRTN"))
  1. ;
  1. Q:LRTN<1 ; If no entry in Lab Order Entry file, skip
  1. ;
  1. ; S ICD=+$O(^LRO(69,LRODT,1,LRSP,2,LRTN,2,0))
  1. ; S ICDPTR=+$P($G(^LRO(69,LRODT,1,LRSP,2,LRTN,2,ICD,0)),"^")
  1. ; S ICDSTR=$$ICDDX^ICDCODE(ICDPTR) ; Currently, ICD Description & Code
  1. ; S ICDCODE=$P(ICDSTR,"^",2),ICDDESC=$P(ICDSTR,"^",4)
  1. ;
  1. ; S ICDCODE=$$UP^XLFSTR($P(ICDSTR,"^",2)),ICDDESC=$P(ICDSTR,"^",4)
  1. ;
  1. ; S IENS=LRTN_","_LRSP_","_LRODT
  1. ; S PROVNAR=$$GET1^DIQ(69.03,IENS,9999999.1)
  1. ; S SNOMED=$$GET1^DIQ(69.03,IENS,9999999.2)
  1. ;
  1. ; ----- BEGIN IHS/MSC/MKK - LR*5.2*1034
  1. S IEN=LRTN_","_LRSP_","_LRODT_","
  1. S PROVNAR=$$GET1^DIQ(69.03,IEN,"PROVIDER NARRATIVE")
  1. S SNOMED=$$GET1^DIQ(69.03,IEN,"SNOMED")
  1. ; S ICDCODE=$$GET1^DIQ(69.05,1_","_IEN,"ICD-9 CODES")
  1. ; S ICDPTR=+$P($G(^LRO(69,LRODT,1,LRSP,2,LRTN,2,ICD,0)),"^")
  1. ; ----- BEGIN IHS/MSC/MKK - LR*5.2*1034
  1. S ICDCODE=$$GET1^DIQ(69.05,1_","_IEN,"ICD CODES")
  1. S ICDIEN=$$GET1^DIQ(69.05,1_","_IEN,"ICD CODES","I")
  1. S ICDDESC=$$VLTD^ICDEX(ICDIEN)
  1. S:$L(ICDDESC)<1 ICDDESC=$$VLTP^ICDEX(ICDIEN)
  1. ; ----- END IHS/MSC/MKK - LR*5.2*1034
  1. ;
  1. D ENTRYAUD^BLRUTIL(" RESETPOV^BLRLINK4 5.0")
  1. ;
  1. ; Skip if no data in the Lab Order Entry file
  1. I $L(PROVNAR)<1,$L(SNOMED)<1,$L(ICDCODE)<1 Q
  1. ;
  1. S:$L(PROVNAR) APCDALVR("APCDTLPV")=PROVNAR
  1. D:$L(SNOMED) FMSNOMED
  1. ; S:$L(ICDCODE)&(ICDCODE'["INVALID") APCDALVR("APCDTICD")=ICDCODE
  1. ; S:$L(ICDCODE)&(ICDCODE'["INVALID") APCDALVR("APCDTICD")="`"_ICDPTR
  1. ;
  1. S:ICDIEN APCDALVR("APCDTICD")="`"_ICDIEN ; IHS/MSC/MKK - LR*5.2*1034 - Use ICD Code's IEN to store into PCC
  1. ;
  1. D ENTRYAUD^BLRUTIL(" RESETPOV^BLRLINK4 5.5")
  1. ;
  1. K:$G(APCDALVR("APCDTICD"))["INVALID" APCDALVR("APCDTICD")
  1. ;
  1. ; Reset ^BLRTXLOG, if necessary. Skip if No BLRLOGDA variable.
  1. I +$G(BLRLOGDA) D
  1. . NEW BLRPROVN,BLRSNOM,BLRICD,BLRPROVN,BLRSNOM,BLRICD
  1. . S BLRPROVN=$$GET1^DIQ(9009022,BLRLOGDA_",",1601)
  1. . S BLRSNOM=$$GET1^DIQ(9009022,BLRLOGDA_",",1602)
  1. . S BLRICD=$$GET1^DIQ(9009022,BLRLOGDA_",",1603)
  1. . ;
  1. . I BLRPROVN=PROVNAR,BLRSNOM=SNOMED,BLRICD=ICDCODE Q
  1. . ;
  1. . K FDA,ERRS
  1. . S:$L(PROVNAR)&(BLRPROVN'=PROVNAR) FDA(9009022,BLRLOGDA_",",1601)=PROVNAR
  1. . S:$L(SNOMED)&(BLRSNOM'=SNOMED) FDA(9009022,BLRLOGDA_",",1602)=SNOMED
  1. . ; S:$L(ICDCODE)&(BLRICD'=ICDCODE) FDA(9009022,BLRLOGDA_",",1603)=ICDCODE
  1. . ;
  1. . S:$L(ICDCODE)&(ICDCODE'["INVALID")&(BLRICD'=ICDCODE) FDA(9009022,BLRLOGDA_",",1603)=ICDCODE
  1. . ;
  1. . Q:$D(FDA)<1
  1. . ;
  1. . D UPDATE^DIE("S","FDA",,"ERRS")
  1. ;
  1. D ENTRYAUD^BLRUTIL(" RESETPOV^BLRLINK4 9.0","APCDALVR","ERRS","VERRS")
  1. Q
  1. ;
  1. FMSNOMED ; EP - SNOMED codes to be done via FileMan
  1. NEW IEN,VLABFILE,VLABIEN
  1. ;
  1. S VLABFILE=+$$GET1^DIQ(9009022,BLRLOGDA_",",104,"I")
  1. Q:VLABFILE<1
  1. ;
  1. S VLABIEN=+$$GET1^DIQ(9009022,BLRLOGDA_",",105)
  1. Q:VLABIEN<1
  1. ;
  1. S FDA(VLABFILE_"26","?+1,"_VLABIEN_",",.01)=SNOMED
  1. ;
  1. D UPDATE^DIE("ES","FDA",,"VERRS")
  1. Q
  1. ;
  1. ; If SNOMED is in 9009029 & missing in the PCC file, then fix it. Done for BYPASS entries.
  1. MSNOMED ; EP - Called from BLRLINK3
  1. NEW ERRS,FDA,SNOMED,VFILENUM,VFILEIEN
  1. ;
  1. ; Note -- When this routine is called, the V File data are not in the ^BLRTXLOG global yet, but are in the APCDALVR array.
  1. ;
  1. ; Skip if there is a PCC error
  1. Q:+$G(APCDALVR("APCDAFLG"))>0
  1. ;
  1. ; Get V File #
  1. S VFILENUM=+$G(APCDALVR("APCDAVF"))
  1. Q:VFILENUM<1
  1. ;
  1. ; Get V File IEN
  1. S VFILEIEN=+$G(APCDALVR("APCDADFN"))
  1. Q:VFILEIEN<1
  1. ;
  1. ; If SNOMED already in V File, skip
  1. S SNOMED=$$GET1^DIQ(VFILENUM,VFILEIEN,1602)
  1. Q:$L(SNOMED)
  1. ;
  1. ; Get SNOMED code
  1. ; S SNOMED=+$$GET1^DIQ(9009022,BLRLOGDA_",",1602)
  1. S SNOMED=$$GET1^DIQ(9009022,BLRLOGDA_",",1602) ; IHS/MSC/MKK - LR*5.2*1037
  1. Q:$L(SNOMED)<1
  1. ;
  1. S FDA(VFILENUM_"26","?+1,"_VFILEIEN_",",.01)=SNOMED
  1. ;
  1. D UPDATE^DIE("S","FDA",,"ERRS")
  1. ;
  1. Q
  1. ;
  1. ; ----- END IHS/MSC/MKK - LR*5.2*1033