| 1 | LA7DVC ;SFCIOFO/MJM/DALOI/PWC - EXTRACTION ROUTINE FOR VERIFIED "CH" LAB RESULTS TO CAREVUE&LIFELOG ;01/14/2000
 | 
|---|
| 2 |  ;;5.2;AUTOMATED LAB INSTRUMENTS;**53,62**;Sep 27, 1994
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; Reference to ^DPT( supported by DBIA #10035
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | EN ;ENTRY POINT FROM VERIFICATION PROCESS
 | 
|---|
| 7 |  S DFN=$P(^LR(LRDFN,0),"^",3)
 | 
|---|
| 8 |  S GMTS1=LRIDT-.00001,GMTS2=LRIDT,VFLAG=1 D DEM^VADPT
 | 
|---|
| 9 |  D INIT,^LA7DVEXT,HL7
 | 
|---|
| 10 |  K ^TMP("LRC",$J),LA7DVL,MAX,NXREC,EXPAND,SEX,DFN
 | 
|---|
| 11 |  Q
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 | INIT ;Set up needed variables
 | 
|---|
| 14 |  S NXREC=0,MAX=75,EXPAND=1,SEX=$P(VADM(5),"^",1)
 | 
|---|
| 15 |  Q
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 | HL7 ; Build the HL7 message and send to the Ward.
 | 
|---|
| 18 |  K HL,HLA,HLP,HLRESLT  ; Clean the enviroment
 | 
|---|
| 19 |  S DIC="^ORD(101,",DIC(0)="MNOZ",X="LA7D CARELIFE SERVER" D ^DIC
 | 
|---|
| 20 |  I Y=-1 S TEXT="Unable to send out test result to CAREVUE, Protocol Server is not setup" K Y,DIC D ERROR Q
 | 
|---|
| 21 |  S LA7DVEID=+Y  ; Server Protocol IEN
 | 
|---|
| 22 |  K Y,DIC
 | 
|---|
| 23 |  D INIT^HLFNC2(LA7DVEID,.HL)
 | 
|---|
| 24 |  I $G(HL) S TEXT="Unable to send out test result to CAREVUE, Protocol Server is downed" D ERROR Q
 | 
|---|
| 25 |  N COUNT
 | 
|---|
| 26 |  S LA7DVTYP="LM",LA7DVFMT=1
 | 
|---|
| 27 |  S HLFS=$E(HL("FS")),Z=$E(HL("ECH"),1),COUNT=1,S=HLFS
 | 
|---|
| 28 |  S HLA("HLS",COUNT)=$$EN^VAFHLPID(DFN,"2,3,5,7,8,19")
 | 
|---|
| 29 |  S HOLD=COUNT+1  ;  Hold the space for OBR segment
 | 
|---|
| 30 |  S COUNT=COUNT+2,LA7DVTXT=""
 | 
|---|
| 31 |  ; Start the NTE segment
 | 
|---|
| 32 |  F  S LA7DVTXT=$O(^TMP("LRC",$J,LRIDT,"C",LA7DVTXT)) Q:LA7DVTXT=""  D
 | 
|---|
| 33 |  . S HLA("HLS",COUNT)="NTE"_HLFS_HLFS_"L"_HLFS_$TR(^TMP("LRC",$J,LRIDT,"C",LA7DVTXT),"~")
 | 
|---|
| 34 |  . S COUNT=COUNT+1
 | 
|---|
| 35 |  ; Start the OBX segment
 | 
|---|
| 36 |  S (OBX,LA7DVSCR)=""
 | 
|---|
| 37 |  F  S OBX=$O(^TMP("LRC",$J,LRIDT,OBX)) Q:+OBX=0  D
 | 
|---|
| 38 |  . S LA7DVOBX=^TMP("LRC",$J,LRIDT,OBX)
 | 
|---|
| 39 |  . S LINE1="OBX"_HLFS_HLFS_HLFS_$P($P(LA7DVOBX,"^",3),";")_Z_$P($P(LA7DVOBX,"^",3),";",2)_HLFS_HLFS_$P(LA7DVOBX,"^",4)_HLFS_$P(LA7DVOBX,"^",6)_HLFS
 | 
|---|
| 40 |  . S HLA("HLS",COUNT)=LINE1_$P(LA7DVOBX,"^",7)_"-"_$P(LA7DVOBX,"^",8)_HLFS_$P(LA7DVOBX,"^",5)_HLFS_HLFS_HLFS_$S($P(LA7DVOBX,"^",4)="pending":"I",1:"F")
 | 
|---|
| 41 |  . S COUNT=COUNT+1
 | 
|---|
| 42 |  . S LA7DVSCR=$P(LA7DVOBX,"^",2)_Z  ; Save for Specimen source
 | 
|---|
| 43 |  . K LINE1
 | 
|---|
| 44 |  ; Start the OBR segment
 | 
|---|
| 45 |  S LA7DVTMP="",LA7DVTMP=$O(^TMP("LRC",$J,LRIDT,LA7DVTMP)) ; Get the first entry of this collection
 | 
|---|
| 46 |  S LA7DVCOL=$P(^TMP("LRC",$J,LRIDT,LA7DVTMP),"^",1)  ; Get the Collection date/time
 | 
|---|
| 47 |  S LA7DVRCP=$P(^TMP("LRC",$J,LRIDT,LA7DVTMP),"^",10)  ; Get the Report Complete Date/time
 | 
|---|
| 48 |  S LA7DVACC=$P(^TMP("LRC",$J,LRIDT,LA7DVTMP),"^",9)  ; Get the Accession #
 | 
|---|
| 49 |  S HLA("HLS",HOLD)="OBR"_HLFS_HLFS_HLFS_LA7DVACC_HLFS_"CH"
 | 
|---|
| 50 |  S $P(HLA("HLS",HOLD),HLFS,8)=LA7DVCOL
 | 
|---|
| 51 |  S $P(HLA("HLS",HOLD),HLFS,15,16)=LA7DVCOL_HLFS_LA7DVSCR
 | 
|---|
| 52 |  S $P(HLA("HLS",HOLD),HLFS,23,29)=LA7DVRCP_S_S_"LAB"_S_S_S_S_LA7DVL
 | 
|---|
| 53 |  S HLP("NAMESPACE")="LA"
 | 
|---|
| 54 |  D GENERATE^HLMA(LA7DVEID,LA7DVTYP,LA7DVFMT,.HLRESLT,"",.HLP)
 | 
|---|
| 55 |  I $P(HLRESLT,"^",2) D ERROR
 | 
|---|
| 56 |  K LA7DVRCP,LA7DVSCR,HOLD,LA7DVCOL,LA7DVACC,LA7DVTMP,LA7DVOBX,COUNT
 | 
|---|
| 57 |  K LA7DVTXT,LA7DVFMT,LA7DVEID,LA7DVTYP,OBX,GMTS1,GMTS2,S
 | 
|---|
| 58 |  K HLRESLT,HLFS,HLP,XMSUB,XMTEXT,XMDUZ,XMDT,XMY,VFLAG,VAIN,VADM,TEXT
 | 
|---|
| 59 |  Q
 | 
|---|
| 60 |  ;
 | 
|---|
| 61 | ERROR ; Send out error message when HL7 fail to build the message
 | 
|---|
| 62 |  D INP^VADPT
 | 
|---|
| 63 |  S XMSUB="ERROR IN SENDING LAB RESULTS TO "_$P(VAIN(4),"^",2)_" WARD"
 | 
|---|
| 64 |  D NOW^%DTC S XMDT=X K X
 | 
|---|
| 65 |  S XMDUZ=.5,XMY("G.CARELIFE RESULT ERROR")=""
 | 
|---|
| 66 |  S A(1)="There was an error in building an HL7 Lab Result Message for accession"
 | 
|---|
| 67 |  I LA7DVACC'="" D
 | 
|---|
| 68 |  . S A(2)=" # "_LA7DVACC_"of patient name: "_$P(^DPT(DFN,0),"^")_" at "_$P(VAIN(4),"^",2)_" Ward."
 | 
|---|
| 69 |  . S A(3)="The error was "_$P(HLRESLT,"^",3)_"."
 | 
|---|
| 70 |  E  D
 | 
|---|
| 71 |  . S A(2)="The error was "_TEXT_"."
 | 
|---|
| 72 |  . S A(3)=""
 | 
|---|
| 73 |  S A(4)="Please make a note of it and take any actions that necessary"
 | 
|---|
| 74 |  S XMTEXT="A(" D ^XMD
 | 
|---|
| 75 |  K A
 | 
|---|
| 76 |  Q
 | 
|---|