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

PXPXRM.m

Go to the documentation of this file.
  1. PXPXRM ;SLC/PKR - APIs for Clinical Reminder indexes. ;May 28, 2021@08:51:37
  1. ;;1.0;PCE PATIENT CARE ENCOUNTER;**119,199,210,215,216,211,217**;Aug 12, 1996;Build 134
  1. ;
  1. ;Reference to ICDEX supported by ICR #5747.
  1. ;
  1. Q
  1. ;====================
  1. KVFILE(FILENUM,X,DA) ;Delete indexes for a regular V File.
  1. ;X(1)=ITEM, X(2)=DFN, X(3)=VISIT IEN, X(4)=EVENT DATE AND TIME
  1. N CVX,VDATE,VISIT
  1. S VISIT=$G(^AUPNVSIT(X(3),0))
  1. I VISIT="" D NOVISITMSG("KVFILE^PXPXRM",FILENUM,.X,DA) Q
  1. ; For skin tests, set placement index when linked reading entry is deleted
  1. I FILENUM=9000010.12 D
  1. . N PXPLACESK,PXX
  1. . S PXPLACESK=$P($G(^AUPNVSK(DA,12)),U,8)
  1. . I 'PXPLACESK Q
  1. . S PXX(1)=X(1)
  1. . S PXX(2)=X(2)
  1. . S PXX(3)=$P($G(^AUPNVSK(PXPLACESK,0)),U,3)
  1. . I 'PXX(3) Q
  1. . S PXX(4)=$P($G(^AUPNVSK(PXPLACESK,12)),U,1)
  1. . D SVFILE(FILENUM,.PXX,PXPLACESK)
  1. ; For skin tests, use Date Read
  1. I FILENUM=9000010.12 S VDATE=$G(X(5))
  1. I $G(VDATE)="" S VDATE=$G(X(4))
  1. I VDATE="" S VDATE=$P(VISIT,U,1)
  1. ;
  1. I FILENUM=9000010.11 D
  1. .;If V IMMUNIZATION: kill CVX index.
  1. . S CVX=$P($G(^AUTTIMM(X(1),0)),U,3)
  1. . I CVX'="" D
  1. . . K ^PXRMINDX(FILENUM,"CVX","IP",CVX,X(2),VDATE,DA)
  1. . . K ^PXRMINDX(FILENUM,"CVX","PI",X(2),CVX,VDATE,DA)
  1. ;
  1. K ^PXRMINDX(FILENUM,"IP",X(1),X(2),VDATE,DA)
  1. K ^PXRMINDX(FILENUM,"PI",X(2),X(1),VDATE,DA)
  1. Q
  1. ;
  1. ;====================
  1. KVFILEC(FILENUM,X,DA) ;Delete indexes for V Files with coded entries.
  1. ; FILENUM = file number, e.g. 9000010.07
  1. ; X = Array of fields
  1. ; X(1)=Item pointer: Dx for V POV, CPT for V CPT
  1. ; X(2)=PATIENT NAME (DFN)
  1. ; X(3)=VISIT (ptr to 9000010)
  1. ; X(4)=PRIMARY/SECONDARY for V POV
  1. ; or PRINCIPAL PROCEDURE FOR V CPT
  1. ; X(5)=EVENT DATE AND TIME
  1. ; DA = IEN into FILENUM file
  1. ;
  1. N CODE,CTYPE,PXCSYS,VDATE,VISIT
  1. S VISIT=$G(^AUPNVSIT(X(3),0))
  1. I VISIT="" D NOVISITMSG("KVFILEC^PXPXRM",FILENUM,.X,DA) Q
  1. S CTYPE=$S(X(4)="":"U",1:X(4))
  1. S VDATE=$G(X(5))
  1. I VDATE="" S VDATE=$P(VISIT,U,1)
  1. S PXCSYS="ICD"
  1. ;If V POV get coding system.
  1. I FILENUM=9000010.07 S PXCSYS=$P($$SINFO^ICDEX($$CSI^ICDEX(80,X(1))),U,3) ; coding system abbreviation
  1. ;I PXCSYS'="ICD" D KVFILEV Q ; if not ICD-9, use alternate format and Quit
  1. I PXCSYS'="ICD" D Q
  1. .;Coding system code format
  1. . S CODE=$$CODEC^ICDEX(80,X(1)) ; convert IEN to Dx code
  1. . K ^PXRMINDX(FILENUM,PXCSYS,"IPP",CODE,CTYPE,X(2),VDATE,DA)
  1. . K ^PXRMINDX(FILENUM,PXCSYS,"PPI",X(2),CTYPE,CODE,VDATE,DA)
  1. ;Original format used for V CPT and ICD-9 diagnoses
  1. K ^PXRMINDX(FILENUM,"IPP",X(1),CTYPE,X(2),VDATE,DA)
  1. K ^PXRMINDX(FILENUM,"PPI",X(2),CTYPE,X(1),VDATE,DA)
  1. Q
  1. ;
  1. ;====================
  1. KVFILEV ; alternate index format for ICD-10 and higher, added with PX*1.0*199
  1. S CODE=$$CODEC^ICDEX(80,X(1)) ; convert IEN to Dx code
  1. K ^PXRMINDX(FILENUM,PXCSYS,"IPP",CODE,CTYPE,X(2),VDATE,DA)
  1. K ^PXRMINDX(FILENUM,PXCSYS,"PPI",X(2),CTYPE,CODE,VDATE,DA)
  1. Q
  1. ;
  1. ;====================
  1. NOVISITMSG(ROUTINE,FILENUM,X,DA) ;Send a message when there is no visit file entry.
  1. N IND,NL,NODE,SUBJECT
  1. S NODE="PXNOVISIT"
  1. K ^TMP(NODE,$J)
  1. S ^TMP(NODE,$J,1,0)="ROUTINE: "_ROUTINE
  1. S ^TMP(NODE,$J,2,0)="File Number: "_FILENUM
  1. S ^TMP(NODE,$J,3,0)="DA="_DA
  1. S IND=0,NL=3
  1. F S IND=$O(X(IND)) Q:IND="" S NL=NL+1,^TMP(NODE,$J,NL,0)="X("_IND_")="_X(IND)
  1. S NL=NL+1,^TMP(NODE,$J,NL,0)="An error has been generated to save the Stack in the Error Trap"
  1. S NL=NL+1,^TMP(NODE,$J,NL,0)="Date and Time: "_$$FMTE^XLFDT($$NOW^XLFDT,2)
  1. S SUBJECT="PROBLEM SETTING/KILLING REMINDERS INDEX - NO VISIT"
  1. D SEND^PXMSG(NODE,SUBJECT)
  1. ;Generate an error to save the Stack.
  1. N $ESTACK,$ETRAP,UNDEFINED
  1. S $ETRAP="D SAVESTACK^PXPXRM"
  1. S SUBJECT=UNDEFINED
  1. Q
  1. ;
  1. ;====================
  1. SAVESTACK ;Save the Stack in the Error Trap.
  1. D ^%ZTER
  1. D UNWIND^%ZTER
  1. Q
  1. ;
  1. ;====================
  1. SETPKGDS(TEMP,DATA) ;Set the Package and Data Source.
  1. N PTEMP
  1. S PTEMP=$P(TEMP,U,2)
  1. S DATA("PACKAGE")=PTEMP_$S(PTEMP:U_$$GET1^DIQ(9.4,PTEMP,.01),1:"")
  1. S PTEMP=$P(TEMP,U,3)
  1. S DATA("DATA SOURCE")=PTEMP_$S(PTEMP:(U_$P($G(^PX(839.7,PTEMP,0)),U,1)),1:"")
  1. Q
  1. ;
  1. ;====================
  1. SVFILE(FILENUM,X,DA) ;Set indexes for a regular V File.
  1. ;X(1)=ITEM, X(2)=DFN, X(3)=VISIT IEN, X(4)=EVENT DATE AND TIME
  1. ;for skin tests X(5)=DATE READ
  1. N CVX,DATE,VISIT
  1. ;
  1. ; Don't index a placement skin test that is linked to a reading skin test
  1. I FILENUM=9000010.12,$D(^AUPNVSK("APT",DA)) Q
  1. ; If this is a reading skin test, delete linked placement skin test index
  1. I FILENUM=9000010.12 D
  1. . N PXPLACESK,PXX
  1. . S PXPLACESK=$P($G(^AUPNVSK(DA,12)),U,8)
  1. . I 'PXPLACESK Q
  1. . S PXX(1)=X(1)
  1. . S PXX(2)=X(2)
  1. . S PXX(3)=$P($G(^AUPNVSK(PXPLACESK,0)),U,3)
  1. . I 'PXX(3) Q
  1. . S PXX(4)=$P($G(^AUPNVSK(PXPLACESK,12)),U,1)
  1. . D KVFILE(FILENUM,.PXX,PXPLACESK)
  1. ;
  1. S VISIT=$G(^AUPNVSIT(X(3),0))
  1. I VISIT="" D NOVISITMSG("SVFILE^PXPXRM",FILENUM,.X,DA) Q
  1. ; For skin tests, use Date Read
  1. I FILENUM=9000010.12 S DATE=$G(X(5))
  1. I $G(DATE)="" S DATE=$G(X(4))
  1. I DATE="" S DATE=$P(VISIT,U,1)
  1. ;
  1. I FILENUM=9000010.11 D
  1. .; If V IMMUNIZATION: set CVX index.
  1. . S CVX=$P($G(^AUTTIMM(X(1),0)),U,3)
  1. . I CVX'="" D
  1. . . S ^PXRMINDX(FILENUM,"CVX","IP",CVX,X(2),DATE,DA)=""
  1. . . S ^PXRMINDX(FILENUM,"CVX","PI",X(2),CVX,DATE,DA)=""
  1. ;
  1. S ^PXRMINDX(FILENUM,"IP",X(1),X(2),DATE,DA)=""
  1. S ^PXRMINDX(FILENUM,"PI",X(2),X(1),DATE,DA)=""
  1. Q
  1. ;
  1. ;====================
  1. SVFILEC(FILENUM,X,DA) ;Set indexes for V Files with coded entries. These
  1. ;are V CPT and VPOV.
  1. ;X(1)=ITEM, X(2)=DFN, X(3)=VISIT IEN,
  1. ; for V CPT X(4)=PRINCIPAL PROCEDURE
  1. ; for V POV X(4)=PRIMARY/SECONDARY
  1. ;X(5)=EVENT DATE AND TIME
  1. N CODE,CTYPE,DATE,PXCSYS,VISIT
  1. S VISIT=$G(^AUPNVSIT(X(3),0))
  1. I VISIT="" D NOVISITMSG("SVFILEC^PXPXRM",FILENUM,.X,DA) Q
  1. S CTYPE=$S(X(4)="":"U",1:X(4))
  1. S DATE=$G(X(5))
  1. I DATE="" S DATE=$P(VISIT,U,1)
  1. S PXCSYS="ICD"
  1. ;If V POV get coding system.
  1. I FILENUM=9000010.07 S PXCSYS=$P($$SINFO^ICDEX($$CSI^ICDEX(80,X(1))),U,3) ; coding system abbreviation
  1. ;I PXCSYS'="ICD" D SVFILEV Q ; if not ICD-9 use alternate format and Quit
  1. I PXCSYS'="ICD" D Q
  1. .;Coding system code format
  1. . S CODE=$$CODEC^ICDEX(80,X(1))
  1. . S ^PXRMINDX(FILENUM,PXCSYS,"IPP",CODE,CTYPE,X(2),DATE,DA)=""
  1. . S ^PXRMINDX(FILENUM,PXCSYS,"PPI",X(2),CTYPE,CODE,DATE,DA)=""
  1. ;Original format used for V CPT and ICD-9 diagnoses
  1. S ^PXRMINDX(FILENUM,"IPP",X(1),CTYPE,X(2),DATE,DA)=""
  1. S ^PXRMINDX(FILENUM,"PPI",X(2),CTYPE,X(1),DATE,DA)=""
  1. Q
  1. ;
  1. ;====================
  1. SVFILEV ; alternate index format for ICD-10 and higher, added with PX*1.0*199
  1. S CODE=$$CODEC^ICDEX(80,X(1)) ; convert IEN to Dx code
  1. S ^PXRMINDX(FILENUM,PXCSYS,"IPP",CODE,CTYPE,X(2),VDATE,DA)=""
  1. S ^PXRMINDX(FILENUM,PXCSYS,"PPI",X(2),CTYPE,CODE,VDATE,DA)=""
  1. Q
  1. ;
  1. ;====================
  1. VICRFILE(X,DA,PXACTION) ;Set/Kill indexes for V Imm Contra/Refusal Events.
  1. ;
  1. ; Inputs:
  1. ; X - X(1)=Contra/Refusal, X(2)=DFN, X(3)=Visit
  1. ; X(4)=Immunization, X(5)=Event Date and Time
  1. ; X(6)=Warn Until Date
  1. ; DA - V Imm Contra/Refusal Events IEN
  1. ; PXACTION - "S": Set index
  1. ; "K": Kill index
  1. ;
  1. N FILENUM,VISIT,VDATE,START,STOP
  1. ;
  1. S FILENUM=9000010.707
  1. S VISIT=$G(^AUPNVSIT(X(3),0))
  1. I VISIT="" D NOVISITMSG("VICRFILE^PXPXRM",9000010.707,.X,DA) Q
  1. S VDATE=$P(VISIT,U,1)
  1. ;
  1. S START=VDATE
  1. I $G(X(5)) S START=X(5)
  1. ;
  1. S STOP=9999999
  1. I $G(X(6)) S STOP=X(6)
  1. ;
  1. I PXACTION="S" D
  1. . S ^PXRMINDX(FILENUM,"ICP",X(4),X(1),X(2),START,STOP,DA)=""
  1. . S ^PXRMINDX(FILENUM,"PIC",X(2),X(4),X(1),START,STOP,DA)=""
  1. . S ^PXRMINDX(FILENUM,"CIP",X(1),X(4),X(2),START,STOP,DA)=""
  1. . S ^PXRMINDX(FILENUM,"PCI",X(2),X(1),X(4),START,STOP,DA)=""
  1. I PXACTION="K" D
  1. . K ^PXRMINDX(FILENUM,"ICP",X(4),X(1),X(2),START,STOP,DA)
  1. . K ^PXRMINDX(FILENUM,"PIC",X(2),X(4),X(1),START,STOP,DA)
  1. . K ^PXRMINDX(FILENUM,"CIP",X(1),X(4),X(2),START,STOP,DA)
  1. . K ^PXRMINDX(FILENUM,"PCI",X(2),X(1),X(4),START,STOP,DA)
  1. Q
  1. ;
  1. ;====================
  1. UPDCVX(IMM,CVXOLD,CVXNEW) ;
  1. ; Update CVX Index on V Immunization file
  1. ; Called from ACR cross-reference on Immunization file
  1. N DA,PXDESC,PXRTN,PXTASK,PXVAR,PXVOTH,X,X1,X2
  1. I CVXOLD=CVXNEW Q
  1. S PXRTN="UPDCVXT^PXPXRM"
  1. S PXDESC="Clinical Reminders CVX index update for V IMMUNIZATION"
  1. S PXVAR="IMM;CVXOLD;CVXNEW"
  1. S PXVOTH("ZTDTH")=$$NOW^XLFDT
  1. S PXTASK=$$NODEV^XUTMDEVQ(PXRTN,PXDESC,PXVAR,.PXVOTH)
  1. I PXTASK=-1 D UPDCVXT^PXPXRM
  1. Q
  1. ;
  1. ;====================
  1. UPDCVXT ;Tasked from UPDCVX.
  1. ;Variables IMM, CVXOLD, and CVXNEW passed in via task
  1. S ZTREQ="@"
  1. N DATE,DFN,EDATE,VIMM,VISIT
  1. S VIMM=0
  1. F S VIMM=$O(^AUPNVIMM("B",IMM,VIMM)) Q:'VIMM D
  1. . S DFN=$P($G(^AUPNVIMM(VIMM,0)),U,2)
  1. . I 'DFN Q
  1. . S VISIT=$P($G(^AUPNVIMM(VIMM,0)),U,3)
  1. . S VISIT=$G(^AUPNVSIT(+VISIT,0))
  1. . I VISIT="" D NOVISITMSG("UPDCVXT^PXPXRM",9000010.11,.X,DA) Q
  1. . S DATE=$P(VISIT,U,1)
  1. . S EDATE=$P($G(^AUPNVIMM(VIMM,12)),U,1)
  1. . I EDATE S DATE=EDATE
  1. . I 'DATE Q
  1. . I CVXOLD'="" D
  1. . . K ^PXRMINDX(9000010.11,"CVX","IP",CVXOLD,DFN,DATE,VIMM)
  1. . . K ^PXRMINDX(9000010.11,"CVX","PI",DFN,CVXOLD,DATE,VIMM)
  1. . I CVXNEW'="" D
  1. . . S ^PXRMINDX(9000010.11,"CVX","IP",CVXNEW,DFN,DATE,VIMM)=""
  1. . . S ^PXRMINDX(9000010.11,"CVX","PI",DFN,CVXNEW,DATE,VIMM)=""
  1. Q
  1. ;
  1. ;====================
  1. VCPT(DA,DATA) ;Return data for a specified V CPT entry.
  1. N TEMP
  1. S TEMP=^AUPNVCPT(DA,0)
  1. S DATA("VISIT")=$P(TEMP,U,3)
  1. S DATA("PROVIDER NARRATIVE")=$P(TEMP,U,4)
  1. S DATA("DIAGNOSIS")=$P(TEMP,U,5)
  1. S DATA("DIAGNOSIS 2")=$P(TEMP,U,9)
  1. S DATA("DIAGNOSIS 3")=$P(TEMP,U,10)
  1. S DATA("DIAGNOSIS 4")=$P(TEMP,U,11)
  1. S DATA("DIAGNOSIS 5")=$P(TEMP,U,12)
  1. S DATA("DIAGNOSIS 6")=$P(TEMP,U,13)
  1. S DATA("DIAGNOSIS 7")=$P(TEMP,U,14)
  1. S DATA("DIAGNOSIS 8")=$P(TEMP,U,15)
  1. S DATA("PRINCIPAL PROCEDURE")=$P(TEMP,U,7)
  1. S DATA("QUANTITY")=$P(TEMP,U,16)
  1. S TEMP=$G(^AUPNVCPT(DA,12))
  1. S DATA("EVENT DATE AND TIME")=$P(TEMP,U,1)
  1. S DATA("ORDERING PROVIDER")=$P(TEMP,U,2)
  1. S DATA("ENCOUNTER PROVIDER")=$P(TEMP,U,4)
  1. S DATA("COMMENTS")=$G(^AUPNVCPT(DA,811))
  1. S TEMP=$G(^AUPNVCPT(DA,812))
  1. D SETPKGDS(TEMP,.DATA)
  1. Q
  1. ;
  1. ;====================
  1. VHF(DA,DATA) ;Return data for a specified V Health Factor entry.
  1. N TEMP
  1. S TEMP=^AUPNVHF(DA,0)
  1. S DATA("VISIT")=$P(TEMP,U,3)
  1. S (DATA("LEVEL/SEVERITY"),DATA("VALUE"))=$P(TEMP,U,4)
  1. S TEMP=$G(^AUPNVHF(DA,12))
  1. S DATA("EVENT DATE AND TIME")=$P(TEMP,U,1)
  1. S DATA("ORDERING PROVIDER")=$P(TEMP,U,2)
  1. S DATA("ENCOUNTER PROVIDER")=$P(TEMP,U,4)
  1. S DATA("MEASUREMENT")=$G(^AUPNVHF(DA,220))
  1. S DATA("COMMENTS")=$G(^AUPNVHF(DA,811))
  1. S TEMP=$G(^AUPNVHF(DA,812))
  1. D SETPKGDS(TEMP,.DATA)
  1. Q
  1. ;
  1. ;====================
  1. VICR(DA,DATA) ;Return data, for a specified V Imm Contra/Refusal Events entry.
  1. N PXFILE,PXVIEN,PXX,TEMP
  1. S TEMP=^AUPNVICR(DA,0)
  1. S DATA("VISIT")=$P(TEMP,U,3)
  1. S PXX=$P(TEMP,U,1),PXFILE=+$P(PXX,"(",2),PXVIEN=$P(PXX,";",1)
  1. S DATA("CONTRA/REFUSAL")=PXX_U_$P($G(^PXV(PXFILE,+PXX,0)),U,1)
  1. S PXX=$P(TEMP,U,4)
  1. S DATA("IMMUN")=PXX_U_$P($G(^AUTTIMM(+PXX,0)),U,1)
  1. S DATA("WARN UNTIL DATE")=$P(TEMP,U,5)
  1. S DATA("D/T RECORDED")=$P(TEMP,U,6)
  1. ;
  1. S TEMP=$G(^AUPNVICR(DA,12))
  1. S DATA("EVENT D/T")=$P(TEMP,U,1)
  1. S PXX=$P(TEMP,U,4)
  1. S DATA("ENC PROVIDER")=PXX_U_$P($G(^VA(200,+PXX,0)),U,1)
  1. S PXX=$P(TEMP,U,5)
  1. I PXFILE=920.5 S DATA("REFUSED VACCINE GROUP")=$S(PXX="":1,1:PXX)
  1. S DATA("COMMENTS")=$G(^AUPNVICR(DA,811))
  1. S TEMP=$G(^AUPNVICR(DA,812))
  1. I PXFILE=920.4 S DATA("CONTRAINDICATION/PRECAUTION")=$P($G(^PXV(920.4,PXVIEN,0)),U,5)
  1. D SETPKGDS(TEMP,.DATA)
  1. Q
  1. ;
  1. ;====================
  1. VIMM(DA,DATA,CR) ;Return data, for a specified V Immunization entry.
  1. ;
  1. I $G(CR)=1 D VIMMCR^PXPXRM1(DA,.DATA) Q
  1. K ^TMP("PXVIMM",$J)
  1. M ^TMP("PXVIMM",$J,DA)=^AUPNVIMM(DA)
  1. D VIMM2^PXPXRM1(DA,.DATA)
  1. K ^TMP("PXVIMM",$J)
  1. Q
  1. ;
  1. ;====================
  1. VPEDU(DA,DATA) ;Return data, for a specified V Patient ED entry.
  1. N TEMP
  1. S TEMP=^AUPNVPED(DA,0)
  1. S DATA("VISIT")=$P(TEMP,U,3)
  1. S (DATA("LEVEL OF UNDERSTANDING"),DATA("VALUE"))=$P(TEMP,U,6)
  1. S TEMP=$G(^AUPNVPED(DA,12))
  1. S DATA("EVENT DATE AND TIME")=$P(TEMP,U,1)
  1. S DATA("ORDERING PROVIDER")=$P(TEMP,U,2)
  1. S DATA("ENCOUNTER PROVIDER")=$P(TEMP,U,4)
  1. S DATA("MEASUREMENT")=$G(^AUPNVPED(DA,220))
  1. S DATA("COMMENTS")=$G(^AUPNVPED(DA,811))
  1. S TEMP=$G(^AUPNVPED(DA,812))
  1. D SETPKGDS(TEMP,.DATA)
  1. Q
  1. ;
  1. ;====================
  1. VPOV(DA,DATA) ;Return data for a specified V POV entry.
  1. N TEMP
  1. S TEMP=^AUPNVPOV(DA,0)
  1. S DATA("VISIT")=$P(TEMP,U,3)
  1. S DATA("PROVIDER NARRATIVE")=$P(TEMP,U,4)
  1. S DATA("MODIFIER")=$P(TEMP,U,6)
  1. S DATA("PRIMARY/SECONDARY")=$P(TEMP,U,12)
  1. S DATA("DATE OF INJURY")=$P(TEMP,U,13)
  1. S DATA("CLINICAL TERM")=$P(TEMP,U,15)
  1. S DATA("PROBLEM LIST ENTRY")=$P(TEMP,U,16)
  1. S DATA("EVENT DATE AND TIME")=$P($G(^AUPNVPOV(DA,12)),U,1)
  1. S DATA("COMMENTS")=$G(^AUPNVPOV(DA,811))
  1. S TEMP=$G(^AUPNVPOV(DA,812))
  1. D SETPKGDS(TEMP,.DATA)
  1. Q
  1. ;
  1. ;====================
  1. VSCDATA(DA,DATA) ;Return data for a specified V Standard Codes entry.
  1. N TEMP
  1. S TEMP=^AUPNVSC(DA,0)
  1. S DATA("VISIT")=$P(TEMP,U,3)
  1. S DATA("PROVIDER NARRATIVE")=$P(TEMP,U,4)
  1. S TEMP=$G(^AUPNVSC(DA,12))
  1. S DATA("EVENT DATE AND TIME")=$P(TEMP,U,1)
  1. S DATA("ORDERING PROVIDER")=$P(TEMP,U,2)
  1. S DATA("ENCOUNTER PROVIDER")=$P(TEMP,U,4)
  1. S DATA("COMMENTS")=$G(^AUPNVSC(DA,811))
  1. S DATA("MEASUREMENT")=$G(^AUPNVSC(DA,220))
  1. S TEMP=$G(^AUPNVSC(DA,812))
  1. D SETPKGDS(TEMP,.DATA)
  1. Q
  1. ;
  1. ;====================
  1. VSKIN(DA,DATA) ;Return data for a specified V Skin Test entry.
  1. N PXPLACEIEN,PXX,TEMP
  1. S TEMP=^AUPNVSK(DA,0)
  1. S DATA("VISIT")=$P(TEMP,U,3)
  1. S (DATA("RESULTS"),DATA("VALUE"))=$P(TEMP,U,4)
  1. S DATA("READING")=$P(TEMP,U,5)
  1. S DATA("DATE READ")=$P(TEMP,U,6)
  1. S DATA("COMMENTS")=$G(^AUPNVSK(DA,811))
  1. ;
  1. ; Fields below added in PX*1*216
  1. ;
  1. S PXX=$P(TEMP,U,1)
  1. S DATA("SKIN TEST")=PXX_$S(PXX:(U_$P($G(^AUTTSK(PXX,0)),U,1)),1:"")
  1. S PXX=$P(TEMP,U,7)
  1. S DATA("READER")=PXX_$S(PXX:(U_$P($G(^VA(200,PXX,0)),U,1)),1:"")
  1. ;
  1. S TEMP=$G(^AUPNVSIT(+DATA("VISIT"),0))
  1. S DATA("VISIT DATE TIME")=$P(TEMP,U,1)
  1. S PXX=$P(TEMP,U,22)
  1. S DATA("LOCATION")=PXX_$S(PXX:(U_$P($G(^SC(PXX,0)),U,1)),1:"")
  1. S PXX=$P(TEMP,U,6)
  1. S DATA("FACILITY")=PXX_$S(PXX:(U_$$NS^XUAF4(PXX)),1:"")
  1. ;
  1. S TEMP=$G(^AUPNVSK(DA,12))
  1. S DATA("HOURS READ")=$P(TEMP,U,14)
  1. S DATA("D/T READING RECORDED")=$P(TEMP,U,20)
  1. ; if there is a linked placement entry, pull placement fields from there
  1. S DATA("PLACEMENT IEN")=""
  1. S DATA("PLACEMENT VISIT")=""
  1. S DATA("PLACEMENT VISIT DATE TIME")=""
  1. S DATA("PLACEMENT LOCATION")=""
  1. S DATA("PLACEMENT FACILITY")=""
  1. S DATA("PLACEMENT DATA SOURCE")=""
  1. S PXPLACEIEN=$P(TEMP,U,8)
  1. I PXPLACEIEN D
  1. . S DATA("COMMENTS")=$G(^AUPNVSK(PXPLACEIEN,811))
  1. . S DATA("PLACEMENT IEN")=PXPLACEIEN
  1. . S DATA("PLACEMENT VISIT")=$P($G(^AUPNVSK(PXPLACEIEN,0)),U,3)
  1. . S TEMP=$G(^AUPNVSIT(+DATA("PLACEMENT VISIT"),0))
  1. . S DATA("PLACEMENT VISIT DATE TIME")=$P(TEMP,U,1)
  1. . S PXX=$P(TEMP,U,22)
  1. . S DATA("PLACEMENT LOCATION")=PXX_$S(PXX:(U_$P($G(^SC(PXX,0)),U,1)),1:"")
  1. . S PXX=$P(TEMP,U,6)
  1. . S DATA("PLACEMENT FACILITY")=PXX_$S(PXX:(U_$$NS^XUAF4(PXX)),1:"")
  1. . S PXX=$P($G(^AUPNVSK(PXPLACEIEN,812)),U,3)
  1. . S DATA("PLACEMENT DATA SOURCE")=PXX_$S(PXX:(U_$P($G(^PX(839.7,PXX,0)),U,1)),1:"")
  1. . S TEMP=$G(^AUPNVSK(PXPLACEIEN,12))
  1. S DATA("EVENT DATE AND TIME")=$P(TEMP,U,1)
  1. S PXX=$P(TEMP,U,2)
  1. S DATA("ORDERING PROVIDER")=PXX_$S(PXX:(U_$P($G(^VA(200,PXX,0)),U,1)),1:"")
  1. S PXX=$P(TEMP,U,4)
  1. S DATA("ENCOUNTER PROVIDER")=PXX_$S(PXX:(U_$P($G(^VA(200,PXX,0)),U,1)),1:"")
  1. S DATA("D/T PLACEMENT RECORDED")=$P(TEMP,U,11)
  1. S PXX=$P(TEMP,U,12)
  1. S DATA("ANATOMIC LOC")=PXX_$S(PXX:(U_$P($G(^PXV(920.3,PXX,0)),U,2)_U_$P($G(^PXV(920.3,PXX,0)),U,1)),1:"")
  1. ;
  1. S DATA("READING COMMENTS")=$G(^AUPNVSK(DA,13))
  1. ;
  1. S TEMP=$G(^AUPNVSK(DA,812))
  1. D SETPKGDS(TEMP,.DATA)
  1. Q
  1. ;
  1. ;====================
  1. VXAM(DA,DATA) ;Return data, for a specified V Exam entry.
  1. N TEMP
  1. S TEMP=^AUPNVXAM(DA,0)
  1. S DATA("VISIT")=$P(TEMP,U,3)
  1. S (DATA("RESULT"),DATA("VALUE"))=$P(TEMP,U,4)
  1. S TEMP=$G(^AUPNVXAM(DA,12))
  1. S DATA("EVENT DATE AND TIME")=$P(TEMP,U,1)
  1. S DATA("ORDERING PROVIDER")=$P(TEMP,U,2)
  1. S DATA("ENCOUNTER PROVIDER")=$P(TEMP,U,4)
  1. S DATA("MEASUREMENT")=$G(^AUPNVXAM(DA,220))
  1. S DATA("COMMENTS")=$G(^AUPNVXAM(DA,811))
  1. S TEMP=$G(^AUPNVXAM(DA,812))
  1. D SETPKGDS(TEMP,.DATA)
  1. Q
  1. ;