[613] | 1 | LRDPAREF ;DALOI/FHS - PENDING ORDER FILE PATIENT LOOKUP ; 12/3/1997
|
---|
| 2 | ;;5.2;LAB SERVICE;**153,222,286**;Sep 27, 1994
|
---|
| 3 | ; Special patient lookup of Lab Orders Pending File
|
---|
| 4 | ;
|
---|
| 5 | EN ; From ^LRDPA
|
---|
| 6 | ; Initialize array LRSD.
|
---|
| 7 | ; CDT=collection date/time
|
---|
| 8 | ; DFN=ien of patient in selected file
|
---|
| 9 | ; DOB=patient's date of birth
|
---|
| 10 | ; DPF=source file (2, or 67)
|
---|
| 11 | ; ERROR=0
|
---|
| 12 | ; LPC=longitudinal parity check
|
---|
| 13 | ; PNM=patient name
|
---|
| 14 | ; RIEN=IEN of ^LRT(67
|
---|
| 15 | ; RPSITE=primary sending site
|
---|
| 16 | ; RSITE=sending site
|
---|
| 17 | ; RSITEN=sending site name
|
---|
| 18 | ; RUID=specimen unique identifier
|
---|
| 19 | ; SEX=patient's sex
|
---|
| 20 | ; SSN=patient's SSN
|
---|
| 21 | ; LA7PNM=Patient Bar code read if lookup fails
|
---|
| 22 | ; On exit LRDPF set to '67^LRT(67, DFN=RIEN
|
---|
| 23 | ;
|
---|
| 24 | N DA,DIC,DIE,DIR,DIRUT,DTOUT,DUOUT
|
---|
| 25 | ;
|
---|
| 26 | K LRSD,LA7PNM
|
---|
| 27 | ;
|
---|
| 28 | F Y="CDT","DFN","DOB","DPF","ERROR","LPC","PNM","RIEN","RPSITE","RSITE","RUID","SEX","SSN" S LRSD(Y)=""
|
---|
| 29 | S LREND=0
|
---|
| 30 | D:'$D(LRLABKY) LABKEY^LRPARAM
|
---|
| 31 | I $G(LRREFBAR) D Q:$G(LREND)
|
---|
| 32 | . D BAR K LA7PNM
|
---|
| 33 | . I LRSD("ERROR") D
|
---|
| 34 | . . D ERRMSG(LRSD("ERROR"),"Barcode error #")
|
---|
| 35 | . . I +LRSD("ERROR")=1 D CLEAN
|
---|
| 36 | I '$G(LRREFBAR)!(LRSD("ERROR")) D MAN
|
---|
| 37 | I $G(LREND) D CLEAN Q
|
---|
| 38 | I LRSD("ERROR") D Q
|
---|
| 39 | . I LRSD("ERROR") D ERRMSG(LRSD("ERROR"),"Error #")
|
---|
| 40 | . D CLEAN
|
---|
| 41 | S LRSD("RPSITE")=LRRSITE("RPSITE")
|
---|
| 42 | CK ;S PNM=LRSD("PNM"),SSN=LRSD("SSN"),DOB=LRSD("DOB"),SEX=LRSD("SEX"),LRXDPF=LRSD("DPF"),LRXDFN=LRSD("DFN")
|
---|
| 43 | D ^LRDPAREX
|
---|
| 44 | I $G(LREND)!($G(LRSD("ERROR"))) D G CLEAN
|
---|
| 45 | . S LRSD("ERROR",1)="12^Validation Failure "
|
---|
| 46 | . W !,$C(7),$P(LRSD("ERROR"),"^",2),!
|
---|
| 47 | OK ;
|
---|
| 48 | S:'$G(DFN) DFN=-1 S Y=DFN
|
---|
| 49 | I DFN=-1 S LRDFN=-1 K DIC S VA200="" Q
|
---|
| 50 | S X="^"_$P(LRDPF,"^",2)_Y_",""LR"")",LRDFN=+$S($D(@X):@X,1:-1) G E3:LRDFN>0
|
---|
| 51 | L +^LR(0):999999
|
---|
| 52 | S LRDFN=$P(^LR(0),U,3) S:LRDFN<1 LRDFN=1
|
---|
| 53 | F LRDFN=LRDFN:1 Q:'$D(^LR(LRDFN,0))#2
|
---|
| 54 | S ^LR(0)=$P(^LR(0),"^",1,2)_"^"_LRDFN_"^"_(1+$P(^(0),"^",4))
|
---|
| 55 | E2 L +^LR(LRDFN):999999
|
---|
| 56 | S ^LR(LRDFN,0)=LRDFN_"^"_+LRDPF_"^"_DFN
|
---|
| 57 | S ^LR("B",LRDFN,LRDFN)=""
|
---|
| 58 | S @X=LRDFN,^LRT(67,LRSD("RIEN"),"LR")=LRDFN
|
---|
| 59 | L -(^LR(0),^LR(LRDFN))
|
---|
| 60 | E3 I '$D(^LR(LRDFN,0))#2 D Q
|
---|
| 61 | . W !!,"Internal patient ID incorrect in ^LR( for ",PNM,"."
|
---|
| 62 | . W !,"Contact Lab Coordinator.",$C(7)
|
---|
| 63 | . S LRDFN=-1
|
---|
| 64 | I LRDFN>0,$P(^LR(LRDFN,0),"^",2)'=+LRDPF!($P(^(0),"^",3)'=DFN) D Q
|
---|
| 65 | . W !,$C(7),"Internal patient ID incorrect for ",PNM,"."
|
---|
| 66 | . W !,"Contact Lab Coordinator."
|
---|
| 67 | . S LRDFN=-1
|
---|
| 68 | D INF^LRX,PT^LRX
|
---|
| 69 | RUID ;
|
---|
| 70 | I LRSD("RUID")="" D
|
---|
| 71 | . N DIR,DIRUT,DTOUT,X,Y
|
---|
| 72 | . ; If VA facility, require 10 character UID.
|
---|
| 73 | . I LRRSITE("RSITE"),$$GET1^DIQ(4,+LRRSITE("RSITE")_",",95,"I")="V" D
|
---|
| 74 | . . S DIR(0)="F^10:10^K:X'?1(10N,1U9N,2U8N,1N1U8N) X"
|
---|
| 75 | . . S DIR("?")="Enter the sending facility's ten character UID for this specimen"
|
---|
| 76 | . E S DIR(0)="F^1:30",DIR("?")="Enter sending facility's specimen ID, 1-30 characters"
|
---|
| 77 | . S DIR("A")="Enter Remote UID"
|
---|
| 78 | . D ^DIR
|
---|
| 79 | . I $D(DIRUT) D CLEAN Q
|
---|
| 80 | . S LRSD("RUID")=Y
|
---|
| 81 | ;
|
---|
| 82 | Q
|
---|
| 83 | DUP W !?5,"There are duplicate SSNs in the Referral File <abort>",!,$C(7)
|
---|
| 84 | ERR ;
|
---|
| 85 | S LRDFN=-1 W !,"ERROR",!
|
---|
| 86 | Q
|
---|
| 87 | ;
|
---|
| 88 | ERR1 ;
|
---|
| 89 | S LRDFN=-1 W !,"ERROR1",!
|
---|
| 90 | Q
|
---|
| 91 | ;
|
---|
| 92 | CLEAN ;
|
---|
| 93 | S LRDFN=-1,LREND=1
|
---|
| 94 | Q
|
---|
| 95 | ;
|
---|
| 96 | ;
|
---|
| 97 | BAR ; Scan PD bar code for patient/specimen info
|
---|
| 98 | ;
|
---|
| 99 | N DA,DIC,DIR,DIRUT,DR,DTOUT,DUOUT
|
---|
| 100 | ;
|
---|
| 101 | D PT^LA7SBCR1(.LRSD,"Scan Patient/Accession Barcode (PD)",.LRRSITE)
|
---|
| 102 | I LRSD("ERROR") Q
|
---|
| 103 | D DIQ
|
---|
| 104 | Q
|
---|
| 105 | ;
|
---|
| 106 | ;
|
---|
| 107 | MAN ; Manual referral patient lookup
|
---|
| 108 | ;
|
---|
| 109 | N DIR,DIC,DA,X,Y
|
---|
| 110 | K ^DISV(DUZ,"^DPT("),^("^LRT(67,")
|
---|
| 111 | ;
|
---|
| 112 | ; Lookup using file #69.6 if manifest exists and not using bar code scanner
|
---|
| 113 | I '$G(LRREFBAR),$G(LRRSITE("SMID-OK")),LRRSITE("SMID")'="",$D(^LRO(69.6,"D",LRRSITE("SMID"))) D MF696 Q
|
---|
| 114 | ;
|
---|
| 115 | ; Ask user for information
|
---|
| 116 | S LRSD("ERROR")=""
|
---|
| 117 | S DIR(0)="67,3",DIR("A")="Select Patient Name -'^M' To enter New Name "
|
---|
| 118 | D ^DIR
|
---|
| 119 | I $D(DIRUT) S LRSD("ERROR")="1^User timeout/abort or Up-arrow entered"
|
---|
| 120 | I Y["DPT(" D DPTSET^LA7SBCR1(.LRSD,+Y)
|
---|
| 121 | I Y["LRT(" D LRTSET^LA7SBCR1(.LRSD,+Y)
|
---|
| 122 | I $E(X,1,2)="^M" D Q
|
---|
| 123 | . K DIRUT,DIR
|
---|
| 124 | . D KEYIN^LRDPAREX
|
---|
| 125 | . S:$G(LREND) LRSD("ERROR")="15^Manual Patient entry not complete"
|
---|
| 126 | I LRSD("ERROR") Q
|
---|
| 127 | D DIQ K DIR
|
---|
| 128 | S DIR(0)="Y",DIR("A")="Is this the correct patient" D ^DIR
|
---|
| 129 | I Y'=1 S LRSD("ERROR")="5^Unsuccessful patient lookup" D CLEAN
|
---|
| 130 | Q
|
---|
| 131 | ;
|
---|
| 132 | ;
|
---|
| 133 | MF696 ; Manual lookup of file #69.6
|
---|
| 134 | N DIR,DIC,LAIEN,LRSCN696,X,Y
|
---|
| 135 | S Y=$$FIND1^DIC(64.061,"","OMX","In-Transit","","I $P(^LAB(64.061,Y,0),U,7)=""U""")
|
---|
| 136 | I Y>0 S LRSCN696=+Y
|
---|
| 137 | E S LRSCN696=""
|
---|
| 138 | S DIR(0)="PO^69.6:NEMQZ"
|
---|
| 139 | S DIR("S")="I $P(^(0),U,10)="_LRSCN696_",$D(^LRO(69.6,""D"",LRRSITE(""SMID""),Y))"
|
---|
| 140 | S DIR("A")="Enter UID of specimen"
|
---|
| 141 | D ^DIR
|
---|
| 142 | I $D(DIRUT) S LREND=1 Q
|
---|
| 143 | S LAIEN=Y,(LA7Y(0),LAIEN(0))=Y(0)
|
---|
| 144 | D GETS^DIQ(69.6,+LAIEN_",","*","IE","LAIEN")
|
---|
| 145 | S LRSD("DPF")="67^LRT(67,"
|
---|
| 146 | S LRSD("PNM")=LAIEN(69.6,+LAIEN_",",.01,"I")
|
---|
| 147 | S LRSD("DOB")=LAIEN(69.6,+LAIEN_",",.03,"I")
|
---|
| 148 | S LRSD("SEX")=LAIEN(69.6,+LAIEN_",",.02,"I")
|
---|
| 149 | S LRSD("RACE")=LAIEN(69.6,+LAIEN_",",.06,"I")
|
---|
| 150 | S LRSD("SSN")=LAIEN(69.6,+LAIEN_",",.09,"I")
|
---|
| 151 | S LRSD("CDT")=LAIEN(69.6,+LAIEN_",",11,"I")
|
---|
| 152 | S (LRRSITE("RPSITE"),LRSD("RPSITE"))=LAIEN(69.6,+LAIEN_",",1,"I")
|
---|
| 153 | S LRSD("RSITE")=LAIEN(69.6,+LAIEN_",",2,"I")
|
---|
| 154 | S LRSD("RSITEN")=$E(LAIEN(69.6,+LAIEN_",",2,"E"),1,19)
|
---|
| 155 | S LRSD("RUID")=LAIEN(69.6,+LAIEN_",",3,"I")
|
---|
| 156 | S LRSD("SMID")=LRRSITE("SMID")
|
---|
| 157 | I LRSD("SSN")="" S LRSD("SSN")=LAIEN(69.6,+LAIEN_",",700.04,"I")
|
---|
| 158 | I LRSD("SSN")="" S LRSD("ERROR")="2^Patient Identifier Absent" Q
|
---|
| 159 | S LRSD("RIEN")=$O(^LRT(67,"C",LRSD("SSN"),0))
|
---|
| 160 | I $G(LRSD("RIEN")),$G(^LRT(67,LRSD("RIEN"),"LR")) S LRSD("LRDFN")=^("LR"),LRSD("DFN")=LRSD("RIEN")
|
---|
| 161 | Q
|
---|
| 162 | ;
|
---|
| 163 | ;
|
---|
| 164 | DIQ ; Display patient info
|
---|
| 165 | Q:'$G(LRSD("DFN"))
|
---|
| 166 | N DA,DIC,DX,S
|
---|
| 167 | S DIC=$S(+LRSD("DPF")=2:"^DPT(",+LRSD("DPF")=67:"^LRT(67,",1:"")
|
---|
| 168 | I DIC="" Q
|
---|
| 169 | S DA=LRSD("DFN"),DR=0,S=0
|
---|
| 170 | W @IOF
|
---|
| 171 | D EN^LRDIQ
|
---|
| 172 | Q
|
---|
| 173 | ;
|
---|
| 174 | ERRMSG(X,Y) ; Display error message to user
|
---|
| 175 | ; Call with X=error message code^error message text
|
---|
| 176 | ; Y=message prefix
|
---|
| 177 | S X=Y_$P(LRSD("ERROR"),"^")_" - "_$P(LRSD("ERROR"),"^",2)
|
---|
| 178 | D EN^DDIOL(X,"","!?5")
|
---|
| 179 | Q
|
---|