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

MBAARPCL.m

Go to the documentation of this file.
  1. MBAARPCL ;OIT-PD/PB - Scheduling RPCs ;02/10/2016
  1. ;;1.0;Scheduling Calendar View;**1**;Feb 10, 2016;Build 85
  1. ;
  1. ;Associated ICRs:
  1. ; ICR#
  1. ; 6045 SD(403.5
  1. ; 10061 VADPT
  1. ; 6044 SC(
  1. ; 10112 VASITE
  1. ; 6053 DPT
  1. ; 10103 XLFDT
  1. ; 6047 SDWL(409.32
  1. ; 1024 DIC(40.7
  1. ; 6046 SDWL(409.3
  1. ;
  1. ;This routine has multiple RPCs created to support the mobile Scheduling apps
  1. RECALL(RESULTS) ;pull a list of recalls for a facility MBAA RPC: MBAA RECALL FACILITY LIST
  1. ; No input parameters
  1. ; Output: RESULTS Array:
  1. ; $P(1) = DFN
  1. ; $P(2) = PTR TO CLINIC FILE
  1. ; $P(3) = ACCESSION#
  1. ; $P(4) = TEST/APP - PTR TO FILE 403.51
  1. ; $P(5) = PROVIDER - PTR TO FILE 405.54
  1. ; $P(6) = RECALL DATE PER PROVIDER
  1. ; $P(7) = COMMENT
  1. ; $P(8) = FAST/NON-FASTING (SET OF CODES: f = Fasting, n = Non- Fasting)
  1. ; $P(9) = LENGTH OF APPOINTMENT
  1. ; $P(10) = DATE REMINDER SENT
  1. ; $P(11) = USER WHO ENTERED RECALL (PTR to file 200)
  1. ; $P(12) = RECALL DATE (PER PATIENT)
  1. ; $P(13) = SECOND PRINT DATE
  1. ; $P(14) = PATIENT NAME (LAST,FIRST)
  1. ; $P(15) = PATIENT SSN
  1. ; $P(16) = CLINIC NAME
  1. ;
  1. S CNT=0 S XX=0 F S XX=$O(^SD(403.5,XX)) Q:XX'>0 D ;ICR#: 6045 SD(403.5
  1. .K DFN,LNAME,SSN,CLINIC,CIEN,NODE,ACCESS,COMMENT,USER,TESTAPP,FASTNON,PATRECDT,PROVIDER,APPTLEN,SCEPRT,RECALLDT,REMINDDT
  1. .;T13 Change to FM read
  1. .;S NODE=$G(^SD(403.5,XX,0)) ;ICR#: 6045 SD(403.5
  1. .;S DFN=$P(NODE,"^"),CIEN=$P(NODE,"^",2)
  1. .;D DEM^VADPT ;ICR#: 10061 VADPT
  1. .;S LNAME=$G(VADM(1)),SSN=$P($G(VADM(2)),"^",2)
  1. .;I $G(CIEN)>0 S CLINIC=$P(^SC(CIEN,0),"^") ;ICR#: 6044 SC(
  1. .;S ACCESS=$P(NODE,"^",3),TESTAPP=$P(NODE,"^",4),PROVIDER=$P(NODE,"^",5),RECALLDT=$P(NODE,"^",6)
  1. .;S COMMENT=$P(NODE,"^",7),FASTNON=$P(NODE,"^",8),APPTLEN=$P(NODE,"^",9),REMINDDT=$P(NODE,"^",10)
  1. .;S USER=$P(NODE,"^",11),PATRECDT=$P(NODE,"^",12),SECPRT=$P(NODE,"^",13)
  1. .;S RESULTS(CNT)=$G(^SD(403.5,XX,0)) ;ICR#: 6045 SD(403.5
  1. .N ARRAY D GETS^DIQ(403.5,$G(XX),"**","IE","ARRAY")
  1. .S DFN=$G(ARRAY(403.5,XX_",",.01,"I")),LNAME=$G(ARRAY(403.5,XX_",",.01,"E")),CIEN=$G(ARRAY(403.5,XX_",",4.5,"I")),CLINIC=$G(ARRAY(403.5,XX_",",4.5,"E"))
  1. .D DEM^VADPT S SSN=$P($G(VADM(2)),"^",2)
  1. .S ACCESS=$G(ARRAY(403.5,XX_",",2,"I")),TESTAPP=$G(ARRAY(403.5,XX_",",3,"I")),PROVIDER=$G(ARRAY(403.5,XX_",",4,"I")),RECALLDT=$G(ARRAY(403.5,XX_",",5,"I"))
  1. .S COMMENT=$G(ARRAY(403.5,XX_",",2.5,"I")),FASTNON=$G(ARRAY(403.5,XX_",",2.6,"I")),APPTLEN=$G(ARRAY(403.5,XX_",",4.7,"I"))
  1. .S REMINDDT=$G(ARRAY(403.5,XX_",",6,"I")),USER=$G(ARRAY(403.5,XX_",",7,"I")),PATRECDT=$G(ARRAY(403.5,XX_",",5.5,"I")),SECPRT=$G(ARRAY(403.5,XX_",",8,"I"))
  1. .S RESULTS(CNT)=$G(DFN)_U_$G(CIEN)_U_$G(ACCESS)_U_$G(TESTAPP)_U_$G(PROVIDER)_U_$G(RECALLDT)_U_$G(COMMENT)_U_$G(FASTNON)_U_$G(APPTLEN)_U_$G(REMINDDT)_U_$G(USER)_U_$G(PATRECDT)_U_$G(SECPRT)_U_$G(LNAME)_U_$G(SSN)_U_$G(CLINIC)
  1. .;S:$P(RESULTS(CNT),"^",13)="" RESULTS(CNT)=$G(RESULTS(CNT))_"^^"_$G(LNAME)_"^"_$G(SSN)_"^"_$G(CLINIC)
  1. .S CNT=CNT+1
  1. .D KVA^VADPT
  1. S:$G(RESULTS(0))="" RESULTS(0)="1^RECALL LIST EMPTY"
  1. K XDT,XX,CNT,DFN,LNAME,VA("PID"),VA("BID"),SSN,CLINIC,CIEN,NODE,ACCESS,COMMENT,USER,TESTAPP,FASTNON,PATRECDT,PROVIDER,APPTLEN,SCEPRT,RECALLDT,REMINDDT,SECPRT
  1. Q
  1. RCLDFN(RESULTS,DFN) ;pull a list of recalls by patient MBAA RPC: MBAA RECALL LIST BY PATIENT
  1. ; Input parameter = DFN (PTR to Patient file #2)
  1. ; Output: RESULTS Array:
  1. ; $P(1) = DFN
  1. ; $P(2) = PTR TO CLINIC FILE
  1. ; $P(3) = ACCESSION#
  1. ; $P(4) = TEST/APP - PTR TO FILE 403.51
  1. ; $P(5) = PROVIDER - PTR TO FILE 405.54
  1. ; $P(6) = RECALL DATE PER PROVIDER
  1. ; $P(7) = COMMENT
  1. ; $P(8) = FAST/NON-FASTING (SET OF CODES: f = Fasting, n = Non- Fasting)
  1. ; $P(9) = LENGTH OF APPOINTMENT
  1. ; $P(10) = DATE REMINDER SENT
  1. ; $P(11) = USER WHO ENTERED RECALL (PTR to file 200)
  1. ; $P(12) = RECALL DATE (PER PATIENT)
  1. ; $P(13) = SECOND PRINT DATE
  1. ; $P(14) = PATIENT NAME (LAST,FIRST)
  1. ; $P(15) = PATIENT SSN
  1. ; $P(16) = CLINIC NAME
  1. ;
  1. K RESULTS
  1. I $G(DFN)="" S RESULTS(0)="1^DFN HAS TO BE SUPPLIED" Q
  1. S RESULTS(0)="1^RECALL LIST EMPTY"
  1. S CNT=0,XX=0 F S XX=$O(^SD(403.5,"B",DFN,XX)) Q:XX'>0 D ;ICR#: 6045 SD(403.5
  1. .K LNAME,SSN,CLINIC,CIEN,NODE,ACCESS,COMMENT,USER,TESTAPP,FASTNON,PATRECDT,PROVIDER,APPTLEN,SCEPRT,RECALLDT,REMINDDT
  1. .;T13 Change to FM read
  1. .;S NODE=$G(^SD(403.5,XX,0)) ;ICR#: 6045 SD(403.5
  1. .;S CIEN=$P(NODE,"^",2)
  1. .;D DEM^VADPT ;ICR#: 10061 VADPT
  1. .;S LNAME=$G(VADM(1)),SSN=$P($G(VADM(2)),"^",2)
  1. .;I $G(CIEN)>0 S CLINIC=$P(^SC(CIEN,0),"^") ;ICR#: 6044 SC(
  1. .;S ACCESS=$P(NODE,"^",3),TESTAPP=$P(NODE,"^",4),PROVIDER=$P(NODE,"^",5),RECALLDT=$P(NODE,"^",6)
  1. .;S COMMENT=$P(NODE,"^",7),FASTNON=$P(NODE,"^",8),APPTLEN=$P(NODE,"^",9),REMINDDT=$P(NODE,"^",10)
  1. .;S USER=$P(NODE,"^",11),PATRECDT=$P(NODE,"^",12),SECPRT=$P(NODE,"^",13)
  1. .;S RESULTS(CNT)=$G(^SD(403.5,XX,0)) ;ICR#: 6045 SD(403.5
  1. .N ARRAY D GETS^DIQ(403.5,$G(XX),"**","IE","ARRAY")
  1. .S DFN=$G(ARRAY(403.5,XX_",",.01,"I")),LNAME=$G(ARRAY(403.5,XX_",",.01,"E")),CIEN=$G(ARRAY(403.5,XX_",",4.5,"I")),CLINIC=$G(ARRAY(403.5,XX_",",4.5,"E"))
  1. .D DEM^VADPT S SSN=$P($G(VADM(2)),"^",2)
  1. .S ACCESS=$G(ARRAY(403.5,XX_",",2,"I")),TESTAPP=$G(ARRAY(403.5,XX_",",3,"I")),PROVIDER=$G(ARRAY(403.5,XX_",",4,"I")),RECALLDT=$G(ARRAY(403.5,XX_",",5,"I"))
  1. .S COMMENT=$G(ARRAY(403.5,XX_",",2.5,"I")),FASTNON=$G(ARRAY(403.5,XX_",",2.6,"I")),APPTLEN=$G(ARRAY(403.5,XX_",",4.7,"I"))
  1. .S REMINDDT=$G(ARRAY(403.5,XX_",",6,"I")),USER=$G(ARRAY(403.5,XX_",",7,"I")),PATRECDT=$G(ARRAY(403.5,XX_",",5.5,"I")),SECPRT=$G(ARRAY(403.5,XX_",",8,"I"))
  1. .S RESULTS(CNT)=$G(DFN)_U_$G(CIEN)_U_$G(ACCESS)_U_$G(TESTAPP)_U_$G(PROVIDER)_U_$G(RECALLDT)_U_$G(COMMENT)_U_$G(FASTNON)_U_$G(APPTLEN)_U_$G(REMINDDT)_U_$G(USER)_U_$G(PATRECDT)_U_$G(SECPRT)_U_$G(LNAME)_U_$G(SSN)_U_$G(CLINIC)
  1. .;S RESULTS(CNT)=$G(^SD(403.5,XX,0))
  1. .;S:$P(RESULTS(CNT),"^",13)="" RESULTS(CNT)=$G(RESULTS(CNT))_"^"
  1. .S CNT=CNT+1
  1. .D KVA^VADPT
  1. K XDT,XX,CNT
  1. K DFN,LNAME,SSN,CLINIC,VA("PID"),VA("BID"),CIEN,NODE,ACCESS,COMMENT,USER,TESTAPP,FASTNON,PATRECDT,PROVIDER,APPTLEN,SCEPRT,RECALLDT,REMINDDT
  1. Q
  1. NEARLST(RESULTS) ;Gets the NEAR List for a Facility MBAA RPC: MBAA FACILITY NEAR LIST
  1. ; No input parameters required
  1. ; Output: TMP($J,"NEAR")=DFN^PATIENTNAME^SSN^ELIGIBILITY CODE INTERNAL^ELIGIBILITY CODE EXTERNAL^HOME PHONE^CELL PHONE^DATE^SITE
  1. ; DFN = PATIENT ID
  1. ; PATIENTNAME = PATIENT NAME
  1. ; SSN = LAST FOUR OF SSN
  1. ; ELIGIBILITY CODE INTERNAL = INTERNAL ELIGIBILITY CODE
  1. ; ELIGIBILITY CODE EXTERNAL = EXTERNAL ELIGIBILITY CODE
  1. ; HOME PHONE
  1. ; CELL PHONE
  1. ; DATE = APPOINTMENT DATE REQUESTED
  1. ; SITE = FACILITY ID
  1. ;-Build temp global
  1. K ^TMP($J,"NEAR")
  1. N DFNIEN,DGSITE,PNAME,SSN,ELIG,PHONE,CELL,DFN
  1. S DGSITE=+$$SITE^VASITE() ;ICR#: 10112 VASITE
  1. S (CNT,DFNIEN)=0 F S DFNIEN=$O(^DPT("AEAR",1,DFNIEN)) Q:'DFNIEN D ;ICR#: 6053 DPT
  1. .I $$GET1^DIQ(2,DFNIEN,1010.159,"I") D
  1. .Q:$P($G(^DPT(DFNIEN,1010.16)),"^",1)'="" ;ICR#: 6053 DPT
  1. .S DFN=DFNIEN D DEM^VADPT,ELIG^VADPT,ADD^VADPT ;ICR#: 10061 VADPT
  1. .S CNT=CNT+1
  1. .;T13 Change to get cell phone using FM read
  1. .;S PNAME=VADM(1),SSN=+VADM(2),ELIG=VAEL(1),PHONE=VAPA(8),CELL=$P($G(^DPT(DFNIEN,.13)),"^",4) ;ICR#: 6053 DPT
  1. .S PNAME=VADM(1),SSN=+VADM(2),ELIG=VAEL(1),PHONE=VAPA(8),CELL=$$GET1^DIQ(2,100841,.01,"I") ;ICR#: 6053 DPT
  1. .I $G(ELIG)="" S ELIG="^"
  1. .S ^TMP($J,"NEAR",CNT)=DFNIEN_"^"_$G(PNAME)_"^"_$G(SSN)_"^"_$G(ELIG)_"^"_$G(PHONE)_"^"_$G(CELL)_"^"_$$GET1^DIQ(2,DFNIEN,1010.1511,"I")_"^"_DGSITE_$C(10)
  1. .K PNAME,DFN,SSN,ELIG,PHONE,CELL
  1. .D KVA^VADPT
  1. S RESULTS=$NA(^TMP($J,"NEAR"))
  1. K DFN,VADM,VAEL,VAPA,VA("BID"),VA("PID"),VACNTRY,VAERR
  1. Q
  1. ;
  1. NEARDFN(RESULTS,DFN) ;Gets the NEAR List for a PATIENT MBAA RPC: MBAA PATIENT NEAR LIST
  1. ; INPUT: Patient DFN
  1. ; Output:
  1. ; If the patient is on the NEAR List, returns the array:
  1. ; DFN^PATIENTNAME^SSN^ELIGIBILITY CODE INTERNAL^ELIGIBILITY CODE EXTERNAL^HOME PHONE^CELL PHONE^DATE^SITE
  1. ; DFN = PATIENT ID
  1. ; PATIENTNAME = PATIENT NAME
  1. ; SSN = LAST FOUR OF SSN
  1. ; ELIGIBILITY CODE INTERNAL = INTERNAL ELIGIBILITY CODE
  1. ; ELIGIBILITY CODE EXTERNAL = EXTERNAL ELIGIBILITY CODE
  1. ; HOME PHONE
  1. ; CELL PHONE
  1. ; DATE = APPOINTMENT DATE REQUESTED
  1. ; SITE = FACILITY ID
  1. ; If the patient is not on the NEAR List returns "1^Patient not on the NEAR List"
  1. N DGSITE,SSN,ELIG,PHONE,CELL,PNAME
  1. I $G(DFN)="" S RESULTS(0)="1^DFN IS NOT DEFINED" Q
  1. S RESULTS(0)=""
  1. I $$GET1^DIQ(2,DFN,1010.159,"I") D
  1. .Q:$P($G(^DPT(DFN,1010.16)),"^",1)'="" ;ICR#: 6053 DPT
  1. .S DGSITE=+$$SITE^VASITE()
  1. .D DEM^VADPT,ELIG^VADPT,ADD^VADPT ;ICR#: 10061 VADPT
  1. .;T13 Change to get cell phone using FM read
  1. .;S PNAME=VADM(1),SSN=+VADM(2),ELIG=VAEL(1),PHONE=VAPA(8),CELL=$P($G(^DPT(DFN,.13)),"^",4) ;ICR#: 6053 DPT
  1. .S PNAME=VADM(1),SSN=+VADM(2),ELIG=VAEL(1),PHONE=VAPA(8),CELL=$$GET1^DIQ(2,100841,.01,"I") ;ICR#: 6053 DPT
  1. .I $G(ELIG)="" S ELIG="^"
  1. .S RESULTS(0)=DFN_"^"_$G(PNAME)_"^"_$G(SSN)_"^"_$G(ELIG)_"^"_$G(PHONE)_"^"_$G(CELL)_"^"_$$GET1^DIQ(2,DFN,1010.1511,"I")_"^"_DGSITE
  1. .D KVA^VADPT
  1. I RESULTS(0)="" S RESULTS(0)="1^Patient not on the NEAR List"
  1. K DFN,VADM,VAEL,VAPA,VA("BID"),VA("PID"),VACNTRY,VAERR
  1. Q
  1. EWL(RESULTS,DFN) ; gets the EWL data by patient as described in the output data MBAA RPC: MBAA WAIT LIST BY DFN
  1. ; Input: Patient DFN (PTR to Patient File (#2))
  1. ; Outputs if successful - patient is on the EWL:
  1. ; $P(1) = DFN
  1. ; $P(2) = DSS STOP CODE
  1. ; $P(3) = LAST UPDATED (RETURNED IN FILEMAN FORMAT)
  1. ; $P(4) = PATIENT NAME
  1. ; $P(5) = PATIENT SSN
  1. ; $P(6) = CLINIC NAME
  1. ; $P(7) = ORIGINATING DATE (RETURNED IN FILEMAN FORMAT)
  1. ; $P(8) = DESIRED DATE OF APPOINTMENT
  1. ; $P(9) = DAYS ON EWL
  1. ; $P(10) = DATE REMOVED FROM EWL (RETURNED IN FILEMAN FORMAT)
  1. ; $P(11) = PATIENT ZIP CODE
  1. ; $P(12) = SERVICE CONNECTED %
  1. ; $P(13) = ENROLLEE STATUS
  1. ; $P(14) = PRIORITY
  1. ; $P(15) = CLINIC ID
  1. ; $P(16) = IEN FROM SDWL(409.3 FOR THE ENTRY
  1. ;
  1. ; If patient is not on the EWL, returns
  1. ; RESULTS(0)="1^PATIENT NOT ON THE EWL."
  1. ;
  1. I $G(DFN)="" S RESULTS(0)="1^DFN IS NOT DEFINED" Q
  1. I '$D(^SDWL(409.3,"B",DFN)) S RESULTS(0)="1^PATIENT NOT ON THE EWL" Q ;ICR#: 6046 SDWL(409.3
  1. S REC=0,CNT=1 F S REC=$O(^SDWL(409.3,"B",DFN,REC)) Q:REC'>0 D ;ICR#: 6046 SDWL(409.3
  1. .;T13 Change to use FM reads
  1. .;S NODE=$G(^SDWL(409.3,REC,0)) ;ICR#: 6046 SDWL(409.3
  1. .;Q:$G(NODE)=""
  1. .;I $P($G(NODE),"^",17)="C" S RESULTS(0)="1^PATIENT NOT ON THE EWL" Q
  1. .;I $P($G(NODE),"^",17)="O" S RESULTS(0)=""
  1. .I $$GET1^DIQ(409.3,REC,23,"I")="C" S RESULTS(0)="1^PATIENT NOT ON THE EWL" Q
  1. .I $$GET1^DIQ(409.3,REC,23,"I")="O" S RESULTS(0)=""
  1. .N SDWL1
  1. .D GETS^DIQ(409.3,REC_",","1;8;10;13.1;14;22;23;27","IE","SDWL1")
  1. .D NOW^%DTC,DEM^VADPT,ADD^VADPT ;ICR#: 10061 VADPT
  1. .S (ORIGDT,LASTUPDT)=$G(SDWL1(409.3,REC_",",1,"I")),DAYSON=$$FMDIFF^XLFDT(%,ORIGDT,1) ;ICR#: 10103 XLFDT
  1. .;S (ORIGDT,LASTUPDT)=$P(NODE,"^",2),DAYSON=$$FMDIFF^XLFDT(%,ORIGDT,1) ;ICR#: 10103 XLFDT
  1. .S PTNAME=$G(VADM(1)) ;,LASTNAME=$P(PTNAME,",")
  1. .S SSN=$P($G(VADM(2)),"^",2),ZIP=$G(VAPA(6))
  1. .S DESIRED=$G(SDWL1(409.3,REC_",",22,"I")),CLINIEN=$G(SDWL1(409.3,REC_",",8,"I"))
  1. .;S DESIRED=$P(NODE,"^",16),CLINIEN=$P(NODE,"^",9)
  1. .I $G(CLINIEN)'="" D
  1. ..S PTR=$$GET1^DIQ(409.32,CLINIEN_",",".01","I") ;ICR#: 6047 SDWL(409.32
  1. ..K CLIN1 D GETS^DIQ(44,PTR_",",".01;8","IE","CLIN1") S CLINNAME=$G(CLIN1(44,PTR_",",.01,"E")),STPCODE=$G(CLIN1(44,PTR_",",8,"E"))
  1. .;S SC=$P($G(^SDWL(409.3,REC,"SC")),"^",1),PRIOR=$P(NODE,"^",11),ENRSTAT1=$P(NODE,"^",20) ;ICR#: 6046 SDWL(409.3
  1. .S SC=$G(SDWL1(409.3,REC_",",14,"E")),PRIOR1=$G(SDWL1(409.3,REC_",",10,"E")),ENRSTAT=$G(SDWL1(409.3,REC_",",27,"E")) ;ICR#: 6046 SDWL(409.3
  1. .;S DTREMOVE=$P($G(^SDWL(409.3,REC,"SDAPT")),"^",1) ;ICR#: 6046 SDWL(409.3
  1. .S DTREMOVE=$G(SDWL1(409.3,REC_",",13.1,"I")) ;ICR#: 6046 SDWL(409.3
  1. .;I ENRSTAT1'="" S ENRSTAT=$S(ENRSTAT1="N":"NEW",ENRSTAT1="E":"ESTABLISHED",ENRSTAT1="P":"PRIOR",ENRSTAT1="U":"UNDETERMINED",1:"UNKNOWN")
  1. .;I PRIOR'="" S PRIOR1=$S(PRIOR="A":"ASAP",PRIOR="F":"FUTURE",1:0)
  1. .S RESULTS(CNT)=DFN_U_$G(STPCODE)_U_$G(LASTUPDT)_U_$G(PTNAME)_U_$G(SSN)_U_$G(CLINNAME)_U_$G(ORIGDT)_U_$G(DESIRED)_U_$G(DAYSON)_U_$G(DTREMOVE)_U_$G(ZIP)_U_$G(SC)_U_$G(ENRSTAT)_U_$G(PRIOR1)_U_$G(CLINIEN)_U_$G(REC),CNT=CNT+1
  1. .D KVA^VADPT
  1. .K NODE,%,ORIGDT,LASTUPDT,DAYSON,PTNAME,LASTNAME,SSN
  1. .K DESIRED,CLINIEN,PTR,CLINNAME,STOPPTR,STPCODE,PRIOR,ENRSTAT,SC,ENRSTAT1,PRIOR1,DTREMOVE,ZIP,CLIN1,SDWL1
  1. K REC,CNT,REC,DFN
  1. Q
  1. FACEWL(RESULTS) ; gets the EWL data for a facility as described in the output data MBAA RPC: MBAA FACILITY WAIT LIST
  1. ; Outputs if successful - patient is on the EWL:
  1. ; $P(1) = DFN
  1. ; $P(2) = DSS STOP CODE
  1. ; $P(3) = LAST UPDATED (RETURNED IN FILEMAN FORMAT)
  1. ; $P(4) = PATIENT NAME
  1. ; $P(5) = PATIENT SSN
  1. ; $P(6) = CLINIC NAME
  1. ; $P(7) = ORIGINATING DATE (RETURNED IN FILEMAN FORMAT)
  1. ; $P(8) = DESIRED DATE OF APPOINTMENT
  1. ; $P(9) = DAYS ON EWL
  1. ; $P(10) = DATE REMOVED FROM EWL (RETURNED IN FILEMAN FORMAT)
  1. ; $P(11) = PATIENT ZIP CODE
  1. ; $P(12) = SERVICE CONNECTED %
  1. ; $P(13) = ENROLLEE STATUS
  1. ; $P(14) = PRIORITY
  1. ; $P(15) = CLINIC ID
  1. ; $P(16) = IEN FROM SDWL(409.3 FOR THE ENTRY
  1. ;
  1. ; If no patients are not on the EWL, returns
  1. ; RESULTS(0)="1^EWL is empty."
  1. ;
  1. I '$D(^SDWL(409.3,"B")) S RESULTS(0)="1^EWL is empty." Q ;ICR#: 6046 SDWL(409.3
  1. S REC=0,CNT=0,DFN=0 F S DFN=$O(^SDWL(409.3,"B",DFN)) Q:DFN'>0 F S REC=$O(^SDWL(409.3,"B",DFN,REC)) Q:REC'>0 D ;ICR#: 6046 SDWL(409.3
  1. .;T13 Change to use FM reads
  1. .;S NODE=$G(^SDWL(409.3,REC,0)) ;ICR#: 6046 SDWL(409.3
  1. .;Q:$G(NODE)=""
  1. .;I $P($G(NODE),"^",17)="C" S RESULTS(0)="1^PATIENT NOT ON THE EWL" Q
  1. .;I $P($G(NODE),"^",17)="O" S RESULTS(0)=""
  1. .;I $$GET1^DIQ(409.3,REC,23,"I")="C" S RESULTS(0)="1^PATIENT NOT ON THE EWL" Q
  1. .;I $$GET1^DIQ(409.3,REC,23,"I")="O" S RESULTS(0)=""
  1. .Q:$$GET1^DIQ(409.3,REC,23,"I")="C"
  1. .N SDWL1
  1. .K SEWL1 D GETS^DIQ(409.3,REC_",","1;8;10;13.1;14;22;23;27","IE","SDWL1")
  1. .D NOW^%DTC,DEM^VADPT,ADD^VADPT ;ICR#: 10061 VADPT
  1. .S (ORIGDT,LASTUPDT)=$G(SDWL1(409.3,REC_",",1,"I")),DAYSON=$$FMDIFF^XLFDT(%,ORIGDT,1) ;ICR#: 10103 XLFDT
  1. .;S (ORIGDT,LASTUPDT)=$P(NODE,"^",2),DAYSON=$$FMDIFF^XLFDT(%,ORIGDT,1) ;ICR#: 10103 XLFDT
  1. .S PTNAME=$G(VADM(1)) ;,LASTNAME=$P(PTNAME,",")
  1. .S SSN=$P($G(VADM(2)),"^",2),ZIP=$G(VAPA(6))
  1. .S DESIRED=$G(SDWL1(409.3,REC_",",22,"I")),CLINIEN=$G(SDWL1(409.3,REC_",",8,"I"))
  1. .;S DESIRED=$P(NODE,"^",16),CLINIEN=$P(NODE,"^",9)
  1. .I $G(CLINIEN)'="" D
  1. ..S PTR=$$GET1^DIQ(409.32,CLINIEN_",",".01","I") ;ICR#: 6047 SDWL(409.32
  1. ..K CLIN1 D GETS^DIQ(44,PTR_",",".01;8","IE","CLIN1") S CLINNAME=$G(CLIN1(44,PTR_",",.01,"E")),STPCODE=$G(CLIN1(44,PTR_",",8,"E"))
  1. .S SC=$G(SDWL1(409.3,REC_",",14,"E")),PRIOR1=$G(SDWL1(409.3,REC_",",10,"E")),ENRSTAT=$G(SDWL1(409.3,REC_",",27,"E")) ;ICR#: 6046 SDWL(409.3
  1. .;S DTREMOVE=$P($G(^SDWL(409.3,REC,"SDAPT")),"^",1) ;ICR#: 6046 SDWL(409.3
  1. .S DTREMOVE=$G(SDWL1(409.3,REC_",",13.1,"I")) ;ICR#: 6046 SDWL(409.3
  1. .;I ENRSTAT1'="" S ENRSTAT=$S(ENRSTAT1="N":"NEW",ENRSTAT1="E":"ESTABLISHED",ENRSTAT1="P":"PRIOR",ENRSTAT1="U":"UNDETERMINED",1:"UNKNOWN")
  1. .;I PRIOR'="" S PRIOR1=$S(PRIOR="A":"ASAP",PRIOR="F":"FUTURE",1:0)
  1. .;S NODE=$G(^SDWL(409.3,REC,0)) ;ICR#: 6046 SDWL(409.3
  1. .;Q:$G(NODE)=""
  1. .;Q:$P($G(NODE),"^",17)="C"
  1. .;D NOW^%DTC,DEM^VADPT,ADD^VADPT ;ICR#: 10061 VADPT
  1. .;S (ORIGDT,LASTUPDT)=$P(NODE,"^",2),DAYSON=$$FMDIFF^XLFDT(%,ORIGDT,1) ;ICR#: 10103 XLFDT
  1. .;S PTNAME=$G(VADM(1)) ;,LASTNAME=$P(PTNAME,",")
  1. .;S SSN=$P($G(VADM(2)),"^",2),ZIP=$G(VAPA(6))
  1. .;S DESIRED=$P(NODE,"^",16),CLINIEN=$P(NODE,"^",9)
  1. .;I $G(CLINIEN)'="" D
  1. .;S SC=$P($G(^SDWL(409.3,REC,"SC")),"^",1),PRIOR=$P(NODE,"^",11),ENRSTAT1=$P(NODE,"^",20) ;ICR#: 6046 SDWL(409.3
  1. .;S DTREMOVE=$P($G(^SDWL(409.3,REC,"SDAPT")),"^",1) ;ICR#: 6046 SDWL(409.3
  1. .;I ENRSTAT1'="" S ENRSTAT=$S(ENRSTAT1="N":"NEW",ENRSTAT1="E":"ESTABLISHED",ENRSTAT1="P":"PRIOR",ENRSTAT1="U":"UNDETERMINED",1:"UNKNOWN")
  1. .;I PRIOR'="" S PRIOR1=$S(PRIOR="A":"ASAP",PRIOR="F":"FUTURE",1:0)
  1. .S RESULTS(CNT)=DFN_U_$G(STPCODE)_U_$G(LASTUPDT)_U_$G(PTNAME)_U_$G(SSN)_U_$G(CLINNAME)_U_$G(ORIGDT)_U_$G(DESIRED)_U_$G(DAYSON)_U_$G(DTREMOVE)_U_$G(ZIP)_U_$G(SC)_U_$G(ENRSTAT)_U_$G(PRIOR1)_U_$G(CLINIEN)_U_$G(REC),CNT=CNT+1
  1. .D KVA^VADPT
  1. .K NODE,%,ORIGDT,LASTUPDT,DAYSON,PTNAME,LASTNAME,SSN
  1. .K DESIRED,CLINIEN,PTR,CLINNAME,STOPPTR,STPCODE,PRIOR,ENRSTAT,SC,ENRSTAT1,PRIOR1
  1. K REC,CNT,REC,DFN
  1. Q
  1. EDITNEAR(RESULTS,DFN,STATUS,COMM) ;Edit a patient on the NEAR List MBAA RPC: MBAA UPDATE NEAR LIST
  1. ;Called by the RPC ZSD EDIT NEAR
  1. ;Input:
  1. ; DFN = Patient DFN
  1. ; STATUS = Set of codes:
  1. ; C = Cancelled
  1. ; E = EWL - Moved to the EWL
  1. ; F = Filled
  1. ; I = In Process/Veteran Contacted
  1. ; COMM = Comments. Required if the status is cancelled, otherwise it is optional
  1. ;Output: RESULTS(0)="0^Patient NEAR List entry updated." if the update was successful
  1. ; RESULTS(0)="1^Patient is not on the NEAR List."
  1. ; RESULTS(0)="1^DFN was not provided."
  1. ; RESULTS(0)="1^Status is null. Status is a required field."
  1. ; RESULTS(0)="1^Could not update the record."
  1. ; RESULTS(0)="1^Patient record is locked, try again later."
  1. S RESULTS(0)=""
  1. I $G(DFN)="" S RESULTS(0)="1^DFN was not provided." Q
  1. I $G(STATUS)="" S RESULTS(0)="1^Status is null. Status is a required field." Q
  1. I $D(^DPT(DFN,1010.16)) D ;ICR#: 6053 DPT
  1. .I $P(^DPT(DFN,1010.16),U,1)'="" S ERR=1 ;ICR#: 6053 DPT
  1. I $G(ERR)=1 S RESULTS(0)="1^Patient is not on the NEAR List." Q
  1. I '$$GET1^DIQ(2,DFN,1010.159,"I") S RESULTS(0)="1^Patient is not on the NEAR List." Q
  1. D NOW^%DTC
  1. L +^DPT(DFN):10 I '$TEST S ERR=1,RESULTS(0)="1^Patient record is locked, try again later." Q ;ICR#: 6053 DPT
  1. S DA=DFN,DIE="^DPT(",DR="1010.161///"_$G(STATUS)_";1010.163///"_$G(COMM) D ^DIE
  1. L -^DPT(DFN) ;ICR#: 6053 DPT
  1. K DA,DIE,DR
  1. ;I $P($G(^DPT(DFN,1010.16)),"^")='$G(STATUS) S ERR=1
  1. ;I $P($G(^DPT(DFN,1010.16)),"^",2)'=% S ERR=1
  1. I $P($G(^DPT(DFN,1010.16)),"^")=$G(STATUS) S RESULTS(0)="0^Patient removed from NEAR List." ;ICR#: 6053 DPT
  1. ;I $G(ERR)=1 S RESULTS(0)="1^Could not update the record." Q
  1. S RESULTS(0)="0^Patient NEAR List entry updated."
  1. Q