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

PXPXRM1.m

Go to the documentation of this file.
  1. PXPXRM1 ;SLC/PKR - APIs for Clinical Reminder indexes, cont. ;02/14/2022
  1. ;;1.0;PCE PATIENT CARE ENCOUNTER;**211,217**;Aug 12, 1996;Build 134
  1. ;
  1. ; Reference to NAME in file .85 is supported by ICR #6062.
  1. ;
  1. Q
  1. ;
  1. ;====================
  1. VIMM2(DA,DATA) ; Internal function
  1. ; Works off ^TMP global instead of ^AUPNVIMM;
  1. ; this way it can also return data for deletes and edits.
  1. ;
  1. N DU,IND,PXCS,PXCSIEN,PXCDIEN,PXCODE,PXIEN,PXTEMP,PXVIMM,PXVISIT,PXX
  1. N TEMP
  1. ;
  1. S PXTEMP=^TMP("PXVIMM",$J,DA,0)
  1. S PXVIMM=$P(PXTEMP,U,1)
  1. S PXVISIT=$P(PXTEMP,U,3)
  1. S DATA("VISIT")=PXVISIT
  1. S (DATA("SERIES"),DATA("VALUE"))=$P(PXTEMP,U,4)
  1. S DATA("REACTION")=$P(PXTEMP,U,6)
  1. ;CONTRAINDICATED removed in PX*1.0*217, it is no longer used.
  1. ;S DATA("CONTRAINDICATED")=$P(PXTEMP,U,7)
  1. S DATA("COMMENTS")=$G(^TMP("PXVIMM",$J,DA,811))
  1. ;
  1. S PXTEMP=$G(^AUPNVSIT(+PXVISIT,0))
  1. S DATA("VISIT DATE TIME")=$P(PXTEMP,U,1)
  1. S PXX=+$P(PXTEMP,U,22),TEMP=""
  1. I PXX>0 S TEMP=$P($G(^SC(PXX,0)),U,1)
  1. I TEMP="" S TEMP="Invalid Location"
  1. S DATA("LOCATION")=PXX_U_TEMP
  1. S PXX=$P(PXTEMP,U,6)
  1. S DATA("FACILITY")=PXX_$S(PXX:(U_$$NS^XUAF4(PXX)),1:"")
  1. ;
  1. S PXTEMP=$G(^TMP("PXVIMM",$J,DA,12))
  1. S DATA("EVENT DATE AND TIME")=$P(PXTEMP,U,1)
  1. S PXX=$P(PXTEMP,U,2)
  1. S DATA("ORDERING PROVIDER")=PXX_$S(PXX:(U_$P($G(^VA(200,+PXX,0)),U,1)),1:"")
  1. S PXX=$P(PXTEMP,U,4)
  1. S DATA("ENCOUNTER PROVIDER")=PXX_$S(PXX:(U_$P($G(^VA(200,+PXX,0)),U,1)),1:"")
  1. S DATA("DATE RECORDED")=$P(PXTEMP,U,5)
  1. S PXX=$P(PXTEMP,U,6)
  1. S DATA("DOCUMENTER")=PXX_$S(PXX:(U_$P($G(^VA(200,+PXX,0)),U,1)),1:"")
  1. S PXX=+$P(PXTEMP,U,7)
  1. I PXX>0 D
  1. . S DATA("LOT NUMBER")=PXX_U_$P($G(^AUTTIML(PXX,0)),U,1)
  1. . S DATA("NDC CODE (VA)")=$P($G(^AUTTIML(PXX,0)),U,18)
  1. E S DATA("LOT NUMBER")=""
  1. S DATA("WARNING ACK")=$P(PXTEMP,U,20)
  1. S DATA("ORDERED BY POLICY")=$P(PXTEMP,U,22)
  1. ;
  1. S PXTEMP=$G(^AUTTIML(+$P(PXTEMP,U,7),0))
  1. S PXX=$P(PXTEMP,U,2)
  1. S DATA("MANUFACTURER")=PXX_$S(PXX:(U_$P($G(^AUTTIMAN(+PXX,0)),U,1)),1:"")
  1. S DATA("EXPIRATION DATE")=$P(PXTEMP,U,9)
  1. ;
  1. S PXTEMP=$G(^TMP("PXVIMM",$J,DA,13))
  1. S PXX=$P(PXTEMP,U,1)
  1. S DATA("INFO SOURCE")=PXX_$S(PXX:(U_$P($G(^PXV(920.1,+PXX,0)),U,2)_U_$P($G(^PXV(920.1,+PXX,0)),U,1)),1:"")
  1. S PXX=$P(PXTEMP,U,2)
  1. S DATA("ADMIN ROUTE")=PXX_$S(PXX:(U_$P($G(^PXV(920.2,+PXX,0)),U,2)_U_$P($G(^PXV(920.2,+PXX,0)),U,1)),1:"")
  1. S PXX=$P(PXTEMP,U,3)
  1. S DATA("ADMIN SITE")=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. S DATA("DOSE")=$$EXTERNAL^DILFD(9000010.11,1312,"",$P(PXTEMP,U,12))
  1. S DU=$P(PXTEMP,U,13)
  1. S DATA("DOSE UNITS")=$S(DU="":"",1:$$UCUMCODE^LEXMUCUM(DU))
  1. ;
  1. S PXTEMP=$G(^TMP("PXVIMM",$J,DA,14))
  1. S DATA("RESULTS")=$P(PXTEMP,U,1)
  1. S DATA("READING")=$P(PXTEMP,U,2)
  1. S DATA("DATE READ")=$P(PXTEMP,U,3)
  1. S PXX=$P(PXTEMP,U,4)
  1. S DATA("READER")=PXX_$S(PXX:(U_$P($G(^VA(200,PXX,0)),U,1)),1:"")
  1. S DATA("D/T READING RECORDED")=$P(PXTEMP,U,5)
  1. S DATA("HOURS READ")=$P(PXTEMP,U,6)
  1. S DATA("READING COMMENTS")=$G(^TMP("PXVIMM",$J,DA,15))
  1. ;
  1. S DATA("OVERRIDE REASON")=$G(^TMP("PXVIMM",$J,DA,16))
  1. ;
  1. S PXTEMP=$G(^AUTTIMM(+PXVIMM,0))
  1. S DATA("IMMUNIZATION")=PXVIMM_$S(PXVIMM:(U_$P(PXTEMP,U,1)),1:"")
  1. S DATA("CVX")=$P(PXTEMP,U,3)
  1. S DATA("MAX # IN SERIES")=$P(PXTEMP,U,5)
  1. ;CDC Full Vaccine Name is a word-processing field, return as a string.
  1. S IND=0,PXTEMP=""
  1. F S IND=+$O(^AUTTIMM(PXVIMM,2,IND)) Q:IND=0 S PXTEMP=PXTEMP_^AUTTIMM(PXVIMM,2,IND,0)
  1. S DATA("CDC FULL VACCINE NAME")=PXTEMP
  1. ;
  1. S PXIEN=0
  1. F S PXIEN=$O(^AUTTIMM(PXVIMM,7,PXIEN)) Q:'PXIEN D
  1. . S PXTEMP=$P($G(^AUTTIMM(PXVIMM,7,PXIEN,0)),U,1)
  1. . I PXTEMP="" Q
  1. . S DATA("VACCINE GROUP",PXIEN,0)=PXTEMP
  1. ;
  1. ;S DATA("CODES",Coding System Name)=Code 1 ^ Code 2 ^ ... Code x
  1. S PXCSIEN=0
  1. F S PXCSIEN=$O(^AUTTIMM(PXVIMM,3,PXCSIEN)) Q:'PXCSIEN D
  1. . S PXCS=$P($G(^AUTTIMM(PXVIMM,3,PXCSIEN,0)),U,1)
  1. . I PXCS="" Q
  1. . S PXCDIEN=0
  1. . F S PXCDIEN=$O(^AUTTIMM(PXVIMM,3,PXCSIEN,1,PXCDIEN)) Q:'PXCDIEN D
  1. . . S PXCODE=$P($G(^AUTTIMM(PXVIMM,3,PXCSIEN,1,PXCDIEN,0)),U,1)
  1. . . I PXCODE="" Q
  1. . . I '$D(DATA("CODES",PXCS)) S DATA("CODES",PXCS)=PXCODE Q
  1. . . S DATA("CODES",PXCS)=DATA("CODES",PXCS)_U_PXCODE
  1. ;
  1. ;DATA("VIS OFFERED",n,0)=IEN ^ Date Offered ^ Name ^ Edition Date ^ Language
  1. S PXIEN=0
  1. F S PXIEN=$O(^TMP("PXVIMM",$J,DA,2,PXIEN)) Q:'PXIEN D
  1. . S PXTEMP=$G(^TMP("PXVIMM",$J,DA,2,PXIEN,0))
  1. . I 'PXTEMP Q
  1. . ;Use this in case Date Offered is missing.
  1. . S DATA("VIS OFFERED",PXIEN,0)=$P(PXTEMP,U,1)_U_$P(PXTEMP,U,2)
  1. . S PXTEMP=$G(^AUTTIVIS(+PXTEMP,0))
  1. . S DATA("VIS OFFERED",PXIEN,0)=DATA("VIS OFFERED",PXIEN,0)_U_$P(PXTEMP,U,1)_U_$P(PXTEMP,U,2)
  1. . S PXX=$P(PXTEMP,U,4)
  1. . I PXX S DATA("VIS OFFERED",PXIEN,0)=DATA("VIS OFFERED",PXIEN,0)_U_$$GET1^DIQ(.85,PXX_",","NAME") ;ICR 6062
  1. ;
  1. ;DATA("REMARKS",n,0)=Free text
  1. M DATA("REMARKS")=^TMP("PXVIMM",$J,DA,11)
  1. K DATA("REMARKS",0)
  1. ;
  1. S PXTEMP=$G(^TMP("PXVIMM",$J,DA,812))
  1. D SETPKGDS^PXPXRM(PXTEMP,.DATA)
  1. ;
  1. Q
  1. ;
  1. ;====================
  1. VIMMCR(DA,DATA) ;Return data for a specified V Immunization entry. This
  1. ;version does not return Visit data and external values. It is
  1. ;optimized for use by Clinical Reminders.
  1. ;
  1. N DU,PXCS,PXCSIEN,PXCDIEN,PXCODE,PXIEN,PXTEMP,PXVIMM,PXVISIT,PXX
  1. S PXTEMP=^AUPNVIMM(DA,0)
  1. S PXVIMM=$P(PXTEMP,U,1)
  1. S PXVISIT=$P(PXTEMP,U,3)
  1. S DATA("VISIT")=PXVISIT
  1. S (DATA("SERIES"),DATA("VALUE"))=$P(PXTEMP,U,4)
  1. S DATA("REACTION")=$P(PXTEMP,U,6)
  1. ;CONTRAINDICATED removed in PX*1.0*217, it is no longer used.
  1. ;S DATA("CONTRAINDICATED")=$P(PXTEMP,U,7)
  1. S DATA("COMMENTS")=$G(^AUPNVIMM(DA,811))
  1. ;
  1. S PXTEMP=$G(^AUPNVIMM(DA,12))
  1. S DATA("EVENT DATE AND TIME")=$P(PXTEMP,U,1)
  1. S DATA("ORDERING PROVIDER")=$P(PXTEMP,U,2)
  1. S DATA("ENCOUNTER PROVIDER")=$P(PXTEMP,U,4)
  1. S DATA("DATE RECORDED")=$P(PXTEMP,U,5)
  1. S DATA("DOCUMENTER")=$P(PXTEMP,U,6)
  1. S PXX=+$P(PXTEMP,U,7)
  1. S DATA("LOT NUMBER")=$S(PXX>0:($P($G(^AUTTIML(PXX,0)),U,1)),1:"")
  1. S DATA("WARNING ACK")=$P(PXTEMP,U,20)
  1. S DATA("ORDERED BY POLICY")=$P(PXTEMP,U,22)
  1. ;
  1. S PXTEMP=$G(^AUTTIML(PXX,0))
  1. S PXX=+$P(PXTEMP,U,2)
  1. S DATA("MANUFACTURER")=$S(PXX>0:$P($G(^AUTTIMAN(PXX,0)),U,1),1:"")
  1. S DATA("EXPIRATION DATE")=$P(PXTEMP,U,9)
  1. ;
  1. S PXTEMP=$G(^AUPNVIMM(DA,13))
  1. S PXX=+$P(PXTEMP,U,1)
  1. S DATA("INFO SOURCE")=$S(PXX>0:$P($G(^PXV(920.1,PXX,0)),U,1),1:"")
  1. S PXX=+$P(PXTEMP,U,2)
  1. S DATA("ADMIN ROUTE")=$S(PXX>0:($P($G(^PXV(920.2,PXX,0)),U,2)_U_$P($G(^PXV(920.2,PXX,0)),U,1)),1:"")
  1. S PXX=+$P(PXTEMP,U,3)
  1. S DATA("ADMIN SITE")=$S(PXX>0:($P($G(^PXV(920.3,PXX,0)),U,2)_U_$P($G(^PXV(920.3,PXX,0)),U,1)),1:"")
  1. S PXX=+$P(PXTEMP,U,12)
  1. S DATA("DOSE")=$S(PXX>0:PXX,1:"")
  1. S DU=$P(PXTEMP,U,13)
  1. S DATA("DOSE UNITS")=$S(DU="":"",1:$$UCUMCODE^LEXMUCUM(DU))
  1. ;
  1. S PXTEMP=$G(^AUPNVIMM(DA,14))
  1. S DATA("RESULTS")=$P(PXTEMP,U,1)
  1. S DATA("READING")=$P(PXTEMP,U,2)
  1. S DATA("DATE READ")=$P(PXTEMP,U,3)
  1. S PXX=$P(PXTEMP,U,4)
  1. S DATA("READER")=PXX_$S(PXX:(U_$P($G(^VA(200,PXX,0)),U,1)),1:"")
  1. S DATA("D/T READING RECORDED")=$P(PXTEMP,U,5)
  1. S DATA("HOURS READ")=$P(PXTEMP,U,6)
  1. S DATA("READING COMMENTS")=$G(^AUPNVIMM(DA,15))
  1. ;
  1. S DATA("OVERRIDE REASON")=$G(^AUPNVIMM(DA,16))
  1. ;
  1. S PXTEMP=$G(^AUTTIMM(+PXVIMM,0))
  1. S DATA("IMM NAME")=$P(PXTEMP,U,1)
  1. S DATA("IMMUNIZATION")=PXVIMM_U_DATA("IMM NAME")
  1. S DATA("CVX")=$P(PXTEMP,U,3)
  1. ;
  1. S PXTEMP=$G(^AUPNVIMM(DA,812))
  1. D SETPKGDS^PXPXRM(PXTEMP,.DATA)
  1. ;
  1. S PXIEN=0
  1. F S PXIEN=$O(^AUTTIMM(PXVIMM,7,PXIEN)) Q:'PXIEN D
  1. . S PXTEMP=$P($G(^AUTTIMM(PXVIMM,7,PXIEN,0)),U,1)
  1. . I PXTEMP="" Q
  1. . S DATA("VACCINE GROUP",PXIEN,0)=PXTEMP
  1. ;
  1. ;S DATA("CODES",Coding System Name)=Code 1 ^ Code 2 ^ ... Code x
  1. S PXCSIEN=0
  1. F S PXCSIEN=$O(^AUTTIMM(PXVIMM,3,PXCSIEN)) Q:'PXCSIEN D
  1. . S PXCS=$P($G(^AUTTIMM(PXVIMM,3,PXCSIEN,0)),U,1)
  1. . I PXCS="" Q
  1. . S PXCDIEN=0
  1. . F S PXCDIEN=$O(^AUTTIMM(PXVIMM,3,PXCSIEN,1,PXCDIEN)) Q:'PXCDIEN D
  1. . . S PXCODE=$P($G(^AUTTIMM(PXVIMM,3,PXCSIEN,1,PXCDIEN,0)),U,1)
  1. . . I PXCODE="" Q
  1. . . I '$D(DATA("CODES",PXCS)) S DATA("CODES",PXCS)=PXCODE Q
  1. . . S DATA("CODES",PXCS)=DATA("CODES",PXCS)_U_PXCODE
  1. ;
  1. ;DATA("VIS OFFERED",n,0)=IEN ^ Date Offered ^ Name ^ Edition Date ^ Language
  1. S PXIEN=0
  1. F S PXIEN=$O(^AUPNVIMM(DA,2,PXIEN)) Q:'PXIEN D
  1. . S PXTEMP=$G(^AUPNVIMM(DA,2,PXIEN,0))
  1. . I 'PXTEMP Q
  1. . ;Use this in case Date Offered is missing.
  1. . S DATA("VIS OFFERED",PXIEN,0)=$P(PXTEMP,U,1)_U_$P(PXTEMP,U,2)
  1. . S PXTEMP=$G(^AUTTIVIS(+PXTEMP,0))
  1. . S DATA("VIS OFFERED",PXIEN,0)=DATA("VIS OFFERED",PXIEN,0)_U_$P(PXTEMP,U,1)_U_$P(PXTEMP,U,2)
  1. . S PXX=$P(PXTEMP,U,4)
  1. . I PXX S DATA("VIS OFFERED",PXIEN,0)=DATA("VIS OFFERED",PXIEN,0)_U_$$GET1^DIQ(.85,PXX_",","NAME") ;ICR 6062
  1. ;
  1. ;DATA("REMARKS",n,0)=Free text
  1. M DATA("REMARKS")=^AUPNVIMM(DA,11)
  1. K DATA("REMARKS",0)
  1. Q
  1. ;