[613] | 1 | MDWORC ; HOIFO/NCA - Main Routine to Decode HL7 from Consult ;1/8/08 15:00
|
---|
| 2 | ;;1.0;CLINICAL PROCEDURES;**14**;Apr 01,2004;Build 20
|
---|
| 3 | ; Reference IA #10035 [Supported] Access Patient file DPT
|
---|
| 4 | ; 10040 [Supported] Hospital Location File SC
|
---|
| 5 | ; 10103 [Supported] XLFDT calls
|
---|
| 6 | EN(MDMSG) ; Entry Point for Consult and pass MSG in MDMSG
|
---|
| 7 | N DFN,MDCON,MDCPROC,MDCANC,MDCANR,MDFN,MDIFN,MDINST,MDFLG,MDL,MDLOC,MDNAM,MDPROC,MDPAT,MDPROV,MDREQ,MDX
|
---|
| 8 | S (MDFLG,MDCANC)=0 F MDL=0:0 S MDL=$O(MDMSG(MDL)) Q:MDL<1!(MDFLG) S MDX=$G(MDMSG(MDL)) D
|
---|
| 9 | .I $E(MDX,1,3)="MSH" D MSH Q
|
---|
| 10 | .I $E(MDX,1,3)="PID" D PID Q
|
---|
| 11 | .I $E(MDX,1,3)="PV1" D PV1 Q
|
---|
| 12 | .I $E(MDX,1,3)="ORC" D ORC Q
|
---|
| 13 | .I $E(MDX,1,3)="NTE" Q
|
---|
| 14 | .Q
|
---|
| 15 | Q
|
---|
| 16 | MSH ; Decode MSH
|
---|
| 17 | I $P(MDX,"|",2)'="^~\&" S MDFLG=1 Q
|
---|
| 18 | I $P(MDX,"|",3)'="CONSULTS" S MDFLG=1 Q
|
---|
| 19 | I $P(MDX,"|",9)'="ORM" S MDFLG=1 Q
|
---|
| 20 | Q
|
---|
| 21 | PID ; Check PID
|
---|
| 22 | S MDNAM=$P(MDX,"|",6),DFN=$P(MDX,"|",4)
|
---|
| 23 | I '$D(^DPT("B",$E(MDNAM,1,30),DFN)) S MDFLG=1
|
---|
| 24 | S MDFN=DFN
|
---|
| 25 | Q
|
---|
| 26 | PV1 ; Check PV1
|
---|
| 27 | S MDPAT=$P(MDX,"|",3) I MDPAT'?1U!("IO"'[MDPAT) S MDFLG=1 Q
|
---|
| 28 | S MDLOC=+$P(MDX,"|",4) I $G(^SC(MDLOC,0))="" S MDFLG=1 Q
|
---|
| 29 | Q
|
---|
| 30 | ORC ; Check ORC
|
---|
| 31 | I $P(MDX,"|",2)'="OD",($P(MDX,"|",2)'="OC"),($P(MDX,"|",2)'="XX") Q
|
---|
| 32 | I $P(MDX,"|",2)="XX" D RESUBM
|
---|
| 33 | D CANCEL
|
---|
| 34 | Q
|
---|
| 35 | CANCEL ; Cancel/Discontinue
|
---|
| 36 | K MDR S MDIFN=+$P(MDX,"|",3),MDCON=+$P(MDX,"|",4)
|
---|
| 37 | I 'MDIFN S MDFLG=1 Q
|
---|
| 38 | I 'MDCON S MDFLG=1 Q
|
---|
| 39 | I $P(MDX,"|",6)'="CA",($P(MDX,"|",6)'="DC") Q
|
---|
| 40 | S MDPROV=+$P(MDX,"|",13) I 'MDPROV S MDFLG=1 Q
|
---|
| 41 | S MDREQ=$P(MDX,"|",16) I 'MDREQ S MDFLG=1 Q
|
---|
| 42 | S MDINST=$O(^MDD(702,"ACON",MDCON,0)) Q:'MDINST
|
---|
| 43 | Q:$G(^MDD(702,+MDINST,0))=""
|
---|
| 44 | I "5"[$P(^MDD(702,+MDINST,0),U,9) S MDCANR=$$CANCEL^MDHL7B(+MDINST)
|
---|
| 45 | N MDFDA S MDFDA(702,+MDINST_",",.09)=6,MDCANC=1
|
---|
| 46 | D FILE^DIE("K","MDFDA") K MDFDA
|
---|
| 47 | N MDHEMO S MDHEMO=+$$GET1^DIQ(702,+MDINST,".04:.06","I")
|
---|
| 48 | Q:MDHEMO<2
|
---|
| 49 | Q:$G(^MDK(704.202,+MDINST,0))=""
|
---|
| 50 | S MDFDA(704.202,+MDINST_",",.09)=0
|
---|
| 51 | D FILE^DIE("","MDFDA")
|
---|
| 52 | K ^MDK(704.202,"AS",1,+MDINST)
|
---|
| 53 | S ^MDK(704.202,"AS",0,+MDINST)=""
|
---|
| 54 | Q
|
---|
| 55 | RESUBM ; Resubmit a cancelled order
|
---|
| 56 | N MDERR,MDHL7,MDHOLD,MDMAXD,MDNOW,MDSCHD,MDVSTD,MDXY
|
---|
| 57 | Q:$P(MDX,"|",2)'="XX"
|
---|
| 58 | K MDR S MDIFN=+$P(MDX,"|",3),MDCON=+$P(MDX,"|",4)
|
---|
| 59 | I 'MDIFN S MDFLG=1 Q
|
---|
| 60 | I 'MDCON S MDFLG=1 Q
|
---|
| 61 | S MDPROV=+$P(MDX,"|",11) I 'MDPROV S MDFLG=1 Q
|
---|
| 62 | S MDREQ=$P(MDX,"|",16) S:MDREQ MDREQ=$$FMDTE^MDWOR(MDREQ) I 'MDREQ S MDFLG=1 Q
|
---|
| 63 | S MDINST=$O(^MDD(702,"ACON",MDCON,0)) Q:'MDINST
|
---|
| 64 | S MDVSTD=$P($G(^MDD(702,MDINST,0)),"^",7)
|
---|
| 65 | S MDSCHD=$S($L(MDVSTD,";")=1:MDVSTD,1:$P(MDVSTD,";",2)),MDMAXD=DT+.24
|
---|
| 66 | Q:$$GET1^DIQ(702,MDINST_",",.09,"I")'=6
|
---|
| 67 | N MDFDA,MDIENS,MDERR
|
---|
| 68 | S MDFDA(702,MDINST_",",.07)=MDVSTD
|
---|
| 69 | S MDFDA(702,MDINST_",",.09)=$S(MDSCHD>MDMAXD:0,1:5)
|
---|
| 70 | D FILE^DIE("K","MDFDA") S MDHOLD="" K MDFDA
|
---|
| 71 | Q:MDSCHD>MDMAXD
|
---|
| 72 | S MDXY=$P(^MDD(702,MDINST,0),"^",4)
|
---|
| 73 | I $P($G(^MDS(702.01,+MDXY,0)),"^",6)=2 S MDHOLD=$P(^MDD(702,MDINST,0),"^",7),MDNOW=$$NOW^XLFDT(),$P(^MDD(702,MDINST,0),"^",7)=$S(MDNOW>MDSCHD:MDSCHD,1:MDNOW)
|
---|
| 74 | S MDIENS=MDINST_",",MDHL7=$$SUB^MDHL7B(+MDIENS)
|
---|
| 75 | I +MDHL7=-1 S MDFDA(702,MDIENS,.09)=2,MDFDA(702,MDIENS,.08)=$P(MDHL7,U,2)
|
---|
| 76 | I +MDHL7=1 S MDFDA(702,MDIENS,.09)=5,MDFDA(702,MDIENS,.08)=""
|
---|
| 77 | D:$D(MDFDA) FILE^DIE("","MDFDA","MDERR") K MDFDA,MDERR
|
---|
| 78 | N MDHEMO S MDHEMO=+$$GET1^DIQ(702,+MDIENS,".04:.06","I")
|
---|
| 79 | Q:MDHEMO<2
|
---|
| 80 | S:$G(MDHOLD)'="" $P(^MDD(702,MDINST,0),"^",7)=MDHOLD
|
---|
| 81 | Q:$G(^MDK(704.202,+MDINST,0))=""
|
---|
| 82 | S MDFDA(704.202,+MDINST_",",.09)=1
|
---|
| 83 | D:$D(MDFDA) FILE^DIE("","MDFDA","MDERR") K MDFDA,MDERR
|
---|
| 84 | K ^MDK(704.202,"AS",0,+MDINST)
|
---|
| 85 | S ^MDK(704.202,"AS",1,+MDINST)=""
|
---|
| 86 | Q
|
---|