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

ORWPCE1.m

Go to the documentation of this file.
  1. ORWPCE1 ;ISL/KCM,JER - PCE Calls from CPRS GUI ;Feb 12, 2024@14:45
  1. ;;3.0;ORDER ENTRY/RESULTS REPORTING;**10,85,116,132,148,187,190,215,243,280,306,361,501,559,405,598,606**;Dec 17, 1997;Build 3
  1. ;
  1. ; Reference to DSELECT^GMPLENFM, ^TMP("IB",$J) in ICR #1365
  1. ; Reference to $$DATA2PCE^PXAPI in ICR #1893
  1. ; Reference to $$DELVFILE^PXAPI in ICR #1890
  1. ; Reference to DQSAVE^PXRPC in ICR #6023
  1. ; Reference to $$NOW^XLFDT in ICR #5747
  1. ; Reference to FILE^TIUSRVP in ICR #3540
  1. ; Reference to $$ISADDNDM^TIULC1 in ICR #2323
  1. ; Reference to FINDVISIT^PXUTLVST in ICR #7435
  1. ; Reference to ^TIU(8925, in ICR #2937
  1. ; Reference to ^AUPNVSIT( in ICR #2028
  1. ;
  1. GETVSIT(VSTR,DFN) ; lookup a visit
  1. ; Return Visit IEN if there is a Visit that matches the input; otherwise return 0.
  1. N ORDTE,ORLOC,ORSVC,ORVISIT,ORVISITLIST
  1. S ORVISIT=0
  1. I '$G(DFN)!($G(VSTR)="") Q ORVISIT
  1. ;
  1. S ORLOC=$P(VSTR,";")
  1. S ORDTE=$P(VSTR,";",2)
  1. S ORSVC=$P(VSTR,";",3)
  1. D FINDVISIT^PXUTLVST(DFN,ORDTE,ORLOC,ORSVC,"","","","",1,.ORVISITLIST)
  1. I $G(ORVISITLIST(0))>0 S ORVISIT=$G(ORVISITLIST(1))
  1. ;
  1. Q ORVISIT
  1. ;
  1. DQSAVE(ORRESULT,PCELIST,NOTEIEN,GMPLUSER,ORLOC) ; Background Call to DATA2PCE IA#6443
  1. I $D(ZTQUEUED) S ZTREQ="@"
  1. N PKG,PKGNAME,ORPXAPI,ORPCELST,ORPROBLS,ORPXDEL,PKGNAME,PROBLEM,PXAPREDT,PXNODE,PXVSTR,SRC,X,ORAVST,ORPXIMMRD,OK
  1. N DFN,ERRARR,ERRPROB
  1. S ORAVST=$P($G(PCELIST(1)),U,5) I +ORAVST S $P(PCELIST(1),U,5)=""
  1. I +ORAVST>0 D
  1. .S PXNODE=$G(^AUPNVSIT(ORAVST,0))
  1. .S PXVSTR=$P(PXNODE,U,6)_";"_$P(PXNODE,U)_";"_$P(PXNODE,U,7)
  1. .I $P(PXNODE,U,7)'="H" Q
  1. .I PXVSTR'=$P($G(PCELIST(1)),U,4) S ORAVST=-1
  1. I +ORAVST<1 S ORAVST=""
  1. S PKGNAME="ORDER ENTRY/RESULTS REPORTING"
  1. S PKG=$O(^DIC(9.4,"B","ORDER ENTRY/RESULTS REPORTING",0))
  1. S SRC="TEXT INTEGRATION UTILITIES"
  1. M ORPCELST=PCELIST
  1. S ORRESULT(0)=1
  1. D DQSAVE^PXRPC(.ORPCELST,.ORPXAPI,.ORPROBLS,.SRC,.ORPXIMMRD)
  1. S DFN=ORPXAPI("ENCOUNTER",1,"PATIENT")
  1. S PXAPREDT=0
  1. I $D(ORPXAPI("PROVIDER")) S PXAPREDT=1
  1. D DQSAVE1
  1. Q
  1. ;
  1. DQSAVE1 ;
  1. ;Remove any problems to add that the patient already has as active problems
  1. I $D(ORPROBLS),$D(DFN) D
  1. . N ORWPROB,ORPROBIX
  1. . K ^TMP("IB",$J,"INTERFACES","GMP SELECT PATIENT ACTIVE PROBLEMS")
  1. . D DSELECT^GMPLENFM ;DBIA 1365
  1. . S ORPROBIX=0
  1. . F S ORPROBIX=$O(^TMP("IB",$J,"INTERFACES","GMP SELECT PATIENT ACTIVE PROBLEMS",ORPROBIX)) Q:'ORPROBIX D ;DBIA 1365
  1. .. S ORWPROB=$P(^TMP("IB",$J,"INTERFACES","GMP SELECT PATIENT ACTIVE PROBLEMS",ORPROBIX),"^",2,3)
  1. .. S ORWPROB($S($E(ORWPROB,1)="$":$E(ORWPROB,2,255),1:ORWPROB))=""
  1. . K ^TMP("IB",$J,"INTERFACES","GMP SELECT PATIENT ACTIVE PROBLEMS")
  1. . Q:'$D(ORWPROB)
  1. . S ORPROBIX=""
  1. . F S ORPROBIX=$O(ORPROBLS(ORPROBIX)) Q:'ORPROBIX D
  1. .. S:$D(ORWPROB(ORPROBLS(ORPROBIX))) ORPXAPI("DX/PL",ORPROBIX,"PL ADD")=0
  1. ;
  1. I $$MDS(.ORPXAPI,$G(ORLOC)) D
  1. .N ORTIME
  1. .S ORTIME=$$NOW^XLFDT
  1. .S ORPXAPI("ENCOUNTER",1,"CHECKOUT D/T")=ORTIME
  1. DATA2PCE ;
  1. N TIEN,VISITOK,X0,X12
  1. S OK=$$DATA2PCE^PXAPI("ORPXAPI",PKG,SRC,.ORAVST,DUZ,0,.ERRARR,PXAPREDT,.ERRPROB)
  1. S VISITOK=$S(OK=1:1,(OK=-1)&(+ORAVST>0):1,(OK=-5)&(+ORAVST>0):1,1:0)
  1. I OK<0,OK'=-5 D ERROR(.ORRESULT,.ERRARR,.ERRPROB) ;S ORRESULT(0)=OK
  1. S ORRESULT(0)=$S(VISITOK=1:1,1:OK)
  1. S $P(ORRESULT(0),U,2)=ORAVST
  1. ;NOTEIEN only set on inpatient encounters.
  1. I VISITOK,+NOTEIEN,$P($G(^TIU(8925,+NOTEIEN,0)),U,13)="H" D
  1. .N OROK,ORX
  1. .S ORX(1207)=ORAVST
  1. .D FILE^TIUSRVP(.OROK,NOTEIEN,.ORX,1)
  1. .I '$$ISADDNDM^TIULC1(NOTEIEN) Q
  1. .S X0=$G(^TIU(8925,NOTEIEN,0))
  1. .I +$P(X0,U,6)>0 D
  1. ..S TIEN=+$P(X0,U,6)
  1. ..S X12=$G(^TIU(8925,TIEN,12))
  1. ..I $P(X12,U,7)>0 Q
  1. ..S ORX(1207)=ORAVST
  1. ..D FILE^TIUSRVP(.OROK,TIEN,.ORX,1)
  1. .I OROK'=1 S ORCNT=1+$O(ORRESULT("?"),-1),ORRESULT(ORCNT)=$P(OROK,U,2)
  1. S ZTSTAT=0 ; clear sync flag
  1. ;.N OROK,ORCNT
  1. ;.D LNKSVST^TIUPXAP3(.OROK,DFN,NOTEIEN,ORAVST)
  1. ;I OROK'=1 S ORCNT=1+$O(RESULT("?"),-1),RESULT(ORCNT)=$P(OROK,U,2)
  1. ; Save imm smallpox reading.
  1. ; Need separate DATA2PCE call, as it is tied to a different Visit.
  1. I $D(ORPXIMMRD) D
  1. . N CNT,ORERROR,ORVISIT,OK,ERRARR,ERRPROB
  1. . S ORERROR=$G(ORPXIMMRD("IMMUNIZATION",1,"ERROR"))
  1. . S ORVISIT=$G(ORPXIMMRD("IMMUNIZATION",1,"VISIT"))
  1. . K ORPXIMMRD("IMMUNIZATION",1,"ERROR"),ORPXIMMRD("IMMUNIZATION",1,"VISIT")
  1. . I ORERROR'="" D Q
  1. . . S CNT=+$O(ORRESULT(""),-1)
  1. . . S CNT=CNT+1
  1. . . S ORRESULT(CNT)=" "
  1. . . S CNT=CNT+1
  1. . . S ORRESULT(CNT)=ORERROR
  1. . I 'ORVISIT Q
  1. . S OK=$$DATA2PCE^PXAPI("ORPXIMMRD",PKG,SRC,.ORVISIT,DUZ,0,.ERRARR,"",.ERRPROB)
  1. . I OK<0,OK'=-5 D
  1. . . S CNT=+$O(ORRESULT(""),-1)
  1. . . S CNT=CNT+1
  1. . . S ORRESULT(CNT)=" "
  1. . . D ERROR(.ORRESULT,.ERRARR,.ERRPROB)
  1. . . I +$G(ORRESULT(0))>0 S $P(ORRESULT(0),U,1)=OK
  1. ;
  1. Q
  1. ;
  1. ERROR(ORRESULT,ERRARR,ERRPROB) ;
  1. N CNT,IDX,MSG
  1. S CNT=+$O(ORRESULT(""),-1)
  1. I $D(ERRARR) D
  1. .D ACOPY^ORERRH("ERRARR","MSG()")
  1. .S IDX=0 F S IDX=$O(MSG(IDX)) Q:IDX'>0 S CNT=CNT+1,ORRESULT(CNT)=$P(MSG(IDX),"=",2,10)
  1. K OUTPUT
  1. I $D(ERRPROB),'$D(ERRARR) D
  1. .D ACOPY^ORERRH("ERRPROB","MSG()")
  1. .S IDX=0 F S IDX=$O(MSG(IDX)) Q:IDX'>0 S CNT=CNT+1,ORRESULT(CNT)=$P(MSG(IDX),"=",2,10)
  1. Q
  1. ;
  1. MDS(X,ORLOC) ; return TRUE if checkout is needed
  1. I $$CHKOUT^ORWPCE2(ORLOC) Q 1
  1. N I,ORAUTO,OROK
  1. S (OROK,I)=0
  1. F S I=$O(X("DX/PL",I)) Q:'I D Q:OROK
  1. . I $G(X("DX/PL",I,"DIAGNOSIS")) S OROK=1
  1. I 'OROK D
  1. .S I=0 F S I=$O(X("PROCEDURE",I)) Q:'I D Q:OROK
  1. .. I $G(X("PROCEDURE",I,"PROCEDURE")) S OROK=1
  1. I $D(X("PROVIDER",1,"NAME")) S OROK=1
  1. Q OROK
  1. NONCOUNT(ORY,ORLOC) ; Is the location a non-count clinic? (DBIA #964)
  1. Q:'ORLOC
  1. S ORY=$S($P($G(^SC(ORLOC,0)),U,17)="Y":1,1:0)
  1. Q
  1. ;