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

BADEEVNT.m

Go to the documentation of this file.
  1. BADEEVNT ;IHS/MSC/MGH - Dentrix HL7 interface ;30-Jun-2009 15:26;PLS
  1. ;;1.0;DENTAL/EDR INTERFACE;**1**;AUG 22, 2011
  1. ;; Modified - IHS/MSC/AMF - 11/23/10 - Updated Out of Order, alerts, removed H 2
  1. ;; Modified - IHS/MSC/VAC 9/2010 check for patient # in AUPNPAT
  1. Q
  1. TLOADPT ;EP Taskman call to start patient load
  1. N STOP,ZTDTH,ZTIO,ZTDESC,ZTRTN,ZTSAVE,ZTPRI,ZTSK
  1. ;Make sure its not already running
  1. S STOP=$$GET^XPAR("ALL","BADE EDR PAUSE PATIENT LOAD",1,"E")
  1. ;Its already running and shouldn't be restarted
  1. I STOP="NO" D H 3 Q
  1. .W !,"Process is already running",!
  1. I $$GET^XPAR("ALL","BADE EDR LAST DFN") D H 3 Q
  1. .W !,"Upload process has already begun. Please use Restart option.",!
  1. S ZTIO=""
  1. S ZTPRI=1
  1. S ZTDESC="Load Patient Data to EDR"
  1. S ZTRTN="LOADPT^BADEEVNT"
  1. S ZTSAVE("DUZ")=""
  1. D ^%ZTLOAD
  1. I $G(ZTSK) D
  1. .D EN^XPAR("SYS","BADE EDR LOAD TSK",1,ZTSK)
  1. .W !,"Task number "_ZTSK H 2
  1. Q
  1. LOADPT ;EP Load all patient's data
  1. N DFN,CNT,CNTCHK,DATA,TOTAL,STOP,THROTTLE,BADELOAD
  1. ;Make sure the stop parameter is NO
  1. D EN^XPAR("SYS","BADE EDR PAUSE PATIENT LOAD",1,"NO")
  1. ;Make sure the Pt DFN is set to null
  1. S DFN=$$GET^XPAR("ALL","BADE EDR LAST DFN")
  1. ;Check to see how many patients to process before throttling
  1. S CNTCHK=$$GET^XPAR("ALL","BADE EDR THROTTLE CT")
  1. ;Loop through the patients and send data
  1. LOOP S DFN=$S(DFN>0:DFN,1:0),CNT=0,STOP="NO",TOTAL=0
  1. F S DFN=$O(^DPT(DFN)) Q:+DFN'>0!(STOP="YES") D
  1. .K PATNO
  1. .S PATNO=$P($G(^AUPNPAT(DFN,0)),"^",1) ; IHS/MSC/VAC 9/2010 make sure patient # exists
  1. .Q:PATNO'=DFN
  1. .S PATNO=$D(^AUPNPAT(DFN,41))
  1. .Q:PATNO=""
  1. .S CNT=CNT+1
  1. .S BADELOAD=1
  1. .D A28^BADEEVNT(DFN)
  1. .K BADELOAD
  1. .;Set IEN into the DFN parameter
  1. .D EN^XPAR("SYS","BADE EDR LAST DFN",1,"`"_DFN)
  1. .;Add to total count
  1. .S TOTAL=TOTAL+1
  1. .D EN^XPAR("SYS","BADE EDR TOTAL PROCESSED",1,TOTAL)
  1. .;Check to see if we should stop
  1. .S STOP=$$GET^XPAR("ALL","BADE EDR PAUSE PATIENT LOAD",1,"E")
  1. .Q:STOP="YES"
  1. .;If count=check throttle parameter
  1. .I CNT=CNTCHK D
  1. ..S THROTTLE=$$GET^XPAR("ALL","BADE EDR PT THROTTLE")
  1. ..S CNTCHK=$$GET^XPAR("ALL","BADE EDR THROTTLE CT")
  1. ..I THROTTLE>0 H THROTTLE
  1. ..S CNT=0
  1. ;Finish up by resetting the pt parameter to null and the stop paramater to YES
  1. I STOP="NO" D
  1. .D EN^XPAR("SYS","BADE EDR PAUSE PATIENT LOAD",1,"YES")
  1. .D EN^XPAR("SYS","BADE EDR LOAD TSK",1,"Upload complete")
  1. .D COMPLETE
  1. Q
  1. TRESTRT ;EP Taskman call to restart patient load
  1. N STOP,ZTDTH,ZTIO,ZTDESC,ZTRTN,ZTSAVE,ZTPRI,ZTSK
  1. ;Make sure its not already running
  1. S STOP=$$GET^XPAR("ALL","BADE EDR PAUSE PATIENT LOAD",1,"E")
  1. ;Its already running and shouldn't be restarted
  1. I STOP="NO" W !,"Process is already running",!!! H 3 Q
  1. S ZTIO=""
  1. S ZTPRI=1
  1. S ZTDESC="Load Patient Data to EDR"
  1. S ZTRTN="RESTPT^BADEEVNT"
  1. S ZTSAVE("DUZ")=""
  1. D ^%ZTLOAD
  1. I $G(ZTSK) D
  1. .D EN^XPAR("SYS","BADE EDR LOAD TSK",,ZTSK)
  1. .W !,"Task number "_ZTSK H 2
  1. Q
  1. RESTPT ;EP Restart the patient load
  1. N DFN,CNT,CNTCHK,TOTAL,DATA,STOP
  1. ;Get the last used DFN from the parameter
  1. S DFN=$$GET^XPAR("ALL","BADE EDR LAST DFN")
  1. ;Set the stop parameter to NO
  1. D EN^XPAR("SYS","BADE EDR PAUSE PATIENT LOAD",,0)
  1. ;Get the total count
  1. S TOTAL=$$GET^XPAR("ALL","BADE EDR TOTAL PROCESSED")
  1. S CNTCHK=$$GET^XPAR("ALL","BADE EDR THROTTLE CT")
  1. ;Task off the job of restarting
  1. LOOP2 S CNT=0,STOP="NO"
  1. S DFN=$S(DFN>0:DFN,1:0)
  1. F S DFN=$O(^DPT(DFN)) Q:+DFN'>0!(STOP="YES") D
  1. .K PATNO
  1. .S PATNO=$P($G(^AUPNPAT(DFN,0)),"^",1) ; IHS/MSC/VAC 9/2010 make sure patient # exists
  1. .Q:PATNO'=DFN
  1. .S PATNO=$D(^AUPNPAT(DFN,41))
  1. .Q:PATNO=""
  1. .S CNT=CNT+1
  1. .S BADELOAD=1
  1. .D A28^BADEEVNT(DFN)
  1. .K BADELOAD
  1. .;Set IEN into the DFN parameter
  1. .D EN^XPAR("SYS","BADE EDR LAST DFN",1,"`"_DFN)
  1. .;Add to total count
  1. .S TOTAL=TOTAL+1
  1. .D EN^XPAR("SYS","BADE EDR TOTAL PROCESSED",1,TOTAL)
  1. .;See if we should stop
  1. .S STOP=$$GET^XPAR("ALL","BADE EDR PAUSE PATIENT LOAD",1,"E")
  1. .Q:STOP="YES"
  1. .;if count=parameter value check throttle parameter
  1. .I CNT=CNTCHK D
  1. ..S THROTTLE=$$GET^XPAR("ALL","BADE EDR PT THROTTLE")
  1. ..S CNTCHK=$$GET^XPAR("ALL","BADE EDR THROTTLE CT")
  1. ..I THROTTLE>0 H THROTTLE
  1. ..S CNT=0
  1. ;Finish up by resetting the pt parameter to null and the stop parameter to YES
  1. I STOP="NO" D
  1. .D EN^XPAR("SYS","BADE EDR PAUSE PATIENT LOAD",1,1)
  1. .D EN^XPAR("SYS","BADE EDR LOAD TSK",1,"Upload complete")
  1. .D COMPLETE
  1. Q
  1. ; IHS/MSC/AMF 10/2010 modified to mark all provider upload options complete
  1. COMPLETE ;Mark options out of order
  1. N MSG,MENU,I
  1. S MENU(1)="BADE EDR UPLOAD ALL PATIENTS"
  1. S MENU(2)="BADE EDR RESTART PAT UPLOAD"
  1. S MENU(3)="BADE EDR PAUSE PATIENT LOAD"
  1. S MENU(4)="BADE EDR PT THROTTLE"
  1. S MENU(5)="BADE EDR THROTTLE CT"
  1. F I=1:1:5 D
  1. .N DA,DIE,DR
  1. .S MSG="Upload completed"
  1. .S DA=$O(^DIC(19,"B",MENU(I),""))
  1. .I DA'="" D
  1. ..S DIE="^DIC(19,",DR="2///^S X=MSG"
  1. ..D ^DIE
  1. ; Enable event protocols
  1. D EDPROT^BADEUTIL("BADE PATIENT A28")
  1. D EDPROT^BADEUTIL("BADE PATIENT A31")
  1. Q
  1. SENDA28 ;Send one A28 message
  1. N ERR,DIC,DT,DFN,Y
  1. S DIC=2,DIC("A")=" Select Patient: ",DIC(0)="AEQMZ",DT=$$DT^XLFDT D ^DIC I +Y>0 D
  1. .S DFN=+Y
  1. .D A28(DFN)
  1. .I '$D(ERR) W !,"Message was sent"
  1. .E W !,"Unable to send HL7 message"
  1. S DIR(0)="EA",DIR("?")="",DIR("A")="Press ENTER to continue..." D ^DIR K DIR ;IHS/MSC/AMF 11/23/10 Remove H 2
  1. Q
  1. SENDA31 ;Send one A31 message
  1. N ERR,DIC,DT,DFN,BADERR,Y
  1. S DIC=2,DIC("A")=" Select Patient: ",DIC(0)="AEQMZ",DT=$$DT^XLFDT D ^DIC I +Y>0 D
  1. .S DFN=+Y
  1. .D A31(DFN)
  1. .I '$D(ERR) W !,"Message was sent"
  1. .E W !,"Unable to send HL7 message"
  1. S DIR(0)="EA",DIR("?")="",DIR("A")="Press ENTER to continue..." D ^DIR K DIR W ! ;IHS/MSC/AMF 11/23/10 Remove H 2
  1. Q
  1. A28(DFN) ;EP Create and send one A28 message
  1. N EVNTTYPE,DOD
  1. S EVNTTYPE="A28"
  1. ;If patient has been merged, send the merged DFN
  1. Q:$D(^DPT(DFN,-9))
  1. I '$D(^DPT(DFN,0)) S ERR="No zero node for patient. Cannot send A28." D NOTIF^BADEHL1(DFN,ERR) Q ;IHS/MSC/AMF 11/23/10 descriptive alert
  1. ;Patient must be alive
  1. S DOD=$P($G(^DPT(DFN,.35)),U,1)
  1. I DOD="" D NEWMSG^BADEHL1(DFN,EVNTTYPE)
  1. Q
  1. A31(DFN) ;EP Create and send one A31 message
  1. N EVNTTYPE,DOD
  1. S EVNTTYPE="A31"
  1. I '$D(^DPT(DFN,0)) S ERR="No zero node for patient. Cannot send A31." D NOTIF^BADEHL1(DFN,ERR) Q ;IHS/MSC/AMF 11/23/10 descriptive alert
  1. ;Don't send if patient is deceased
  1. ;S DOD=$P($G(^DPT(DFN,.35)),U,1)
  1. ;I DOD=""
  1. D NEWMSG^BADEHL1(DFN,EVNTTYPE)
  1. Q
  1. MSA ;EP
  1. N MSA,HLST
  1. D SET(.ARY,"MSA",0)
  1. D SET(.ARY,"AA",1)
  1. D SET(.ARY,"TODO-MSGID",2)
  1. D SET(.ARY,"Transaction Successful",3)
  1. D SET(.ARY,"todo-010",4)
  1. S MSA=$$ADDSEG^HLOAPI(.HLST,.ARY)
  1. Q
  1. SET(ARY,V,F,C,S,R) ;EP
  1. D SET^HLOAPI(.ARY,.V,.F,.C,.S,.R)
  1. Q