| 1 | LR7OV0 ;slc/dcm - Update orderable items ;8/11/97
 | 
|---|
| 2 |  ;;5.2;LAB SERVICE;**121,187,357,361**;Sep 27, 1994
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | TEST(TEST,ICNT) ;Process single test
 | 
|---|
| 5 |  ;TEST=test ptr to file 60
 | 
|---|
| 6 |  ;ICNT=Current counter in ORUPDMSG(ICNT)
 | 
|---|
| 7 |  N TYPE,TESTID,IFN,IFN1,CTR,CTR1,GENW,X0,S0,SAMP,MAX,DMAX,COLLECT,SAMPLE,SPEC,SYN,COST,Y9,Y10,Y11
 | 
|---|
| 8 |  Q:'$D(^LAB(60,TEST,0))  S X0=^(0),COST=$P(X0,"^",11),SUB=$P(X0,"^",4),TYPE=$P(X0,"^",3),CTR1=0
 | 
|---|
| 9 |  I $D(^LAB(60,TEST,6)) S (CTR,IFN)=0 F  S IFN=$O(^LAB(60,TEST,6,IFN)) Q:IFN<1  S CTR=CTR+1,GENW(CTR)=^(IFN,0)
 | 
|---|
| 10 |  S (CTR,IFN)=0 F  S IFN=$O(^LAB(60,TEST,5,IFN)) Q:IFN<1  S CTR=CTR+1,SYN(CTR)=^(IFN,0)
 | 
|---|
| 11 |  S (Y9,Y10,Y11)="" I $P($G(^LAB(60,TEST,64)),"^") S Y9=$P(^(64),"^"),Y10=$P(^LAM(Y9,0),"^"),Y9=$P(^(0),"^",2),Y11="99NLT"
 | 
|---|
| 12 |  D
 | 
|---|
| 13 |  . S (COLLECT,SAMP,SPEC)=0,TESTID=$$UVID^LR7OU0(TEST,+SPEC,Y9,Y11,Y10,"ORUPDMSG"),ICNT=ICNT+1,ORUPDMSG(ICNT)=$$MFE(MFECODE,TESTID)
 | 
|---|
| 14 |  . S ICNT=ICNT+1,ORUPDMSG(ICNT)=$$ZLR("","",CTR1,SUB,"","",COST,TYPE)
 | 
|---|
| 15 |  . S IFN1=0 F  S IFN1=$O(^LAB(60,TEST,2,IFN1)) Q:IFN1<1  S X=^(IFN1,0) I $D(^LAB(60,+X,0)) D
 | 
|---|
| 16 |  .. N Y9,Y10,Y11 S (Y9,Y10,Y11)="" I $P($G(^LAB(60,+X,64)),"^") S Y9=$P(^(64),"^"),Y10=$P(^LAM(Y9,0),"^"),Y9=$P(^(0),"^",2),Y11="99NLT"
 | 
|---|
| 17 |  .. S SUBID=$$UVID^LR7OU0($P(X,"^"),"",Y9,Y11,Y10,"ORUPDMSG"),ICNT=ICNT+1,ORUPDMSG(ICNT)="ZLC||||"_SUBID
 | 
|---|
| 18 |  . D ZSY(.SYN),NTE(.GENW,.WCOM)
 | 
|---|
| 19 |  Q
 | 
|---|
| 20 | MFE(EVENT,KEY) ;MFE component
 | 
|---|
| 21 |  ;EVENT=MAD-Add Record, MDL-Delete Record, MUP-Update Record
 | 
|---|
| 22 |  ;      MDC-Deactivate, MAC-Reactivate
 | 
|---|
| 23 |  S MFE="MFE|"_EVENT_"|||"_KEY
 | 
|---|
| 24 |  Q MFE
 | 
|---|
| 25 | ZLR(SPEC,COLLECT,SEQ,SUB,MAXORD,DMAXORD,COST,TYPE) ;ZLR component
 | 
|---|
| 26 |  S ZLR="ZLR|"_SPEC_"|"_COLLECT_"|"_SEQ_"|"_SUB_"|"_MAXORD_"|"_DMAXORD_"|"_COST_"|"_TYPE
 | 
|---|
| 27 |  Q ZLR
 | 
|---|
| 28 | ZSY(SYN) ;ZSY component
 | 
|---|
| 29 |  N IFN
 | 
|---|
| 30 |  S IFN=0 F  S IFN=$O(SYN(IFN)) Q:IFN<1  S ICNT=ICNT+1,ORUPDMSG(ICNT)="ZSY|"_IFN_"|"_SYN(IFN)
 | 
|---|
| 31 |  Q
 | 
|---|
| 32 | NTE(GEN,COM) ;NTE component
 | 
|---|
| 33 |  N IFN,CTR S CTR=0
 | 
|---|
| 34 |  S ICNT=ICNT+1 D NTE^LR7OU01(CTR,"P","GEN(",ICNT)
 | 
|---|
| 35 |  S ICNT=ICNT+1 D NTE^LR7OU01(CTR,"P","COM(",ICNT)
 | 
|---|
| 36 |  Q
 | 
|---|
| 37 | MFI(EVENT) ;MFI component
 | 
|---|
| 38 |  ;EVENT=REP for initial population of orderables
 | 
|---|
| 39 |  ;     =UPD for subsequent updates
 | 
|---|
| 40 |  S MFI="MFI|60^Lab Test^99DD||"_EVENT_"|||NE"
 | 
|---|
| 41 |  Q MFI
 | 
|---|
| 42 | SINGLE(TEST,MFICODE,MFECODE) ;Message for a single test
 | 
|---|
| 43 |  ;TEST= ptr to test in file 60
 | 
|---|
| 44 |  ;MFICODE=File Level Event Code
 | 
|---|
| 45 |  ;MFECODE=Record Level Event Code
 | 
|---|
| 46 |  ;N X,ORUPDMSG,MSG
 | 
|---|
| 47 |  S MSG="ORUPDMSG",X=$$MSH^LR7OU0("MFN"),ORUPDMSG(1)=X
 | 
|---|
| 48 |  S X=$$MFI(MFICODE),ORUPDMSG(2)=X
 | 
|---|
| 49 |  D TEST(TEST,2)
 | 
|---|
| 50 |  ;W !!,$P(^LAB(60,TEST,0),"^"),! I $D(ORUPDMSG(3)) ZW ORUPDMSG
 | 
|---|
| 51 |  I $D(ORUPDMSG(3)) S ORUPDMSG="ORUPDMSG" D MSG^XQOR("LR7O ORDERABLE OR",.ORUPDMSG) ;Send update message
 | 
|---|
| 52 |  Q
 | 
|---|
| 53 | ADD(TEST) ;Add single record to Master file
 | 
|---|
| 54 |  N MFICODE,MFECODE S MFECODE="MAD",MFICODE="REP" D SINGLE(TEST,MFICODE,MFECODE)
 | 
|---|
| 55 |  Q
 | 
|---|
| 56 | DEL(TEST) ;Delete single record from Master file
 | 
|---|
| 57 |  N MFICODE,MFECODE S MFECODE="MDL",MFICODE="UPD" D SINGLE(TEST,MFICODE,MFECODE)
 | 
|---|
| 58 |  Q
 | 
|---|
| 59 | UPD(TEST) ;Update record in Master file
 | 
|---|
| 60 |  ;Modified for patch LR*5.2*361
 | 
|---|
| 61 |  N ZTSAVE,ZTRTN,ZTDESC,ZTDTH,ZTIO
 | 
|---|
| 62 |  S ZTSAVE("TEST")=TEST
 | 
|---|
| 63 |  S ZTRTN="TUPD^LR7OV0"
 | 
|---|
| 64 |  S ZTDESC="LABORATORY TEST FILE HL7 update message"
 | 
|---|
| 65 |  S ZTDTH=$H
 | 
|---|
| 66 |  S ZTIO=""
 | 
|---|
| 67 |  D ^%ZTLOAD
 | 
|---|
| 68 |  Q
 | 
|---|
| 69 | TUPD ;Tasked update of record in Master file
 | 
|---|
| 70 |  ;Added for patch LR*5.2*361
 | 
|---|
| 71 |  N MFICODE,MFECODE S MFECODE="MUP",MFICODE="UPD" D SINGLE(TEST,MFICODE,MFECODE)
 | 
|---|
| 72 |  Q
 | 
|---|
| 73 | DEACT(TEST) ;Deactivate record in Master file
 | 
|---|
| 74 |  N MFICODE,MFECODE S MFECODE="MDC",MFICODE="UPD" D SINGLE(TEST,MFICODE,MFECODE)
 | 
|---|
| 75 |  Q
 | 
|---|
| 76 | REACT(TEST) ;Reactivate record in Master file
 | 
|---|
| 77 |  N MFICODE,MFECODE S MFECODE="MAC",MFICODE="UPD" D SINGLE(TEST,MFICODE,MFECODE)
 | 
|---|
| 78 |  Q
 | 
|---|
| 79 |  ;Following code added to support LR*5.2*357
 | 
|---|
| 80 |  ;Following code modified to support LR*5.2*361
 | 
|---|
| 81 |  ;Designed to help update the ORDERABLE ITEMS FILE (file 101.43) after the deletion
 | 
|---|
| 82 |  ;of a SYNONYM from the LABORATORY TEST file (file 60).
 | 
|---|
| 83 | UPD2(TEST,KSYN) ;Update record in Master file - Modified for LR*5.2*361
 | 
|---|
| 84 |  ;TEST = IEN of lab test in file 60
 | 
|---|
| 85 |  ;KSYN = IEN of synonym to be deleted from lab test in file 60
 | 
|---|
| 86 |  ;Modified for LR*5.2*361
 | 
|---|
| 87 |  N ZTSAVE,ZTRTN,ZTDESC,ZTDTH,ZTIO
 | 
|---|
| 88 |  S ZTSAVE("TEST")=TEST
 | 
|---|
| 89 |  S ZTSAVE("KSYN")=KSYN
 | 
|---|
| 90 |  S ZTRTN="TUPD2^LR7OV0"
 | 
|---|
| 91 |  S ZTDESC="LABORATORY TEST FILE HL7 update message"
 | 
|---|
| 92 |  S ZTDTH=$H
 | 
|---|
| 93 |  S ZTIO=""
 | 
|---|
| 94 |  D ^%ZTLOAD
 | 
|---|
| 95 |  Q
 | 
|---|
| 96 | TUPD2 ;Update record in Master file
 | 
|---|
| 97 |  ;TEST = IEN of lab test in file 60
 | 
|---|
| 98 |  ;KSYN = IEN of synonym to be deleted from lab test in file 60
 | 
|---|
| 99 |  N MFICODE,MFECODE S MFECODE="MUP",MFICODE="UPD" D SINGLE2(TEST,KSYN,MFICODE,MFECODE)
 | 
|---|
| 100 |  Q
 | 
|---|
| 101 | SINGLE2(TEST,KSYN,MFICODE,MFECODE) ;Message for a single test
 | 
|---|
| 102 |  ;TEST = IEN of lab test in file 60
 | 
|---|
| 103 |  ;KSYN = IEN of synonym to be deleted from lab test in file 60
 | 
|---|
| 104 |  ;MFICODE = File Level Event Code
 | 
|---|
| 105 |  ;MFECODE = Record Level Event Code
 | 
|---|
| 106 |  N X,ORUPDMSG,MSG
 | 
|---|
| 107 |  S MSG="ORUPDMSG",X=$$MSH^LR7OU0("MFN"),ORUPDMSG(1)=X
 | 
|---|
| 108 |  S X=$$MFI(MFICODE),ORUPDMSG(2)=X
 | 
|---|
| 109 |  D TEST2(TEST,KSYN,2)
 | 
|---|
| 110 |  I $D(ORUPDMSG(3)) S ORUPDMSG="ORUPDMSG" D MSG^XQOR("LR7O ORDERABLE OR",.ORUPDMSG) ;Send update message
 | 
|---|
| 111 |  Q
 | 
|---|
| 112 | TEST2(TEST,KSYN,ICNT) ;Process single test
 | 
|---|
| 113 |  ;TEST = IEN of lab test in file 60
 | 
|---|
| 114 |  ;KSYN = IEN of synonym to be deleted from lab test in file 60
 | 
|---|
| 115 |  ;ICNT = Current counter in ORUPDMSG(ICNT)
 | 
|---|
| 116 |  N TYPE,TESTID,IFN,IFN1,CTR,CTR1,GENW,X0,S0,SAMP,MAX,DMAX,COLLECT,SAMPLE,SPEC,SYN,COST,Y9,Y10,Y11
 | 
|---|
| 117 |  Q:'$D(^LAB(60,TEST,0))  S X0=^(0),COST=$P(X0,"^",11),SUB=$P(X0,"^",4),TYPE=$P(X0,"^",3),CTR1=0
 | 
|---|
| 118 |  I $D(^LAB(60,TEST,6)) S (CTR,IFN)=0 F  S IFN=$O(^LAB(60,TEST,6,IFN)) Q:IFN<1  S CTR=CTR+1,GENW(CTR)=^(IFN,0)
 | 
|---|
| 119 |  S (CTR,IFN)=0 F  S IFN=$O(^LAB(60,TEST,5,IFN)) Q:IFN<1  D
 | 
|---|
| 120 |  . S:KSYN'=IFN CTR=CTR+1,SYN(CTR)=^LAB(60,TEST,5,IFN,0)
 | 
|---|
| 121 |  S (Y9,Y10,Y11)="" I $P($G(^LAB(60,TEST,64)),"^") S Y9=$P(^(64),"^"),Y10=$P(^LAM(Y9,0),"^"),Y9=$P(^(0),"^",2),Y11="99NLT"
 | 
|---|
| 122 |  D
 | 
|---|
| 123 |  . S (COLLECT,SAMP,SPEC)=0,TESTID=$$UVID^LR7OU0(TEST,+SPEC,Y9,Y11,Y10,"ORUPDMSG"),ICNT=ICNT+1,ORUPDMSG(ICNT)=$$MFE(MFECODE,TESTID)
 | 
|---|
| 124 |  . S ICNT=ICNT+1,ORUPDMSG(ICNT)=$$ZLR("","",CTR1,SUB,"","",COST,TYPE)
 | 
|---|
| 125 |  . S IFN1=0 F  S IFN1=$O(^LAB(60,TEST,2,IFN1)) Q:IFN1<1  S X=^(IFN1,0) I $D(^LAB(60,+X,0)) D
 | 
|---|
| 126 |  .. N Y9,Y10,Y11 S (Y9,Y10,Y11)="" I $P($G(^LAB(60,+X,64)),"^") S Y9=$P(^(64),"^"),Y10=$P(^LAM(Y9,0),"^"),Y9=$P(^(0),"^",2),Y11="99NLT"
 | 
|---|
| 127 |  .. S SUBID=$$UVID^LR7OU0($P(X,"^"),"",Y9,Y11,Y10,"ORUPDMSG"),ICNT=ICNT+1,ORUPDMSG(ICNT)="ZLC||||"_SUBID
 | 
|---|
| 128 |  . D ZSY(.SYN),NTE(.GENW,.WCOM)
 | 
|---|
| 129 |  Q
 | 
|---|