| 1 | LREPI1A ;DALOI/SED-EMERGING PATHOGENS HL7 BUILDER ;5/1/98
 | 
|---|
| 2 |  ;;5.2;LAB SERVICE;**175,260**;Sep 27, 1994
 | 
|---|
| 3 |  ; Reference to ^ICD9 supported by IA #10082
 | 
|---|
| 4 |  ; Reference to ^XLFSTR supported by IA #10104
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | EN(LRDFN,SS,IVDT,SEQ) ;Entry to build the HL7 Segment
 | 
|---|
| 7 |  ;LRDFN=Patient ID
 | 
|---|
| 8 |  ;SS=Subscripts in file 63  for results
 | 
|---|
| 9 |  ;IVDT=Inverted Date and Time
 | 
|---|
| 10 |  ;SEQ=Sequence Number
 | 
|---|
| 11 |  ;S LRCS=$E(HL("ECH"))
 | 
|---|
| 12 |  K ^TMP("HL7",$J)
 | 
|---|
| 13 |  S:+$G(SEQ)'>0 SEQ=1
 | 
|---|
| 14 |  S CNT=1
 | 
|---|
| 15 |  Q:'$G(LRDFN)!('$G(IVDT))!('$L($G(SS)))
 | 
|---|
| 16 |  I $L($T(@SS)) D @SS
 | 
|---|
| 17 | EXIT ;KILL THEN EXIT
 | 
|---|
| 18 |  K CNT,IND,LRAND,LRANT,LRDATA,LRES,LRINLT,LRNT,LRRDTE,LRREF,LRTST,LRUNIT
 | 
|---|
| 19 |  K ND,NLT,NLTP,ORGNB,ORGPT,SEQX,SITE,TYPE
 | 
|---|
| 20 |  Q SEQ
 | 
|---|
| 21 | CY ;BUILD HL7 MSG FOR CY SUBSCRIPT
 | 
|---|
| 22 |  ;TO BUILD OBR SEGMENT FOR CY
 | 
|---|
| 23 |  I '$D(^LR(LRDFN,SS,IVDT,0)) Q
 | 
|---|
| 24 |  ;Look at ICD9 codes
 | 
|---|
| 25 |  I $O(^LR(LRDFN,SS,IVDT,3,0))>0 D
 | 
|---|
| 26 |  .K LRDATA
 | 
|---|
| 27 |  .S $P(LRDATA,HLFS,1)=$G(SEQ)
 | 
|---|
| 28 |  .S $P(LRDATA,HLFS,4)="88056.0000"_LRCS_"CY SPECIMEN"_LRCS_"VANLT"
 | 
|---|
| 29 |  .S $P(LRDATA,HLFS,18)=$P(^LR(LRDFN,SS,IVDT,0),U,6)
 | 
|---|
| 30 |  .S $P(LRDATA,HLFS,7)=$$HLDATE^HLFNC(9999999-IVDT)
 | 
|---|
| 31 |  .S LRSI=$O(^LR(LRDFN,SS,IVDT,.1,0)),SITE=""
 | 
|---|
| 32 |  .S:+LRSI>0 SITE=$P($G(^LR(LRDFN,SS,IVDT,.1,LRSI,0)),U,1)
 | 
|---|
| 33 |  .S $P(LRDATA,HLFS,15)=LRCS_LRCS_SITE
 | 
|---|
| 34 |  .S ^TMP("HL7",$J,CNT)="OBR"_HLFS_$$UP^XLFSTR(LRDATA),CNT=CNT+1,SEQ=SEQ+1
 | 
|---|
| 35 |  .S LRIC=0 F  S LRIC=$O(^LR(LRDFN,SS,IVDT,3,LRIC)) Q:+LRIC'>0  D
 | 
|---|
| 36 |  ..Q:'$D(^LR(LRDFN,SS,IVDT,3,LRIC,0))
 | 
|---|
| 37 |  ..S:'$D(DGCNT) DGCNT=1
 | 
|---|
| 38 |  ..S ICD9=$P(^LR(LRDFN,SS,IVDT,3,LRIC,0),U,1)
 | 
|---|
| 39 |  ..K LRDATA
 | 
|---|
| 40 |  ..S LRDATA="DG1"_HLFS_DGCNT_HLFS_HLFS_$P(^ICD9(ICD9,0),U,1)
 | 
|---|
| 41 |  ..S LRDATA=LRDATA_LRCS_$P(^ICD9(ICD9,0),U,3)_LRCS_"I9"
 | 
|---|
| 42 |  ..S ^TMP("HL7",$J,CNT)=$$UP^XLFSTR(LRDATA),DGCNT=DGCNT+1,CNT=CNT+1
 | 
|---|
| 43 |  K LRDATA,DGCNT
 | 
|---|
| 44 |  ;Look to see in there is a workload code.
 | 
|---|
| 45 |  S LRWKI=0 F  S LRWKI=$O(^LR(LRDFN,SS,IVDT,.1,LRWKI)) Q:+LRWKI'>0  D
 | 
|---|
| 46 |  .S LRWKDT=$G(^LR(LRDFN,SS,IVDT,.1,LRWKI,0))
 | 
|---|
| 47 |  .Q:+$P(LRWKDT,U,2)'>0
 | 
|---|
| 48 |  .Q:'$D(^LAB(60,$P(LRWKDT,U,2)))
 | 
|---|
| 49 |  .S LRTST=$P(LRWKDT,U,2)
 | 
|---|
| 50 |  .S LRNLT="88056.0000"_LRCS_"CY SPECIMEN"_LRCS_"VANLT"
 | 
|---|
| 51 |  .S LRINLT=+$G(^LAB(60,$P(LRWKDT,U,2),64))
 | 
|---|
| 52 |  .I LRINLT'="",$D(^LAM(LRINLT,0)) D
 | 
|---|
| 53 |  ..S $P(LRNLT,LRCS,2)=$P(^LAM(LRINLT,0),U,1)
 | 
|---|
| 54 |  ..S $P(LRNLT,LRCS,1)=$P(^LAM(LRINLT,0),U,2)
 | 
|---|
| 55 |  ..S $P(LRNLT,LRCS,3)="VANLT"
 | 
|---|
| 56 |  .K LRDATA
 | 
|---|
| 57 |  .S $P(LRDATA,HLFS,1)=$G(SEQ)
 | 
|---|
| 58 |  .S $P(LRDATA,HLFS,4)=LRNLT_LRCS_LRTST_LRCS_$P(^LAB(60,LRTST,0),U)_LRCS_"VA60"
 | 
|---|
| 59 |  .S $P(LRDATA,HLFS,18)=$P(^LR(LRDFN,SS,IVDT,0),U,6)
 | 
|---|
| 60 |  .S $P(LRDATA,HLFS,7)=$$HLDATE^HLFNC(9999999-IVDT)
 | 
|---|
| 61 |  .S LRRDTE=$P($G(^LR(LRDFN,SS,IVDT,0)),U,3)
 | 
|---|
| 62 |  .S:+LRRDTE>0 LRRDTE=$$HLDATE^HLFNC(LRRDTE)
 | 
|---|
| 63 |  .S SITE=$P(LRWKDT,U,1)
 | 
|---|
| 64 |  .S $P(LRDATA,HLFS,15)=LRCS_LRCS_SITE
 | 
|---|
| 65 |  .S ^TMP("HL7",$J,CNT)="OBR"_HLFS_$$UP^XLFSTR(LRDATA),CNT=CNT+1,SEQ=SEQ+1
 | 
|---|
| 66 |  K LRDATA,DGCNT,LRTST,LRWKDT,LRINLT,LRNLT
 | 
|---|
| 67 |  ;Look into Multiple CYTOPATH ORGAN/TISSUE sub file
 | 
|---|
| 68 |  S LRTOP=0 F  S LRTOP=$O(^LR(LRDFN,SS,IVDT,2,LRTOP)) Q:+LRTOP'>0  D
 | 
|---|
| 69 |  .K LRDATA
 | 
|---|
| 70 |  .S $P(LRDATA,HLFS,1)=$G(SEQ)
 | 
|---|
| 71 |  .S $P(LRDATA,HLFS,4)="88056.0000"_LRCS_"CY SPECIMEN"_LRCS_"VANLT"
 | 
|---|
| 72 |  .S $P(LRDATA,HLFS,18)=$P(^LR(LRDFN,SS,IVDT,0),U,6)
 | 
|---|
| 73 |  .S $P(LRDATA,HLFS,7)=$$HLDATE^HLFNC(9999999-IVDT)
 | 
|---|
| 74 |  .S LRRDTE=$P($G(^LR(LRDFN,SS,IVDT,0)),U,3)
 | 
|---|
| 75 |  .S:+LRRDTE>0 LRRDTE=$$HLDATE^HLFNC(LRRDTE)
 | 
|---|
| 76 |  .S SITE=$P(^LR(LRDFN,SS,IVDT,2,LRTOP,0),U,1)
 | 
|---|
| 77 |  .D SITECD^LREPI1
 | 
|---|
| 78 |  .S $P(LRDATA,HLFS,15)=LRCODE_LRCS_LRCS_$P($G(^LAB(61,SITE,0)),U)
 | 
|---|
| 79 |  .S ^TMP("HL7",$J,CNT)="OBR"_HLFS_$$UP^XLFSTR(LRDATA),CNT=CNT+1,SEQ=SEQ+1
 | 
|---|
| 80 |  .;NOW DO THE OBX(s) FOR TO SITE
 | 
|---|
| 81 |  .S ND="61.4,61.1,61.3,61.5"
 | 
|---|
| 82 |  .S SEQX=1
 | 
|---|
| 83 |  .F LRSUB=1,2,3,4 D
 | 
|---|
| 84 |  ..Q:'$D(^LR(LRDFN,SS,IVDT,2,LRTOP,LRSUB,0))
 | 
|---|
| 85 |  ..S LRNX=0
 | 
|---|
| 86 |  ..F  S LRNX=$O(^LR(LRDFN,SS,IVDT,2,LRTOP,LRSUB,LRNX)) Q:+LRNX'>0  D
 | 
|---|
| 87 |  ...K LRDATA
 | 
|---|
| 88 |  ...S LRI=$P(^LR(LRDFN,SS,IVDT,2,LRTOP,LRSUB,LRNX,0),U,1)
 | 
|---|
| 89 |  ...Q:'$D(^LAB($P(ND,",",LRSUB),+LRI,0))
 | 
|---|
| 90 |  ...S LRO=^LAB($P(ND,",",LRSUB),+LRI,0)
 | 
|---|
| 91 |  ...S $P(LRDATA,HLFS,1)=$G(SEQX)
 | 
|---|
| 92 |  ...S $P(LRDATA,HLFS,2)="ST"
 | 
|---|
| 93 |  ...S $P(LRDATA,HLFS,3)=$P(LRO,U,2)_LRCS_$P(LRO,U,1)_LRCS_"SNM3"_LRCS_$P(LRO,U,2)_LRCS_$E($P(LRO,U,1),1,25)_LRCS_"SNM3"
 | 
|---|
| 94 |  ...S $P(LRDATA,HLFS,14)=LRRDTE
 | 
|---|
| 95 |  ...S LRRES=""
 | 
|---|
| 96 |  ...S:LRSUB=4 LRRES=$P(^LR(LRDFN,SS,IVDT,2,LRTOP,LRSUB,LRNX,0),U,2)
 | 
|---|
| 97 |  ...S:LRRES'="" $P(LRDATA,HLFS,5)=$S(LRRES:"Positive",1:"Negative")
 | 
|---|
| 98 |  ...S ^TMP("HL7",$J,CNT)="OBX"_HLFS_$$UP^XLFSTR(LRDATA),CNT=CNT+1,SEQX=SEQX+1
 | 
|---|
| 99 |  Q
 | 
|---|