| [613] | 1 | MDWORSR ; HOIFO/NCA - Daily Schedule Studies;7/2/04  12:39 ;5/17/07  16:09
 | 
|---|
 | 2 |         ;;1.0;CLINICAL PROCEDURES;**14**;Apr 01,2004;Build 20
 | 
|---|
 | 3 |         ; Reference IA# 2263 [Supported] XPAR calls
 | 
|---|
 | 4 |         ;               3067 [Private] Read fields in Consult file (#123) w/FM
 | 
|---|
 | 5 |         ;               3468 [Subscription] Call GMRCCP
 | 
|---|
 | 6 |         ;               3869 [Subscription] SDAMA202 calls
 | 
|---|
 | 7 |         ;               10035 [Supported] Patient File Access
 | 
|---|
 | 8 |         ;               10103 [Supported] XLFDT calls
 | 
|---|
 | 9 |         ;
 | 
|---|
 | 10 | EN1     ; Entry Point to process scheduled studies
 | 
|---|
 | 11 |         N MDCON,MDERR,MDFDA,MDHOLD,MDL,MDL1,MDMAXD,MDNOW,MDSTAT,MDX,MDXY
 | 
|---|
 | 12 |         S MDMAXD=DT+.24
 | 
|---|
 | 13 |         S MDL=DT F  S MDL=$O(^MDD(702,"ASD",MDL)) Q:MDL<1!(MDL>MDMAXD)  F MDL1=0:0 S MDL1=$O(^MDD(702,"ASD",MDL,MDL1)) Q:MDL1<1  S MDX=$G(^MDD(702,MDL1,0)) D
 | 
|---|
 | 14 |         .K MDFDA
 | 
|---|
 | 15 |         .S MDCON=+$P(MDX,"^",5) Q:'MDCON
 | 
|---|
 | 16 |         .S MDSTAT=$$GET1^DIQ(123,MDCON_",",8,"E")
 | 
|---|
 | 17 |         .Q:MDSTAT="DISCONTINUED"!(MDSTAT="CANCELLED")
 | 
|---|
 | 18 |         .Q:+$P(MDX,"^",9)>0
 | 
|---|
 | 19 |         .S MDIENS=MDL1_",",MDXY=+$P(MDX,"^",4),MDHOLD="" I MDXY D
 | 
|---|
 | 20 |         ..Q:$P(^MDS(702.01,MDXY,0),U,6)'=2
 | 
|---|
 | 21 |         ..S MDHOLD=$P($G(^MDD(702,+MDL1,0)),"^",7),MDNOW=$$NOW^XLFDT()
 | 
|---|
 | 22 |         ..S $P(^MDD(702,+MDL1,0),"^",7)=$S(MDNOW>MDL:MDL,1:MDNOW)
 | 
|---|
 | 23 |         .S MDHL7=$$SUB^MDHL7B(MDL1)
 | 
|---|
 | 24 |         .I +MDHL7=-1 S MDFDA(702,MDIENS,.09)=2,MDFDA(702,MDIENS,.08)=$P(MDHL7,U,2)
 | 
|---|
 | 25 |         .I +MDHL7=1 S MDFDA(702,MDIENS,.02)=$$NOW^XLFDT(),MDFDA(702,MDIENS,.09)=5,MDFDA(702,MDIENS,.08)=""
 | 
|---|
 | 26 |         .D:$D(MDFDA) FILE^DIE("","MDFDA","MDERR")
 | 
|---|
 | 27 |         .S MDXY=+$P(MDX,"^",4) Q:'MDXY
 | 
|---|
 | 28 |         .I $P(^MDS(702.01,MDXY,0),U,6)=2 D  Q  ; Renal Check-In
 | 
|---|
 | 29 |         ..D CP^MDKUTL(+MDIENS)
 | 
|---|
 | 30 |         ..S:$G(MDHOLD)'="" MDFDA(702,MDIENS,.07)=MDHOLD
 | 
|---|
 | 31 |         ..S MDFDA(702,MDIENS,.09)=5
 | 
|---|
 | 32 |         ..D FILE^DIE("","MDFDA","MDERR")
 | 
|---|
 | 33 |         Q
 | 
|---|
 | 34 | CLINICPT        ; Check-in CP study with multiple results
 | 
|---|
 | 35 |         N MD,MDCDT,MDCL,MDCOM,MDCON,MDDT,MDDX,MDEND,MDERR,MDFDA,MDHEMO,MDHL7,MDIEN,MDIENS,MDK,MDLP,MDLST,MDMULT,MDNODE,MDNUM,MDPT,MDRET,MDSCHD,MDVSTR,MDY,MDY1,MDYR,X,X1,X2
 | 
|---|
 | 36 |         N MDHOLD,MDLST1,MDLST2,MDNEW S MDDT=DT\1,MDEND=DT+.24 N MDINP K ^TMP($J,"SDAMA202","GETPLIST"),^TMP("MDSTATUS",$J) S MDCOM=0,MDHOLD=""
 | 
|---|
 | 37 |         S MDNUM=$$GET^XPAR("SYS","MD COMPL PROC DISPLAY DAYS",1)
 | 
|---|
 | 38 |         I +MDNUM>0 S X1=DT,X2=-MDNUM D C^%DTC S MDCOM=X
 | 
|---|
 | 39 |         D GETLST^XPAR(.MDLST,"SYS","MD CLINIC QUICK LIST")
 | 
|---|
 | 40 |         D GETLST^XPAR(.MDLST1,"SYS","MD CLINICS WITH MULT PROC")
 | 
|---|
 | 41 |         F MDLP=0:0 S MDLP=$O(^MDD(702,"AS",0,MDLP)) Q:MDLP<1  D
 | 
|---|
 | 42 |         .S MDY=$G(^MDD(702,MDLP,0)) Q:+$P(MDY,"^",9)>0
 | 
|---|
 | 43 |         .Q:$P(MDY,"^",7)'=""
 | 
|---|
 | 44 |         .Q:'+$P(MDY,"^",5)!($P(MDY,"^",6)'="")
 | 
|---|
 | 45 |         .Q:'+MDY
 | 
|---|
 | 46 |         .I '+$G(^TMP("MDSTATUS",$J,+MDY,+$P(MDY,"^",4))) S ^TMP("MDSTATUS",$J,+MDY,+$P(MDY,"^",4))=+MDLP
 | 
|---|
 | 47 |         .Q
 | 
|---|
 | 48 |         ; Combine clinics with multiple procedures to regular clinics
 | 
|---|
 | 49 |         S MDLST2=$S(+MDLST>0:MDLST,1:0)
 | 
|---|
 | 50 |         I MDLST1>0 K MDY F MDK=0:0 S MDK=$O(MDLST1(MDK)) Q:MDK<1  I $G(MDLST1(MDK))'="" S MDY=$P($G(MDLST1(MDK)),"^",2)_"^"_+$G(MDLST1(MDK)),MDLST2=MDLST2+1,MDLST(MDLST2)=MDY
 | 
|---|
 | 51 |         ; Match new studies with 0 status to appointments
 | 
|---|
 | 52 |         N MDXX K MDY F MDK=0:0 S MDK=$O(MDLST(MDK)) Q:MDK<1  S MDY=$G(MDLST(MDK)) I +$P(MDY,"^",2)>0 S MDCL=+MDY D
 | 
|---|
 | 53 |         .K ^TMP($J,"SDAMA202","GETPLIST")
 | 
|---|
 | 54 |         .D GETPLIST^SDAMA202(+MDY,"1;4;","R",MDDT,MDEND,.MDRET,"")
 | 
|---|
 | 55 |         .F MD=0:0 S MD=$O(^TMP($J,"SDAMA202","GETPLIST",MD)) Q:'MD  D
 | 
|---|
 | 56 |         ..S MDY1=+$G(^TMP($J,"SDAMA202","GETPLIST",MD,4)) Q:MDY1<1
 | 
|---|
 | 57 |         ..S MDSCHD=+$G(^TMP($J,"SDAMA202","GETPLIST",MD,1))
 | 
|---|
 | 58 |         ..S MDDX=+$G(^TMP("MDSTATUS",$J,MDY1,+$P(MDY,"^",2))) Q:'MDDX
 | 
|---|
 | 59 |         ..S MDMULT=+$$GET1^DIQ(702,+MDDX,".04:.12","I")
 | 
|---|
 | 60 |         ..S MDHEMO=+$$GET1^DIQ(702,+MDDX,".04:.06","I"),MDIENS=+MDDX_","
 | 
|---|
 | 61 |         ..S MDFDA(702,MDIENS,.02)=$$NOW^XLFDT()
 | 
|---|
 | 62 |         ..S MDFDA(702,MDIENS,.07)="A;"_MDSCHD_";"_MDCL
 | 
|---|
 | 63 |         ..S MDFDA(702,MDIENS,.14)=MDSCHD
 | 
|---|
 | 64 |         ..D:$D(MDFDA) FILE^DIE("","MDFDA","MDERR") K MDFDA
 | 
|---|
 | 65 |         ..I MDHEMO=2 S MDHOLD=$P($G(^MDD(702,+MDIENS,0)),"^",7),MDNEW=$$NOW^XLFDT(),$P(^MDD(702,+MDIENS,0),"^",7)=$S(MDNEW>MDSCHD:MDSCHD,1:MDNEW)
 | 
|---|
 | 66 |         ..S MDHL7=$$SUB^MDHL7B(+MDIENS)
 | 
|---|
 | 67 |         ..I +MDHL7=-1 S MDFDA(702,MDIENS,.09)=2,MDFDA(702,MDIENS,.08)=$P(MDHL7,U,2)
 | 
|---|
 | 68 |         ..I +MDHL7=1 S MDFDA(702,MDIENS,.09)=5,MDFDA(702,MDIENS,.08)=""
 | 
|---|
 | 69 |         ..D:$D(MDFDA) FILE^DIE("","MDFDA","MDERR")
 | 
|---|
 | 70 |         ..Q:'+$G(MDIENS)
 | 
|---|
 | 71 |         ..I MDHEMO=2 D CP^MDKUTL(+MDIENS) S:$G(MDHOLD)'="" MDFDA(702,+MDIENS_",",.07)=MDHOLD S MDFDA(702,+MDIENS_",",.09)=5 D FILE^DIE("","MDFDA","MDERR") K MDFDA
 | 
|---|
 | 72 |         ..Q
 | 
|---|
 | 73 |         .Q
 | 
|---|
 | 74 |         ; Match the rest of appointments with previous studies
 | 
|---|
 | 75 |         N MDGET,MDINST S X1=DT,X2=-365 D C^%DTC S MDCDT=X
 | 
|---|
 | 76 |         F MDK=0:0 S MDK=$O(MDLST(MDK)) Q:MDK<1  S MDY=$G(MDLST(MDK)) I +$P(MDY,"^",2)>0 S MDCL=+MDY D
 | 
|---|
 | 77 |         .K ^TMP($J,"SDAMA202","GETPLIST")
 | 
|---|
 | 78 |         .D GETPLIST^SDAMA202(+MDY,"1;4;","R",MDDT,MDEND,.MDRET,"")
 | 
|---|
 | 79 |         .F MD=0:0 S MD=$O(^TMP($J,"SDAMA202","GETPLIST",MD)) Q:'MD  D
 | 
|---|
 | 80 |         ..S MDINP=0
 | 
|---|
 | 81 |         ..S MDY1=+$G(^TMP($J,"SDAMA202","GETPLIST",MD,4)) Q:MDY1<1
 | 
|---|
 | 82 |         ..S MDSCHD=+$G(^TMP($J,"SDAMA202","GETPLIST",MD,1))
 | 
|---|
 | 83 |         ..S MDPT=MDY1 Q:+$$GSTUDY(MDPT,MDSCHD)
 | 
|---|
 | 84 |         ..S MDDX=$$GETC(MDPT,+$P(MDY,"^",2)) Q:'+MDDX
 | 
|---|
 | 85 |         ..S MDNODE=$G(^MDD(702,+MDDX,0))
 | 
|---|
 | 86 |         ..S:$G(^DPT(MDY1,.105))'="" MDINP=1
 | 
|---|
 | 87 |         ..S MDCON=$P(MDNODE,"^",5) Q:'MDCON
 | 
|---|
 | 88 |         ..S MDVSTR=$P(MDNODE,"^",7) Q:MDVSTR=""
 | 
|---|
 | 89 |         ..S MDMULT=+$$GET1^DIQ(702,+MDDX,".04:.12","I")
 | 
|---|
 | 90 |         ..S MDHEMO=+$$GET1^DIQ(702,+MDDX,".04:.06","I")
 | 
|---|
 | 91 |         ..S MDYR=$S(MDMULT<1:MDCOM,1:MDCDT)
 | 
|---|
 | 92 |         ..Q:$P(MDNODE,"^",2)<MDYR
 | 
|---|
 | 93 |         ..Q:'+$P(MDNODE,"^",6)
 | 
|---|
 | 94 |         ..Q:'$P(MDNODE,"^",9)
 | 
|---|
 | 95 |         ..Q:$P(MDNODE,"^",9)>3
 | 
|---|
 | 96 |         ..Q:MDMULT'=1&(MDHEMO<2)
 | 
|---|
 | 97 |         ..Q:$P(MDVSTR,";",2)=MDSCHD
 | 
|---|
 | 98 |         ..S MDINST=+$$GINST(+$P(MDNODE,"^",4)) Q:'MDINST
 | 
|---|
 | 99 |         ..K MDFDA,MDERR,MDIEN
 | 
|---|
 | 100 |         ..S MDFDA(702,"+1,",.01)=MDY1
 | 
|---|
 | 101 |         ..S MDFDA(702,"+1,",.02)=$$NOW^XLFDT()
 | 
|---|
 | 102 |         ..S MDFDA(702,"+1,",.03)=$P(MDNODE,"^",3)
 | 
|---|
 | 103 |         ..S MDFDA(702,"+1,",.04)=$P(MDNODE,"^",4)
 | 
|---|
 | 104 |         ..S MDFDA(702,"+1,",.05)=MDCON
 | 
|---|
 | 105 |         ..S MDFDA(702,"+1,",.07)="A;"_MDSCHD_";"_MDCL
 | 
|---|
 | 106 |         ..S MDFDA(702,"+1,",.11)=+MDINST
 | 
|---|
 | 107 |         ..S MDFDA(702,"+1,",.14)=MDSCHD
 | 
|---|
 | 108 |         ..D UPDATE^DIE("","MDFDA","MDIEN","MDERR") Q:$D(MDERR)  K MDFDA
 | 
|---|
 | 109 |         ..S MDIENS=MDIEN(1)_"," I MDHEMO=2 S MDHOLD=$P($G(^MDD(702,MDIEN(1),0)),"^",7),MDNOW=$$NOW^XLFDT(),$P(^MDD(702,MDIEN(1),0),"^",7)=$S(MDNOW>MDSCHD:MDSCHD,1:MDNOW)
 | 
|---|
 | 110 |         ..S MDHL7=$$SUB^MDHL7B(MDIEN(1))
 | 
|---|
 | 111 |         ..I +MDHL7=-1 S MDFDA(702,MDIENS,.09)=2,MDFDA(702,MDIENS,.08)=$P(MDHL7,U,2)
 | 
|---|
 | 112 |         ..I +MDHL7=1 S MDFDA(702,MDIENS,.09)=5,MDFDA(702,MDIENS,.08)=""
 | 
|---|
 | 113 |         ..D:$D(MDFDA) FILE^DIE("","MDFDA","MDERR")
 | 
|---|
 | 114 |         ..Q:'+$G(MDIENS)
 | 
|---|
 | 115 |         ..I MDHEMO=2 D CP^MDKUTL(+MDIENS) K MDFDA S:$G(MDHOLD)'="" MDFDA(702,+MDIENS_",",.07)=MDHOLD S MDFDA(702,+MDIENS_",",.09)=5 D FILE^DIE("","MDFDA","MDERR")
 | 
|---|
 | 116 |         K ^TMP($J,"SDAMA202","GETPLIST"),^TMP("MDSTATUS",$J),MDFDA
 | 
|---|
 | 117 |         Q
 | 
|---|
 | 118 | GETC(MDPAT,MDDA)        ; Get consult date
 | 
|---|
 | 119 |         N MDX,MDCF S MDCF=0 K ^TMP("MDTMP",$J) D CPLIST^GMRCCP(MDPAT,+MDDA,$NA(^TMP("MDTMP",$J)))
 | 
|---|
 | 120 |         S MDX=$O(^TMP("MDTMP",$J,""),-1) Q:'+MDX 0
 | 
|---|
 | 121 |         I "saprc"'[$P($G(^TMP("MDTMP",$J,MDX)),U,4) S MDX=$O(^TMP("MDTMP",$J,MDX),-1) Q:'+MDX 0
 | 
|---|
 | 122 |         I "saprc"[$P($G(^TMP("MDTMP",$J,MDX)),U,4) S MDCF=$P($G(^TMP("MDTMP",$J,MDX)),U,5)_"^"_$P($G(^TMP("MDTMP",$J,MDX)),U,1)
 | 
|---|
 | 123 |         K ^TMP("MDTMP",$J)
 | 
|---|
 | 124 |         Q $S(+MDCF:+$O(^MDD(702,"ACON",+MDCF,""),-1)_"^"_$P(MDCF,"^",2),1:0)
 | 
|---|
 | 125 | GINST(MDDA)     ; Get instrument from CP Definition
 | 
|---|
 | 126 |         N MDIN,MDINT,Y1 S (MDINT,Y1)=0
 | 
|---|
 | 127 |         F MDIN=0:0 S MDIN=$O(^MDS(702.01,+MDDA,.1,MDIN)) Q:MDIN<1!(+Y1)  S MDINT=+$G(^(MDIN,0)) I +$$GET1^DIQ(702.09,MDINT,".13","I") S Y1=MDINT
 | 
|---|
 | 128 |         Q Y1
 | 
|---|
 | 129 | GSTUDY(MDPAT,MDDA)      ;Get study for scheduled date/time
 | 
|---|
 | 130 |         N MDIN,Y1 S Y1=0
 | 
|---|
 | 131 |         F MDIN=0:0 S MDIN=$O(^MDD(702,"ASD",MDDA,MDIN)) Q:MDIN<1!(Y1>0)  D
 | 
|---|
 | 132 |         .S:$P($G(^MDD(702,MDIN,0)),"^")=MDPAT Y1=1
 | 
|---|
 | 133 |         Q Y1
 | 
|---|