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

ORPDMPHS.m

Go to the documentation of this file.
  1. ORPDMPHS ;ISP/LMT - PDMP Health Summary Extract ;Apr 24, 2020@13:27:55
  1. ;;3.0;ORDER ENTRY/RESULTS REPORTING;**519,550**;Dec 17, 1997;Build 1
  1. ;
  1. ; This routine uses the following ICRs:
  1. ; 3062 - MAIN^TIULAPIS (controlled)
  1. ;
  1. Q
  1. ;
  1. EN(ORRETURN,DFN,ORFILTER) ;
  1. ;
  1. ; Input:
  1. ; DFN - Patient (#2) IEN
  1. ; ORFILTER - Array (Passed by reference). Can filter extract using the values below. Each filter can
  1. ; include more than one value. Example: ORFILTER("STATUS")="EXN".
  1. ; ORFILTER("STATUS") = E: Error Query; Z: Error Report; C:Canceled Query; X:Canceled Report; N:Never Reviewed;
  1. ; A: Auto Created Note; M: Manually Created Note
  1. ; (Optional; Defaults to "EZCXNAM")
  1. ; ORFILTER("DATES") = StartDT:EndDT (Optional; Defaults to all dates)
  1. ; ORFILTER("SHARED") = 1/0 (Optional; Defaults to "10")
  1. ;
  1. ; Output:
  1. ; ^TMP("ORPDMPHS",$J,SUB1,SUB2)=Query D/T_U_User_U_Delegate Of_U_Status (Cancelled, Error, Never Viewed Report, Reviewed Report)_U_Disclosed To
  1. ;
  1. N ORAUTHORIZED,ORCNT,ORDISCTO,ORENDDT,ORIEN,ORNODE0,ORQIEN,ORQUERYDT,ORSHARED,ORSTARTDT,ORSTATUS,ORSUB,ORSUMSTAT,ORVIEWED
  1. ;
  1. S ORSUB="ORPDMPHS"
  1. K ^TMP(ORSUB,$J)
  1. S ORRETURN=$NA(^TMP(ORSUB,$J))
  1. S ORCNT=0
  1. ;
  1. I $G(DFN)="" Q
  1. I $G(ORFILTER("STATUS"))="" S ORFILTER("STATUS")="EZCXNAM"
  1. I $G(ORFILTER("SHARED"))="" S ORFILTER("SHARED")=10
  1. S ORDISCTO=$$GET^XPAR("ALL","OR PDMP DISCLOSED TO","A","I")
  1. ;
  1. S ORIEN=$O(^ORD(101.62,"B",DFN,0))
  1. ;OR 550 run manual even if not in 101.62
  1. ;I 'ORIEN Q
  1. I ORIEN D
  1. .S ORSTARTDT=$P($G(ORFILTER("DATES")),":",1)
  1. .I 'ORSTARTDT S ORSTARTDT=1
  1. .S ORENDDT=$P($G(ORFILTER("DATES")),":",2)
  1. .I 'ORENDDT S ORENDDT=9999999
  1. .I $P(ORENDDT,".",2)="" S ORENDDT=ORENDDT+.24
  1. .S ORQUERYDT=ORSTARTDT-.0000001
  1. .F S ORQUERYDT=$O(^ORD(101.62,ORIEN,1,"B",ORQUERYDT)) Q:'ORQUERYDT!(ORQUERYDT>ORENDDT) D
  1. .. S ORQIEN=0
  1. .. F S ORQIEN=$O(^ORD(101.62,ORIEN,1,"B",ORQUERYDT,ORQIEN)) Q:'ORQIEN D
  1. ... S ORNODE0=$G(^ORD(101.62,ORIEN,1,ORQIEN,0))
  1. ... S ORSTATUS=$P(ORNODE0,U,4)
  1. ... S ORSHARED=+$P(ORNODE0,U,5)
  1. ... S ORVIEWED=$P(ORNODE0,U,7)
  1. ... S ORAUTHORIZED=$P(ORNODE0,U,8)
  1. ... ;
  1. ... S ORSUMSTAT=$$GETSTAT(ORSTATUS,ORVIEWED)
  1. ... I ORSUMSTAT="" Q
  1. ... I ORFILTER("STATUS")'[$P(ORSUMSTAT,U,1) Q
  1. ... I ORFILTER("SHARED")'[ORSHARED Q
  1. ... ;
  1. ... S ORCNT=ORCNT+1
  1. ... S ^TMP(ORSUB,$J,ORQUERYDT,ORQIEN)=ORQUERYDT_U_$P(ORNODE0,U,2)_U_$S(ORAUTHORIZED:"",1:$P(ORNODE0,U,3))_U_$P(ORSUMSTAT,U,2)_U_ORDISCTO
  1. ;
  1. I ORFILTER("STATUS")["M" D
  1. . D ADDMANUAL(ORSUB,DFN,$G(ORFILTER("DATES")))
  1. ;
  1. Q
  1. ;
  1. ; Get query status
  1. GETSTAT(ORSTATUS,ORVIEWED) ;
  1. I ORVIEWED="QCANCEL" Q "C^Canceled Query"
  1. I ORVIEWED="RCANCEL" Q "X^Canceled Report"
  1. I ORSTATUS<1 Q "E^Error Query"
  1. I ORVIEWED="ERROR" Q "Z^Error Report"
  1. I ORSTATUS>0,ORVIEWED="NO" Q "N^Never Viewed Report"
  1. I ORSTATUS>0,ORVIEWED="YES" Q "A^Note Auto Created"
  1. Q ""
  1. ;
  1. ; Add manually created PDMP notes to ^TMP result
  1. ADDMANUAL(ORSUB,DFN,ORDATES) ;
  1. ;
  1. N ORAUTHOR,ORAUTHORIZED,ORCOSIG,ORDATE,ORDATE1,ORDATE2,ORDISCTO,ORDOC,ORI,ORIDT,ORSTATUS
  1. ;
  1. K ^TMP("TIU",$J)
  1. ;
  1. S ORDATE2=$P($G(ORDATES),":",1)
  1. I ORDATE2 S ORDATE2=9999999-ORDATE2
  1. S ORDATE1=$P($G(ORDATES),":",2)
  1. I ORDATE1 S ORDATE1=(9999999-ORDATE1)
  1. S ORSTATUS="COMPLETED"
  1. S ORDOC(1)=$$GETNOTE^ORPDMPNT
  1. D MAIN^TIULAPIS(DFN,.ORDOC,.ORSTATUS,ORDATE1,ORDATE2,999,1) ; ICR 3062
  1. ;
  1. S ORDISCTO=$$GET^XPAR("ALL","OR PDMP DISCLOSED TO","M","I")
  1. S ORIDT=0
  1. F S ORIDT=$O(^TMP("TIU",$J,ORIDT)) Q:'ORIDT D
  1. . S ORI=0
  1. . F S ORI=$O(^TMP("TIU",$J,ORIDT,ORI)) Q:'ORI D
  1. . . S ORDOC=0
  1. . . F S ORDOC=$O(^TMP("TIU",$J,ORIDT,ORI,ORDOC)) Q:'ORDOC D
  1. . . . S ORAUTHOR=$G(^TMP("TIU",$J,ORIDT,ORI,ORDOC,1202,"I"))
  1. . . . I 'ORAUTHOR Q
  1. . . . S ORCOSIG=$G(^TMP("TIU",$J,ORIDT,ORI,ORDOC,1208,"I"))
  1. . . . S ORDATE=$G(^TMP("TIU",$J,ORIDT,ORI,ORDOC,1301,"I"))
  1. . . . I 'ORDATE Q
  1. . . . ; Check if note was auto created - if it was it would be in 101.62
  1. . . . I '$D(^ORD(101.62,"AT",ORDOC)) D
  1. . . . . S ORAUTHORIZED=$$ISAUTH^ORPDMP(ORAUTHOR)
  1. . . . . S ^TMP(ORSUB,$J,ORDATE,ORDOC_"M")=ORDATE_U_ORAUTHOR_U_$S(ORAUTHORIZED:"",ORCOSIG:ORCOSIG,1:"<See Note>")_U_"Note Manually Created"_U_ORDISCTO
  1. ;
  1. K ^TMP("TIU",$J)
  1. ;
  1. Q