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

PXAIVST.m

Go to the documentation of this file.
  1. PXAIVST ;ISL/JVS,KWP,ESW - GET A VISIT FROM ENCOUNTER NODE ;04/11/2024
  1. ;;1.0;PCE PATIENT CARE ENCOUNTER;**5,9,15,74,111,96,130,124,164,168,211,238**;Aug 12, 1996;Build 3
  1. ;
  1. ; Reference to ^DPT( in ICR #10035
  1. ; Reference to ^VA(200, in ICR #10060
  1. ;
  1. Q
  1. ;
  1. VST ;--CREATE A VISIT
  1. ;
  1. SET ;--SET AND NEW VARIABLES
  1. N AFTER0,AFTER21,AFTER800,AFTER150,BEFOR0,BEFOR21,BEFOR800,BEFOR150
  1. N AFTER811,BEFOR811,BEFOR812
  1. N PXAA,PXAB,PXALOOK,SUB,PIECE,STOP,TEMP
  1. N AFTER8A,AFTER812
  1. ;
  1. S SUB="" F S SUB=$O(@PXADATA@("ENCOUNTER",1,SUB)) Q:SUB="" D
  1. .S PXAA(SUB)=@PXADATA@("ENCOUNTER",1,SUB)
  1. ;
  1. S (AFTER812,BEFOR812)=""
  1. ;
  1. S PXAK=1
  1. S PXAERR(8)=1
  1. S PXAERR(7)="ENCOUNTER"
  1. ;
  1. VAL ;--VALIDATE ENOUGH DATA
  1. I $D(@PXADATA@("ENCOUNTER")) D VAL^PXAIVSTV Q:$G(STOP)
  1. ;
  1. ;If this is an existing Visit load the fields that cannot be edited.
  1. I $G(PXAVISIT) D
  1. . S TEMP=^AUPNVSIT(PXAVISIT,0)
  1. . S PXAA("ENC D/T")=$P(TEMP,U,1)
  1. . S (PATIENT,PXAA("PATIENT"))=$P(TEMP,U,5)
  1. . S PXAA("SERVICE CATEGORY")=$P(TEMP,U,7)
  1. . S PXAA("HOS LOC")=$P(TEMP,U,22)
  1. ;
  1. SETVARA ;--SET VISIT VARIABLES
  1. S $P(AFTER0,U,1)=$G(PXAA("ENC D/T"))
  1. ;PX*1*96 - Set TYPE (Piece #3) according to following;
  1. ; 1. If OUTSIDE LOCATION then TYPE is "O"
  1. ; 2. If no OUTSIDE LOCATION but INSTITUTION then TYPE is "V"
  1. ; 3. If DUZ("AG") is defined set TYPE to it.
  1. ; 4. If still not defined and DUZ(2) is defined try to use the
  1. ; Institution's Agency Code, ICR #10090.
  1. ; 5. If still not defined set TYPE to "O"
  1. S TEMP=$S($G(PXAA("OUTSIDE LOCATION"))'="":"O",$G(PXAA("INSTITUTION"))'="":"V",1:$G(DUZ("AG")))
  1. I TEMP="",$G(DUZ(2))'="" S TEMP=$$GET1^DIQ(4,DUZ(2)_",",95,"I")
  1. I TEMP="" S TEMP="O"
  1. S $P(AFTER0,U,3)=TEMP
  1. S (PATIENT,$P(AFTER0,U,5))=$G(PXAA("PATIENT"))
  1. S $P(AFTER0,U,6)=$G(PXAA("INSTITUTION"))
  1. S $P(AFTER0,U,7)=$G(PXAA("SERVICE CATEGORY"))
  1. S $P(AFTER0,U,8)=$G(PXAA("DSS ID"))
  1. S $P(AFTER0,U,12)=$G(PXAA("PARENT"))
  1. S $P(AFTER0,U,18)=$G(PXAA("CHECKOUT D/T"))
  1. S $P(AFTER0,U,21)=$G(PXAA("ELIGIBILITY"))
  1. S $P(AFTER0,U,22)=$G(PXAA("HOS LOC"))
  1. S $P(AFTER0,U,23)=$G(PXAUSER)
  1. S $P(AFTER0,U,26)=$S($G(PXACCNT)>0:$G(PXACCNT),1:"") ;PX*1.0*164
  1. S $P(PXELAP,U,1)=$G(PXAA("ELIGIBILITY"))
  1. S $P(PXELAP,U,3)=$G(PXAA("APPT"))
  1. S $P(AFTER800,U,1)=$G(PXAA("SC"))
  1. S $P(AFTER800,U,2)=$G(PXAA("AO"))
  1. S $P(AFTER800,U,3)=$G(PXAA("IR"))
  1. S $P(AFTER800,U,4)=$G(PXAA("EC"))
  1. S $P(AFTER800,U,5)=$G(PXAA("MST"))
  1. ;PX*1*111 - Add HNC
  1. S $P(AFTER800,U,6)=$G(PXAA("HNC"))
  1. S $P(AFTER800,U,7)=$G(PXAA("CV"))
  1. S $P(AFTER800,U,8)=$G(PXAA("SHAD"))
  1. ;
  1. ;--VALIDATE SERVICE CONNECTEDNESS
  1. S AFTER8A=AFTER800
  1. D VALSCC^PXAIVSTV
  1. S AFTER800=AFTER8A
  1. ;
  1. S $P(AFTER21,U,1)=$G(PXAA("OUTSIDE LOCATION")) ;PX/96
  1. S $P(AFTER150,U,3)=$G(PXAA("ENCOUNTER TYPE"))
  1. S $P(AFTER811,U,1)=$G(PXAA("COMMENT"))
  1. S $P(AFTER812,U,2)=$G(PXAPKG)
  1. S $P(AFTER812,U,3)=$G(PXASOURC)
  1. SETPXKA ;--SET PXK ARRAY AFTER
  1. S ^TMP("PXK",$J,"VST",1,0,"AFTER")=AFTER0
  1. S ^TMP("PXK",$J,"VST",1,21,"AFTER")=AFTER21
  1. S ^TMP("PXK",$J,"VST",1,150,"AFTER")=AFTER150
  1. S ^TMP("PXK",$J,"VST",1,800,"AFTER")=AFTER800
  1. S ^TMP("PXK",$J,"VST",1,811,"AFTER")=AFTER811
  1. S ^TMP("PXK",$J,"VST",1,812,"AFTER")=AFTER812
  1. ;
  1. CALL ;--CALL
  1. N DFN,DSS,HLOC,INS,SVC,TYPE,VDT,VISITLIST
  1. S DFN=$P(AFTER0,U,5),DSS=$P(AFTER0,U,8),HLOC=$P(AFTER0,U,22),INS=$P(AFTER0,U,6)
  1. S TYPE=$P(AFTER0,U,3),SVC=$P(AFTER0,U,7),VDT=$P(AFTER0,U,1)
  1. S VISITLIST(0)=0
  1. I +$G(PXAVISIT)=0 D FINDVISIT^PXUTLVST(DFN,VDT,HLOC,SVC,DSS,INS,TYPE,"",1,.VISITLIST)
  1. I (+$G(PXAVISIT)=0),(VISITLIST(0)=0) S ^TMP("PXK",$J,"VISITCREATE")="F"
  1. I VISITLIST(0)=1 S PXAVISIT=VISITLIST(1)
  1. I VISITLIST(0)=-1 D Q
  1. .;This should not happen, the initial input checking should catch bad input.
  1. . S PXAERR(7)="VDT= "_VDT
  1. . S PXAERR(8)="SVC= "_SVC_" TYPE="_TYPE
  1. . S PXAERR(9)="HLOC= "_HLOC_" INS="_INS
  1. . S PXAERR(10)="DFN= "_DFN
  1. . S PXAERR(12)="The input parameters to FINDVISIT are bad, cannot continue."
  1. . D ERRSET^PXAIVSTV
  1. ;If there are multiple matches use the first one and send a MailMan message.
  1. I VISITLIST(0)>1 D
  1. . S PXAVISIT=VISITLIST(1)
  1. . D MULTMATCHMSG(DFN,VDT,HLOC,SVC,DSS,INS,TYPE,DUZ,.VISITLIST)
  1. ;
  1. ;--SET VARIABLES BEFORE
  1. I $G(PXAVISIT) D
  1. .F PIECE=0,21,150,800,811,812 S ^TMP("PXK",$J,"VST",1,PIECE,"BEFORE")=$G(^AUPNVSIT(PXAVISIT,PIECE))
  1. .I '$D(@PXADATA@("ENCOUNTER")) D
  1. ..F PIECE=0,21,150,800,811,812 S ^TMP("PXK",$J,"VST",1,PIECE,"AFTER")=$G(^AUPNVSIT(PXAVISIT,PIECE))
  1. E D
  1. .S (BEFOR0,BEFOR21,BEFOR150,BEFOR800,BEFOR811)=""
  1. .;--SET PXK ARRAY BEFORE
  1. .S ^TMP("PXK",$J,"VST",1,0,"BEFORE")=BEFOR0
  1. .S ^TMP("PXK",$J,"VST",1,21,"BEFORE")=BEFOR21
  1. .S ^TMP("PXK",$J,"VST",1,150,"BEFORE")=BEFOR150
  1. .S ^TMP("PXK",$J,"VST",1,800,"BEFORE")=BEFOR800
  1. .S ^TMP("PXK",$J,"VST",1,811,"BEFORE")=BEFOR811
  1. .S ^TMP("PXK",$J,"VST",1,812,"BEFORE")=BEFOR812
  1. ;
  1. S ^TMP("PXK",$J,"VST",1,"IEN")=$G(PXAVISIT)
  1. ;
  1. D EN1^PXKMAIN
  1. I '$G(PXAVISIT) S PXAVISIT=$G(^TMP("PXK",$J,"VST",1,"IEN"))
  1. Q
  1. ;
  1. MULTMATCHMSG(DFN,VDT,HLOC,SVC,DSS,INS,TYPE,DUZ,VISITLIST) ;Send a MailMan message to the
  1. ;PCE Management mail group when multiple vists are matched.
  1. ;Reference ICR#
  1. ;Read ^DPT 10035
  1. ;Read ^VA(200 10060
  1. ;
  1. N IND,PATIENT,PROVIDER,SUBJECT,VLIST
  1. S PATIENT=$P(^DPT(DFN,0),U,1)
  1. S PROVIDER=$$GET1^DIQ(200,DUZ,.01)
  1. S SUBJECT="DATA2PCE - MULTIPLE VISITS WERE MATCHED"
  1. S VLIST=VISITLIST(1)
  1. F IND=2:1:VISITLIST(0) S VLIST=VLIST_", "_VISITLIST(IND)
  1. K ^TMP("PXMULTMSG",$J)
  1. S ^TMP("PXMULTMSG",$J,1,0)=PROVIDER_" (DUZ="_DUZ_") was editing an encounter for patient"
  1. S ^TMP("PXMULTMSG",$J,2,0)=PATIENT_" (DFN="_DFN_") and multiple Visit file entries"
  1. S ^TMP("PXMULTMSG",$J,3,0)="matched the visit string."
  1. S ^TMP("PXMULTMSG",$J,4,0)="The matching Visit file IENs are: "_VLIST_"."
  1. S ^TMP("PXMULTMSG",$J,5,0)=""
  1. S ^TMP("PXMULTMSG",$J,6,0)="The visit match parameters are:"
  1. S ^TMP("PXMULTMSG",$J,7,0)="DFN="_DFN
  1. S ^TMP("PXMULTMSG",$J,8,0)="VISIT DATE/TIME="_VDT
  1. S ^TMP("PXMULTMSG",$J,9,0)="HOSPITAL LOCATION="_HLOC
  1. S ^TMP("PXMULTMSG",$J,10,0)="SERVICE CATEGORY="_SVC
  1. S ^TMP("PXMULTMSG",$J,11,0)="STOP CODE="_DSS
  1. S ^TMP("PXMULTMSG",$J,12,0)="INSTITUTION="_INS
  1. S ^TMP("PXMULTMSG",$J,13,0)="TYPE="_TYPE
  1. S ^TMP("PXMULTMSG",$J,14,0)=""
  1. S ^TMP("PXMULTMSG",$J,15,0)="Only one encounter can be edited at a time, therefore the encounter"
  1. S ^TMP("PXMULTMSG",$J,16,0)="corresponding to the first Visit IEN on the list was edited."
  1. S ^TMP("PXMULTMSG",$J,17,0)=""
  1. S ^TMP("PXMULTMSG",$J,18,0)="To lessen the chance of future multiple matches you can use the option"
  1. S ^TMP("PXMULTMSG",$J,19,0)="PXQ USER REVIEW (User's Visit Review) to determine what data is contained in"
  1. S ^TMP("PXMULTMSG",$J,20,0)="each of the encounters and move as much of it as possible to a single"
  1. S ^TMP("PXMULTMSG",$J,21,0)="encounter."
  1. S ^TMP("PXMULTMSG",$J,22,0)=""
  1. S ^TMP("PXMULTMSG",$J,23,0)="If assistance is needed, please save this message and enter a ticket for help"
  1. S ^TMP("PXMULTMSG",$J,24,0)="from PCE Support."
  1. D SEND^PXMSG("PXMULTMSG",SUBJECT)
  1. K ^TMP("PXMULTMSG",$J)
  1. Q
  1. ;
  1. SPKGSRC(PXAVISIT,EPKG,PXAPKG,ESOURCE,PXASOURC,PXAERRF,PXAERR) ;Save Package and
  1. ;Source.
  1. N FDA,IENS,MSG,TEMP
  1. S TEMP=$G(^AUPNVSIT(PXAVISIT,812))
  1. S IENS=PXAVISIT_","
  1. I EPKG="" S FDA(9000010,IENS,81202)=PXAPKG
  1. I ESOURCE="" S FDA(9000010,IENS,81203)=PXASOURC
  1. I $D(FDA) D FILE^DIE("","FDA","MSG")
  1. I $D(MSG) D Q
  1. . S PXAERR(9)="PACKAGE AND SOURCE"
  1. . S PXAERR(12)=MSG("DIERR",1,"TEXT",1)
  1. .;The second line of the error text may not always be defined.
  1. . S PXAERR(13)=$G(MSG("DIERR",1,"TEXT",2))
  1. . D ERRSET^PXAIVSTV
  1. S ^TMP("PXK",$J,"VST",1,812,"AFTER")=U_PXAPKG_U_PXASOURC
  1. Q
  1. ;