diff --git a/p/GPLCCR0.m b/p/GPLCCR0.m index 7667ab9..078c455 100644 --- a/p/GPLCCR0.m +++ b/p/GPLCCR0.m @@ -271,21 +271,17 @@ LOAD(ARY) ; LOAD A CCR TEMPLATE INTO ARY PASSED BY NAME ;;@@MEDICATIONOBJECTID@@ ;; ;; - ;;@@MEDICATIONDATETIMETEXT@@ + ;;@@MEDICATIONISSUEDATETXT@@ ;; - ;; - ;;@@MEDICATIONDATETIMEAGE@@ - ;; - ;;@@MEDICATIONDATETIMEAGEUNITS@@ - ;; - ;; + ;;@@MEDICATIONISSUEDATE@@ + ;; + ;;@@MEDICATIONLASTFILLDATETXT@@ + ;; + ;;@@MEDICATIONLASTFILLDATE@@ ;; ;; ;;@@MEDICATIONTYPETEXT@@ ;; - ;; - ;;@@MEDICATIONDESCRIPTIONTEXT@@ - ;; ;; ;;@@MEDICATIONSTATUSTEXT@@ ;; @@ -305,11 +301,6 @@ LOAD(ARY) ; LOAD A CCR TEMPLATE INTO ARY PASSED BY NAME ;; ;; ;;@@MEDICATIONBRANDNAMETEXT@@ - ;; - ;;@@MEDICATIONBRANDNAMECODEVALUE@@ - ;;@@MEDICATIONBRANDNAMECODINGSYSTEM@@ - ;;@@MEDICATIONBRANDNAMECODEVERSION@@ - ;; ;; ;; ;;@@MEDICATIONSTRENGTHVALUE@@ @@ -320,21 +311,60 @@ LOAD(ARY) ; LOAD A CCR TEMPLATE INTO ARY PASSED BY NAME ;;
;;@@MEDICATIONFORMTEXT@@ ;;
+ ;; + ;;@@MEDICATIONCONCENTRATIONTEXT@@ + ;; + ;; + ;;@@MEDICATIONSIZETEXT + ;; ;; + ;; + ;;@@MEDICATIONQUANTITYVALUE@@ + ;; + ;;@@MEDICATIONQUANTITYUNIT@@ + ;; ;; ;; ;; ;;@@MEDICATIONDIRECTIONDESCRIPTIONTEXT@@ ;; + ;;@@MEDICATIONDOSEINDICATOR@@ + ;;@@MEDICATIONDELIVERYMETHOD@@ ;; ;;@@MEDICATIONDIRECTIONDOSEVALUE@@ + ;; + ;;@@MEDICATIONDOSEUNIT@@ + ;; + ;; + ;;@@MEDICATIONDIRECTIONRATEVALUE@@ + ;; + ;;@@MEDICATIONRATEUNIT@@ + ;; + ;; ;; + ;; + ;;@@MEDICATIONVEHICLETEXT@@ + ;; ;; ;;@@MEDICATIONDIRECTIONROUTETEXT@@ ;; ;; - ;;@@MEDICATIONDIRECTIONFREQUENCYVALUE@@ + ;;@@MEDICATIONFREQUENCYVALUE@@ + ;; + ;;@@MEDICATIONFREQUENCYUNIT@@ + ;; ;; + ;; + ;;@@MEDICATIONINTERVALVALUE@@ + ;; + ;;@@MEDICATIONINTERVALUNIT@@ + ;; + ;; + ;; + ;;@@MEDICATIONDURATIONVALUE@@ + ;; + ;;@@MEDICATIONDURATIONUNIT@@ + ;; ;; ;; ;; diff --git a/p/GPLMEDS.m b/p/GPLMEDS.m index 1e397b1..82d50f7 100644 --- a/p/GPLMEDS.m +++ b/p/GPLMEDS.m @@ -17,65 +17,65 @@ GPLMEDS ; CCDCCR/CJE - CCR/CCD PROCESSING FOR MEDICATIONS ;07/23/08 14:33 ;with this program; if not, write to the Free Software Foundation, Inc., ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ; - W "NO ENTRY FROM TOP",! - Q - ; + W "NO ENTRY FROM TOP",! + Q + ; EXTRACT(MEDXML,DFN,MEDOUTXML) ; EXTRACT MEDICATIONS INTO PROVIDED XML TEMPLATE ; ; MEDXML AND OUTXML ARE PASSED BY NAME SO GLOBALS CAN BE USED ; IMEDXML WILL CONTAIN ONLY THE MEDICATIONS SECTION OF THE OVERALL TEMPLATE ; - N MEDRSLT,I,J,K,MEDPTMP,X,MEDVMAP,TBUF - D ACTIVE^ORWPS(.MEDRSLT,DFN) - I '$D(MEDRSLT(1)) D ; NO MEDS FOR THIS PATIENT, EXIT - . W "ERROR RUNNINIG MEDICATIONS RPC",! - . S @MEDOUTXML@(0)=0 - . Q - IF DEBUG ZWR MEDRSLT - S MEDTVMAP=$NA(^TMP("GPLCCR",$J,"MEDICATIONS")) - S MEDTARYTMP=$NA(^TMP("GPLCCR",$J,"MEDARYTMP")) - F J=1:3 Q:'$D(MEDRSLT(J)) D ; FOR EACH MEDICATION IN THE LIST - . W "J IS ",J,! - . S MEDVMAP=$NA(@MEDTVMAP@(J)) - . K @MEDVMAP - . I DEBUG W "VMAP= ",VMAP,! - . S MEDPTMP=MEDRSLT(J) ; PULL OUT MEDICATION FROM RPC RETURN ARRAY - . S @MEDVMAP@("MEDICATIONOBJECTID")="MED"_J ; UNIQUE OBJID FOR MEDS - . ; PROCESSING FOR MEDS GOES HERE - . S @MEDVMAP@("MEDICATIONDATETIMETEXT")=$$FMDTOUTC^CCRUTIL($P(MEDPTMP,"^",11),"DT") ; GETS LAST FILL DATE - . S @MEDVMAP@("MEDICATIONDATETIMEAGE")="" - . S @MEDVMAP@("MEDICATIONDATETIMEAGEUNITS")="" - . S @MEDVMAP@("MEDICATIONTYPETEXT")="Medication" - . S @MEDVMAP@("MEDICATIONSTATUSTEXT")=$P(MEDPTMP,"^",10) ; STATUS FROM RPC - . S @MEDVMAP@("MEDICATIONSOURCEACTORID")="ACTORSYSTEM_1" - . S @MEDVMAP@("MEDICATIONPRODUCTNAMETEXT")=$P(MEDPTMP,"^",3) - . S @MEDVMAP@("MEDICATIONPRODUCTNAMECODEVALUE")="" - . S @MEDVMAP@("MEDICATIONPRODUCTNAMECODINGINGSYSTEM")="" - . S @MEDVMAP@("MEDICATIONPRODUCTNAMECODEVERSION")="" - . S @MEDVMAP@("MEDICATIONBRANDNAMETEXT")="" - . S @MEDVMAP@("MEDICATIONBRANDNAMECODEVALUE")="" - . S @MEDVMAP@("MEDICATIONBRANDNAMECODINGSYSTEM")="" - . S @MEDVMAP@("MEDICATIONBRANDNAMECODEVERSION")="" - . S @MEDVMAP@("MEDICATIONSTRENGTHVALUE")="" - . S @MEDVMAP@("MEDICATIONSTRENGTHUNIT")="" - . S @MEDVMAP@("MEDICATIONFORMTEXT")="" - . S @MEDVMAP@("MEDICATIONDESCRIPTIONTEXT")=$P(MEDRSLT(J+1)," *",2) - . S @MEDVMAP@("MEDICATIONDIRECTIONDESCRIPTIONTEXT")=$P(MEDRSLT(J+2),"\ Sig: ",2) - . S @MEDVMAP@("MEDICATIONDIRECTIONDOSEVALUE")="" - . S @MEDVMAP@("MEDICATIONDIRECTIONROUTETEXT")="" - . S @MEDVMAP@("MEDICATIONDIRECTIONFREQUENCYVALUE")="" - . S MEDARYTMP=$NA(@MEDTARYTMP@(J)) - . K @MEDARYTMP - . D MAP^GPLXPATH(MEDXML,MEDVMAP,MEDARYTMP) - . I J=1 D ; FIRST ONE IS JUST A COPY - . . ; W "FIRST ONE",! - . . D CP^GPLXPATH(MEDARYTMP,MEDOUTXML) - . I J>1 D ; AFTER THE FIRST, INSERT INNER XML - . . D INSINNER^GPLXPATH(MEDOUTXML,MEDARYTMP) - N MEDTMP,MEDI - D MISSING^GPLXPATH(MEDOUTXML,"MEDTMP") ; SEARCH XML FOR MISSING VARS - I MEDTMP(0)>0 D ; IF THERE ARE MISSING VARS - MARKED AS @@X@@ - . W "MEDICATION MISSING ",! - . F MEDI=1:1:MEDTMP(0) W MEDTMP(MEDI),! - Q - ; + N MEDRSLT,I,J,K,MEDPTMP,X,MEDVMAP,TBUF + D ACTIVE^ORWPS(.MEDRSLT,DFN) + I '$D(MEDRSLT(1)) D ; NO MEDS FOR THIS PATIENT, EXIT + . W "ERROR RUNNINIG MEDICATIONS RPC",! + . S @MEDOUTXML@(0)=0 + . Q + IF DEBUG ZWR MEDRSLT + S MEDTVMAP=$NA(^TMP("GPLCCR",$J,"MEDICATIONS")) + S MEDTARYTMP=$NA(^TMP("GPLCCR",$J,"MEDARYTMP")) + F J=1:3 Q:'$D(MEDRSLT(J)) D ; FOR EACH MEDICATION IN THE LIST + . W "J IS ",J,! + . S MEDVMAP=$NA(@MEDTVMAP@(J)) + . K @MEDVMAP + . I DEBUG W "VMAP= ",VMAP,! + . S MEDPTMP=MEDRSLT(J) ; PULL OUT MEDICATION FROM RPC RETURN ARRAY + . S @MEDVMAP@("MEDICATIONOBJECTID")="MED"_J ; UNIQUE OBJID FOR MEDS + . ; PROCESSING FOR MEDS GOES HERE + . S @MEDVMAP@("MEDICATIONDATETIMETEXT")=$$FMDTOUTC^CCRUTIL($P(MEDPTMP,"^",11),"DT") ; GETS LAST FILL DATE + . S @MEDVMAP@("MEDICATIONDATETIMEAGE")="" + . S @MEDVMAP@("MEDICATIONDATETIMEAGEUNITS")="" + . S @MEDVMAP@("MEDICATIONTYPETEXT")="Medication" + . S @MEDVMAP@("MEDICATIONSTATUSTEXT")=$P(MEDPTMP,"^",10) ; STATUS FROM RPC + . S @MEDVMAP@("MEDICATIONSOURCEACTORID")="ACTORSYSTEM_1" + . S @MEDVMAP@("MEDICATIONPRODUCTNAMETEXT")=$P(MEDPTMP,"^",3) + . S @MEDVMAP@("MEDICATIONPRODUCTNAMECODEVALUE")="" + . S @MEDVMAP@("MEDICATIONPRODUCTNAMECODINGINGSYSTEM")="" + . S @MEDVMAP@("MEDICATIONPRODUCTNAMECODEVERSION")="" + . S @MEDVMAP@("MEDICATIONBRANDNAMETEXT")="" + . S @MEDVMAP@("MEDICATIONBRANDNAMECODEVALUE")="" + . S @MEDVMAP@("MEDICATIONBRANDNAMECODINGSYSTEM")="" + . S @MEDVMAP@("MEDICATIONBRANDNAMECODEVERSION")="" + . S @MEDVMAP@("MEDICATIONSTRENGTHVALUE")="" + . S @MEDVMAP@("MEDICATIONSTRENGTHUNIT")="" + . S @MEDVMAP@("MEDICATIONFORMTEXT")="" + . S @MEDVMAP@("MEDICATIONDESCRIPTIONTEXT")=$P(MEDRSLT(J+1)," *",2) + . S @MEDVMAP@("MEDICATIONDIRECTIONDESCRIPTIONTEXT")=$P(MEDRSLT(J+2),"\ Sig: ",2) + . S @MEDVMAP@("MEDICATIONDIRECTIONDOSEVALUE")="" + . S @MEDVMAP@("MEDICATIONDIRECTIONROUTETEXT")="" + . S @MEDVMAP@("MEDICATIONDIRECTIONFREQUENCYVALUE")="" + . S MEDARYTMP=$NA(@MEDTARYTMP@(J)) + . K @MEDARYTMP + . D MAP^GPLXPATH(MEDXML,MEDVMAP,MEDARYTMP) + . I J=1 D ; FIRST ONE IS JUST A COPY + . . ; W "FIRST ONE",! + . . D CP^GPLXPATH(MEDARYTMP,MEDOUTXML) + . I J>1 D ; AFTER THE FIRST, INSERT INNER XML + . . D INSINNER^GPLXPATH(MEDOUTXML,MEDARYTMP) + N MEDTMP,MEDI + D MISSING^GPLXPATH(MEDOUTXML,"MEDTMP") ; SEARCH XML FOR MISSING VARS + I MEDTMP(0)>0 D ; IF THERE ARE MISSING VARS - MARKED AS @@X@@ + . W "MEDICATION MISSING ",! + . F MEDI=1:1:MEDTMP(0) W MEDTMP(MEDI),! + Q + ;