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

AMERPOV.m

Go to the documentation of this file.
  1. AMERPOV ;GDIT/HS/BEE - SYNCHRONIZE AMER WITH PCC ; 07 Oct 2013 11:33 AM
  1. ;;3.0;ER VISIT SYSTEM;**6,10**;MAR 03, 2009;Build 23
  1. ;
  1. Q
  1. ;
  1. SYNC ;PEP - Sync AMER with PCC
  1. ;
  1. ;This API is called by the following:
  1. ; *MOD^AUPNVSIT has an XBNEW call to this API
  1. ;
  1. ;Predefined variable:
  1. ; AUPNVSIT - Visit IEN
  1. ;
  1. NEW AMERVSIT,DFN,RET,ICAUSE,IDT,ILOC,FND,SOI,ACAUSE,PCNT,ADT,AMERPOV,STS,ECLN
  1. ;
  1. ;Input variable:
  1. ;Make sure PCC visit is valid
  1. I $G(AUPNVSIT)="" Q ;Missing visit
  1. I '$D(^AUPNVSIT(AUPNVSIT)) Q ;Invalid visit
  1. S AMERVSIT=$O(^AMERVSIT("AD",AUPNVSIT,""))
  1. I AMERVSIT="" Q
  1. ;
  1. ;GDIT/HS/BEE 08/01/2018;CR#10213 - AMER*3.0*10 - Save updated hospital location
  1. S ECLN=$$GETCLN^AMER2A(AUPNVSIT) I ECLN]"" D
  1. . NEW AMERUPD,ERROR
  1. . S AMERUPD(9009080,AMERVSIT_",",".04")=ECLN
  1. . D FILE^DIE("","AMERUPD","ERROR")
  1. ;
  1. ;Get DFN
  1. S DFN=$$GET1^DIQ(9000010,AUPNVSIT,.05,"I") Q:DFN=""
  1. ;
  1. ;Synchronize the AMERVSIT POVs with V POV
  1. D SYNCHERX^AMERERS(AMERVSIT,AUPNVSIT)
  1. ;
  1. ;Synchronize the injury information
  1. ;
  1. ;Get list of V POV entries
  1. S STS=$$POV^AMERUTIL("",AUPNVSIT,.AMERPOV)
  1. ;
  1. ;Get Scene of Injury code
  1. S SOI=$O(^AMER(2,"B","SCENE OF INJURY","")) Q:SOI=""
  1. ;
  1. ;Loop through list and find injury - take Primary POV injury as first choice
  1. S (ICAUSE,IDT,ILOC,FND)=""
  1. S PCNT="" F S PCNT=$O(AMERPOV(PCNT)) Q:PCNT="" D Q:FND
  1. . NEW PS,IC,ID,IL,PVIEN
  1. . ;
  1. . ;Get whether primary or secondary, quit if not primary and we have injury info
  1. . S PS=$P(AMERPOV(PCNT),U,2) I ICAUSE]"",PS'="P" Q
  1. . ;
  1. . ;Pull injury information from V POV
  1. . S PVIEN=$P(AMERPOV(PCNT),U,6) Q:PVIEN=""
  1. . ;
  1. . ;Injury Cause
  1. . S IC=$$GET1^DIQ(9000010.07,PVIEN_",",.09,"I") Q:IC=""
  1. . ;
  1. . ;Injury Date
  1. . S ID=$$GET1^DIQ(9000010.07,PVIEN_",",.13,"I")
  1. . ;
  1. . ;Convert from PCC to AMER values
  1. . S IL=$$GET1^DIQ(9000010.07,PVIEN_",",.11,"I")
  1. . I (IL="A")!(IL="B") S CVIL=$$SCENE("HOME",SOI)
  1. . I (IL="C") S CVIL=$$SCENE("RANCH OR FARM",SOI)
  1. . I (IL="E") S CVIL=$$SCENE("INDUSTRIAL PLACE",SOI)
  1. . I (IL="F") S CVIL=$$SCENE("RECREATIONAL/SPORT PLACE",SOI)
  1. . I (IL="G") S CVIL=$$SCENE("HIGHWAY OR ROAD",SOI)
  1. . I (IL="H") S CVIL=$$SCENE("PUBLIC BUILDING",SOI)
  1. . I (IL="I") S CVIL=$$SCENE("RESIDENTIAL INSTITUTION",SOI)
  1. . I (IL="K") S CVIL=$$SCENE("OTHER",SOI)
  1. . S:$G(CVIL)="" CVIL=$$SCENE("UNSPECIFIED",SOI)
  1. . S ICAUSE=IC,IDT=ID,ILOC=CVIL
  1. ;
  1. ;If there is an injury make sure it needs saved
  1. ;
  1. ;Get the current injury cause from AMER
  1. S ACAUSE=$$GET1^DIQ(9009080,AMERVSIT_",",3.2,"I")
  1. ;
  1. ;Get the current injury date/time from AMER
  1. S ADT=$$GET1^DIQ(9009080,AMERVSIT_",",3.4,"I")
  1. ;
  1. ;IF AMER and PCC causes do not agree clear out AMER as the injuries do not match
  1. I ACAUSE]"",ICAUSE'=ACAUSE D
  1. . NEW AMUPD,ERROR
  1. . S AMUPD(9009080,AMERVSIT_",",3.2)="@"
  1. . S AMUPD(9009080,AMERVSIT_",",3.1)="0"
  1. . S AMUPD(9009080,AMERVSIT_",",3.3)="@"
  1. . S AMUPD(9009080,AMERVSIT_",",3.4)="@"
  1. . S AMUPD(9009080,AMERVSIT_",",3.5)="@"
  1. . S AMUPD(9009080,AMERVSIT_",",3.6)="@"
  1. . S AMUPD(9009080,AMERVSIT_",",3.6)="@"
  1. . S AMUPD(9009080,AMERVSIT_",",13.1)="@"
  1. . S AMUPD(9009080,AMERVSIT_",",13.2)="@"
  1. . S AMUPD(9009080,AMERVSIT_",",13.3)="@"
  1. . S AMUPD(9009080,AMERVSIT_",",13.4)="@"
  1. . S AMUPD(9009080,AMERVSIT_",",13.5)="@"
  1. . S AMUPD(9009080,AMERVSIT_",",13.6)="@"
  1. . D FILE^DIE("","AMUPD","ERROR")
  1. ;
  1. ;Now save the new values, if a change
  1. D
  1. . NEW AMUPD,ERROR
  1. . S AMUPD(9009080,AMERVSIT_",",3.2)=$S(ICAUSE="":"@",1:ICAUSE)
  1. . S AMUPD(9009080,AMERVSIT_",",3.1)=$S(ICAUSE="":"0",1:1)
  1. . S AMUPD(9009080,AMERVSIT_",",3.3)=$S(ICAUSE="":"@",1:ILOC)
  1. . ;
  1. . ;Only update the injury date if the date is different. This will preserve
  1. . ;the injury time if entered in AMER
  1. . I $P(ADT,".")'=$P(IDT,".") D
  1. .. S AMUPD(9009080,AMERVSIT_",",3.4)=$S(IDT="":"@",1:IDT)
  1. . ;
  1. . I ICAUSE="" S AMUPD(9009080,AMERVSIT_",",3.5)="@"
  1. . I ICAUSE="" S AMUPD(9009080,AMERVSIT_",",3.6)="@"
  1. . D FILE^DIE("","AMUPD","ERROR")
  1. ;
  1. ;Update the decision to admit date
  1. D
  1. . NEW DECDT,AMUPD,ERROR
  1. . S DECDT=$$GET1^DIQ(9000010,AUPNVSIT_",",1116,"I")
  1. . S AMUPD(9009080,AMERVSIT_",",12.8)=$S(DECDT="":"@",1:DECDT)
  1. . D FILE^DIE("","AMUPD","ERROR")
  1. ;
  1. ;Now sync up the dashboard if installed
  1. I $T(SYNC^BEDDSYNC)]"" D EN^XBNEW("SYNC^BEDDSYNC","AUPNVSIT")
  1. Q
  1. ;
  1. SCENE(SCENE,SOI) ;Return the scene of injury
  1. ;
  1. I $G(SCENE)="" Q ""
  1. ;
  1. NEW IEN,FND
  1. S (FND,IEN)="" F S IEN=$O(^AMER(3,"B",SCENE,IEN)) Q:IEN="" D Q:FND
  1. . NEW TYPE
  1. . S TYPE=$$GET1^DIQ(9009083,IEN_",",1,"I") Q:TYPE'=SOI
  1. . S FND=IEN
  1. ;
  1. Q FND
  1. ;
  1. PDX(X,D0) ;EP - Display the ICD Description - Primary Dx
  1. NEW ICDINFO,ICDDESC,VDATE
  1. ;
  1. S VDATE=$P($$GET1^DIQ(9009080,D0,.01,"I"),".")
  1. I $$AICD^AMERUTIL() S ICDINFO=$$ICDDX^ICDEX($P(X,U,2),VDATE)
  1. E S ICDINFO=$$ICDDX^ICDCODE($P(X,U,2),VDATE)
  1. ;
  1. ;Get the description
  1. S ICDDESC=$P(ICDINFO,U,4)
  1. W ICDDESC
  1. Q
  1. ;
  1. DSPDX(X,D0,CODE,VDATE) ;Display the ICD Description
  1. ;
  1. NEW ICDDESC
  1. ;
  1. ;Make the call to get the string
  1. S ICDDESC=$$DX($G(X),$G(D0),$G(CODE),$G(VDATE))
  1. ;
  1. W ICDDESC
  1. ;
  1. Q ICDDESC
  1. ;
  1. DX(X,D0,CODE,VDATE) ;Return the ICD Description
  1. ;
  1. ;Input
  1. ; X - Pointer to file 80 - May be in piece 2
  1. ; D0 - Pointer to ER VISIT file entry
  1. ; CODE - 1 - Include Code in return value (optional) - Default to not include
  1. ; VDATE - Date to check on (Optional)
  1. NEW ICDINFO,ICDDESC
  1. ;
  1. S:$L(X,"^")>1 X=$P(X,U,2)
  1. ;
  1. S D0=$G(D0)
  1. S VDATE=$G(VDATE) I VDATE="",D0]"" S VDATE=$P($$GET1^DIQ(9009080,D0,.01,"I"),".")
  1. S:VDATE="" VDATE=DT
  1. ;
  1. I $$AICD^AMERUTIL() S ICDINFO=$$ICDDX^ICDEX(X,VDATE)
  1. E S ICDINFO=$$ICDDX^ICDCODE(X,VDATE)
  1. ;
  1. ;Get the description
  1. S ICDDESC=$S($G(CODE)=1:$P(ICDINFO,U,2)_" - ",1:"")_$P(ICDINFO,U,4)
  1. I $P(ICDINFO,U,2)="" Q ""
  1. Q ICDDESC