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

PXAI.m

Go to the documentation of this file.
  1. PXAI ;ISL/JVS,PKR ISA/KWP,ESW - PCE DRIVING RTN FOR 'DATA2PCE' API ;01/26/2021
  1. ;;1.0;PCE PATIENT CARE ENCOUNTER;**15,74,69,102,111,112,130,164,168,215,211**;Aug 12, 1996;Build 454
  1. Q
  1. ;
  1. ;+ 1 2 3 4 5 6 7 8 9
  1. DATA2PCE(PXADATA,PXAPKG,PXASOURC,PXAVISIT,PXAUSER,PXANOT,ERRRET,PXAPREDT,PXAPROB,PXACCNT) ;+API to pass data for add/edit/delete to PCE.
  1. ;+ PXADATA (required)
  1. ;+ PXAPKG (required)
  1. ;+ PXASOURC (required)
  1. ;+ PXAVISIT (optional) is pointer to a visit for which the data is to
  1. ;+ be related. If the visit is not known then there must be
  1. ;+ the ENCOUNTER nodes needed to lookup/create the visit.
  1. ;+ PXAUSER (optional) this is a pointer to the user adding the data.
  1. ;+ PXANOT (optional) set to 1 if errors are to be displayed to the screen should only be set while writing and debugging the initial code.
  1. ;+ ERRRET (optional) passed by reference. If present will return PXKERROR
  1. ;+ array elements to the caller.
  1. ;+ PXAPREDT (optional) Set to 1 if you want to edit the Primary Provider
  1. ;+ only use if for the moment that editing is being done. (dangerous)
  1. ;+ PXAPROB (optional) A dotted variable name. When errors and
  1. ;+ warnings occur, They will be passed back in the form
  1. ;+ of an array with the general description of the problem.
  1. ;+ IF ERROR1 - (GENERAL ERRORS)
  1. ;+ PXAPROB($J,SUBSCRIPT,"ERROR1",PASSED IN 'FILE',PASSED IN FIELD,
  1. ;+ SUBSCRIPT FROM PXADATA)
  1. ;+ PXAPROB(23432234,2,"ERROR1","PROVIDER","NAME",7)="BECAUSE..."
  1. ;+ IF WARNING2 - (GENERAL WARNINGS)
  1. ;+ PXAPROB($J,SUBSCRIPT,"WARNING2",PASSED IN 'FILE',PASSED IN FIELD,
  1. ;+ SUBSCRIPT FROM PXADATA)
  1. ;+ PXAPROB(23432234,3,"WARNING2","PROCEDURE","QTY",3)="BECAUSE..."
  1. ;+ IF WARNING3 - (WARNINGS FOR SERVICE CONNECTION)
  1. ;+ PXAPROB($J,1,"WARNING3","ENCOUNTER",1,"AO")=REASON
  1. ;+ PXAPROB($J,1,"WARNING3","ENCOUNTER",1,"EC")=REASON
  1. ;+ PXAPROB($J,1,"WARNING3","ENCOUNTER",1,"IR")=REASON
  1. ;+ PXAPROB($J,1,"WARNING3","ENCOUNTER",1,"SC")=REASON
  1. ;+ PXAPROB($J,1,"WARNING3","ENCOUNTER",1,"MST")=REASON
  1. ;+ PXAPROB($J,1,"WARNING3","ENCOUNTER",1,"HNC")=REASON
  1. ;+ PXAPROB($J,1,"WARNING3","ENCOUNTER",1,"CV")=REASON
  1. ;+ PXAPROB($J,1,"WARNING3","ENCOUNTER",1,"SHAD")=REASON
  1. ;+ IF ERROR4 - (PROBLEM LIST ERRORS)
  1. ;+ PXAPROB($J,6,"ERROR4","PX/DL",(SUBSCRIPT FROM PXADATA))=REASON
  1. ;+ PXACCNT (optional) passed by reference. Returns the PFSS Account
  1. ; Reference if known. Returned as null if the PFSS Account
  1. ; Reference is located in the Order file(#100)
  1. ;+
  1. ;+
  1. ;+ Returns:
  1. ;+ 1 if no errors and process completely
  1. ;+ -1 if errors occurred but processed completely as possible
  1. ;+ -2 if could not get a visit
  1. ;+ -3 if called incorrectly
  1. ;+ -4 if cannot get a lock on the encounter
  1. ;+ -5 if there were only warnings
  1. ;
  1. NEW ;--NEW VARIABLES
  1. N NOVSIT,PXAK,DFN,PXAERRF,PXAERRW,PXADEC,PXELAP,PXASUB
  1. N PATIENT,VALQUIET,PRIMFND
  1. K PXAERROR,PXKERROR,PXAERR,PRVDR
  1. S PXASUB=0,VALQUIET=1
  1. ;Lookup or create Visit if it is not passed.
  1. I '$G(PXAVISIT),'$D(@PXADATA@("ENCOUNTER")) Q -3
  1. I $G(PXAUSER)="" S PXAUSER=DUZ
  1. K ^TMP("PXK",$J),^TMP("DIERR",$J),^TMP("PXAIADDPRV",$J)
  1. ;
  1. VST ;--VISIT
  1. I $G(PXAVISIT)'="" D VPTR^PXAIVSTV(PXAVISIT) I $G(PXAERRF) S PXAK=1 D ERR("VISIT",1) Q -2
  1. D VST^PXAIVST
  1. I $G(PXAVISIT)<0 Q -2
  1. I $G(PXAERRF) M ERRRET=PXKERROR D ERR("VISIT",1) K PXAERR Q $S(PXAERRF=4:-4,1:-2)
  1. ;
  1. SOURCE ;--Validate PACKAGE AND SOURCE.
  1. N EPKG,ESOURCE
  1. S EPKG=$P($G(^AUPNVSIT(PXAVISIT,812)),U,2)
  1. S PXAPKG=$$VPKG^PXAIVSTV(EPKG,PXAPKG)
  1. I $G(PXAERRF) S PXAK=1 D ERR("PACKAGE",1) Q -3
  1. I $G(PXAERRW) S PXAK=1 D ERR("PACKAGE",1)
  1. S ESOURCE=$P($G(^AUPNVSIT(PXAVISIT,812)),U,3)
  1. S PXASOURC=$$VSOURCE^PXAIVSTV(PXAPKG,ESOURCE,PXASOURC)
  1. I $G(PXAERRF) S PXAK=1 D ERR("SOURCE",1) Q -3
  1. I $G(PXAERRW) S PXAK=1 D ERR("SOURCE",1)
  1. D SPKGSRC^PXAIVST(PXAVISIT,EPKG,PXAPKG,ESOURCE,PXASOURC,.PXAERRF,.PXAERR)
  1. I $G(PXAERRF) S PXAK=1 D ERR("PKG/SOURCE",1) Q -3
  1. S ^TMP("PXK",$J,"SOR")=PXASOURC
  1. ;
  1. USER ;--If a USER is passed validate it.
  1. I $G(PXAUSER)'="" D VUSER^PXAIVSTV(PXAUSER) I $G(PXAERRF) D ERR("USER",1) Q -3
  1. ;
  1. PRV ;--PROVIDER
  1. I $D(@PXADATA@("PROVIDER")) D
  1. .;Check for primary provider issues.
  1. . D PRIM^PXAIPRVV(PXAVISIT,.PXADATA,.PXAERRF,$G(PXAPREDT))
  1. . I $G(PXAERRF("PRV")) S PXAK=1 D ERR("PROVIDER",1) K PXAERR Q
  1. . I $G(PXAERRW("PRV")) S PXAK=1 D ERR("PROVIDER",1) K PXAERR
  1. . S PXAK=0 F S PXAK=$O(@PXADATA@("PROVIDER",PXAK)) Q:PXAK="" D
  1. .. D PRV^PXAIPRV
  1. .. I $G(PXAERRF("PRV")) D ERR("PROVIDER",PXAK) K PXAERR
  1. ;
  1. POV ;--DIAGNOSIS
  1. I $D(@PXADATA@("DX/PL")) D
  1. .;Check for more than one primary diagnosis.
  1. . D PRIM^PXAIPOVV(PXAVISIT,.PXADATA,.PXAERRF)
  1. . I $G(PXAERRF("POV")) S PXAK=1 D ERR("DX/PL",1) K PXAERR Q
  1. . I $G(PXAERRW("POV")) S PXAK=1 D ERR("DX/PL",1) K PXAERR
  1. . D SPOVPRIM^PXAIPOV(PXADATA,PXAVISIT,.PXAERR)
  1. . I $G(PXAERRF("POV")) S PXAK=1 D ERR("DX/PL",1) K PXAERR Q
  1. . S PXAK=0 F S PXAK=$O(@PXADATA@("DX/PL",PXAK)) Q:PXAK="" D
  1. .. D POV^PXAIPOV
  1. .. I $G(PXAERRF("POV")) D ERR("DX/PL",PXAK) K PXAERR
  1. ;
  1. CPT ;--PROCEDURE
  1. S PXAK=0 F S PXAK=$O(@PXADATA@("PROCEDURE",PXAK)) Q:PXAK="" D
  1. . D CPT^PXAICPT I $G(PXAERRF("CPT"))!$G(PXAERRW("CPT")) D ERR("PROCEDURE",PXAK)
  1. K PXAERR
  1. ;
  1. EDU ;--PATIENT EDUCATION
  1. S PXAK=0 F S PXAK=$O(@PXADATA@("PATIENT ED",PXAK)) Q:PXAK="" D
  1. . D EDU^PXAIPED I $G(PXAERRF("PED"))!$G(PXAERRW("PED")) D ERR("PATIENT ED",PXAK)
  1. K PXAERR
  1. ;
  1. EXAM ;--EXAMINATION
  1. S PXAK=0 F S PXAK=$O(@PXADATA@("EXAM",PXAK)) Q:PXAK="" D
  1. . D EXAM^PXAIXAM I $G(PXAERRF("XAM"))!$G(PXAERRW("XAM")) D ERR("EXAM",PXAK)
  1. K PXAERR
  1. ;
  1. HF ;--HEALTH FACTOR
  1. S PXAK=0 F S PXAK=$O(@PXADATA@("HEALTH FACTOR",PXAK)) Q:PXAK="" D
  1. . D HF^PXAIHF I $G(PXAERRF("HF"))!$G(PXAERRW("HF")) D ERR("HEALTH FACTOR",PXAK)
  1. K PXAERR
  1. ;
  1. IMM ;--IMMUNIZATION
  1. S PXAK=0 F S PXAK=$O(@PXADATA@("IMMUNIZATION",PXAK)) Q:PXAK="" D
  1. . D IMM^PXAIIMM I $G(PXAERRF("IMM"))!$G(PXAIERRW("IMM")) D ERR("IMMUNIZATION",PXAK)
  1. K PXAERR
  1. ;
  1. SKIN ;--SKIN TEST
  1. S PXAK=0 F S PXAK=$O(@PXADATA@("SKIN TEST",PXAK)) Q:PXAK="" D
  1. . D SKIN^PXAISK I $G(PXAERRF("SK"))!$G(PXAERRW("SK")) D ERR("SKIN TEST",PXAK)
  1. K PXAERR
  1. ;
  1. ICR ;--IMM CONTRAINDICATION/REFUSAL
  1. S PXAK=0 F S PXAK=$O(@PXADATA@("IMM CONTRA/REFUSAL",PXAK)) Q:PXAK="" D
  1. . D ICR^PXAIICR I $G(PXAERRF("ICR"))!$G(PXAERRW("ICR")) D ERR("IMM CONTRA/REFUSAL",PXAK)
  1. K PXAERR
  1. ;
  1. SC ;--STANDARD CODES
  1. S PXAK=0 F S PXAK=$O(@PXADATA@("STD CODES",PXAK)) Q:PXAK="" D
  1. . D SC^PXAISC I $G(PXAERRF("SC"))!$G(PXAERRW("SC")) D ERR("STD CODES",PXAK)
  1. K PXAERR
  1. ;
  1. D OTHER^PXAIPRV
  1. ;
  1. I $D(^TMP("PXK",$J)) D
  1. . D EN1^PXKMAIN
  1. .;If necessary set a default primary provider.
  1. . D PRIM^PXAIPRV
  1. . D EVENT^PXKMAIN
  1. ;
  1. ;If errors have been recorded in PXKERROR pass them back.
  1. I $D(PXKERROR) M ERRRET=PXKERROR S PXAERRF=1
  1. ;
  1. S PXACCNT=$P($G(^AUPNVSIT(PXAVISIT,0)),"^",26) ;PX*1.0*164 ;Sets the PFSS Account Reference, if any
  1. K ^TMP("PXAIADDPRV",$J),^TMP("PXK",$J),PXAERR,PXKERROR
  1. Q $S($D(PXAERRF):-1,$D(PXAERRW):-5,1:1)
  1. ;
  1. EXIT ;--EXIT AND CLEAN UP
  1. D EVENT^PXKMAIN
  1. K ^TMP("PXK",$J),PRVDR
  1. K PXAERR
  1. Q
  1. ;
  1. ;-----------------SUBROUTINES-----------------------
  1. ERR(DATATYPE,NUM) ;
  1. I '$D(PXADI("DIALOG")) Q
  1. N NODE,SCREEN
  1. S PXAERR(1)=$G(PXADATA),PXAERR(2)=$G(PXAPKG),PXAERR(3)=$G(PXASOURC)
  1. S PXAERR(4)=$G(PXAVISIT),PXAERR(5)=$G(PXAUSER)_" "_$P($G(^VA(200,PXAUSER,0)),"^",1)
  1. D SSCL^PXAIERR(.PXAERR)
  1. I $G(PXANOT)=1 D EXTERNAL
  1. E D INTERNAL(DATATYPE,NUM)
  1. D SETPROB^PXAIERR
  1. K PXADI("DIALOG")
  1. Q
  1. ;
  1. EXTERNAL ;---SEND ERRORS TO SCREEN
  1. W !,"-----------------------------------------------------------------"
  1. D BLD^DIALOG($G(PXADI("DIALOG")),.PXAERR,"","SCREEN","F")
  1. D MSG^DIALOG("ESW","",(IOM-2),2,"SCREEN")
  1. Q
  1. ;
  1. INTERNAL(DATATYPE,NUM) ;---SET ERRORS TO GLOBAL ARRAY
  1. N OUTPUT,TEMP
  1. D BLD^DIALOG($G(PXADI("DIALOG")),.PXAERR,"","TEMP","F")
  1. D MSG^DIALOG("AES",.OUTPUT,80,"","TEMP")
  1. M ERRRET(DATATYPE,NUM)=OUTPUT
  1. M @PXADATA=TEMP
  1. Q
  1. ;