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

SDES2GREQSINST.m

Go to the documentation of this file.
  1. SDES2GREQSINST ;ALB/BWF - SDES2 get all appointment requests by institution ;JUL 18, 2023
  1. ;;5.3;Scheduling;**853,877**;Aug 13, 1993;Build 14
  1. ;;Per VHA Directive 6402, this routine should not be modified
  1. ;
  1. Q
  1. ;
  1. ; INPUT
  1. ;
  1. ; SDCONTEXT Array
  1. ;
  1. ; SDAPPTREQS("STATION NUMBER") - (optional) - Institution Station Number
  1. ; SDAPPTREQS("NUMBER") - (optional) - the number of records to find for each appointment request type
  1. ; consult/procedure, appointment request, and recall.
  1. ;
  1. GETREQUESTS(RESULTS,SDCONTEXT,SDAPPTREQS) ;
  1. N CONSIEN,CPRSSTAT,CONSTATACTIVE,CONSCNT,CONSDTTM,NUMRECORDS,CONSTATPENDING,APPTREQIEN,RECALLDTTM,RECALLIEN,REQUEST,RECALLCNT
  1. N DFN,RECALLUSER,RECALLIEN,RECALLPTR,CONSPTR,APPTREQCNT,APPTREQDTTM,APPTREQIEN,APPTREQPTR,DATELOOP,IENLOOP
  1. N RECORDIEN,RECORDPTR,GMRCNT,ERRORS,APPTREQENTERED,STAT,INST,CONSINST,RECALLCLIN,RECALLDIV,RECALLINST,STATION,VALSTAT,SDDUZ
  1. K ^TMP("SDES2GREQSINST",$J)
  1. ; validate context array
  1. D VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
  1. I $D(ERRORS) S ERRORS("Request",1)="" D BUILDJSON^SDES2JSON(.RESULTS,.ERRORS) Q
  1. S SDDUZ=$S($G(SDCONTEXT("USER DUZ"))'="":SDCONTEXT("USER DUZ"),1:DUZ)
  1. ; validate input array
  1. S STATION=$G(SDAPPTREQS("STATION NUMBER"))
  1. S INST=$$IEN^XUAF4(STATION)
  1. I STATION]"",'INST D ERRLOG^SDES2JSON(.ERRORS,197)
  1. S NUMRECORDS=$G(SDAPPTREQS("NUMBER"))
  1. I NUMRECORDS D VALNUMBERRNG^SDES2VALUTIL(.VALSTAT,.ERRORS,NUMRECORDS,1,200,,,504)
  1. I $D(ERRORS) S ERRORS("Request",1)="" D BUILDJSON^SDES2JSON(.RESULTS,.ERRORS) Q
  1. I 'NUMRECORDS S NUMRECORDS=200
  1. ; get the consults
  1. S CONSTATACTIVE=$O(^ORD(100.01,"B","ACTIVE",0))
  1. S CONSTATPENDING=$O(^ORD(100.01,"B","PENDING",0))
  1. F STAT=CONSTATACTIVE,CONSTATPENDING D
  1. .; set CONSCNT here so we get at least NUMRECORDS for each status, allowing us to get a mixture from both pending and active status
  1. .S (CONSIEN,CONSCNT)=0
  1. .F S CONSIEN=$O(^GMR(123,"D",STAT,CONSIEN)) Q:'CONSIEN!(CONSCNT>NUMRECORDS) D
  1. ..S CONSDTTM=$$GET1^DIQ(123,CONSIEN,.01,"I")
  1. ..S CONSINST=$$GET1^DIQ(123,CONSIEN,.05,"I")
  1. ..I INST,CONSINST,(CONSINST'=INST) Q
  1. ..S CONSCNT=CONSCNT+1
  1. ..S CONSPTR=CONSIEN_";GMR(123,"
  1. ..S ^TMP("SDES2GREQSINST",$J,CONSDTTM,CONSPTR)=""
  1. ; get recalls
  1. S RECALLCNT=0
  1. S RECALLDTTM=0 F S RECALLDTTM=$O(^SD(403.5,"AC",RECALLDTTM)) Q:'RECALLDTTM!(RECALLCNT=NUMRECORDS)!(RECALLCNT>NUMRECORDS) D
  1. .S RECALLUSER=0 F S RECALLUSER=$O(^SD(403.5,"AC",RECALLDTTM,RECALLUSER)) Q:'RECALLUSER!(RECALLCNT=NUMRECORDS)!(RECALLCNT>NUMRECORDS) D
  1. ..S RECALLIEN=0 F S RECALLIEN=$O(^SD(403.5,"AC",RECALLDTTM,RECALLUSER,RECALLIEN)) Q:'RECALLIEN!(RECALLCNT>NUMRECORDS) D
  1. ...S RECALLCLIN=$$GET1^DIQ(403.5,RECALLIEN,4.5,"I")
  1. ...S RECALLDIV=$$GET1^DIQ(44,RECALLCLIN,3.5,"I")
  1. ...S RECALLINST=$$GET1^DIQ(40.8,RECALLDIV,.07,"I")
  1. ...I INST,INST'=RECALLINST Q
  1. ...S RECALLCNT=RECALLCNT+1
  1. ...S RECALLPTR=RECALLIEN_";SD(403.5,"
  1. ...S ^TMP("SDES2GREQSINST",$J,RECALLDTTM,RECALLPTR)=""
  1. ; get appointment requests
  1. S APPTREQCNT=0
  1. S APPTREQDTTM=0 F S APPTREQDTTM=$O(^SDEC(409.85,"E","O",APPTREQDTTM)) Q:'APPTREQDTTM!(APPTREQCNT=NUMRECORDS)!(APPTREQCNT>NUMRECORDS) D
  1. .S APPTREQIEN=0 F S APPTREQIEN=$O(^SDEC(409.85,"E","O",APPTREQDTTM,APPTREQIEN)) Q:'APPTREQIEN!(APPTREQCNT=NUMRECORDS)!(APPTREQCNT>NUMRECORDS) D
  1. ..S APPTREQENTERED=$$GET1^DIQ(409.85,APPTREQIEN,9.5,"I")
  1. ..I INST,INST'=$$GET1^DIQ(409.85,APPTREQIEN,2,"I") Q
  1. ..S APPTREQCNT=APPTREQCNT+1
  1. ..S APPTREQPTR=APPTREQIEN_";SDEC(409.85,"
  1. ..S ^TMP("SDES2GREQSINST",$J,APPTREQENTERED,APPTREQPTR)=""
  1. ; process results in ^TMP
  1. S GMRCNT=0
  1. S DATELOOP=0 F S DATELOOP=$O(^TMP("SDES2GREQSINST",$J,DATELOOP)) Q:'DATELOOP D
  1. .S IENLOOP="" F S IENLOOP=$O(^TMP("SDES2GREQSINST",$J,DATELOOP,IENLOOP)) Q:IENLOOP="" D
  1. ..S RECORDIEN=$P(IENLOOP,";")
  1. ..S RECORDPTR=$P(IENLOOP,";",2)
  1. ..I RECORDPTR["GMR(123" D Q
  1. ...Q:GMRCNT=NUMRECORDS!(GMRCNT>NUMRECORDS)
  1. ...S GMRCNT=GMRCNT+1
  1. ...D GETCONSULT^SDES2GETCONSULTS(.REQUEST,RECORDIEN,SDDUZ)
  1. ..I RECORDPTR["SD(403.5" D Q
  1. ...D GETRECALL^SDES2GETRECALL(.REQUEST,RECORDIEN,$$GET1^DIQ(403.5,RECORDIEN,.01,"I"),SDDUZ)
  1. ..I RECORDPTR["SDEC(409.85" D Q
  1. ...D GETREQUEST^SDES2GETAPPTREQ(.REQUEST,RECORDIEN,SDDUZ)
  1. I '$D(REQUEST) S REQUEST("Request",1)="" D BUILDJSON^SDES2JSON(.RESULTS,.REQUEST) K ^TMP("SDES2GREQSINST",$J) Q
  1. D BUILDJSON^SDES2JSON(.RESULTS,.REQUEST)
  1. K ^TMP("SDES2GREQSINST",$J)
  1. Q