[447] | 1 | LA7QRY1 ;DALOI/JMC - Lab HL7 Query Utility ;01/19/99 13:48
|
---|
[508] | 2 | ;;5.2;AUTOMATED LAB INSTRUMENTS;**46,61**;Sep 27, 1994;Build 31
|
---|
| 3 | ;
|
---|
| 4 | Q
|
---|
| 5 | ;
|
---|
[447] | 6 | CHKSC ; Check search NLT/LOINC codes
|
---|
[508] | 7 | ;
|
---|
| 8 | N J
|
---|
| 9 | ;
|
---|
| 10 | S J=0
|
---|
| 11 | F S J=$O(LA7SC(J)) Q:'J D
|
---|
| 12 | . N X
|
---|
| 13 | . S X=LA7SC(J)
|
---|
| 14 | . I $P(X,"^",2)="NLT",$D(^LAM("E",$P(X,"^"))) D Q
|
---|
| 15 | . . S ^TMP("LA7-NLT",$J,$P(X,"^"))=""
|
---|
| 16 | . I $P(X,"^",2)="LN",$D(^LAB(95.3,$P($P(X,"^"),"-"))) D Q
|
---|
| 17 | . . S ^TMP("LA7-LN",$J,$P($P(X,"^"),"-"))=""
|
---|
| 18 | . S LA7ERR(6)="Unknown search code "_$P(X,"^")_" passed"
|
---|
| 19 | . K LA7SC(J)
|
---|
| 20 | Q
|
---|
| 21 | ;
|
---|
| 22 | ;
|
---|
[447] | 23 | SPEC ; Convert HL7 Specimen Codes to File #61, Topography codes
|
---|
[508] | 24 | ; Find all topographies that use this HL7 specimen code
|
---|
| 25 | N J,K,L
|
---|
| 26 | ;
|
---|
| 27 | S J=0
|
---|
| 28 | F S J=$O(LA7SPEC(J)) Q:'J D
|
---|
| 29 | . S K=LA7SPEC(J),L=0
|
---|
| 30 | . F S L=$O(^LAB(61,"HL7",K,L)) Q:'L S ^TMP("LA7-61",$J,L)=""
|
---|
| 31 | Q
|
---|
| 32 | ;
|
---|
| 33 | ;
|
---|
[447] | 34 | BUILDMSG ; Build HL7 message with result of query
|
---|
[508] | 35 | ;
|
---|
| 36 | N HL,HLECH,HLFS,HLQ,LA,LA763,LA7ECH,LA7FS,LA7MSH,LA7NOMSG,LA7NTESN,LA7NVAF,LA7OBRSN,LA7OBXSN,LA7PIDSN,LA7ROOT,LA7X,X
|
---|
| 37 | ;
|
---|
| 38 | I $L($G(LA7HL7))'=5 S LA7HL7="|^\~&"
|
---|
| 39 | S (HL("FS"),HLFS,LA7FS)=$E(LA7HL7),(HL("ECH"),HLECH,LA7ECH)=$E(LA7HL7,2,5)
|
---|
| 40 | S (HLQ,HL("Q"))=""""""
|
---|
| 41 | ; Set flag to not send HL7 message
|
---|
| 42 | S LA7NOMSG=1
|
---|
| 43 | ; Create dummy MSH to pass HL7 delimiters
|
---|
| 44 | S LA7MSH(0)="MSH"_LA7FS_LA7ECH_LA7FS
|
---|
| 45 | D FILESEG^LA7VHLU(GBL,.LA7MSH)
|
---|
| 46 | ;
|
---|
| 47 | F X="AUTO-INST","LRDFN","LRIDT","SUB","HUID","NLT","RUID","SITE" S LA(X)=""
|
---|
| 48 | ;
|
---|
| 49 | ; Take search results and put in HL7 message structure
|
---|
| 50 | S LA7ROOT="^TMP(""LA7-QRY"",$J)",(LA7QUIT,LA7PIDSN)=0
|
---|
| 51 | ; F S LA7ROOT=$Q(@LA7ROOT) Q:LA7QUIT D ;change per John M
|
---|
| 52 | F S LA7ROOT=$Q(@LA7ROOT) Q:LA7ROOT="" D Q:LA7QUIT
|
---|
| 53 | . I $QS(LA7ROOT,1)'="LA7-QRY"!($QS(LA7ROOT,2)'=$J) S LA7QUIT=1 Q
|
---|
| 54 | . I LA("LRDFN")'=$QS(LA7ROOT,3) D PID S LA7OBRSN=0
|
---|
| 55 | . I LA("LRIDT")'=$QS(LA7ROOT,4) D ORC,OBR
|
---|
| 56 | . I LA("SUB")'=$QS(LA7ROOT,5) D ORC,OBR
|
---|
| 57 | . I LA("NLT")'=$P($QS(LA7ROOT,6),"!") D ORC,OBR
|
---|
| 58 | . D OBX
|
---|
| 59 | ;
|
---|
| 60 | Q
|
---|
| 61 | ;
|
---|
| 62 | ;
|
---|
[447] | 63 | PID ; Build PID segment
|
---|
[508] | 64 | ;
|
---|
| 65 | N LA7PID
|
---|
| 66 | ;
|
---|
| 67 | S (LA("LRDFN"),LRDFN)=$QS(LA7ROOT,3)
|
---|
| 68 | S LRDPF=$P(^LR(LRDFN,0),"^",2),DFN=$P(^(0),"^",3)
|
---|
| 69 | D DEM^LRX
|
---|
| 70 | D PID^LA7VPID(LA("LRDFN"),"",.LA7PID,.LA7PIDSN,.HL)
|
---|
| 71 | D FILESEG^LA7VHLU(GBL,.LA7PID)
|
---|
| 72 | S (LA("LRIDT"),LA("SUB"))=""
|
---|
| 73 | Q
|
---|
| 74 | ;
|
---|
| 75 | ;
|
---|
[447] | 76 | ORC ; Build ORC segment
|
---|
[508] | 77 | ;
|
---|
| 78 | N X
|
---|
| 79 | ;
|
---|
| 80 | S LA("LRIDT")=$QS(LA7ROOT,4),LA("SUB")=$QS(LA7ROOT,5)
|
---|
| 81 | S LA763(0)=$G(^LR(LA("LRDFN"),LA("SUB"),LA("LRIDT"),0))
|
---|
| 82 | S X=$G(^LR(LA("LRDFN"),LA("SUB"),LA("LRIDT"),"ORU"))
|
---|
| 83 | S LA("HUID")=$P(X,"^"),LA("SITE")=$P(X,"^",2),LA("RUID")=$P(X,"^",4)
|
---|
| 84 | I LA("HUID")="" S LA("HUID")=$P(LA763(0),"^",6)
|
---|
| 85 | S LA7NVAF=$$NVAF^LA7VHLU2(0),LA7NTESN=0
|
---|
| 86 | D ORC^LA7VORU
|
---|
| 87 | S LA("NLT")=""
|
---|
| 88 | ;
|
---|
| 89 | Q
|
---|
| 90 | ;
|
---|
| 91 | ;
|
---|
[447] | 92 | OBR ; Build OBR segment
|
---|
[508] | 93 | ;
|
---|
| 94 | N LA764,LA7NLT
|
---|
| 95 | ;
|
---|
| 96 | S (LA("NLT"),LA7NLT)=$P($QS(LA7ROOT,6),"!"),(LA764,LA("ORD"))=""
|
---|
| 97 | I $L(LA7NLT) D
|
---|
| 98 | . S LA764=+$O(^LAM("E",LA7NLT,0))
|
---|
| 99 | . I LA764 S LA("ORD")=$$GET1^DIQ(64,LA764_",",.01)
|
---|
| 100 | I LA("SUB")="CH" D
|
---|
| 101 | . D OBR^LA7VORU
|
---|
| 102 | . D NTE^LA7VORU
|
---|
| 103 | . S LA7OBXSN=0
|
---|
| 104 | ;
|
---|
| 105 | Q
|
---|
| 106 | ;
|
---|
| 107 | ;
|
---|
[447] | 108 | OBX ; Build OBX segment
|
---|
[508] | 109 | ;
|
---|
| 110 | N LA7DATA,LA7VT
|
---|
| 111 | ;
|
---|
| 112 | S LA7NTESN=0
|
---|
| 113 | I LA("SUB")="MI" D MI^LA7VORU1 Q
|
---|
| 114 | I "CYEMSP"[LA("SUB") D AP^LA7VORU2 Q
|
---|
| 115 | ;
|
---|
| 116 | S LA7VT=$QS(LA7ROOT,7)
|
---|
| 117 | D OBX^LA7VOBX(LA("LRDFN"),LA("SUB"),LA("LRIDT"),LA7VT,.LA7DATA,.LA7OBXSN,LA7FS,LA7ECH)
|
---|
| 118 | I '$D(LA7DATA) Q
|
---|
| 119 | D FILESEG^LA7VHLU(GBL,.LA7DATA)
|
---|
| 120 | ; Send any test interpretation from file #60
|
---|
| 121 | D INTRP^LA7VORUA
|
---|
| 122 | ;
|
---|
| 123 | Q
|
---|