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

ORLPREM.m

Go to the documentation of this file.
ORLPREM ;ISP/LMT,AGP - CPRS Team List from a Reminder Patient List ;Apr 21, 2021@22:16:19
 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**377,498**;Dec 17, 1997;Build 38
 ;
 ;
ENTASK ;
 ;
 ; ZEXCEPT: ZTREQ
 ;
 N ORLISTDUE,ORLSTMAP,ORREM
 ;
 S ZTREQ="@"
 ;
 D GETDUE(.ORLISTDUE)
 ;
 S ORREM=0
 F  S ORREM=$O(ORLISTDUE(ORREM)) Q:'ORREM  D
 . M ORLSTMAP=ORLISTDUE(ORREM)
 . D EN(ORREM,.ORLSTMAP)
 ;
 Q
 ;
ENONE ;
 ;
 ; ZEXCEPT: ORLSTMAP,ORREM,ZTREQ
 S ZTREQ="@"
 ;
 D EN(ORREM,.ORLSTMAP)
 Q
 ;
EN(ORREM,ORLSTMAP) ;
 ;
 N DFN,ORCNT,ORDIV,ORERR,ORFDA,ORIENS,ORLST,OROVER,ORPL,ORREMNM,ORSCRBYDIV,ORX
 ;
 S ORSCRBYDIV=0
 S ORREMNM=$P($G(^PXRM(810.4,+ORREM,0)),U,1)
 I ORREMNM="" Q
 ;
 I $O(ORLSTMAP("SYS"),-1) S ORSCRBYDIV=1
 ;
 ; Get Reminder Patient List
 S OROVER=$$GETOVER^ORLPREML(ORREM)
 D GETRMLST^ORBSMART(.ORPL,ORREMNM,OROVER,0)
 ;
 ; Set FDA array to populate 100.21
 S ORCNT=0
 S DFN=0
 F  S DFN=$O(ORPL(DFN)) Q:'DFN  D
 . S ORCNT=ORCNT+1
 . I 'ORSCRBYDIV D
 . . S ORLST=$G(ORLSTMAP("SYS"))
 . . I 'ORLST Q
 . . S ORIENS="+"_ORCNT_","_ORLST_","
 . . S ORFDA(ORLST,100.2101,ORIENS,.01)=DFN_";DPT("
 . I ORSCRBYDIV D
 . . S ORDIV=$$GETDIV(DFN)
 . . I ORDIV,$G(ORLSTMAP(ORDIV)) D
 . . . S ORLST=ORLSTMAP(ORDIV)
 . . . S ORIENS="+"_ORCNT_","_ORLST_","
 . . . S ORFDA(ORLST,100.2101,ORIENS,.01)=DFN_";DPT("
 . . I $G(ORLSTMAP("SYS")),'ORDIV D
 . . . S ORLST=ORLSTMAP("SYS")
 . . . S ORIENS="+"_ORCNT_","_ORLST_","
 . . . S ORFDA(ORLST,100.2101,ORIENS,.01)=DFN_";DPT("
 ;
 S ORX=""
 F  S ORX=$O(ORLSTMAP(ORX)) Q:ORX=""  D
 . S ORLST=$G(ORLSTMAP(ORX))
 . I 'ORLST Q
 . D CLEAN^DILF
 . ;
 . L +^OR(100.21,ORLST):999
 . D PRGLST(ORLST)
 . ; p498 - in case there were no members on the list before and no members were added, force set 12.1
 . S ORFDA(ORLST,100.21,ORLST_",",12.1)=$$NOW^XLFDT
 . S ORFDA(ORLST,100.21,ORLST_",",12.2)=ORREM_";PXRM(810.4,"
 . D UPDATE^DIE("","ORFDA("_ORLST_")")
 . L -^OR(100.21,ORLST)
 . ;
 . I $D(^TMP("DIERR",$J)) D
 . . D MSG^DIALOG("AE",.ORERR)
 . . D SENDMSG("Error while filing patients to 100.21",.ORERR,ORREMNM,$P($G(^OR(100.21,ORLST,0)),U,1))
 ;
 D CLEAN^DILF
 ;
 D EN^XPAR("SYS","ORLP TEAM LIST FROM REM LAST","`"_ORREM,$$NOW^XLFDT)
 ;
 Q
 ;
PRGLST(ORLST) ; Clear existing list of patients
 ;
 N DA,DIK,ORMEM
 ;
 S ORMEM=0
 F  S ORMEM=$O(^OR(100.21,ORLST,10,ORMEM)) Q:'ORMEM  D
 . S DA=ORMEM
 . S DA(1)=ORLST
 . S DIK="^OR(100.21,"_DA(1)_",10,"
 . D ^DIK
 ;
 Q
 ;
GETDIV(DFN) ;
 ;
 N ORDIV,ORDIVS,ORPCP,ORX
 ;
 S ORDIV=""
 ;
 ; PCP Institution
 S ORPCP=+$$OUTPTPR^SDUTL3(DFN)
 I ORPCP D
 . S ORX=$$DIV4^XUSER(.ORDIVS,ORPCP)
 . I 'ORX S ORDIV=$$KSP^XUPARAM("INST")
 . I ORX D
 . . S ORDIV=$O(ORDIVS(0))
 . . I $O(ORDIVS(ORDIV)) S ORDIV=""  ;PCP assigned more than one DIV
 ;
 I ORDIV Q ORDIV
 ;
 ; Team's Institution
 S ORDIV=$P($$INSTPCTM^SCAPMC(DFN),U,3)
 I ORDIV Q ORDIV
 ;
 ; Preferred Facility
 S ORDIV=$$PREF^DGENPTA(DFN)
 ;
 Q ORDIV
 ;
SENDMSG(ORERR,ORERRARR,ORREM,ORLST) ;
 ;
 ; ZEXCEPT: XQY0,ZTSK
 N ORCNT,ORI,ORINSTR,ORLST,ORREM,ORSUB,ORTO
 K ^TMP("ORMSG",$J)
 ;
 S ORCNT=0
 S ORCNT=ORCNT+1,^TMP("ORMSG",$J,ORCNT)="There was an issue while updating the CPRS Team List from a"
 S ORCNT=ORCNT+1,^TMP("ORMSG",$J,ORCNT)="Reminder Patient List."
 S ORCNT=ORCNT+1,^TMP("ORMSG",$J,ORCNT)=" "
 S ORCNT=ORCNT+1,^TMP("ORMSG",$J,ORCNT)="Task ID: "_$G(ZTSK)
 S ORCNT=ORCNT+1,^TMP("ORMSG",$J,ORCNT)="Option: "_$P($G(XQY0),U,2)
 S ORCNT=ORCNT+1,^TMP("ORMSG",$J,ORCNT)="Error: "_$G(ORERR)
 S ORCNT=ORCNT+1,^TMP("ORMSG",$J,ORCNT)="Reminder Patient List: "_$G(ORREM)
 S ORCNT=ORCNT+1,^TMP("ORMSG",$J,ORCNT)="OE/RR List: "_$G(ORLST)
 ;
 I $D(ORERRARR) D
 . S ORCNT=ORCNT+1,^TMP("ORMSG",$J,ORCNT)=" "
 . S ORCNT=ORCNT+1,^TMP("ORMSG",$J,ORCNT)="Error Details:"
 . S ORI=0
 . F  S ORI=$O(ORERRARR(ORI)) Q:'ORI  D
 . . S ORCNT=ORCNT+1,^TMP("ORMSG",$J,ORCNT)=$G(ORERRARR(ORI))
 ;
 S ORSUB="Error Updating CPRS Team List"
 S ORTO(DUZ)=""
 S ORTO("G.OR CACS")=""
 S ORINSTR("FROM")="CPRS TASKED JOB"
 S ORINSTR("ADDR FLAGS")="R"
 D SENDMSG^XMXAPI(DUZ,ORSUB,"^TMP(""ORMSG"",$J)",.ORTO,.ORINSTR,.ORMSGNUM)
 ;
 Q
 ;
GETDUE(ORLISTDUE) ;
 ;
 N ORFREQ,ORLASTRUN,ORNEXTRUN,ORREM
 ;
 K ^TMP("ORLPREM",$J)
 ;
 D GETAPARS^ORLPREML("I")
 S ORREM=0
 F  S ORREM=$O(^TMP("ORLPREM",$J,ORREM)) Q:'ORREM  D
 . S ORLASTRUN=$$GETLAST^ORLPREML(ORREM)
 . S ORFREQ=$$GETFREQ^ORLPREML(ORREM)
 . ;
 . I 'ORFREQ Q
 . I 'ORLASTRUN D  Q
 . . M ORLISTDUE(ORREM)=^TMP("ORLPREM",$J,ORREM)
 . ;
 . S ORNEXTRUN=$$FMADD^XLFDT($P(ORLASTRUN,".",1),ORFREQ)
 . I ORNEXTRUN=DT!(ORNEXTRUN<DT) D
 . . M ORLISTDUE(ORREM)=^TMP("ORLPREM",$J,ORREM)
 ;
 K ^TMP("ORLPREM",$J)
 ;
 Q
 ;