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

PXAIPOV.m

Go to the documentation of this file.
  1. PXAIPOV ;ISL/JVS,PKR,ESW - SET THE DIAGNOSIS/PROBLEM LIST NODES ;09/14/2021
  1. ;;1.0;PCE PATIENT CARE ENCOUNTER;**28,73,69,108,112,130,124,174,168,203,199,211,228**;Aug 12, 1996;Build 1
  1. ;
  1. Q
  1. POV ;--CREATE DIAGNOSIS
  1. ;
  1. SET ;--SET AND NEW VARIABLES
  1. N AFTER0,AFTER12,AFTER800,AFTER801,AFTER802,AFTER811,AFTER812,AFTER8A
  1. N BEFOR0,BEFOR12,BEFOR800,BEFOR801,BEFOR802,BEFOR811,BEFOR812,FPRI
  1. N EVENTDT,GMPSAVED,IENB,J,LNARR,NOPLLIST,PIECE,POVI,PRI,PRVDR,PXAA,PXAAX,PXAB
  1. N PXAIVDT,PXBCNT,PXBCNTPL,PXBKY,PXBPMT,PXBSAM,PXBSKY,PXDIGNS,PXKDONE
  1. N STOP,SUB,VAR
  1. ;
  1. K PXAERR
  1. S PXAERR(8)=PXAK
  1. S PXAERR(7)="DX/PL"
  1. ;
  1. S SUB="" F S SUB=$O(@PXADATA@("DX/PL",PXAK,SUB)) Q:SUB="" D
  1. .S PXAA(SUB)=@PXADATA@("DX/PL",PXAK,SUB)
  1. ;
  1. ;--VALIDATE ENOUGH DATA
  1. D VAL^PXAIPOVV Q:$G(STOP)=1
  1. ;
  1. SETVARA ;--SET VISIT VARIABLES
  1. S $P(AFTER0,U,1)=$G(PXAA("DIAGNOSIS"))
  1. I $G(PXAA("DELETE")) S $P(AFTER0,U,1)="@"
  1. S $P(AFTER0,U,2)=$G(PATIENT),PXAA("PATIENT")=$G(PATIENT)
  1. S $P(AFTER0,U,3)=$G(PXAVISIT)
  1. ;If Provider Narrative is not passed it is generated in VAL^PXAIPOVV.
  1. S $P(AFTER0,U,4)=+$$PROVNARR^PXAPI($G(PXAA("NARRATIVE")),9000010.07)
  1. I $P(AFTER0,U,4)'>0 D VAL04^PXAIPOVV,ERR^PXAI("NARRATIVE",1) Q:$D(STOP)
  1. ;PX*1*124
  1. S PRI=$G(PXAA("PRIMARY"))
  1. S $P(AFTER0,U,12)=$S(PRI=1:"P",PRI="P":"P",1:"S")
  1. ;--ADDED FOR PATCH 28
  1. S $P(AFTER0,U,15)=$G(PXAA("LEXICON TERM"))
  1. S $P(AFTER0,U,16)=$G(PXAA("PL IEN"))
  1. S $P(AFTER0,U,17)=$G(PXAA("ORD/RES"))
  1. ;--END OF NEW PATCH 28
  1. S $P(AFTER12,U,1)=$G(PXAA("EVENT D/T"))
  1. S $P(AFTER12,U,2)=$G(PXAA("ORD PROVIDER"))
  1. S $P(AFTER12,U,4)=$G(PXAA("ENC PROVIDER"))
  1. ;PX*1*108
  1. I $G(PXAA("ENC PROVIDER"))]"",'$G(PXAA("DELETE")) D
  1. .S ^TMP("PXAIADDPRV",$J,$G(PXAA("ENC PROVIDER")))="ENC"
  1. I $G(PXAA("ORD PROVIDER"))]"",'$G(PXAA("DELETE")) D
  1. .S ^TMP("PXAIADDPRV",$J,$G(PXAA("ORD PROVIDER")))="ORD"
  1. ;
  1. I $G(PXAA("CATEGORY"))="" S $P(AFTER802,U,1)=""
  1. E D
  1. . S $P(AFTER802,U,1)=+$$PROVNARR^PXAPI(PXAA("CATEGORY"),9000010.07)
  1. . I $P(AFTER802,U,1)'>0 D
  1. .. D VAL802^PXAIPOVV,ERR^PXAI("CATEGORY",1)
  1. .. S $P(AFTER802,U,1)=""
  1. ;
  1. S $P(AFTER811,U,1)=$G(PXAA("COMMENT"))
  1. ;
  1. S $P(AFTER800,U,1)=$G(PXAA("PL SC"))
  1. S $P(AFTER800,U,2)=$G(PXAA("PL AO"))
  1. S $P(AFTER800,U,3)=$G(PXAA("PL IR"))
  1. S $P(AFTER800,U,4)=$G(PXAA("PL EC"))
  1. S $P(AFTER800,U,5)=$G(PXAA("PL MST"))
  1. S $P(AFTER800,U,6)=$G(PXAA("PL HNC"))
  1. S $P(AFTER800,U,7)=$G(PXAA("PL CV"))
  1. S $P(AFTER800,U,8)=$G(PXAA("PL SHAD"))
  1. ;
  1. D SCC^PXUTLSCC(PATIENT,$P($G(^AUPNVSIT(PXAVISIT,0)),U,1),$P($G(^AUPNVSIT(PXAVISIT,0)),U,22),$G(PXAVISIT),AFTER800,.AFTER800)
  1. ;
  1. I $G(PXAA("PL SC"))="" S $P(AFTER800,U,1)=""
  1. I $G(PXAA("PL AO"))="" S $P(AFTER800,U,2)=""
  1. I $G(PXAA("PL IR"))="" S $P(AFTER800,U,3)=""
  1. I $G(PXAA("PL EC"))="" S $P(AFTER800,U,4)=""
  1. I $G(PXAA("PL MST"))="" S $P(AFTER800,U,5)=""
  1. I $G(PXAA("PL HNC"))="" S $P(AFTER800,U,6)=""
  1. I $G(PXAA("PL CV"))="" S $P(AFTER800,U,7)=""
  1. I $G(PXAA("PL SHAD"))="" S $P(AFTER800,U,8)=""
  1. ;
  1. S $P(AFTER812,U,2)=$S($G(PXAA("PKG"))'="":PXAA("PKG"),1:$G(PXAPKG))
  1. S $P(AFTER812,U,3)=$S($G(PXAA("SOURCE"))'="":PXAA("SOURCE"),1:$G(PXASOURC))
  1. ;
  1. D PL^PXAIPL
  1. ;
  1. ;
  1. SETPXKA ;--SET PXK ARRAY AFTER
  1. S ^TMP("PXK",$J,"POV",PXAK,0,"AFTER")=$G(AFTER0)
  1. S ^TMP("PXK",$J,"POV",PXAK,12,"AFTER")=$G(AFTER12)
  1. S ^TMP("PXK",$J,"POV",PXAK,800,"AFTER")=$G(AFTER800)
  1. S ^TMP("PXK",$J,"POV",PXAK,802,"AFTER")=$G(AFTER802)
  1. S ^TMP("PXK",$J,"POV",PXAK,811,"AFTER")=$G(AFTER811)
  1. S ^TMP("PXK",$J,"POV",PXAK,812,"AFTER")=$G(AFTER812)
  1. ;
  1. SETVARB ;--SET VARIABLES BEFORE
  1. ;
  1. ;--GET IEN FOR 'PXK NODE'
  1. D POV^PXBGPOV(PXAVISIT)
  1. I $D(^TMP("PXBGPOVMATCH",$J,$G(PXAA("DIAGNOSIS")))) D
  1. .S (^TMP("PXK",$J,"POV",PXAK,"IEN"),IENB)=$O(^TMP("PXBGPOVMATCH",$J,$G(PXAA("DIAGNOSIS")),0))
  1. K ^TMP("PXBGPOVMATCH",$J)
  1. ;
  1. BEFOR ;
  1. I $G(IENB) D
  1. .F PIECE=0,12,800,802,811,812 S ^TMP("PXK",$J,"POV",PXAK,PIECE,"BEFORE")=$G(^AUPNVPOV(IENB,PIECE))
  1. E D
  1. .S (BEFOR0,BEFOR12,BEFOR800,BEFOR802,BEFOR811,BEFOR812)=""
  1. .;
  1. SETPXKB .;--SET PXK ARRAY BEFORE
  1. .S ^TMP("PXK",$J,"POV",PXAK,0,"BEFORE")=$G(BEFOR0)
  1. .S ^TMP("PXK",$J,"POV",PXAK,12,"BEFORE")=$G(BEFOR12)
  1. .S ^TMP("PXK",$J,"POV",PXAK,800,"BEFORE")=$G(BEFOR800)
  1. .S ^TMP("PXK",$J,"POV",PXAK,802,"BEFORE")=$G(BEFOR802)
  1. .S ^TMP("PXK",$J,"POV",PXAK,811,"BEFORE")=$G(BEFOR811)
  1. .S ^TMP("PXK",$J,"POV",PXAK,812,"BEFORE")=$G(BEFOR812)
  1. .S ^TMP("PXK",$J,"POV",PXAK,"IEN")=""
  1. ;
  1. ;Package and Data Source cannot be edited.
  1. S BEFOR812=^TMP("PXK",$J,"POV",PXAK,812,"BEFORE")
  1. I BEFOR812'="" D
  1. . I AFTER812=BEFOR812 Q
  1. . I $P(BEFOR812,U,2)'="" S $P(AFTER812,U,2)=$P(BEFOR812,U,2)
  1. . I $P(BEFOR812,U,3)'="" S $P(AFTER812,U,3)=$P(BEFOR812,U,3)
  1. . S ^TMP("PXK",$J,"POV",PXAK,812,"AFTER")=AFTER812
  1. ;
  1. MISC ;--MISCELLANEOUS NODE
  1. ;
  1. Q
  1. ;
  1. PRIM ;--SET A PROVIDER AS PRIMARY
  1. ;THIS IS NOT CALLED ANYMORE.
  1. N PXBCNT,PXBKY,PXBSAM,PXBSKY,PRVDR,FPRI ;108
  1. D PRV^PXBGPRV(PXAVISIT,.PXBSKY,.PXBKY,.PXBSAM,.PXBCNT,.PRVDR,.FPRI) ;108
  1. I $D(PRVDR) Q
  1. I '$D(PXBSKY) Q
  1. ;
  1. S $P(AFTER0,U,1)=$P(^AUPNVPRV($O(PXBSKY(1,0)),0),U,1)
  1. S $P(AFTER0,U,2)=$P(^AUPNVSIT(PXAVISIT,0),U,5)
  1. S $P(AFTER0,U,3)=PXAVISIT
  1. S $P(AFTER0,U,4)="P"
  1. S ^TMP("PXK",$J,"PRV",22222,0,"AFTER")=AFTER0
  1. S ^TMP("PXK",$J,"PRV",22222,0,"BEFORE")=$G(^AUPNVPRV($O(PXBSKY(1,0)),0))
  1. S ^TMP("PXK",$J,"PRV",22222,"IEN")=$O(PXBSKY(1,0))
  1. D EN1^PXKMAIN
  1. K PXRDR
  1. K ^TMP("PXBGPOVMATCH",$J)
  1. Q
  1. ;
  1. SPOVPRIM(PXADATA,VISITIEN,PXAERR) ;If there is an exisiting primary diagnosis
  1. ;change it to secondary so the new primary can be set.
  1. N DIAG,IND,PDNEW
  1. S IND=0,PDNEW=""
  1. F S IND=+$O(@PXADATA@("DX/PL",IND)) Q:IND=0 D
  1. . S DIAG=$G(@PXADATA@("DX/PL",IND,"DIAGNOSIS"))
  1. . I DIAG="" Q
  1. . I $G(@PXADATA@("DX/PL",IND,"PRIMARY"))=1 S PDNEW=DIAG
  1. I PDNEW="" Q
  1. ;
  1. ;There is a new primary diagnosis, set any existing primary to
  1. ;secondary.
  1. N FDA,IENS,MSG
  1. S IND=0
  1. F S IND=$O(^AUPNVPOV("AD",VISITIEN,IND)) Q:IND="" D
  1. . I $P(^AUPNVPOV(IND,0),U,12)="P" D
  1. .. S IENS=IND_","
  1. .. S FDA(9000010.07,IENS,.12)="S"
  1. .. D FILE^DIE("","FDA","MSG")
  1. .. I $D(MSG) D Q
  1. ... S PXAERR(9)="V POV PRIMARY DIAGNOSIS CHANGE"
  1. ... S PXAERR(12)=MSG("DIERR",1,"TEXT",1)
  1. ... S PXAERR(13)="IENS="_IENS
  1. ... D ERRSET^PXAIPOVV
  1. Q
  1. ;