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

BLRLDFIS.m

Go to the documentation of this file.
  1. BLRLDFIS ; IHS/MSC/MKK - Add data to "IHS" Lab Data file ; 22-Oct-2013 09:22 ; MKK
  1. ;;5.2;IHS LABORATORY;**1033,1034**;NOV 01, 1997;Build 88
  1. ;
  1. EEP ; Ersatz EP
  1. D EEP^BLRGMENU
  1. Q
  1. ;
  1. EP ; EP
  1. PEP ; EP
  1. NEW (APCDALVR,BLRLOGDA,DILOCKTM,DISYS,DT,DTIME,DUZ,IO,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY,REFLABF,U,XPARSYS,XQXFLG)
  1. ;
  1. Q:$$INITVARS()<1
  1. ;
  1. D STORDATA
  1. Q
  1. ;
  1. INITVARS() ; EP - Initialization of variables
  1. S (ICD,LOCDN,LOINC,NOTE,RESULTDT,SNOMED)=""
  1. ;
  1. Q:+$G(APCDALVR("APCDTRES"))<1 0 ; If no RESULT data, skip
  1. ;
  1. S LRAS=$$GET1^DIQ(9009022,BLRLOGDA,"ACCESSION NUMBER")
  1. Q:$L(LRAS)<1 0 ; If no Accession number, skip
  1. ;
  1. S X=$$GETACCCP^BLRUTIL3(LRAS,.LRAA,.LRAD,.LRAN)
  1. Q:X<1 0 ; If cannot "break apart" accession number, skip
  1. ;
  1. S LRDFN=+$G(^LRO(68,LRAA,1,LRAD,1,LRAN,0)),UID=$G(^(.3)),LRIDT=+$P($G(^(3)),"^",5)
  1. Q:LRDFN<1!(LRIDT<1) 0 ; If no Lab Data file pointers, skip
  1. ;
  1. S RESULTDT=+$$GET1^DIQ(9009022,BLRLOGDA,"ENTRY DATE/TIME","I")
  1. Q:RESULTDT<1 0 ; If no date, skip
  1. ;
  1. S F60IEN=+$$GET1^DIQ(9009022,BLRLOGDA,"PANEL/TEST POINTER","I")
  1. Q:F60IEN<1 0 ; If no Test, skip
  1. ;
  1. S LOCDN=+$P($$GET1^DIQ(60,F60IEN,"LOCATION (DATA NAME)"),";",2)
  1. Q:LOCDN<1 0 ; If no DataName, skip
  1. ;
  1. S LOINC=$TR($G(APCDALVR("APCDTLNC")),"`")
  1. S ICD=$TR($G(APCDALVR("APCDTLPV")),"`")
  1. S:$L(ICD)&(+ICD<1) ICD="" ; If ICD not a number, set to null
  1. ;
  1. D:REFLABF ICOMDATA
  1. ;
  1. Q 1
  1. ;
  1. ICOMDATA ; EP - Retreive necessary data from the Incoming HL7 message in the UNIVERSAL INTERFACE (#4001) file.
  1. ; Note that BLRLINKU routine stores the data in the ^TMP global when called earlier in the BLRLINK3 routine,
  1. ; which means no need to re-examine 4001.
  1. S STR=$G(^TMP("BLR",$J,UID,F60IEN))
  1. S RESULTDT=$P(STR,"^",6)
  1. S LOINC=$P(STR,"^",7)
  1. Q
  1. ;
  1. STORDATA ; EP - Store the Data
  1. K FDA S FDA(90479.5,"?+1,",.01)=LRDFN
  1. K ERRS D UPDATE^DIE("S","FDA",,"ERRS")
  1. Q:$$CHKERRS("ERRS","Error Adding LRDFN")
  1. ;
  1. S IEN0=+$$FIND1^DIC(90479.5,,,LRDFN)
  1. I IEN0<1 D NOTFOUND("LRDFN "_LRDFN) Q
  1. ;
  1. K FDA
  1. S FDA(90479.51,"?+1,"_IEN0_",",.01)=LRIDT
  1. S FDA(90479.51,"?+1,"_IEN0_",",1)=LRAS
  1. S FDA(90479.51,"?+1,"_IEN0_",",2)=UID
  1. ;
  1. K ERRS D UPDATE^DIE("S","FDA",,"ERRS")
  1. Q:$$CHKERRS("ERRS","LRIDT, LRAS, & UID")
  1. ;
  1. S IEN1=+$$FIND1^DIC(90479.51,","_IEN0_",",,LRIDT)
  1. I IEN1<1 D NOTFOUND("LRIDT "_LRIDT) Q
  1. ;
  1. K FDA
  1. S FDA(90479.513,"?+1,"_IEN1_","_IEN0_",",.01)=LOCDN
  1. ;
  1. K ERRS D UPDATE^DIE("S","FDA",,"ERRS")
  1. Q:$$CHKERRS("ERRS","LOCATION (DATA NAME)")
  1. ;
  1. S IEN2=+$$FIND1^DIC(90479.513,","_IEN1_","_IEN0_",",,LOCDN)
  1. I IEN1<1 D NOTFOUND("LOCATION (DATA NAME) "_LOCDN) Q
  1. ;
  1. K FDA
  1. S FDA(90479.5131,"?+1,"_IEN2_","_IEN1_","_IEN0_",",.01)=RESULTDT
  1. S:$L($G(LOINC)) FDA(90479.5131,"?+1,"_IEN2_","_IEN1_","_IEN0_",",1)=LOINC
  1. S:$L($G(ICD)) FDA(90479.5131,"?+1,"_IEN2_","_IEN1_","_IEN0_",",2)=ICD
  1. S:$L($G(SNOMED)) FDA(90479.5131,"?+1,"_IEN2_","_IEN1_","_IEN0_",",3)=SNOMED
  1. ;
  1. K ERRS D UPDATE^DIE("S","FDA",,"ERRS")
  1. Q:$$CHKERRS("ERRS","RESULT DATE")
  1. ;
  1. D OTHRSEGS(IEN0,IEN1,IEN2)
  1. Q
  1. ;
  1. OTHRSEGS(IEN0,IEN1,IEN2) ; EP - Store Other Data
  1. Q
  1. ;
  1. CHKERRS(ERRS,SUBJECT) ; EP - If ERRS array is empty, just return zero, otherwise send MailMan message and return 1
  1. Q:$D(ERRS)<1 0
  1. ;
  1. NEW LN,MSGARRAY,STR1
  1. ;
  1. S MSGARRAY(1)="BLRLDFIS Routine ERROR"
  1. S $E(MSGARRAY(2),5)="Accession:"_LRAS
  1. S $E(MSGARRAY(3),5)="UID:"_UID
  1. S LN=3
  1. ;
  1. ; "Dump" ERRS array into the MailMan Message array
  1. S STR1=$Q(@ERRS@(""))
  1. S $E(MSGARRAY(4),10)=@STR1
  1. S LN=4
  1. F S STR1=$Q(@STR1) Q:STR1="" D
  1. . S LN=LN+1
  1. . S $E(MSGARRAY(LN),10)=@STR1
  1. ;
  1. S SUBJECT="Error Adding "_SUBJECT_" to 90475.7"
  1. D MAILALMI^BLRUTIL3(SUBJECT,.MSGARRAY,"BLRLDFIS")
  1. ;
  1. Q 1
  1. ;
  1. NOTFOUND(SUBJECT) ; EP - If could not retrieve IEN, send Message
  1. NEW LN,MSGARRAY,STR1
  1. ;
  1. S MSGARRAY(1)="BLRLDFIS Routine ERROR"
  1. S $E(MSGARRAY(2),5)="Accession:"_LRAS
  1. S $E(MSGARRAY(3),5)="UID:"_UID
  1. ;
  1. S SUBJECT="Error Finding "_SUBJECT_" in 90475.7 File"
  1. D MAILALMI^BLRUTIL3(SUBJECT,.MSGARRAY,"BLRLDFIS")
  1. Q
  1. ;
  1. TESTSTOR ; EP - Test the STORDATA routine
  1. NEW (DILOCKTM,DISYS,DT,DTIME,DUZ,IO,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY,U,XPARSYS,XQXFLG)
  1. ;
  1. D ^LRWU4
  1. ;
  1. I $D(^LRO(68,LRAA,1,LRAD,1,LRAN))<1 D Q
  1. . W !!,?4,"Invalid Accession. Routine Ends.",!
  1. ;
  1. S LRDFN=+$G(^LRO(68,LRAA,1,LRAD,1,LRAN,0)),LRAS=$G(^(.2)),UID=+$G(^(.3)),LRIDT=+$P($G(^(3)),"^",5)
  1. S FIRST=+$G(^LRO(68,LRAA,1,LRAD,1,LRAN,4,0)),DATALN=+$G(^LAB(60,FIRST,.2)),LOINC=$G(^LAB(60,FIRST,1,70,95.3))
  1. S RESULTDT=+$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,4,FIRST,0)),"^",5)
  1. S:RESULTDT<1 RESULTDT=$$NOW^XLFDT
  1. S (ICD,SNOMED)=""
  1. ;
  1. D STORDATA
  1. Q
  1. ;
  1. RETDATA(UID) ; EP - Given UID, retrieve all the informatoin that's available in ^BLRMULDA global
  1. NEW (DILOCKTM,DISYS,DT,DTIME,DUZ,IO,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY,U,UID,XPARSYS,XQXFLG)
  1. ;
  1. Q
  1. ;
  1. CHEK69 ; EP
  1. NEW (DILOCKTM,DISYS,DT,DTIME,DUZ,IO,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY,U,XPARSYS,XQXFLG)
  1. ;
  1. S HEADER(1)="Laboratory Order File"
  1. ; S HEADER(2)="Orders with SIGN OR SYMPTOM Data"
  1. S HEADER(2)="Orders with Clinical Indication Data" ; IHS/MSC/MKK - LR*5.2*1034
  1. S HEADER(3)=" "
  1. S $E(HEADER(4),5)="LRODT"
  1. S $E(HEADER(4),15)="LRSPN"
  1. S $E(HEADER(4),25)="LROT"
  1. S $E(HEADER(4),35)="SIGNSYMP"
  1. S $E(HEADER(4),45)="INDICATION CODE"
  1. ;
  1. D HEADERDT^BLRGMENU
  1. ;
  1. S (CNT,LRODT)=0
  1. F S LRODT=$O(^LRO(69,LRODT)) Q:LRODT<1 D
  1. . S LRSPN=0
  1. . F S LRSPN=$O(^LRO(69,LRODT,1,LRSPN)) Q:LRSPN<1 D
  1. .. S LROT=0
  1. .. F S LROT=$O(^LRO(69,LRODT,1,LRSPN,2,LROT)) Q:LROT<1 D
  1. ... S STR=$G(^LRO(69,LRODT,1,LRSPN,2,LROT,9999999))
  1. ... Q:$L(STR)<1
  1. ... ;
  1. ... W ?4,LRODT,?14,LRSPN,?24,LROT,?34,$P(STR,"^"),?44,$P(STR,"^",2),!
  1. ... S CNT=CNT+1
  1. ;
  1. Q