Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: MDWORC

MDWORC.m

Go to the documentation of this file.
  1. MDWORC ; HOIFO/NCA - Main Routine to Decode HL7 from Consult ;Jun 19, 2018@17:15
  1. ;;1.0;CLINICAL PROCEDURES;**14,54**;Apr 01,2004;Build 14
  1. ; Reference IA #10035 [Supported] Access Patient file DPT
  1. ; 10040 [Supported] Hospital Location File SC
  1. ; 10103 [Supported] XLFDT calls
  1. EN(MDMSG) ; Entry Point for Consult and pass MSG in MDMSG
  1. N DFN,MDCON,MDCPROC,MDCANC,MDCANR,MDFN,MDIFN,MDINST,MDFLG,MDL,MDLOC,MDNAM,MDPROC,MDPAT,MDPROV,MDREQ,MDX
  1. S (MDFLG,MDCANC)=0 F MDL=0:0 S MDL=$O(MDMSG(MDL)) Q:MDL<1!(MDFLG) S MDX=$G(MDMSG(MDL)) D
  1. .I $E(MDX,1,3)="MSH" D MSH Q
  1. .I $E(MDX,1,3)="PID" D PID Q
  1. .I $E(MDX,1,3)="PV1" D PV1 Q
  1. .I $E(MDX,1,3)="ORC" D ORC Q
  1. .I $E(MDX,1,3)="NTE" Q
  1. .Q
  1. Q
  1. MSH ; Decode MSH
  1. I $P(MDX,"|",2)'="^~\&" S MDFLG=1 Q
  1. I $P(MDX,"|",3)'="CONSULTS" S MDFLG=1 Q
  1. I $P(MDX,"|",9)'="ORM" S MDFLG=1 Q
  1. Q
  1. PID ; Check PID
  1. S MDNAM=$P(MDX,"|",6),DFN=$P(MDX,"|",4)
  1. I '$D(^DPT("B",$E(MDNAM,1,30),DFN)) S MDFLG=1
  1. S MDFN=DFN
  1. Q
  1. PV1 ; Check PV1
  1. S MDPAT=$P(MDX,"|",3) I MDPAT'?1U!("IO"'[MDPAT) S MDFLG=1 Q
  1. S MDLOC=+$P(MDX,"|",4) I $G(^SC(MDLOC,0))="" S MDFLG=1 Q
  1. Q
  1. ORC ; Check ORC
  1. I $P(MDX,"|",2)'="OD",($P(MDX,"|",2)'="OC"),($P(MDX,"|",2)'="XX") Q
  1. I $P(MDX,"|",2)="XX" D RESUBM
  1. D CANCEL
  1. Q
  1. CANCEL ; Cancel/Discontinue
  1. K MDR S MDIFN=+$P(MDX,"|",3),MDCON=+$P(MDX,"|",4)
  1. I 'MDIFN S MDFLG=1 Q
  1. I 'MDCON S MDFLG=1 Q
  1. I $P(MDX,"|",6)'="CA",($P(MDX,"|",6)'="DC") Q
  1. S MDPROV=+$P(MDX,"|",13) I 'MDPROV S MDFLG=1 Q
  1. S MDREQ=$P(MDX,"|",16) I 'MDREQ S MDFLG=1 Q
  1. S MDINST=0
  1. F S MDINST=$O(^MDD(702,"ACON",MDCON,MDINST)) Q:'MDINST D
  1. . Q:$G(^MDD(702,+MDINST,0))=""
  1. . I "5"[$P(^MDD(702,+MDINST,0),U,9) S MDCANR=$$CANCEL^MDHL7B(+MDINST)
  1. . N MDFDA S MDFDA(702,+MDINST_",",.09)=6,MDCANC=1
  1. . D FILE^DIE("K","MDFDA") K MDFDA
  1. . N MDHEMO S MDHEMO=+$$GET1^DIQ(702,+MDINST,".04:.06","I")
  1. . Q:MDHEMO<2
  1. . Q:$G(^MDK(704.202,+MDINST,0))=""
  1. . S MDFDA(704.202,+MDINST_",",.09)=0
  1. . D FILE^DIE("","MDFDA")
  1. . K ^MDK(704.202,"AS",1,+MDINST)
  1. . S ^MDK(704.202,"AS",0,+MDINST)=""
  1. Q
  1. RESUBM ; Resubmit a cancelled order
  1. N MDERR,MDHL7,MDHOLD,MDMAXD,MDNOW,MDSCHD,MDVSTD,MDXY
  1. Q:$P(MDX,"|",2)'="XX"
  1. K MDR S MDIFN=+$P(MDX,"|",3),MDCON=+$P(MDX,"|",4)
  1. I 'MDIFN S MDFLG=1 Q
  1. I 'MDCON S MDFLG=1 Q
  1. S MDPROV=+$P(MDX,"|",11) I 'MDPROV S MDFLG=1 Q
  1. S MDREQ=$P(MDX,"|",16) S:MDREQ MDREQ=$$FMDTE^MDWOR(MDREQ) I 'MDREQ S MDFLG=1 Q
  1. S MDINST=$O(^MDD(702,"ACON",MDCON,0)) Q:'MDINST
  1. S MDVSTD=$P($G(^MDD(702,MDINST,0)),"^",7)
  1. S MDSCHD=$S($L(MDVSTD,";")=1:MDVSTD,1:$P(MDVSTD,";",2)),MDMAXD=DT+.24
  1. Q:$$GET1^DIQ(702,MDINST_",",.09,"I")'=6
  1. N MDFDA,MDIENS,MDERR
  1. S MDFDA(702,MDINST_",",.07)=MDVSTD
  1. S MDFDA(702,MDINST_",",.09)=$S(MDSCHD>MDMAXD:0,1:5)
  1. D FILE^DIE("K","MDFDA") S MDHOLD="" K MDFDA
  1. Q:MDSCHD>MDMAXD
  1. S MDXY=$P(^MDD(702,MDINST,0),"^",4)
  1. 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)
  1. S MDIENS=MDINST_",",MDHL7=$$SUB^MDHL7B(+MDIENS)
  1. I +MDHL7=-1 S MDFDA(702,MDIENS,.09)=2,MDFDA(702,MDIENS,.08)=$P(MDHL7,U,2)
  1. I +MDHL7=1 S MDFDA(702,MDIENS,.09)=5,MDFDA(702,MDIENS,.08)=""
  1. D:$D(MDFDA) FILE^DIE("","MDFDA","MDERR") K MDFDA,MDERR
  1. N MDHEMO S MDHEMO=+$$GET1^DIQ(702,+MDIENS,".04:.06","I")
  1. Q:MDHEMO<2
  1. S:$G(MDHOLD)'="" $P(^MDD(702,MDINST,0),"^",7)=MDHOLD
  1. Q:$G(^MDK(704.202,+MDINST,0))=""
  1. S MDFDA(704.202,+MDINST_",",.09)=1
  1. D:$D(MDFDA) FILE^DIE("","MDFDA","MDERR") K MDFDA,MDERR
  1. K ^MDK(704.202,"AS",0,+MDINST)
  1. S ^MDK(704.202,"AS",1,+MDINST)=""
  1. Q